diff -Nrcpad gcc-17-20260727/LAST_UPDATED gcc-17-20260802/LAST_UPDATED
*** gcc-17-20260727/LAST_UPDATED	Mon Jul 27 02:16:24 2026
--- gcc-17-20260802/LAST_UPDATED	Sun Aug  2 22:32:23 2026
***************
*** 1 ****
! Obtained from git: master revision f94bbe06bea3e73e47e3eabbc6ceea81f507d9ad
--- 1 ----
! Obtained from git: master revision c4b00249c26ea79cdca47d15b9697dac592de7de
diff -Nrcpad gcc-17-20260727/MD5SUMS gcc-17-20260802/MD5SUMS
*** gcc-17-20260727/MD5SUMS	Mon Jul 27 02:16:30 2026
--- gcc-17-20260802/MD5SUMS	Sun Aug  2 22:32:28 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-17-20260727.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-20260802.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
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 28,34 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! e39f460ad8629672a90736fc43149483  LAST_UPDATED
  8aed0c9088e9f47a8bf0bd972973935f  MAINTAINERS
  f949dc9475f463da0eeb2943fbc68f3d  MAINTAINERS.yml
  f1b0fe5b41f7272f173407bd21947846  Makefile.def
--- 28,34 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 602bc32d3f4e3e83aebd858554537799  LAST_UPDATED
  8aed0c9088e9f47a8bf0bd972973935f  MAINTAINERS
  f949dc9475f463da0eeb2943fbc68f3d  MAINTAINERS.yml
  f1b0fe5b41f7272f173407bd21947846  Makefile.def
*************** edf805e559bf9ecb62db313d2e6edb47  c++too
*** 50,56 ****
  c64564b7c7563dae5ebe016f340c9cd9  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  111d54aa3a3019adbab413c8fb435f22  config.sub
! 2459394f83d6389f87ad8eee603b50de  config/ChangeLog
  e8365ab73da09dccff77a6e2ad006a68  config/acinclude.m4
  b724461247ded067ef9b1723c75e6467  config/acx.m4
  4de461a68cd5bb679a47eb9ad5dbbec2  config/asmcfi.m4
--- 50,56 ----
  c64564b7c7563dae5ebe016f340c9cd9  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  111d54aa3a3019adbab413c8fb435f22  config.sub
! c5c745585ccf482be4c9196b8095c762  config/ChangeLog
  e8365ab73da09dccff77a6e2ad006a68  config/acinclude.m4
  b724461247ded067ef9b1723c75e6467  config/acx.m4
  4de461a68cd5bb679a47eb9ad5dbbec2  config/asmcfi.m4
*************** ece3bc716fac1aca84326d40b97a4b4b  config
*** 80,86 ****
  f466ea6022e6627a2e3d94bb0cc7eeb9  config/bootstrap-time.mk
  065f6478cf9a6fdc999f666517cfb8b4  config/bootstrap-ubsan.mk
  77da9f59938d465e1a789775fcdd7c8c  config/cet.m4
! ecf21fe4f75a80b0f2efc9bf3625a267  config/clang-plugin.m4
  14865572159143825c854516b9f799fc  config/codeset.m4
  b5a5c394536a15e50be1998bd341fd02  config/depstand.m4
  a763364d451e805a934f6520b8b4d602  config/dfp.m4
--- 80,86 ----
  f466ea6022e6627a2e3d94bb0cc7eeb9  config/bootstrap-time.mk
  065f6478cf9a6fdc999f666517cfb8b4  config/bootstrap-ubsan.mk
  77da9f59938d465e1a789775fcdd7c8c  config/cet.m4
! e0a54a31a04c7fc58fe7a15219ff1169  config/clang-plugin.m4
  14865572159143825c854516b9f799fc  config/codeset.m4
  b5a5c394536a15e50be1998bd341fd02  config/depstand.m4
  a763364d451e805a934f6520b8b4d602  config/dfp.m4
*************** a81f67da2b779d7405d2f7fe38f8e2f2  config
*** 89,95 ****
  15b8d5adf53ad5ec75f055b193a6b1c2  config/extensions.m4
  2f2de833dd86bba89d64e5813be81550  config/futex.m4
  d3eafe382a46e6747e3644cf4a55d5cc  config/gc++filt.m4
! 7dd04203360677ccc6b4c9f5b1bcfc89  config/gcc-plugin.m4
  668132e429b5a64836ff6f2e6a52bcd2  config/gettext-sister.m4
  891029ae654600a455aee41cac4eb400  config/gettext.m4
  29c9c3d57667bc9e6f14d625b2cd5894  config/glibc21.m4
--- 89,95 ----
  15b8d5adf53ad5ec75f055b193a6b1c2  config/extensions.m4
  2f2de833dd86bba89d64e5813be81550  config/futex.m4
  d3eafe382a46e6747e3644cf4a55d5cc  config/gc++filt.m4
! f924d05c3044299f93666cfacd3301d4  config/gcc-plugin.m4
  668132e429b5a64836ff6f2e6a52bcd2  config/gettext-sister.m4
  891029ae654600a455aee41cac4eb400  config/gettext.m4
  29c9c3d57667bc9e6f14d625b2cd5894  config/glibc21.m4
*************** dd20b4aa952e750070486e3525cba7bd  config
*** 161,167 ****
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  5bcd6c5d0e5af28ef977314b079ca150  configure
  32aa07435dfdbb17b3484dc82ad8e8d4  configure.ac
! 6bbfb20b2e9f17be56ccc7c4127df6fd  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  95f2ccad93e447dc3cbd991a1e66fae2  contrib/add-write-after.py
--- 161,167 ----
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  5bcd6c5d0e5af28ef977314b079ca150  configure
  32aa07435dfdbb17b3484dc82ad8e8d4  configure.ac
! dd99e15fbffe5f46daede69d1fe0afe2  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  95f2ccad93e447dc3cbd991a1e66fae2  contrib/add-write-after.py
*************** ee0ae327aa0f1870f7f3769378ffe5f3  contri
*** 181,187 ****
  71d1b41247c5c74fb047e13edec7e323  contrib/check-params-in-docs.py
  7718189f09f512492ac48fac60f8ce42  contrib/check_GNU_style.py
  3b3c8f407009373e1539531cbaca4c92  contrib/check_GNU_style.sh
! bde8448e2c28f4ec9e2d2c757bd72d3f  contrib/check_GNU_style_lib.py
  001bdb1e04e753b9a62f2491c8a25dae  contrib/check_makefile_deps.sh
  428bea7deb96315aeb055a851263a5df  contrib/check_warning_flags.sh
  2521874691b72a437aafa85beaef22aa  contrib/ci-containers/README
--- 181,187 ----
  71d1b41247c5c74fb047e13edec7e323  contrib/check-params-in-docs.py
  7718189f09f512492ac48fac60f8ce42  contrib/check_GNU_style.py
  3b3c8f407009373e1539531cbaca4c92  contrib/check_GNU_style.sh
! fe988f62b0c4ccc11ff8cb3d9a0ce21e  contrib/check_GNU_style_lib.py
  001bdb1e04e753b9a62f2491c8a25dae  contrib/check_makefile_deps.sh
  428bea7deb96315aeb055a851263a5df  contrib/check_warning_flags.sh
  2521874691b72a437aafa85beaef22aa  contrib/ci-containers/README
*************** f15bc3c5de22eac0bdd4f611502139a0  gcc/AB
*** 534,540 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! dcb755c81c7b3df3d0e4dcaf037e89b6  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 534,540 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 0f694a3bf29e746e5a2b27ca71584104  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 572,578 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! ea45216125b5d2dc9172426927be609e  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 572,578 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 6b4104e03b075fd75fb0999c304c803f  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** c8c9dd1eaee4ffd4d5d9f3ab70fddd4b  gcc/RE
*** 584,590 ****
  a9a7c60459b2407bfdf4e68c0ed4ad0a  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 43a9fccf82789d4d6383777f6c14ee72  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 584,590 ----
  a9a7c60459b2407bfdf4e68c0ed4ad0a  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 0f1a4390586c904953cdd3e22a04dbbc  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** adb49f37416fce62d5759f9b4c733fe6  gcc/ad
*** 771,777 ****
  8d6933ec0ee945c50b4e8c114b1221b6  gcc/ada/exp_aggr.ads
  045a2ef4e4932ea2c0b17910db37af46  gcc/ada/exp_atag.adb
  2a027dfad5944cc346ee7c94c022d302  gcc/ada/exp_atag.ads
! 50ae886ee678cb0e26b9b04d0e248315  gcc/ada/exp_attr.adb
  4b748ed1db282b666860ed488c4ff28d  gcc/ada/exp_attr.ads
  cda4ccedf4fc1e7d7dbe6864ee5bf8ad  gcc/ada/exp_cg.adb
  a188d43ef2eb5780d4b7f98731302640  gcc/ada/exp_cg.ads
--- 771,777 ----
  8d6933ec0ee945c50b4e8c114b1221b6  gcc/ada/exp_aggr.ads
  045a2ef4e4932ea2c0b17910db37af46  gcc/ada/exp_atag.adb
  2a027dfad5944cc346ee7c94c022d302  gcc/ada/exp_atag.ads
! b7b22920e56851ac184e4b92bdc5b6bc  gcc/ada/exp_attr.adb
  4b748ed1db282b666860ed488c4ff28d  gcc/ada/exp_attr.ads
  cda4ccedf4fc1e7d7dbe6864ee5bf8ad  gcc/ada/exp_cg.adb
  a188d43ef2eb5780d4b7f98731302640  gcc/ada/exp_cg.ads
*************** aec86f795b370fca1379a25f37651fdf  gcc/ad
*** 790,796 ****
  4410361f9df9739a168f50599c2f07b4  gcc/ada/exp_ch4.ads
  f2ee63cc3c5f9f1809803f876187e83a  gcc/ada/exp_ch5.adb
  962c51f1fad8395553b843179ba06b79  gcc/ada/exp_ch5.ads
! d91fcfa20cb92bd61bb2f58a7f741a25  gcc/ada/exp_ch6.adb
  06c642df831eac4b8b06e06e0cc2672b  gcc/ada/exp_ch6.ads
  209d78b894ee84003b9eb29efd6e6911  gcc/ada/exp_ch7.adb
  0328c88aa1134f7af3891cb24a0b27c8  gcc/ada/exp_ch7.ads
--- 790,796 ----
  4410361f9df9739a168f50599c2f07b4  gcc/ada/exp_ch4.ads
  f2ee63cc3c5f9f1809803f876187e83a  gcc/ada/exp_ch5.adb
  962c51f1fad8395553b843179ba06b79  gcc/ada/exp_ch5.ads
! fa07b674c6f209d8f81f8cb3ff315876  gcc/ada/exp_ch6.adb
  06c642df831eac4b8b06e06e0cc2672b  gcc/ada/exp_ch6.ads
  209d78b894ee84003b9eb29efd6e6911  gcc/ada/exp_ch7.adb
  0328c88aa1134f7af3891cb24a0b27c8  gcc/ada/exp_ch7.ads
*************** af9c8aea45dc595a84d279be37a6e65e  gcc/ad
*** 2018,2024 ****
  c2121d458a346c0b9d83825c544b9516  gcc/ada/libgnat/ioexcept.ads
  e793c8df6f0ffab52eef39bb5d82d97f  gcc/ada/libgnat/libada.gpr
  057d5cf2426aa4db1f4c6429cf269c20  gcc/ada/libgnat/libgnat.gpr
! cf5fbbe7ae49ee16e33e55135bc15876  gcc/ada/libgnat/libgnat_common.gpr
  ed1b5d3179de47e97e497b15a5367eb3  gcc/ada/libgnat/machcode.ads
  9fd8db83a4a10b1f8eb2e5e5c726bcf8  gcc/ada/libgnat/memtrack.adb
  5b881fb29933bca9150aa693cbc12531  gcc/ada/libgnat/s-addima.adb
--- 2018,2024 ----
  c2121d458a346c0b9d83825c544b9516  gcc/ada/libgnat/ioexcept.ads
  e793c8df6f0ffab52eef39bb5d82d97f  gcc/ada/libgnat/libada.gpr
  057d5cf2426aa4db1f4c6429cf269c20  gcc/ada/libgnat/libgnat.gpr
! 1d9eeb5a5e221343226de3d04369b865  gcc/ada/libgnat/libgnat_common.gpr
  ed1b5d3179de47e97e497b15a5367eb3  gcc/ada/libgnat/machcode.ads
  9fd8db83a4a10b1f8eb2e5e5c726bcf8  gcc/ada/libgnat/memtrack.adb
  5b881fb29933bca9150aa693cbc12531  gcc/ada/libgnat/s-addima.adb
*************** acf67cc2ad3c40fe466a03f76c6450e1  gcc/ad
*** 2914,2920 ****
  65869457d1676879dc545835475f7421  gcc/ada/sem.ads
  1f1ea5b059ab31ee369cc51ba1071c8c  gcc/ada/sem_aggr.adb
  d5ddab4fcf440bf2f49a9a190fd12829  gcc/ada/sem_aggr.ads
! 92b99ac3661ea22f61229b8c208f7b2c  gcc/ada/sem_attr.adb
  f5a25d26b815f5d376e2873f3ab69359  gcc/ada/sem_attr.ads
  39892cb912c9fe4b0d512cfc104e5bd7  gcc/ada/sem_aux.adb
  5df4642fb17b29da9f787e48f24551b9  gcc/ada/sem_aux.ads
--- 2914,2920 ----
  65869457d1676879dc545835475f7421  gcc/ada/sem.ads
  1f1ea5b059ab31ee369cc51ba1071c8c  gcc/ada/sem_aggr.adb
  d5ddab4fcf440bf2f49a9a190fd12829  gcc/ada/sem_aggr.ads
! 97476ab6ca09c705f50f38ebac8f6f42  gcc/ada/sem_attr.adb
  f5a25d26b815f5d376e2873f3ab69359  gcc/ada/sem_attr.ads
  39892cb912c9fe4b0d512cfc104e5bd7  gcc/ada/sem_aux.adb
  5df4642fb17b29da9f787e48f24551b9  gcc/ada/sem_aux.ads
*************** b7dd8bd2dd68f81643704bf0b73553a1  gcc/al
*** 3155,3161 ****
  71901705cb0e11732bae53ff9de25faf  gcc/align.h
  f2345b2fdc9d2d5a75fe90d30444a114  gcc/alloc-pool.cc
  853103d2bbe4a7888b35cf87d2bbe436  gcc/alloc-pool.h
! 896b0d4f12fcabe998be4823c5e260c8  gcc/analyzer/ChangeLog
  2efbdc8b8a68e1025a7219e0b1f99360  gcc/analyzer/access-diagram.cc
  c41fa6be7ca91f40a15a7b8f03732d25  gcc/analyzer/access-diagram.h
  d97e417faf9694fdbd68f91aee129bd2  gcc/analyzer/ana-state-to-diagnostic-state.cc
--- 3155,3161 ----
  71901705cb0e11732bae53ff9de25faf  gcc/align.h
  f2345b2fdc9d2d5a75fe90d30444a114  gcc/alloc-pool.cc
  853103d2bbe4a7888b35cf87d2bbe436  gcc/alloc-pool.h
! a7ba36074cf0f116ea7533d40fdb8e02  gcc/analyzer/ChangeLog
  2efbdc8b8a68e1025a7219e0b1f99360  gcc/analyzer/access-diagram.cc
  c41fa6be7ca91f40a15a7b8f03732d25  gcc/analyzer/access-diagram.h
  d97e417faf9694fdbd68f91aee129bd2  gcc/analyzer/ana-state-to-diagnostic-state.cc
*************** fa5a2dbbece7e674ee0ba490d0777420  gcc/an
*** 3233,3240 ****
  40d67196cea5adf495b1ff0a0d26039c  gcc/analyzer/region-model-manager.h
  bd7b3b87348aab71c19df788f0817233  gcc/analyzer/region-model-reachability.cc
  93431d9eca086e4c7811afc3a66197ea  gcc/analyzer/region-model-reachability.h
! ffcb122054c741c248e093f886082a94  gcc/analyzer/region-model.cc
! b800670e2c207717abac4f5c5e48e330  gcc/analyzer/region-model.h
  f8d7bd1e0de4ee53bff75c10df2ce248  gcc/analyzer/region.cc
  4282b6abcc1e39df9d5727003ce6c000  gcc/analyzer/region.h
  dc13af22c8f08d0e5313c40e412517df  gcc/analyzer/setjmp-longjmp.cc
--- 3233,3240 ----
  40d67196cea5adf495b1ff0a0d26039c  gcc/analyzer/region-model-manager.h
  bd7b3b87348aab71c19df788f0817233  gcc/analyzer/region-model-reachability.cc
  93431d9eca086e4c7811afc3a66197ea  gcc/analyzer/region-model-reachability.h
! 330469c446220478384e9703a94f4a26  gcc/analyzer/region-model.cc
! e1ca448c3317aa8eb83581a362b3f77c  gcc/analyzer/region-model.h
  f8d7bd1e0de4ee53bff75c10df2ce248  gcc/analyzer/region.cc
  4282b6abcc1e39df9d5727003ce6c000  gcc/analyzer/region.h
  dc13af22c8f08d0e5313c40e412517df  gcc/analyzer/setjmp-longjmp.cc
*************** e78837c5a60b542b208371ea1e312af9  gcc/an
*** 3273,3279 ****
  3c33a162314863866dc49ceb3d8abd11  gcc/analyzer/varargs.dot
  ce213b79c4b2b50ceddefe2bbf41039e  gcc/analyzer/write-to-const-diagnostics.cc
  5af94414f167d3b307a0e33995e4a7fb  gcc/array-traits.h
! fe508d0499653e35024417bbc4eacdfc  gcc/asan.cc
  5b881c71b14da40269030324d80bf7f1  gcc/asan.h
  c21be8736ac701b9ddae4e83d6522cd4  gcc/asm-toplevel.cc
  ea987115b0f67bce5cc4745e6d5bc4d1  gcc/attr-callback.cc
--- 3273,3279 ----
  3c33a162314863866dc49ceb3d8abd11  gcc/analyzer/varargs.dot
  ce213b79c4b2b50ceddefe2bbf41039e  gcc/analyzer/write-to-const-diagnostics.cc
  5af94414f167d3b307a0e33995e4a7fb  gcc/array-traits.h
! 79e1ce28e2f6572ed2c49795873e536e  gcc/asan.cc
  5b881c71b14da40269030324d80bf7f1  gcc/asan.h
  c21be8736ac701b9ddae4e83d6522cd4  gcc/asm-toplevel.cc
  ea987115b0f67bce5cc4745e6d5bc4d1  gcc/attr-callback.cc
*************** bd317e24faffad6f2106396f1c3401b1  gcc/au
*** 3286,3292 ****
  fc353966a860a12cbc161a87f5619b51  gcc/auto-obstack.h
  b27892a8f728df598e54273272b34115  gcc/auto-profile.cc
  d290a68be0a787113b46b8c5ec98f710  gcc/auto-profile.h
! 597d34808ffeb923b6497701a8c8380b  gcc/avoid-store-forwarding.cc
  df8fff5733f0af601cd10d3e2611b94a  gcc/avoid-store-forwarding.h
  8ec9314e9edefe43a037289f48e6602a  gcc/backend.h
  6770584a7ddc4817aef150c43e430367  gcc/basic-block.h
--- 3286,3292 ----
  fc353966a860a12cbc161a87f5619b51  gcc/auto-obstack.h
  b27892a8f728df598e54273272b34115  gcc/auto-profile.cc
  d290a68be0a787113b46b8c5ec98f710  gcc/auto-profile.h
! c46de58da61041da0ad341a5f8114382  gcc/avoid-store-forwarding.cc
  df8fff5733f0af601cd10d3e2611b94a  gcc/avoid-store-forwarding.h
  8ec9314e9edefe43a037289f48e6602a  gcc/backend.h
  6770584a7ddc4817aef150c43e430367  gcc/basic-block.h
*************** c277cfbf6dc22b5e43687f22a6ef9adb  gcc/bb
*** 3297,3303 ****
  0a656b07247b6d2bb8103f4808e3b277  gcc/bitmap.h
  8ba8cc55d4c38f126d32b3291cec4312  gcc/btfout.cc
  6da486aac72d8ac53fc6618dea4dcf2e  gcc/builtin-attrs.def
! 010e9d919732caa6b88d00ed5ebcc3ca  gcc/builtin-types.def
  5904fdca89f304f313188b0fc026f555  gcc/builtins.cc
  c69491e1e06e8252126bfd579bd74d4d  gcc/builtins.def
  4f577c1f20985f1ba3c1672476f1a2da  gcc/builtins.h
--- 3297,3303 ----
  0a656b07247b6d2bb8103f4808e3b277  gcc/bitmap.h
  8ba8cc55d4c38f126d32b3291cec4312  gcc/btfout.cc
  6da486aac72d8ac53fc6618dea4dcf2e  gcc/builtin-attrs.def
! f2bf5284bd63a533f1707b1aca6dee0f  gcc/builtin-types.def
  5904fdca89f304f313188b0fc026f555  gcc/builtins.cc
  c69491e1e06e8252126bfd579bd74d4d  gcc/builtins.def
  4f577c1f20985f1ba3c1672476f1a2da  gcc/builtins.h
*************** c620b176c09eda90b566ae49703a8346  gcc/cf
*** 3378,3385 ****
  1759b500ef3ebaa71f165d1004be0c28  gcc/cfgbuild.h
  4c93b442fb2c3908e2b49dbd5e1d5d2c  gcc/cfgcleanup.cc
  19b842f671a6c6284b654d712d52e513  gcc/cfgcleanup.h
! 7c78abc9af060f81fab6c173e1e7c65b  gcc/cfgexpand.cc
! 7bcce78536f3bff0e046d9a3ece5ea9a  gcc/cfgexpand.h
  9009ba1d3f596dbdd73e13ac8c13aa03  gcc/cfghooks.cc
  168a35792653beee5d2b951ef1708665  gcc/cfghooks.h
  8c572e1dbe8ec2f3eb6a83b9125087ab  gcc/cfgloop.cc
--- 3378,3385 ----
  1759b500ef3ebaa71f165d1004be0c28  gcc/cfgbuild.h
  4c93b442fb2c3908e2b49dbd5e1d5d2c  gcc/cfgcleanup.cc
  19b842f671a6c6284b654d712d52e513  gcc/cfgcleanup.h
! 97bf5a3c95dfae1f1fa56d9ad53fde0b  gcc/cfgexpand.cc
! 742bc48a21badd5ee854bc97f1f0e5b2  gcc/cfgexpand.h
  9009ba1d3f596dbdd73e13ac8c13aa03  gcc/cfghooks.cc
  168a35792653beee5d2b951ef1708665  gcc/cfghooks.h
  8c572e1dbe8ec2f3eb6a83b9125087ab  gcc/cfgloop.cc
*************** b50dcacbe77c96809023aa599a556717  gcc/cg
*** 3396,3420 ****
  a9229e8ac3f0d366e296e57756becd23  gcc/cgraphunit.cc
  45b21ab7ea818c3a3ce60bf8d3cbd252  gcc/channels.h
  f2981f79a749a2269d7ea349ab37ca3e  gcc/cif-code.def
! 041a922310903246634df4db3f05541e  gcc/cobol/ChangeLog
  fcb021496628ea0c70ca22a6f8b75eb5  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
! 52354a058e3e450f1dfa4a4be5f5775c  gcc/cobol/cbldiag.h
! 13d5fede5e62ab7cd058d6a31bd68bc5  gcc/cobol/cdf-copy.cc
! 9f6a44ea7a47f8e8fb112e9f25b56b29  gcc/cobol/cdf.y
  314ba2fe46efd7508b3cd6ef99aa964f  gcc/cobol/cdfval.h
  39a7cc8aae37a642491e77796d652ebe  gcc/cobol/cobol-system.h
! 35df1cf890013e5aceed3e3691e9fc71  gcc/cobol/cobol1.cc
! 6fdae0ff20003c3455a73ac1cc921fe8  gcc/cobol/compare.cc
  30fe1e768a76bb15b7d6d2d12bb53a3a  gcc/cobol/compare.h
  8b7f26d4855e5bb69a66eecc586d9742  gcc/cobol/config-lang.in
  7e43ef597462b3ceabf3c197b4017e7c  gcc/cobol/convert.cc
! 4638d143b5638f95fc7d135c6f95e06f  gcc/cobol/copybook.h
  d5c6387d56f84eecf1320e4209ae02fe  gcc/cobol/dts.h
  79fd5c6d108a5a1af2ebda2296d91440  gcc/cobol/except.cc
  5faeacdf9fba68f3991fa3a6f65be405  gcc/cobol/exceptg.h
  d662c0c5ca1bc4d52a83fa1d89e0db14  gcc/cobol/gcobc
! c646c4f0f9d1c7b5e73df2311ec3c886  gcc/cobol/gcobol.1
  7a73ffe93cdd304879a42f225aa554ee  gcc/cobol/gcobol.3
  6c87ff946886a67b55671336b1424703  gcc/cobol/gcobolspec.cc
  a25f2346ce37aa53bcbbe0c8559371a0  gcc/cobol/genapi.cc
--- 3396,3420 ----
  a9229e8ac3f0d366e296e57756becd23  gcc/cgraphunit.cc
  45b21ab7ea818c3a3ce60bf8d3cbd252  gcc/channels.h
  f2981f79a749a2269d7ea349ab37ca3e  gcc/cif-code.def
! fc91e18102398c0544a9c442694f6400  gcc/cobol/ChangeLog
  fcb021496628ea0c70ca22a6f8b75eb5  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
! adfd86ea937fe023a507370bde9412a3  gcc/cobol/cbldiag.h
! 5d42f453c7204fe5b6a0098f45c3d54b  gcc/cobol/cdf-copy.cc
! 74e5c10d81ca3bf2b3de3eb4231b3227  gcc/cobol/cdf.y
  314ba2fe46efd7508b3cd6ef99aa964f  gcc/cobol/cdfval.h
  39a7cc8aae37a642491e77796d652ebe  gcc/cobol/cobol-system.h
! c5a8d054534ea6e8b7cdcf30091a8065  gcc/cobol/cobol1.cc
! c291ed941bf4f962f4e030bea3f1cc2b  gcc/cobol/compare.cc
  30fe1e768a76bb15b7d6d2d12bb53a3a  gcc/cobol/compare.h
  8b7f26d4855e5bb69a66eecc586d9742  gcc/cobol/config-lang.in
  7e43ef597462b3ceabf3c197b4017e7c  gcc/cobol/convert.cc
! 07fd52b0f595c85024915a586a088b2a  gcc/cobol/copybook.h
  d5c6387d56f84eecf1320e4209ae02fe  gcc/cobol/dts.h
  79fd5c6d108a5a1af2ebda2296d91440  gcc/cobol/except.cc
  5faeacdf9fba68f3991fa3a6f65be405  gcc/cobol/exceptg.h
  d662c0c5ca1bc4d52a83fa1d89e0db14  gcc/cobol/gcobc
! 284c1428c8c4feceecfc5cb1ba80d5b7  gcc/cobol/gcobol.1
  7a73ffe93cdd304879a42f225aa554ee  gcc/cobol/gcobol.3
  6c87ff946886a67b55671336b1424703  gcc/cobol/gcobolspec.cc
  a25f2346ce37aa53bcbbe0c8559371a0  gcc/cobol/genapi.cc
*************** bf1f3209a68da408b87c6b8921d3c641  gcc/co
*** 3423,3455 ****
  56a3e27a2a359aac3fafe3bd38e08075  gcc/cobol/gengen.h
  a89ae19c1e81dcbb7086fd601f1b74af  gcc/cobol/genmath.cc
  78d263e35c67698f367e118c95157cb4  gcc/cobol/genmath.h
! fee158af1cfa5022eac60abef361a3da  gcc/cobol/genutil.cc
  6afc16bb594eda58be73c28f20718a89  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0c56a591cf166a8d83553c2afd4b3ce3  gcc/cobol/inspect.h
! c276d252c685e632dfd79fb34023a072  gcc/cobol/lang-specs.h
! 3c6d92340023956f3b78895529f649e4  gcc/cobol/lang.opt
  fd4809576031a8df82aa91899e5e6a5f  gcc/cobol/lang.opt.urls
! f31aff6048506a0a8bc29ddc67fc63e9  gcc/cobol/lexio.cc
! 533eed112d82eef29c98fceff240e44d  gcc/cobol/lexio.h
! 49c853bcd36b81871522ca7b95e60e75  gcc/cobol/messages.cc
! c91dc51992c98b40219cedbd644a4729  gcc/cobol/move.cc
! dd3574244c43eec5aa63c20669785672  gcc/cobol/parse.y
! 5a0425216209c37c0bc771c193ac84a4  gcc/cobol/parse_ante.h
  07e2f8ea22b70968a03d9ddf07a64315  gcc/cobol/parse_util.h
! e1a6fa8be56d1ba56307aab9a25e8002  gcc/cobol/scan.l
! 8cf22b0779fadf2d015455feca75ccd2  gcc/cobol/scan_ante.h
! d5188b7f8eb9f619c067519dc3f92ce6  gcc/cobol/scan_post.h
  ee67526be0e3a05e98aa61ae737142ab  gcc/cobol/show_parse.h
  8a8a8f6e836dff7e452f9cd030542599  gcc/cobol/structs.cc
  015fac4a42a4bf03d101922bc6f68781  gcc/cobol/structs.h
! 568a7a347be8293fea3669cefc46e0e3  gcc/cobol/symbols.cc
! 0073373dbb80d66737302941e57968b9  gcc/cobol/symbols.h
  2862172acfe51d0110621aa14e8b9655  gcc/cobol/symfind.cc
  e46c348276950beff20df278e4e041c8  gcc/cobol/token_names.h
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
! 06ca31ae5ff0365d34cf8586a45297f6  gcc/cobol/util.cc
! 395c97f0b12382690815b0e1c1702ec4  gcc/cobol/util.h
  8eceaeb8e762ac925b791d2a5d2a6e16  gcc/collect-utils.cc
  ac937838bf0c954b723fba6b6a088b4c  gcc/collect-utils.h
  38716fe5959af2b954c272008e158928  gcc/collect2-aix.cc
--- 3423,3455 ----
  56a3e27a2a359aac3fafe3bd38e08075  gcc/cobol/gengen.h
  a89ae19c1e81dcbb7086fd601f1b74af  gcc/cobol/genmath.cc
  78d263e35c67698f367e118c95157cb4  gcc/cobol/genmath.h
! eb64a00a8301726556e9befda294143a  gcc/cobol/genutil.cc
  6afc16bb594eda58be73c28f20718a89  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0c56a591cf166a8d83553c2afd4b3ce3  gcc/cobol/inspect.h
! 849f65fbc76c0b46ba94bad8fd12ddec  gcc/cobol/lang-specs.h
! 605095c5db8ee10a0dc7c192401f1cc4  gcc/cobol/lang.opt
  fd4809576031a8df82aa91899e5e6a5f  gcc/cobol/lang.opt.urls
! 35fb28b97e39f7e8939c659948b12aa9  gcc/cobol/lexio.cc
! e062f9692ebf1a0a57ae640afec53eea  gcc/cobol/lexio.h
! b2985748687d8afd5dcb169600e891a1  gcc/cobol/messages.cc
! 617a4f431353b418397eb611f36c4bd3  gcc/cobol/move.cc
! b13382eac50b6b27b387620b028a459d  gcc/cobol/parse.y
! 5b1d7b90e9778fcea6def4266aea4ebe  gcc/cobol/parse_ante.h
  07e2f8ea22b70968a03d9ddf07a64315  gcc/cobol/parse_util.h
! 0050d3cb98902bbc8c4e7d0858075327  gcc/cobol/scan.l
! 0ab7f4637b1decaff8e37da75429d750  gcc/cobol/scan_ante.h
! eb170968edbe38ae3d438691e00e4930  gcc/cobol/scan_post.h
  ee67526be0e3a05e98aa61ae737142ab  gcc/cobol/show_parse.h
  8a8a8f6e836dff7e452f9cd030542599  gcc/cobol/structs.cc
  015fac4a42a4bf03d101922bc6f68781  gcc/cobol/structs.h
! 0c9530563086e744cffa6152f7e47941  gcc/cobol/symbols.cc
! ab11271aa5a75101069c5b7f538fefe8  gcc/cobol/symbols.h
  2862172acfe51d0110621aa14e8b9655  gcc/cobol/symfind.cc
  e46c348276950beff20df278e4e041c8  gcc/cobol/token_names.h
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
! 96989d081bf69a0634ff946fa27e4306  gcc/cobol/util.cc
! 483ee4b003fe2afabe91bf455aa5cebb  gcc/cobol/util.h
  8eceaeb8e762ac925b791d2a5d2a6e16  gcc/collect-utils.cc
  ac937838bf0c954b723fba6b6a088b4c  gcc/collect-utils.h
  38716fe5959af2b954c272008e158928  gcc/collect2-aix.cc
*************** aff01d1ea9fc10bd68293fb6710a46b2  gcc/co
*** 3530,3541 ****
  c47b4191f7bac0196ab63ca2c66bfa98  gcc/config/aarch64/aarch64-abi-ms.cc
  148fedc3acd410f7a82133d0e78b02df  gcc/config/aarch64/aarch64-abi-ms.h
  8ff07acfbcd111449b4f4f404c60286c  gcc/config/aarch64/aarch64-acle-builtins.cc
! 9e84c6833cdbd017472f9daa9ead80f6  gcc/config/aarch64/aarch64-acle-builtins.h
  9b6ffa67b7e7f7cc2348fa0dc728072e  gcc/config/aarch64/aarch64-arches.def
  c8a924cfcb693679febdcde3a0cc0809  gcc/config/aarch64/aarch64-builtin-pairs.def
  d5fbe6e3af1b01608c4a3357c62eae72  gcc/config/aarch64/aarch64-builtins.cc
  a3507dcb83cc22f280935ae25197c481  gcc/config/aarch64/aarch64-builtins.h
! 36db7b8469a291518753fb98894a6b15  gcc/config/aarch64/aarch64-c.cc
  5f567f76d6adf2e43af2f3a4704e87d6  gcc/config/aarch64/aarch64-coff.h
  b63633b6fb7a5d491fa65687788a4128  gcc/config/aarch64/aarch64-cores.def
  cd1537928dd0fadfa53b88b278af0ed2  gcc/config/aarch64/aarch64-cost-tables.h
--- 3530,3541 ----
  c47b4191f7bac0196ab63ca2c66bfa98  gcc/config/aarch64/aarch64-abi-ms.cc
  148fedc3acd410f7a82133d0e78b02df  gcc/config/aarch64/aarch64-abi-ms.h
  8ff07acfbcd111449b4f4f404c60286c  gcc/config/aarch64/aarch64-acle-builtins.cc
! a04dfa3fd9f180aee24d889a972b719f  gcc/config/aarch64/aarch64-acle-builtins.h
  9b6ffa67b7e7f7cc2348fa0dc728072e  gcc/config/aarch64/aarch64-arches.def
  c8a924cfcb693679febdcde3a0cc0809  gcc/config/aarch64/aarch64-builtin-pairs.def
  d5fbe6e3af1b01608c4a3357c62eae72  gcc/config/aarch64/aarch64-builtins.cc
  a3507dcb83cc22f280935ae25197c481  gcc/config/aarch64/aarch64-builtins.h
! cccf1c48e95a918f1925d5c554a2f9a9  gcc/config/aarch64/aarch64-c.cc
  5f567f76d6adf2e43af2f3a4704e87d6  gcc/config/aarch64/aarch64-coff.h
  b63633b6fb7a5d491fa65687788a4128  gcc/config/aarch64/aarch64-cores.def
  cd1537928dd0fadfa53b88b278af0ed2  gcc/config/aarch64/aarch64-cost-tables.h
*************** c58a041b3d1a2f2c6c49f13e8ad85fdc  gcc/co
*** 3581,3592 ****
  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
! 07b97d98992798466794748f4e1f2889  gcc/config/aarch64/aarch64-simd-builtins.def
  2fae3501b318ccd9be92a4b49710913e  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! 3611d70350c5edc3bd92dbd196a594fd  gcc/config/aarch64/aarch64-simd.md
  f27b31555e077ce25b7e0120a532cfdf  gcc/config/aarch64/aarch64-sme.md
  49d4ace4311e9b1d77ff31b3b8883769  gcc/config/aarch64/aarch64-speculation.cc
! c09e875ec76470d14ced515628164d82  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  8b08d9a2c35427a6672b61f1b4dcb6ee  gcc/config/aarch64/aarch64-sve-builtins-base.def
  c21ba709d29fe9718239fabf22dcb9a9  gcc/config/aarch64/aarch64-sve-builtins-base.h
  34de40a8478ea797a87ce39e044629ec  gcc/config/aarch64/aarch64-sve-builtins-functions.h
--- 3581,3592 ----
  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
! 8e5bb37aa84cd6bc8571a8bab6e8e981  gcc/config/aarch64/aarch64-simd-builtins.def
  2fae3501b318ccd9be92a4b49710913e  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! a83b97fcf4b3b81011e105e1af9a33d3  gcc/config/aarch64/aarch64-simd.md
  f27b31555e077ce25b7e0120a532cfdf  gcc/config/aarch64/aarch64-sme.md
  49d4ace4311e9b1d77ff31b3b8883769  gcc/config/aarch64/aarch64-speculation.cc
! 0608f6909638378b0d32864e47b635c8  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  8b08d9a2c35427a6672b61f1b4dcb6ee  gcc/config/aarch64/aarch64-sve-builtins-base.def
  c21ba709d29fe9718239fabf22dcb9a9  gcc/config/aarch64/aarch64-sve-builtins-base.h
  34de40a8478ea797a87ce39e044629ec  gcc/config/aarch64/aarch64-sve-builtins-functions.h
*************** e506265179e1134aaa915d797e47e5fa  gcc/co
*** 3595,3620 ****
  4bba4ad014d76418a4dffcac45802402  gcc/config/aarch64/aarch64-sve-builtins-sme.cc
  b7970cc46633371d0ac4e877297d804a  gcc/config/aarch64/aarch64-sve-builtins-sme.def
  1cb175058a4da1ec265f07a8c37df781  gcc/config/aarch64/aarch64-sve-builtins-sme.h
! 18ce861f96ea06337217cdb5fbf6cb64  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
! a5319d4e7a44a8b96aeb7f8a96f660d6  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
! 977f50faf21613363e643a782cf84ca3  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
  9422a2eaa20d292eff64b10bcee8d4f0  gcc/config/aarch64/aarch64-sve-builtins.def
  90d3781359296ff521d1617a69ed7eea  gcc/config/aarch64/aarch64-sve.md
! 2c33bf2afcc6c1e99efec231b38841d5  gcc/config/aarch64/aarch64-sve2.md
  9482a051d967c399dfed0923c294de3f  gcc/config/aarch64/aarch64-sys-regs.def
  4d85753c314f127c5c701c3fc4c29ae5  gcc/config/aarch64/aarch64-tune.md
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  3e678460d03287c5817595f99c59d4c5  gcc/config/aarch64/aarch64-tuning-flags.def
  0eec0dd3dbc5fa83349625d27ac091df  gcc/config/aarch64/aarch64-vxworks.h
! 9eb622227ed600d11141157708d6ec3f  gcc/config/aarch64/aarch64.cc
! 24361ad83b473030c9f81712a515898e  gcc/config/aarch64/aarch64.h
  148e9de02cbf0ec4e00830cbddf4d3e9  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
! 31ad71db061c6989b90f2c1ac906bbe8  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
--- 3595,3620 ----
  4bba4ad014d76418a4dffcac45802402  gcc/config/aarch64/aarch64-sve-builtins-sme.cc
  b7970cc46633371d0ac4e877297d804a  gcc/config/aarch64/aarch64-sve-builtins-sme.def
  1cb175058a4da1ec265f07a8c37df781  gcc/config/aarch64/aarch64-sve-builtins-sme.h
! b0ac273423a93e73c89eee5572125c8a  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
! 2fddf708eef25ff1049e8f44bae776fb  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
! 4456bbd9db31e93ab0f3827a62d6dfba  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
  9422a2eaa20d292eff64b10bcee8d4f0  gcc/config/aarch64/aarch64-sve-builtins.def
  90d3781359296ff521d1617a69ed7eea  gcc/config/aarch64/aarch64-sve.md
! a3716da70ebf3a952f9339ddf78b9e3e  gcc/config/aarch64/aarch64-sve2.md
  9482a051d967c399dfed0923c294de3f  gcc/config/aarch64/aarch64-sys-regs.def
  4d85753c314f127c5c701c3fc4c29ae5  gcc/config/aarch64/aarch64-tune.md
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  3e678460d03287c5817595f99c59d4c5  gcc/config/aarch64/aarch64-tuning-flags.def
  0eec0dd3dbc5fa83349625d27ac091df  gcc/config/aarch64/aarch64-vxworks.h
! dd55326d2d8444605d1149c976ab630f  gcc/config/aarch64/aarch64.cc
! 7c585bb4def729fd6a63232cfd1a7b7e  gcc/config/aarch64/aarch64.h
  148e9de02cbf0ec4e00830cbddf4d3e9  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
! ac6c055e2d3af431515ce24c75364e7e  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
*************** eb03dfcd266d8fc8f127a62e436447db  gcc/co
*** 3629,3639 ****
  dc252994bb63e3b3bb9aa44e233b100d  gcc/config/aarch64/cygming.h
  1869071c19d7792acb8ce41bba26eb30  gcc/config/aarch64/driver-aarch64.cc
  f16190eb3167c87740aaff80ebc646b5  gcc/config/aarch64/fractional-cost.h
! 651bbb7890869a090e394b18403b9f44  gcc/config/aarch64/gcc-auto-profile
  190b8ad2102cd90ce935883b736ff024  gcc/config/aarch64/geniterators.sh
  b8dedf1142526bb86368b620384f877a  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 1228eac8069f6241b45c73c7f6a4ac60  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
  b382a70dce13e2b3d554e31443c0dbf0  gcc/config/aarch64/olympus.md
  56d541392b6fc0157c039891f4d3f863  gcc/config/aarch64/predicates.md
--- 3629,3639 ----
  dc252994bb63e3b3bb9aa44e233b100d  gcc/config/aarch64/cygming.h
  1869071c19d7792acb8ce41bba26eb30  gcc/config/aarch64/driver-aarch64.cc
  f16190eb3167c87740aaff80ebc646b5  gcc/config/aarch64/fractional-cost.h
! ecd00e36741ef4e76489950efc07e03f  gcc/config/aarch64/gcc-auto-profile
  190b8ad2102cd90ce935883b736ff024  gcc/config/aarch64/geniterators.sh
  b8dedf1142526bb86368b620384f877a  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 446832de74b395666693541147ecd361  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
  b382a70dce13e2b3d554e31443c0dbf0  gcc/config/aarch64/olympus.md
  56d541392b6fc0157c039891f4d3f863  gcc/config/aarch64/predicates.md
*************** ba1ccf433d1efd30c6fb7d9330d6c15f  gcc/co
*** 3990,3996 ****
  9c37e92c4940cbfae2cc0dffed81013f  gcc/config/cris/cris-protos.h
  0e5387dda087723fe21aa57b524b7bc9  gcc/config/cris/cris.cc
  5937d099a75f786eceb3027e381c5f1b  gcc/config/cris/cris.h
! 2d5e1bf86a7d13a040a43c2cf99e94da  gcc/config/cris/cris.md
  9806f1d00685997be4c9f849f3a615d8  gcc/config/cris/cris.opt
  6860fb25a360ee6a896163ea010ecc27  gcc/config/cris/cris.opt.urls
  9e100a5514b76c41c8ab833558ae88b9  gcc/config/cris/elf.opt
--- 3990,3996 ----
  9c37e92c4940cbfae2cc0dffed81013f  gcc/config/cris/cris-protos.h
  0e5387dda087723fe21aa57b524b7bc9  gcc/config/cris/cris.cc
  5937d099a75f786eceb3027e381c5f1b  gcc/config/cris/cris.h
! 90e372f8f064dd7786f945aade6f6f5b  gcc/config/cris/cris.md
  9806f1d00685997be4c9f849f3a615d8  gcc/config/cris/cris.opt
  6860fb25a360ee6a896163ea010ecc27  gcc/config/cris/cris.opt.urls
  9e100a5514b76c41c8ab833558ae88b9  gcc/config/cris/elf.opt
*************** be7f06e3ea032dfb39fcda012c812683  gcc/co
*** 4316,4324 ****
  3ca3efd35f47efb8789dc330b5b92a4f  gcc/config/i386/i386-c.cc
  a0261d6cc006fb86b99f338bdc94ae04  gcc/config/i386/i386-d.cc
  e9c7eebd4e344796f248c93990aa5166  gcc/config/i386/i386-d.h
! 360f3bbaea065a9d2a05b6e845fdc3fa  gcc/config/i386/i386-expand.cc
  386e1be7f608621b79970d4d036694f8  gcc/config/i386/i386-expand.h
! 86a817ac900b29dc9a74d5dc0f8dd8c9  gcc/config/i386/i386-features.cc
  52056c666db06e99d6978e69f82ed68d  gcc/config/i386/i386-features.h
  a36300f5b0bbacff82dff3d8f9bb59ce  gcc/config/i386/i386-isa.def
  848d1b1aa8faaad07d31b78764004e7f  gcc/config/i386/i386-jit.cc
--- 4316,4324 ----
  3ca3efd35f47efb8789dc330b5b92a4f  gcc/config/i386/i386-c.cc
  a0261d6cc006fb86b99f338bdc94ae04  gcc/config/i386/i386-d.cc
  e9c7eebd4e344796f248c93990aa5166  gcc/config/i386/i386-d.h
! 3ede4d6744ea7c40eafdbb76c36fedd4  gcc/config/i386/i386-expand.cc
  386e1be7f608621b79970d4d036694f8  gcc/config/i386/i386-expand.h
! 79ab78a97f2366664e1286573cdefd6f  gcc/config/i386/i386-features.cc
  52056c666db06e99d6978e69f82ed68d  gcc/config/i386/i386-features.h
  a36300f5b0bbacff82dff3d8f9bb59ce  gcc/config/i386/i386-isa.def
  848d1b1aa8faaad07d31b78764004e7f  gcc/config/i386/i386-jit.cc
*************** cac2321ed2cc84062b566bd4fafb56f8  gcc/co
*** 4332,4340 ****
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  91b8b50cba997aef17a61929b5b55a87  gcc/config/i386/i386-rust.cc
  25b3947a11eb9ca52892133ddb36f3f2  gcc/config/i386/i386-rust.h
! 776906e686d3ab896094174d8f747acc  gcc/config/i386/i386.cc
  88462a9d217f201cbfd84bdc7c9b57e9  gcc/config/i386/i386.h
! 96700e4a429404084efb835034e42b4f  gcc/config/i386/i386.md
  28453dc70fa94816b467e1fff313e0cc  gcc/config/i386/i386.opt
  a0b0d520aa60f8de67fdc462456c6510  gcc/config/i386/i386.opt.urls
  ec8782b40feb0fc958bf2d6974c70f12  gcc/config/i386/i386elf.h
--- 4332,4340 ----
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  91b8b50cba997aef17a61929b5b55a87  gcc/config/i386/i386-rust.cc
  25b3947a11eb9ca52892133ddb36f3f2  gcc/config/i386/i386-rust.h
! f3b0c2f28d929ac5adb4aa5e88b21b37  gcc/config/i386/i386.cc
  88462a9d217f201cbfd84bdc7c9b57e9  gcc/config/i386/i386.h
! b90dac15c307b2c2371f6de6bedd0fbb  gcc/config/i386/i386.md
  28453dc70fa94816b467e1fff313e0cc  gcc/config/i386/i386.opt
  a0b0d520aa60f8de67fdc462456c6510  gcc/config/i386/i386.opt.urls
  ec8782b40feb0fc958bf2d6974c70f12  gcc/config/i386/i386elf.h
*************** db114ac74c87743a142214fddaad2687  gcc/co
*** 4396,4405 ****
  92210572b9f9f6481e4649a42d9ac3b0  gcc/config/i386/sm4intrin.h
  5298b8261e081859bbf068b710158e8f  gcc/config/i386/smmintrin.h
  592f748733487ebc51326f6cbf8f1f54  gcc/config/i386/sol2.h
! 00e1ade44ff5822eb06f4602687f1734  gcc/config/i386/sse.md
  52e0114cb9ab8d55aac3c17d06657d71  gcc/config/i386/ssemath.h
  8a6ab9e02097018bc9f1c2b347d29cfa  gcc/config/i386/stringop.def
! 691c3ec70751168b367fde007d620594  gcc/config/i386/subst.md
  945c6888d50080573fad6f6c8969b67f  gcc/config/i386/sym-mingw32.cc
  306c9fee2c5164be94b166437a67c826  gcc/config/i386/sync.md
  28dcdee9d85a7ed38cdf902b10992995  gcc/config/i386/sysv4.h
--- 4396,4405 ----
  92210572b9f9f6481e4649a42d9ac3b0  gcc/config/i386/sm4intrin.h
  5298b8261e081859bbf068b710158e8f  gcc/config/i386/smmintrin.h
  592f748733487ebc51326f6cbf8f1f54  gcc/config/i386/sol2.h
! 67d18ee6fdeb42de77e41dc6ec6feacc  gcc/config/i386/sse.md
  52e0114cb9ab8d55aac3c17d06657d71  gcc/config/i386/ssemath.h
  8a6ab9e02097018bc9f1c2b347d29cfa  gcc/config/i386/stringop.def
! 1ad8fa318a811105e288b55b2d978572  gcc/config/i386/subst.md
  945c6888d50080573fad6f6c8969b67f  gcc/config/i386/sym-mingw32.cc
  306c9fee2c5164be94b166437a67c826  gcc/config/i386/sync.md
  28dcdee9d85a7ed38cdf902b10992995  gcc/config/i386/sysv4.h
*************** c7eeb48ab4223ecfdb09fa5e4ce61d71  gcc/co
*** 4568,4574 ****
  dadec2097ca9c4947a49a5766ac8ee89  gcc/config/loongarch/loongarch-str.h
  fc623524d75c7561f85f81615ecad0ac  gcc/config/loongarch/loongarch-target-attr.cc
  3cfb174db8bc99a9361e597a3e9bd35e  gcc/config/loongarch/loongarch-tune.h
! d56143e5f5703b89f55fb70217a28ac1  gcc/config/loongarch/loongarch.cc
  ad66539c6bf3f1a1fe18304e126ac7fc  gcc/config/loongarch/loongarch.h
  b2d82445f8361f64ceed1232349e5595  gcc/config/loongarch/loongarch.md
  62f9bea81246c3dac622d969dabefc1b  gcc/config/loongarch/loongarch.opt
--- 4568,4574 ----
  dadec2097ca9c4947a49a5766ac8ee89  gcc/config/loongarch/loongarch-str.h
  fc623524d75c7561f85f81615ecad0ac  gcc/config/loongarch/loongarch-target-attr.cc
  3cfb174db8bc99a9361e597a3e9bd35e  gcc/config/loongarch/loongarch-tune.h
! 0f9fe8b4091b613692e4275285b6b9b8  gcc/config/loongarch/loongarch.cc
  ad66539c6bf3f1a1fe18304e126ac7fc  gcc/config/loongarch/loongarch.h
  b2d82445f8361f64ceed1232349e5595  gcc/config/loongarch/loongarch.md
  62f9bea81246c3dac622d969dabefc1b  gcc/config/loongarch/loongarch.opt
*************** f913aafadf901518cfbd1709bf303845  gcc/co
*** 5025,5032 ****
  d9ed529190073197d920aa6a15ff07f7  gcc/config/riscv/arch-canonicalize
  b7544a05ff53accc3d2defcb758626a9  gcc/config/riscv/arcv-rhx100.md
  4a634d8ec9f394f560c8538634cd937a  gcc/config/riscv/arcv-rmx100.md
! 67bbc5a81e29ba7c346e27e6a7782608  gcc/config/riscv/autovec-opt.md
! edf41a22232744259fbf44f2ae96a8a6  gcc/config/riscv/autovec.md
  8c6fab8cc48abd58cbae573be6c52639  gcc/config/riscv/bitmanip.md
  ef58889db2e623bb276663585662ae5d  gcc/config/riscv/constraints.md
  cea5b702841429deff64e2e6fd0b626f  gcc/config/riscv/corev.def
--- 5025,5032 ----
  d9ed529190073197d920aa6a15ff07f7  gcc/config/riscv/arch-canonicalize
  b7544a05ff53accc3d2defcb758626a9  gcc/config/riscv/arcv-rhx100.md
  4a634d8ec9f394f560c8538634cd937a  gcc/config/riscv/arcv-rmx100.md
! a9079727a380234cbffb76361bda96da  gcc/config/riscv/autovec-opt.md
! 02e66875df94653a58bf7622c178476a  gcc/config/riscv/autovec.md
  8c6fab8cc48abd58cbae573be6c52639  gcc/config/riscv/bitmanip.md
  ef58889db2e623bb276663585662ae5d  gcc/config/riscv/constraints.md
  cea5b702841429deff64e2e6fd0b626f  gcc/config/riscv/corev.def
*************** eb004939538cc6b4bc5e1a7e22dc62c9  gcc/co
*** 5041,5047 ****
  39e2577cf937bfe79e500d766e56edcf  gcc/config/riscv/generic-ooo.md
  7b389563a40e8440203d06a32003eb1f  gcc/config/riscv/generic-vector-ooo.md
  90a6f68ec2557b16413f573595ce74d6  gcc/config/riscv/generic.md
! 1918a5fb05bb23af839a5aa78120ba7b  gcc/config/riscv/genrvv-type-indexer.cc
  d65916d74c79d1101eb0c17723537421  gcc/config/riscv/gnu.h
  d99d88f6676ff41db13eb02c4bb7538d  gcc/config/riscv/iterators.md
  72a82b13d5b374c0700be4a9e402884c  gcc/config/riscv/linux.h
--- 5041,5047 ----
  39e2577cf937bfe79e500d766e56edcf  gcc/config/riscv/generic-ooo.md
  7b389563a40e8440203d06a32003eb1f  gcc/config/riscv/generic-vector-ooo.md
  90a6f68ec2557b16413f573595ce74d6  gcc/config/riscv/generic.md
! 625ef48daecf7191ddd40caa816fdc83  gcc/config/riscv/genrvv-type-indexer.cc
  d65916d74c79d1101eb0c17723537421  gcc/config/riscv/gnu.h
  d99d88f6676ff41db13eb02c4bb7538d  gcc/config/riscv/iterators.md
  72a82b13d5b374c0700be4a9e402884c  gcc/config/riscv/linux.h
*************** e1ac1647825642c1e551b9a174630bd6  gcc/co
*** 5089,5110 ****
  47b55a69d0879a3c194ecde45856936a  gcc/config/riscv/riscv-v.cc
  34f62419062663f91765f9f50c8f0b62  gcc/config/riscv/riscv-v.h
  9eb2acff4a0e6907ab4fe749d3b1fc7f  gcc/config/riscv/riscv-vect-permconst.cc
! c8ccbe47a6b27471eac8f1f4fcd0d335  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
  d351dde999076e0dcf4095d5c7838526  gcc/config/riscv/riscv-vector-builtins-shapes.cc
  2a2b16ff55b4e9c8265561eb12d0aa49  gcc/config/riscv/riscv-vector-builtins-shapes.h
! 2291ef015c10e52be5b7e887d0ea1219  gcc/config/riscv/riscv-vector-builtins-types.def
! a6aa9a2e1d394ffb7d4a4a2928b682fb  gcc/config/riscv/riscv-vector-builtins.cc
  0ec9d6c2ca784cba000c21a33c87787d  gcc/config/riscv/riscv-vector-builtins.def
! 19a43fb4b1a740e74dbaae36a1a3bea4  gcc/config/riscv/riscv-vector-builtins.h
  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
  d87a1f40dfc9d93ed1ee9eb9243e12e3  gcc/config/riscv/riscv-zicfilp.cc
! 342f67e892d294dca29cdb59cde6b179  gcc/config/riscv/riscv.cc
  e03f5d27fdc607980d9b9e77410f003b  gcc/config/riscv/riscv.h
  6d915d6f7b58738a57b2bac63406b31d  gcc/config/riscv/riscv.md
  c5d85fc587ed7ba9d844efc0c8436373  gcc/config/riscv/riscv.opt
--- 5089,5110 ----
  47b55a69d0879a3c194ecde45856936a  gcc/config/riscv/riscv-v.cc
  34f62419062663f91765f9f50c8f0b62  gcc/config/riscv/riscv-v.h
  9eb2acff4a0e6907ab4fe749d3b1fc7f  gcc/config/riscv/riscv-vect-permconst.cc
! 49d0298db746bcf40672094b059f2ccd  gcc/config/riscv/riscv-vector-builtins-bases.cc
! 0bc173efa01a7c0c059acee024486fd5  gcc/config/riscv/riscv-vector-builtins-bases.h
! 1ec979cf5567f7bcf3c998d2b324a288  gcc/config/riscv/riscv-vector-builtins-functions.def
  d351dde999076e0dcf4095d5c7838526  gcc/config/riscv/riscv-vector-builtins-shapes.cc
  2a2b16ff55b4e9c8265561eb12d0aa49  gcc/config/riscv/riscv-vector-builtins-shapes.h
! 5c07a6f3a2d2dafa1a01250c9b8649e2  gcc/config/riscv/riscv-vector-builtins-types.def
! dfd1caff659e012d8780cb35a6a7b8fe  gcc/config/riscv/riscv-vector-builtins.cc
  0ec9d6c2ca784cba000c21a33c87787d  gcc/config/riscv/riscv-vector-builtins.def
! 6625a25d2c7628b4a711a2a3c9df840c  gcc/config/riscv/riscv-vector-builtins.h
  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
  d87a1f40dfc9d93ed1ee9eb9243e12e3  gcc/config/riscv/riscv-zicfilp.cc
! 79fecbaa8f0dd1e4e12e701c8a97c70a  gcc/config/riscv/riscv.cc
  e03f5d27fdc607980d9b9e77410f003b  gcc/config/riscv/riscv.h
  6d915d6f7b58738a57b2bac63406b31d  gcc/config/riscv/riscv.md
  c5d85fc587ed7ba9d844efc0c8436373  gcc/config/riscv/riscv.opt
*************** c5d85fc587ed7ba9d844efc0c8436373  gcc/co
*** 5112,5118 ****
  68c8996d7ac73df46c6c1d49d8839ee0  gcc/config/riscv/riscv_bitmanip.h
  99deccc8c27a840823251f8715c89d95  gcc/config/riscv/riscv_crypto.h
  919b77d98a332a298929861b56886aaa  gcc/config/riscv/riscv_th_vector.h
! 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
--- 5112,5118 ----
  68c8996d7ac73df46c6c1d49d8839ee0  gcc/config/riscv/riscv_bitmanip.h
  99deccc8c27a840823251f8715c89d95  gcc/config/riscv/riscv_crypto.h
  919b77d98a332a298929861b56886aaa  gcc/config/riscv/riscv_th_vector.h
! 5e71bd23eaffb2e3c131dd3a1b2fa0aa  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
*************** fe202105dd9e81b9ce8fdcc11d52c294  gcc/co
*** 5142,5149 ****
  670dbcd81c0f3fdaf864448ca22368e5  gcc/config/riscv/tt-ascalon-d8.md
  dcbac9d3c6831ff1cd18effca9c7bb28  gcc/config/riscv/vector-bfloat16.md
  d321bd9f102b0926d5d2c56c36ad6853  gcc/config/riscv/vector-crypto.md
! eeff11b93491fb7c669f458a75ceb193  gcc/config/riscv/vector-iterators.md
! 95bf63b9de12dcd7202b8f4604d73ada  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
  a398dfa970d2d1459a986ec657c751a3  gcc/config/riscv/xt-c908.md
  39ba96197510d4ac114a827d7ffbf806  gcc/config/riscv/zc.md
--- 5142,5149 ----
  670dbcd81c0f3fdaf864448ca22368e5  gcc/config/riscv/tt-ascalon-d8.md
  dcbac9d3c6831ff1cd18effca9c7bb28  gcc/config/riscv/vector-bfloat16.md
  d321bd9f102b0926d5d2c56c36ad6853  gcc/config/riscv/vector-crypto.md
! 30b27e6e363dfee77266722486f5a23d  gcc/config/riscv/vector-iterators.md
! 66b028e4e306243912a0dbfafd7bd0eb  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
  a398dfa970d2d1459a986ec657c751a3  gcc/config/riscv/xt-c908.md
  39ba96197510d4ac114a827d7ffbf806  gcc/config/riscv/zc.md
*************** f83fd3bf0d9fbc30c9401eec549fdc2c  gcc/co
*** 5193,5199 ****
  e626e4c3063d9dbb1b3cf98b57f5c4b9  gcc/config/rs6000/cell.md
  f69c992eed87b55ffc58035df814aba1  gcc/config/rs6000/constraints.md
  9dfea0dab8f972986488db93eb23fab1  gcc/config/rs6000/crypto.md
! a34eb9a7f89b11d6ee50754b7ac0de99  gcc/config/rs6000/darwin.h
  8c9c110a4faa8e47a4c4caef834d7c1d  gcc/config/rs6000/darwin.md
  8ef5306087b5e728b308cf63664b051d  gcc/config/rs6000/darwin.opt
  465e67f2fa0bad834639122551e17ab2  gcc/config/rs6000/darwin.opt.urls
--- 5193,5199 ----
  e626e4c3063d9dbb1b3cf98b57f5c4b9  gcc/config/rs6000/cell.md
  f69c992eed87b55ffc58035df814aba1  gcc/config/rs6000/constraints.md
  9dfea0dab8f972986488db93eb23fab1  gcc/config/rs6000/crypto.md
! 010af95c0d8f469b0f1340b3bb9d587d  gcc/config/rs6000/darwin.h
  8c9c110a4faa8e47a4c4caef834d7c1d  gcc/config/rs6000/darwin.md
  8ef5306087b5e728b308cf63664b051d  gcc/config/rs6000/darwin.opt
  465e67f2fa0bad834639122551e17ab2  gcc/config/rs6000/darwin.opt.urls
*************** ed259dbc10dcc21110d2d0d8ddde7497  gcc/co
*** 5273,5279 ****
  e6d989b64b588e3c16ea579031fed5ab  gcc/config/rs6000/rs6000-string.cc
  835f22c956cc4deb83970ee9a9b5b79b  gcc/config/rs6000/rs6000-tables.opt
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
! b23423e78ba7d65d073f02f81723ecdd  gcc/config/rs6000/rs6000.cc
  d126839c8ffcac5e1e502900c8cdd6cb  gcc/config/rs6000/rs6000.h
  ec0a966fcc7de6f79be2e346cc24dcdc  gcc/config/rs6000/rs6000.md
  e9eda0c22b5fe43eacbc84048e8c92b0  gcc/config/rs6000/rs6000.opt
--- 5273,5279 ----
  e6d989b64b588e3c16ea579031fed5ab  gcc/config/rs6000/rs6000-string.cc
  835f22c956cc4deb83970ee9a9b5b79b  gcc/config/rs6000/rs6000-tables.opt
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
! ae9a12d02aa499895577f7ef6ea617cf  gcc/config/rs6000/rs6000.cc
  d126839c8ffcac5e1e502900c8cdd6cb  gcc/config/rs6000/rs6000.h
  ec0a966fcc7de6f79be2e346cc24dcdc  gcc/config/rs6000/rs6000.md
  e9eda0c22b5fe43eacbc84048e8c92b0  gcc/config/rs6000/rs6000.opt
*************** ea440bcad8a276afecfcff0ce6aae6fe  gcc/co
*** 5372,5378 ****
  14c40f85d99aad740c052f55703baf70  gcc/config/s390/s390-opts.h
  aa396b24681954cbcd0cd64bf19d469c  gcc/config/s390/s390-passes.def
  21b7404a4711b3193b5b65a160378070  gcc/config/s390/s390-protos.h
! 5b8202eed5781d829505b5db660ddca9  gcc/config/s390/s390.cc
  f508d5a165d6ee82cceb4134e86ec04d  gcc/config/s390/s390.h
  45ce8b5d3f3cf2253762868a5fced640  gcc/config/s390/s390.md
  d9a39d0121b211e4c06d67f829e1280a  gcc/config/s390/s390.opt
--- 5372,5378 ----
  14c40f85d99aad740c052f55703baf70  gcc/config/s390/s390-opts.h
  aa396b24681954cbcd0cd64bf19d469c  gcc/config/s390/s390-passes.def
  21b7404a4711b3193b5b65a160378070  gcc/config/s390/s390-protos.h
! 93184a0abe13f053c21e1f696f4b4448  gcc/config/s390/s390.cc
  f508d5a165d6ee82cceb4134e86ec04d  gcc/config/s390/s390.h
  45ce8b5d3f3cf2253762868a5fced640  gcc/config/s390/s390.md
  d9a39d0121b211e4c06d67f829e1280a  gcc/config/s390/s390.opt
*************** eabefa7848e30cb14ae3473ccb4f1c5e  gcc/co
*** 5640,5647 ****
  ab92d7ead48857ad8dfb2fbadb7845ab  gcc/config/xtensa/xtensa.md
  411cab921f0a965cbb5411dc8b28fc82  gcc/config/xtensa/xtensa.opt
  107b37908c9eb8a26c5b7a6074ccb338  gcc/config/xtensa/xtensa.opt.urls
! 218fc641896884b3b399a5e3faf2fcd9  gcc/configure
! d1183b9f99788afd35e4e4b21d474747  gcc/configure.ac
  a2bfe87830136c2d55b591b943cecd3f  gcc/configure.tgt
  8a46839a73059f70ef105be9706c2554  gcc/context.cc
  08023c1005def168a8b675813b95d9f4  gcc/context.h
--- 5640,5647 ----
  ab92d7ead48857ad8dfb2fbadb7845ab  gcc/config/xtensa/xtensa.md
  411cab921f0a965cbb5411dc8b28fc82  gcc/config/xtensa/xtensa.opt
  107b37908c9eb8a26c5b7a6074ccb338  gcc/config/xtensa/xtensa.opt.urls
! c2b5f9e7fd43d61879c16412ba7b823e  gcc/configure
! adab6c81d00ade055a0f55daa09a04f8  gcc/configure.ac
  a2bfe87830136c2d55b591b943cecd3f  gcc/configure.tgt
  8a46839a73059f70ef105be9706c2554  gcc/context.cc
  08023c1005def168a8b675813b95d9f4  gcc/context.h
*************** c5ad0142a191862e3e81ecd3573754b3  gcc/co
*** 5652,5658 ****
  a424415c72a544d25e6518e1cf699300  gcc/coroutine-passes.cc
  11fc0e33834de003c7fdd80427589041  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 300f99be28d6f5ad70375b5d04a86ad0  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5652,5658 ----
  a424415c72a544d25e6518e1cf699300  gcc/coroutine-passes.cc
  11fc0e33834de003c7fdd80427589041  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 9e485d6d3c25d7116d1edf4b0764f501  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** f39635970f98bbc4591f6363fe70504b  gcc/cp
*** 5689,5700 ****
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  d9b8a76735523ab737e8778b90397d97  gcc/cp/Make-lang.in
! 879d37362c37f6858835d5ba135f6503  gcc/cp/call.cc
  144dd1ae510a7436b569b007470b62da  gcc/cp/cfns.gperf
  39dd4c5a96c7ea132eb3c7ed039a065e  gcc/cp/cfns.h
  d9da20cf73d3f0c05b969e36b5591492  gcc/cp/class.cc
  e51f295e858583af5f9cf88b9530adf7  gcc/cp/config-lang.in
! dfc7ec239d1eafdfb48f280167ff87ae  gcc/cp/constexpr.cc
  8496faa175546e14a318d75acad50407  gcc/cp/constraint.cc
  32072e5d5d3ee3b897990b37ecc28e03  gcc/cp/contracts.cc
  e77a681f560f3e9500f126febdc67ef6  gcc/cp/contracts.h
--- 5689,5700 ----
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  d9b8a76735523ab737e8778b90397d97  gcc/cp/Make-lang.in
! 49bc5c3a2607a464c9fa3fa210b870f5  gcc/cp/call.cc
  144dd1ae510a7436b569b007470b62da  gcc/cp/cfns.gperf
  39dd4c5a96c7ea132eb3c7ed039a065e  gcc/cp/cfns.h
  d9da20cf73d3f0c05b969e36b5591492  gcc/cp/class.cc
  e51f295e858583af5f9cf88b9530adf7  gcc/cp/config-lang.in
! ecd210a712b59e93b2eecb65338ea0cc  gcc/cp/constexpr.cc
  8496faa175546e14a318d75acad50407  gcc/cp/constraint.cc
  32072e5d5d3ee3b897990b37ecc28e03  gcc/cp/contracts.cc
  e77a681f560f3e9500f126febdc67ef6  gcc/cp/contracts.h
*************** c3a2b25bd723bc8c308ccf3e629f7574  gcc/cp
*** 5717,5723 ****
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
  c651022b1bd680c771d460c372f20a43  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
! a56513b3ec8ab8361f86a9c02aad6755  gcc/cp/error.cc
  1e7989dfae00ab31c61944201f5e19c7  gcc/cp/except.cc
  f4c33376dcbcbb2b49c9a11ec2911ad9  gcc/cp/expr.cc
  447ddbe59eba62b9a389b9ba11701cfc  gcc/cp/friend.cc
--- 5717,5723 ----
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
  c651022b1bd680c771d460c372f20a43  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
! 994bf06fb1968e5a191fe6fe8d37092b  gcc/cp/error.cc
  1e7989dfae00ab31c61944201f5e19c7  gcc/cp/except.cc
  f4c33376dcbcbb2b49c9a11ec2911ad9  gcc/cp/expr.cc
  447ddbe59eba62b9a389b9ba11701cfc  gcc/cp/friend.cc
*************** e4ccdd9cbe95dde4cce27394a7613dd9  gcc/cp
*** 5735,5748 ****
  54609938d396496c7c5bf3f4cbfddaec  gcc/cp/metafns.gperf
  04fe5bec0bf79fcb3680aec9913ebc29  gcc/cp/metafns.h
  c52f8d73b7042675572727b4bbb00bc2  gcc/cp/method.cc
! 5697b2a25714ddb36837f9bfc0d569e5  gcc/cp/module.cc
  36a03818ce45c595866cc280493ac112  gcc/cp/name-lookup.cc
  475864b4d28a78a99daca900b93bb9a6  gcc/cp/name-lookup.h
  54cd670407c3fc4f1778f1561e89ae99  gcc/cp/operators.def
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
! 83690d9b0ed9dbf9a03e905f6190883e  gcc/cp/parser.cc
  fbc41b26ea2a336d3636c9d9c565d845  gcc/cp/parser.h
! 46bfb992372bfaaeedfe92e6f0ad8e3a  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
  814a85a75acd58625e24f47397fd0add  gcc/cp/reflect.cc
  6b0fbfc0125649d898d07031625ff258  gcc/cp/rtti.cc
--- 5735,5748 ----
  54609938d396496c7c5bf3f4cbfddaec  gcc/cp/metafns.gperf
  04fe5bec0bf79fcb3680aec9913ebc29  gcc/cp/metafns.h
  c52f8d73b7042675572727b4bbb00bc2  gcc/cp/method.cc
! b81292aef3ebb9b5874a12c7f0351a79  gcc/cp/module.cc
  36a03818ce45c595866cc280493ac112  gcc/cp/name-lookup.cc
  475864b4d28a78a99daca900b93bb9a6  gcc/cp/name-lookup.h
  54cd670407c3fc4f1778f1561e89ae99  gcc/cp/operators.def
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
! b008e30b510249552b0740d45895aaeb  gcc/cp/parser.cc
  fbc41b26ea2a336d3636c9d9c565d845  gcc/cp/parser.h
! 107c2067fb771505333782d95de77231  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
  814a85a75acd58625e24f47397fd0add  gcc/cp/reflect.cc
  6b0fbfc0125649d898d07031625ff258  gcc/cp/rtti.cc
*************** aa3d2ce2597637ba730adcd2adfc8646  gcc/cp
*** 5752,5759 ****
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
  52add0952becf354977160f4172e92f9  gcc/cp/tree.cc
  01e9a381e6fcf3d016d0170ee0ad71d7  gcc/cp/type-utils.h
! f8acce2d62b5de5f6c73b511ce3dcf6e  gcc/cp/typeck.cc
! 7bdbd74ca9d238373ed7b1c3a817d321  gcc/cp/typeck2.cc
  5b57f64aefce1359bfd8f016a43a8424  gcc/cp/vtable-class-hierarchy.cc
  556f791fb43a25890d32717884f67cd1  gcc/cppbuiltin.cc
  51b40c4eab2c9321ddb49d1acb80edc3  gcc/cppbuiltin.h
--- 5752,5759 ----
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
  52add0952becf354977160f4172e92f9  gcc/cp/tree.cc
  01e9a381e6fcf3d016d0170ee0ad71d7  gcc/cp/type-utils.h
! b2881685489de1ab883a03353fadf6e9  gcc/cp/typeck.cc
! 6950b09fa091178033750ef2816d4676  gcc/cp/typeck2.cc
  5b57f64aefce1359bfd8f016a43a8424  gcc/cp/vtable-class-hierarchy.cc
  556f791fb43a25890d32717884f67cd1  gcc/cppbuiltin.cc
  51b40c4eab2c9321ddb49d1acb80edc3  gcc/cppbuiltin.h
*************** c84639641b29cd79e61a0fe226b0bca7  gcc/do
*** 6162,6168 ****
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  b9c448ca1e683bd1266ff1f8ce25c0d7  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! f600c78936e11d8510d74a0577c7d626  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 6162,6168 ----
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  b9c448ca1e683bd1266ff1f8ce25c0d7  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! 7e93f2fe4c61b3ae03e6a289a95626d6  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** d9bd28712398e388129ab2de3ba1b97a  gcc/do
*** 6214,6220 ****
  eda507c067bdb9d76452955705651419  gcc/doc/riscv-mtune.texi
  d148d8e42c694bcabb267855d8c863fb  gcc/doc/rtl.texi
  b12261ad56bcabd07b4a1b739f271527  gcc/doc/service.texi
! 3d1f5f93a47c73ff083dece2fb898057  gcc/doc/sourcebuild.texi
  9b58fbc10917d12008925e09d91cab55  gcc/doc/specs.texi
  d2b53a62ec4e23a8e4cbe16d2843c100  gcc/doc/standards.texi
  921b2d264ab6d8ca790732e4bec7f807  gcc/doc/tm.texi
--- 6214,6220 ----
  eda507c067bdb9d76452955705651419  gcc/doc/riscv-mtune.texi
  d148d8e42c694bcabb267855d8c863fb  gcc/doc/rtl.texi
  b12261ad56bcabd07b4a1b739f271527  gcc/doc/service.texi
! b408eef4a8647c9963d4a3db0f0b364c  gcc/doc/sourcebuild.texi
  9b58fbc10917d12008925e09d91cab55  gcc/doc/specs.texi
  d2b53a62ec4e23a8e4cbe16d2843c100  gcc/doc/standards.texi
  921b2d264ab6d8ca790732e4bec7f807  gcc/doc/tm.texi
*************** f8396c35f56710f2dd577b8f6644d380  gcc/fo
*** 6278,6284 ****
  0fabcafd30e4b3ab34cafc5c6dfcee4c  gcc/fold-const.cc
  1c4ecad775c097fbffaf36b9320cf1db  gcc/fold-const.h
  87bf3dcaf0fa670e88b5693e7ece16d6  gcc/fold-mem-offsets.cc
! ff8732d31d848ad5db927b32828a6025  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6278,6284 ----
  0fabcafd30e4b3ab34cafc5c6dfcee4c  gcc/fold-const.cc
  1c4ecad775c097fbffaf36b9320cf1db  gcc/fold-const.h
  87bf3dcaf0fa670e88b5693e7ece16d6  gcc/fold-mem-offsets.cc
! 1ce3d6f0dcbdf123e60b4bd2a42b826a  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** c38eb0f2f19a6cb4b79be761670131e8  gcc/fo
*** 6305,6313 ****
  4ee7229a03b31d9caf0d344269fb71ad  gcc/fortran/ChangeLog-2025
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
  04fc4a308eadeb2c8a2ddd07083d677d  gcc/fortran/Make-lang.in
! bcb129d4d143e6ec42b4ddec1fea30b8  gcc/fortran/arith.cc
  1f3ee645ab25a3d858b555c00c0327ae  gcc/fortran/arith.h
! dd3d4373e33e0a14abdf26814a44662b  gcc/fortran/array.cc
  bc40e87bca719f86583a020eff2d6a73  gcc/fortran/bbt.cc
  fc47d1d04a5d9c431ab592e145ac3a00  gcc/fortran/check.cc
  8b07ee9457ddf40d43a1fc7d91b21e68  gcc/fortran/class.cc
--- 6305,6313 ----
  4ee7229a03b31d9caf0d344269fb71ad  gcc/fortran/ChangeLog-2025
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
  04fc4a308eadeb2c8a2ddd07083d677d  gcc/fortran/Make-lang.in
! cd6cfe755adfb13e729119bb39fd3325  gcc/fortran/arith.cc
  1f3ee645ab25a3d858b555c00c0327ae  gcc/fortran/arith.h
! 0142167f09926e393f744aa1cbef7ebf  gcc/fortran/array.cc
  bc40e87bca719f86583a020eff2d6a73  gcc/fortran/bbt.cc
  fc47d1d04a5d9c431ab592e145ac3a00  gcc/fortran/check.cc
  8b07ee9457ddf40d43a1fc7d91b21e68  gcc/fortran/class.cc
*************** edad5176d72953374d67effefef0a605  gcc/fo
*** 6320,6344 ****
  48e7987762051d8cf68633af2633e50f  gcc/fortran/cpp.h
  213bc611adee1d275a412b3ed4886e79  gcc/fortran/data.cc
  ac7321680382b23989a6637e02dfb80e  gcc/fortran/data.h
! 0f8d73479ed26054b29b275bce4fc216  gcc/fortran/decl.cc
  1e7039f0bf7d560e4fcdb2cf95db4b7d  gcc/fortran/dependency.cc
  b66b99368e3cd17573ae64a38e36c1de  gcc/fortran/dependency.h
! c8981a8b3271ced2b73d88949fe1a98f  gcc/fortran/dump-parse-tree.cc
  65aa25da09bdeee948cdad39cfc4d960  gcc/fortran/error.cc
! 7b1375ead84a436fc2b86395e1dfc0c9  gcc/fortran/expr.cc
  c0284e23f561f80398df460d7c477675  gcc/fortran/f95-lang.cc
! c12be3cd7305f9d69b83dda521e0d22a  gcc/fortran/frontend-passes.cc
  c85c9309a4274609c6ff6466621c90f6  gcc/fortran/gfc-diagnostic.def
  afb07146daad7f36a59c52e053f6772f  gcc/fortran/gfc-internals.texi
! 5db3bc0d2779cb9e94661cd0ccf6e4ce  gcc/fortran/gfortran.h
  13d7dc211e7c02525ba3c435e6ea201b  gcc/fortran/gfortran.texi
  11194f3565a8c394b76bd5117830b0ae  gcc/fortran/gfortranspec.cc
! bec784d67d56aa7a23a0d96815b1d0b6  gcc/fortran/interface.cc
  4f508e3773eea5816eb1b88b6ed4a8b5  gcc/fortran/intrinsic.cc
  d7ffa84de49936bfc22cdb2a7ef87800  gcc/fortran/intrinsic.h
  1a62f222e673a1f61193a0a19935b32f  gcc/fortran/intrinsic.texi
  d1270efc97a26916a776b4a7c77118e7  gcc/fortran/invoke.texi
! 939e229d42387144bbb73627a845a594  gcc/fortran/io.cc
  02af2e093ad4f92649a6370fa6dc3215  gcc/fortran/ioparm.def
  b85c5c1f73d24c8492963a229c649c86  gcc/fortran/iresolve.cc
  4983e51f5909bf7627062a5e3ace5455  gcc/fortran/iso-c-binding.def
--- 6320,6344 ----
  48e7987762051d8cf68633af2633e50f  gcc/fortran/cpp.h
  213bc611adee1d275a412b3ed4886e79  gcc/fortran/data.cc
  ac7321680382b23989a6637e02dfb80e  gcc/fortran/data.h
! 5807c6f8a46b645531b22051c5d62f87  gcc/fortran/decl.cc
  1e7039f0bf7d560e4fcdb2cf95db4b7d  gcc/fortran/dependency.cc
  b66b99368e3cd17573ae64a38e36c1de  gcc/fortran/dependency.h
! b2062936eceecf8fe444df59cebefc14  gcc/fortran/dump-parse-tree.cc
  65aa25da09bdeee948cdad39cfc4d960  gcc/fortran/error.cc
! d96b976c88e6b7657f19c77d9c9f89c6  gcc/fortran/expr.cc
  c0284e23f561f80398df460d7c477675  gcc/fortran/f95-lang.cc
! 383a6be3e7a95b47eda7acd6b67d718f  gcc/fortran/frontend-passes.cc
  c85c9309a4274609c6ff6466621c90f6  gcc/fortran/gfc-diagnostic.def
  afb07146daad7f36a59c52e053f6772f  gcc/fortran/gfc-internals.texi
! 7f2b21da13d2c522546b4fd119fbac0b  gcc/fortran/gfortran.h
  13d7dc211e7c02525ba3c435e6ea201b  gcc/fortran/gfortran.texi
  11194f3565a8c394b76bd5117830b0ae  gcc/fortran/gfortranspec.cc
! e8a2dc18c2dad4c738135cdbce7490ff  gcc/fortran/interface.cc
  4f508e3773eea5816eb1b88b6ed4a8b5  gcc/fortran/intrinsic.cc
  d7ffa84de49936bfc22cdb2a7ef87800  gcc/fortran/intrinsic.h
  1a62f222e673a1f61193a0a19935b32f  gcc/fortran/intrinsic.texi
  d1270efc97a26916a776b4a7c77118e7  gcc/fortran/invoke.texi
! f7ef8d0a7c951e0e890015e7148b3ebd  gcc/fortran/io.cc
  02af2e093ad4f92649a6370fa6dc3215  gcc/fortran/ioparm.def
  b85c5c1f73d24c8492963a229c649c86  gcc/fortran/iresolve.cc
  4983e51f5909bf7627062a5e3ace5455  gcc/fortran/iso-c-binding.def
*************** e5c0565c05cf7375c9978273f2e553e7  gcc/fo
*** 6347,6368 ****
  ab51c8a2ae0733888b4a71d477aa98a9  gcc/fortran/lang.opt
  54208069c9076f94d4a14191605630c0  gcc/fortran/lang.opt.urls
  c35102e7caaf40998fe2ead86d2716da  gcc/fortran/libgfortran.h
! acdd137682996055ccebf55905f943f1  gcc/fortran/match.cc
! 0971e0098b3cb0240602494090ed164b  gcc/fortran/match.h
  bf54232c4c950ed772f4964c4f79629e  gcc/fortran/matchexp.cc
  915f6b30a8c22a5fea18690269a5a4a4  gcc/fortran/mathbuiltins.def
  9687294592a5ccef5d0b8254ab33816b  gcc/fortran/misc.cc
  50cd60435948a59aa9a0dd841b3531be  gcc/fortran/module.cc
! 729e4ec4fb4a5d716d5436c568b51564  gcc/fortran/openmp.cc
  7baca4fc0a6fcd712dcbccab22987c74  gcc/fortran/options.cc
! f96b91fecd5db62c95bc50a661965b6d  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
  652dece8c45124ac6ad49d39f2b67df1  gcc/fortran/primary.cc
! a78394fba0d3df124245071a83a38f0c  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
  664f19f5a29de9abc4642568f758c47c  gcc/fortran/simplify.cc
! 2155dafc4405ccdc4c41df7a1a31a496  gcc/fortran/st.cc
  a389deabd1b1a1c96d2ad1e065ba8550  gcc/fortran/symbol.cc
  4fa06f769be3f1b439a574ee842c82ca  gcc/fortran/target-memory.cc
  ea8837444e2a08a95a3ea747c94b8106  gcc/fortran/target-memory.h
--- 6347,6368 ----
  ab51c8a2ae0733888b4a71d477aa98a9  gcc/fortran/lang.opt
  54208069c9076f94d4a14191605630c0  gcc/fortran/lang.opt.urls
  c35102e7caaf40998fe2ead86d2716da  gcc/fortran/libgfortran.h
! 3739ea7b5fda2d49d8465c9f9d510dbb  gcc/fortran/match.cc
! 095a84b3de5ed1fbe18b314c933b2804  gcc/fortran/match.h
  bf54232c4c950ed772f4964c4f79629e  gcc/fortran/matchexp.cc
  915f6b30a8c22a5fea18690269a5a4a4  gcc/fortran/mathbuiltins.def
  9687294592a5ccef5d0b8254ab33816b  gcc/fortran/misc.cc
  50cd60435948a59aa9a0dd841b3531be  gcc/fortran/module.cc
! 18534fa9b78f6ffa097b975acc103daa  gcc/fortran/openmp.cc
  7baca4fc0a6fcd712dcbccab22987c74  gcc/fortran/options.cc
! 5e86bea9d12d822f6f34beb2d86ad7d2  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
  652dece8c45124ac6ad49d39f2b67df1  gcc/fortran/primary.cc
! a18636be31ae729600d9299514622dd7  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
  664f19f5a29de9abc4642568f758c47c  gcc/fortran/simplify.cc
! d2c91e2744faf25a9b344ff91de78405  gcc/fortran/st.cc
  a389deabd1b1a1c96d2ad1e065ba8550  gcc/fortran/symbol.cc
  4fa06f769be3f1b439a574ee842c82ca  gcc/fortran/target-memory.cc
  ea8837444e2a08a95a3ea747c94b8106  gcc/fortran/target-memory.h
*************** f98aef4a99a3ee3d3100e827120be5ca  gcc/fo
*** 6377,6391 ****
  f9b44e52f546f419941042d3627c6575  gcc/fortran/trans-expr.cc
  e05d39a10bc1623db64d0483e98e1b79  gcc/fortran/trans-intrinsic.cc
  98da4f32a07d6a9049d5ebdb3a59119a  gcc/fortran/trans-io.cc
! 7c0113411e9ab813d39f2f35a906b52a  gcc/fortran/trans-openmp.cc
  aeaf1bbd315626b8ca847cf7b66885eb  gcc/fortran/trans-stmt.cc
  6fbc90714f9730e84515bbaadff313f9  gcc/fortran/trans-stmt.h
  2080e7fe1dede580efeb6d90a49f88ce  gcc/fortran/trans-types.cc
  d2e2d3b54c5e07c2ef96e16dfafb0a5d  gcc/fortran/trans-types.h
! 28b618b7aab95404663886a981ad8acf  gcc/fortran/trans.cc
  2d3f54b9ed7f3bbec54c23afc6cab082  gcc/fortran/trans.h
  95f35aeb3293f3036414b45c9c749d61  gcc/fortran/trigd_fe.inc
! 9b6b200ed2cf7e85d63a680fddac1c96  gcc/fortran/types.def
  2512380133ab0852be268312deda8663  gcc/fp-test.cc
  ffcd589d92263dca99a67b1a9fb561b8  gcc/function-abi.cc
  fe144e1c2a0da30ffc9946e5adab7e6f  gcc/function-abi.h
--- 6377,6391 ----
  f9b44e52f546f419941042d3627c6575  gcc/fortran/trans-expr.cc
  e05d39a10bc1623db64d0483e98e1b79  gcc/fortran/trans-intrinsic.cc
  98da4f32a07d6a9049d5ebdb3a59119a  gcc/fortran/trans-io.cc
! 8ab80418ccd29228a9a453d9eb3ab11e  gcc/fortran/trans-openmp.cc
  aeaf1bbd315626b8ca847cf7b66885eb  gcc/fortran/trans-stmt.cc
  6fbc90714f9730e84515bbaadff313f9  gcc/fortran/trans-stmt.h
  2080e7fe1dede580efeb6d90a49f88ce  gcc/fortran/trans-types.cc
  d2e2d3b54c5e07c2ef96e16dfafb0a5d  gcc/fortran/trans-types.h
! c03c9285d2d7368aa8cb68e011a02a69  gcc/fortran/trans.cc
  2d3f54b9ed7f3bbec54c23afc6cab082  gcc/fortran/trans.h
  95f35aeb3293f3036414b45c9c749d61  gcc/fortran/trigd_fe.inc
! db9a8244f9f5260e1f67ae046b4dd905  gcc/fortran/types.def
  2512380133ab0852be268312deda8663  gcc/fp-test.cc
  ffcd589d92263dca99a67b1a9fb561b8  gcc/function-abi.cc
  fe144e1c2a0da30ffc9946e5adab7e6f  gcc/function-abi.h
*************** e4981e3b10513f53ed20b58620dfc56f  gcc/gc
*** 6405,6411 ****
  2e5199869e1ce8b2630e4784fbc6e5e6  gcc/gcc-urlifier.cc
  3ba51d67080efcd8791ea2eaf4103d72  gcc/gcc-urlifier.def
  9110b89a48e29f0f75e8c76eca85c6e2  gcc/gcc-urlifier.h
! 35015453f062887f5b0e1accc2c30e8f  gcc/gcc.cc
  09d73a192ef597ac58c7300df5ae4eb3  gcc/gcc.h
  1edfbdaab776ee29780fe98d767e67ed  gcc/gcov-counter.def
  5254cb252da1522a0364a1ef41fa47b1  gcc/gcov-dump.cc
--- 6405,6411 ----
  2e5199869e1ce8b2630e4784fbc6e5e6  gcc/gcc-urlifier.cc
  3ba51d67080efcd8791ea2eaf4103d72  gcc/gcc-urlifier.def
  9110b89a48e29f0f75e8c76eca85c6e2  gcc/gcc-urlifier.h
! 2dbbdf56c6bb0076fb39748c177c5a24  gcc/gcc.cc
  09d73a192ef597ac58c7300df5ae4eb3  gcc/gcc.h
  1edfbdaab776ee29780fe98d767e67ed  gcc/gcov-counter.def
  5254cb252da1522a0364a1ef41fa47b1  gcc/gcov-dump.cc
*************** e8ef831ecab58724c781ef6c239eb959  gcc/gi
*** 6473,6484 ****
  8b1599b40f5a2702947d5d0d54b2abbc  gcc/gimple-crc-optimization.cc
  a15c39c8992a881e7ddd36b0e81d341c  gcc/gimple-expr.cc
  61721564f913cdbebe438f7c378b316e  gcc/gimple-expr.h
! f8317e3c8085f8fee7ba78c6c2f8dafa  gcc/gimple-fold.cc
  ae37e021ec4849550d7598ecdd2faeb4  gcc/gimple-fold.h
  109e0f96a9d27a8a25bb73d61b701bbc  gcc/gimple-harden-conditionals.cc
  77b7894bb225ebcb156bb0cf28b9325a  gcc/gimple-harden-control-flow.cc
  d84e22c142fb0213a6e5c1fcee858bb7  gcc/gimple-if-to-switch.cc
! 3fc640cc9756e9b4f19455586fe322fa  gcc/gimple-isel.cc
  bf334d5b92a46499673552c5ba899992  gcc/gimple-iterator.cc
  f625775d4290d87f0c15fb36855776b1  gcc/gimple-iterator.h
  a7d47404d5fd61c66fd504e78960fac2  gcc/gimple-laddress.cc
--- 6473,6484 ----
  8b1599b40f5a2702947d5d0d54b2abbc  gcc/gimple-crc-optimization.cc
  a15c39c8992a881e7ddd36b0e81d341c  gcc/gimple-expr.cc
  61721564f913cdbebe438f7c378b316e  gcc/gimple-expr.h
! 5b96093f7782d7150089ad9120be7f26  gcc/gimple-fold.cc
  ae37e021ec4849550d7598ecdd2faeb4  gcc/gimple-fold.h
  109e0f96a9d27a8a25bb73d61b701bbc  gcc/gimple-harden-conditionals.cc
  77b7894bb225ebcb156bb0cf28b9325a  gcc/gimple-harden-control-flow.cc
  d84e22c142fb0213a6e5c1fcee858bb7  gcc/gimple-if-to-switch.cc
! 2a299eb56609458b4404821edb5e3232  gcc/gimple-isel.cc
  bf334d5b92a46499673552c5ba899992  gcc/gimple-iterator.cc
  f625775d4290d87f0c15fb36855776b1  gcc/gimple-iterator.h
  a7d47404d5fd61c66fd504e78960fac2  gcc/gimple-laddress.cc
*************** a7d47404d5fd61c66fd504e78960fac2  gcc/gi
*** 6487,6493 ****
  79e1be92f049137ccb4bbb870690e093  gcc/gimple-loop-versioning.cc
  a3c0ce653bff24576326a2c5f8a39b01  gcc/gimple-low.cc
  a6a5de8424eee65e836bba5b21f32a6b  gcc/gimple-low.h
! 1d3d8ae4d1d91099fe242655cadb0ced  gcc/gimple-lower-bitint.cc
  0ad30ecd31f0473de43171e203bbed3e  gcc/gimple-lower-bitint.h
  283afbcda37f06544c84656fdb8c1a68  gcc/gimple-match-exports.cc
  95ab37dd8c1b67f025a463e428c5f21b  gcc/gimple-match-head.cc
--- 6487,6493 ----
  79e1be92f049137ccb4bbb870690e093  gcc/gimple-loop-versioning.cc
  a3c0ce653bff24576326a2c5f8a39b01  gcc/gimple-low.cc
  a6a5de8424eee65e836bba5b21f32a6b  gcc/gimple-low.h
! 2d87af0b0e2a65d600f1926549836ed3  gcc/gimple-lower-bitint.cc
  0ad30ecd31f0473de43171e203bbed3e  gcc/gimple-lower-bitint.h
  283afbcda37f06544c84656fdb8c1a68  gcc/gimple-match-exports.cc
  95ab37dd8c1b67f025a463e428c5f21b  gcc/gimple-match-head.cc
*************** a6a5de8424eee65e836bba5b21f32a6b  gcc/gi
*** 6495,6501 ****
  dd67ca2e05cdfe59a549e49eb485455e  gcc/gimple-predicate-analysis.cc
  0925ba871aaeaae015e8802e4ff45acb  gcc/gimple-predicate-analysis.h
  47be556d1ffdffe8df16fdea25e9fe0e  gcc/gimple-predict.h
! 507f851a06264c7415919c28e6afa3da  gcc/gimple-pretty-print.cc
  188a3366d8d8b4ba413f704fa241a1e2  gcc/gimple-pretty-print.h
  22efc62f79637b84953405c2f758b780  gcc/gimple-range-cache.cc
  fed39c5b7ccbe9fef78cb20fe5a094d8  gcc/gimple-range-cache.h
--- 6495,6501 ----
  dd67ca2e05cdfe59a549e49eb485455e  gcc/gimple-predicate-analysis.cc
  0925ba871aaeaae015e8802e4ff45acb  gcc/gimple-predicate-analysis.h
  47be556d1ffdffe8df16fdea25e9fe0e  gcc/gimple-predict.h
! 535a1259754cf5f42775686f2de83982  gcc/gimple-pretty-print.cc
  188a3366d8d8b4ba413f704fa241a1e2  gcc/gimple-pretty-print.h
  22efc62f79637b84953405c2f758b780  gcc/gimple-range-cache.cc
  fed39c5b7ccbe9fef78cb20fe5a094d8  gcc/gimple-range-cache.h
*************** c7aaa3764ab30058c5d27da89f166ec2  gcc/gi
*** 6544,6550 ****
  f382197a559befdd61c8aecc0cfa22ca  gcc/gimple.h
  46bdb18976fdb25accadbfdc07f14a8e  gcc/gimplify-me.cc
  cc5b43d0554c69571cd007e727fbb7d1  gcc/gimplify-me.h
! 503c0f8292fed41c5c2c20c9f7d9f3e4  gcc/gimplify.cc
  5015d194d6aebf6d8d4bbb3945a77e27  gcc/gimplify.h
  ba3039c0ed9645080c52c0d4bc46096f  gcc/gimplify_reg_info.h
  83f82d6779ea9f6500c863169abfca55  gcc/ginclude/float.h
--- 6544,6550 ----
  f382197a559befdd61c8aecc0cfa22ca  gcc/gimple.h
  46bdb18976fdb25accadbfdc07f14a8e  gcc/gimplify-me.cc
  cc5b43d0554c69571cd007e727fbb7d1  gcc/gimplify-me.h
! 6fda3afb95edd14b2789e475e0f34316  gcc/gimplify.cc
  5015d194d6aebf6d8d4bbb3945a77e27  gcc/gimplify.h
  ba3039c0ed9645080c52c0d4bc46096f  gcc/gimplify_reg_info.h
  83f82d6779ea9f6500c863169abfca55  gcc/ginclude/float.h
*************** e7cd0ecfbe34f7bcabfe2df033371730  gcc/ip
*** 6710,6716 ****
  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
  28e33a4a0b99d281a0437774beede1af  gcc/ipa-predicate.h
  7e00759eeb8f2ddaa2f77da1db8adf24  gcc/ipa-profile.cc
--- 6710,6716 ----
  323eab7a20907e08e7d9ca8e513c2259  gcc/ipa-modref.h
  02028ddeccfdf765d178365b041204fe  gcc/ipa-param-manipulation.cc
  a4332875948bce6b2c7fe2ddc85c9319  gcc/ipa-param-manipulation.h
! 69dc7a50d7c397517fc360474b222978  gcc/ipa-polymorphic-call.cc
  80b4cc7719c703dfe60955dfb86002ae  gcc/ipa-predicate.cc
  28e33a4a0b99d281a0437774beede1af  gcc/ipa-predicate.h
  7e00759eeb8f2ddaa2f77da1db8adf24  gcc/ipa-profile.cc
*************** cb3927205b56e9e8e4ae6c0759ea4d8d  gcc/ir
*** 6740,6746 ****
  788d1861bee2322ed419d2c51e2f738e  gcc/ira.h
  9542ea2b8797fa5a935893fafae08ef3  gcc/is-a.h
  090239f8ee6f441be82d0c8cbeaa00de  gcc/iterator-utils.h
! d6159f95cff2f920c31dd1df1da520a8  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  7228cd4eb7d36930c98343aa4d8186bb  gcc/jit/Make-lang.in
  f59cfd8b37a6dc29fc4889af89fcbec5  gcc/jit/TODO.rst
--- 6740,6746 ----
  788d1861bee2322ed419d2c51e2f738e  gcc/ira.h
  9542ea2b8797fa5a935893fafae08ef3  gcc/is-a.h
  090239f8ee6f441be82d0c8cbeaa00de  gcc/iterator-utils.h
! 0fd6783b401776e65fdb5c5892b36d0a  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  7228cd4eb7d36930c98343aa4d8186bb  gcc/jit/Make-lang.in
  f59cfd8b37a6dc29fc4889af89fcbec5  gcc/jit/TODO.rst
*************** a62ea7fafe6471c52e3565175e67cf1e  gcc/ji
*** 6813,6819 ****
  7020559ef92ddfc5fbe89dc2d807a1e8  gcc/jit/jit-logging.h
  979aba710b4513eb5c504c0109439623  gcc/jit/jit-playback.cc
  564278cb55710a40327feb824b49fb05  gcc/jit/jit-playback.h
! 5ea379d9518786cdee67530fa3e4d9d6  gcc/jit/jit-recording.cc
  98c7f3d24216c2ce37e8641ccaaad15c  gcc/jit/jit-recording.h
  0da592417dce91260cf30637da2c8a9a  gcc/jit/jit-result.cc
  74832bb1d0d115c99f86460a4575af73  gcc/jit/jit-result.h
--- 6813,6819 ----
  7020559ef92ddfc5fbe89dc2d807a1e8  gcc/jit/jit-logging.h
  979aba710b4513eb5c504c0109439623  gcc/jit/jit-playback.cc
  564278cb55710a40327feb824b49fb05  gcc/jit/jit-playback.h
! b7cc1b402a555b489c51a029d216fb98  gcc/jit/jit-recording.cc
  98c7f3d24216c2ce37e8641ccaaad15c  gcc/jit/jit-recording.h
  0da592417dce91260cf30637da2c8a9a  gcc/jit/jit-result.cc
  74832bb1d0d115c99f86460a4575af73  gcc/jit/jit-result.h
*************** f9608e9005487c369e6c38949ab36fa1  gcc/m2
*** 7894,7900 ****
  a19f34a937ad29bda64c2e81d6433940  gcc/machmode.h
  197298337dae14fdd7ab928a1f03bec6  gcc/main.cc
  11dfd6679ddc945a2c284204df360007  gcc/match-sat-alu.pd
! e0790b15bb43d697d80af5e9e1c8513b  gcc/match.pd
  b106a08a1793a5495dd87c412456484b  gcc/mcf.cc
  897c541ca992e145ad451c98941c7647  gcc/mem-stats-traits.h
  14700e76d554c9699481337fa9886be6  gcc/mem-stats.h
--- 7894,7900 ----
  a19f34a937ad29bda64c2e81d6433940  gcc/machmode.h
  197298337dae14fdd7ab928a1f03bec6  gcc/main.cc
  11dfd6679ddc945a2c284204df360007  gcc/match-sat-alu.pd
! a1e6ed51d1aaa91ba60318e2fd23a20b  gcc/match.pd
  b106a08a1793a5495dd87c412456484b  gcc/mcf.cc
  897c541ca992e145ad451c98941c7647  gcc/mem-stats-traits.h
  14700e76d554c9699481337fa9886be6  gcc/mem-stats.h
*************** e3efef0a89306a90708239222db79f43  gcc/ob
*** 7935,7946 ****
  97d04fb525d43f26efcc1c10bb62a70e  gcc/objcp/objcp-lang.cc
  ac6f2a373c263368c4451f24860f50d6  gcc/obstack-utils.h
  b53e19ed2e5aad878bc3422b5ed77de8  gcc/omp-api.h
! 3adcd217468f3c42c24816f76674a6b2  gcc/omp-builtins.def
! 23d39029bd514dda00bf8d34c6931573  gcc/omp-expand.cc
  2f6456a4cc816c9b75844b1625b26349  gcc/omp-expand.h
  188173a8efb4e631ba04f95371cb8804  gcc/omp-general.cc
  adfc442def98eba84925b435cfc8716a  gcc/omp-general.h
! c2a3092d5da5e80b3615fd2a342179fb  gcc/omp-low.cc
  1c84cef0613c186032b0fc0682b72ab8  gcc/omp-low.h
  e15278003e18a529caf759e00fbb8140  gcc/omp-oacc-kernels-decompose.cc
  e46559b06f0c63bac8a2626dcddfb876  gcc/omp-oacc-neuter-broadcast.cc
--- 7935,7946 ----
  97d04fb525d43f26efcc1c10bb62a70e  gcc/objcp/objcp-lang.cc
  ac6f2a373c263368c4451f24860f50d6  gcc/obstack-utils.h
  b53e19ed2e5aad878bc3422b5ed77de8  gcc/omp-api.h
! 695c047c9123efbb66fdf7582afc7a13  gcc/omp-builtins.def
! 928ac47a80a33ea21a303bb9fd5ea035  gcc/omp-expand.cc
  2f6456a4cc816c9b75844b1625b26349  gcc/omp-expand.h
  188173a8efb4e631ba04f95371cb8804  gcc/omp-general.cc
  adfc442def98eba84925b435cfc8716a  gcc/omp-general.h
! 5ee32576c0eaab2cb2fe54c1dc07f6bf  gcc/omp-low.cc
  1c84cef0613c186032b0fc0682b72ab8  gcc/omp-low.h
  e15278003e18a529caf759e00fbb8140  gcc/omp-oacc-kernels-decompose.cc
  e46559b06f0c63bac8a2626dcddfb876  gcc/omp-oacc-neuter-broadcast.cc
*************** db24d9f938cefb2027e91a5068f5f1d0  gcc/pr
*** 8054,8060 ****
  bea702966301b6b7e6294ef33ec8b443  gcc/pta-andersen.h
  706c6f6185e00db6f945b89759097531  gcc/pub-sub.cc
  f72a1e84c9facd65dc1c42ee67f21583  gcc/pub-sub.h
! baab0c2ad805d6d5d47b409b65c38351  gcc/range-op-float.cc
  ec6248ff9582260bb420197fc3bd33ab  gcc/range-op-mixed.h
  9a57b405d17fbd04825aaddc4037376b  gcc/range-op-ptr.cc
  9a51061917d83bb634f1c5e9bbd98de6  gcc/range-op.cc
--- 8054,8060 ----
  bea702966301b6b7e6294ef33ec8b443  gcc/pta-andersen.h
  706c6f6185e00db6f945b89759097531  gcc/pub-sub.cc
  f72a1e84c9facd65dc1c42ee67f21583  gcc/pub-sub.h
! 6fd279ce8c0fd6b6ce62cd7f6e3c94c0  gcc/range-op-float.cc
  ec6248ff9582260bb420197fc3bd33ab  gcc/range-op-mixed.h
  9a57b405d17fbd04825aaddc4037376b  gcc/range-op-ptr.cc
  9a51061917d83bb634f1c5e9bbd98de6  gcc/range-op.cc
*************** f24751f278bee1ac8dc861467d9f96a3  gcc/ta
*** 8750,8756 ****
  8dfc7c2c4f5fcc8bae4e56f4908de008  gcc/targhooks.cc
  dcedef5930550e30cc9ea611bbffde5b  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 6f1c6509cc84cb1723d1c75fe7ef7ec6  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8750,8756 ----
  8dfc7c2c4f5fcc8bae4e56f4908de008  gcc/targhooks.cc
  dcedef5930550e30cc9ea611bbffde5b  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 7326f38190ef8521433521a01e731a56  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** e7df9a3155c5c6021ee481fcc76afa2a  gcc/te
*** 22555,22560 ****
--- 22555,22564 ----
  0918dccee8951925f7bc4640874a6cd3  gcc/testsuite/g++.dg/analyzer/cstdlib-2.C
  4eff577cfbafc7e71c5a97654882870b  gcc/testsuite/g++.dg/analyzer/cstdlib.C
  7951a855cc080064bcfdf98631e39a2e  gcc/testsuite/g++.dg/analyzer/ctor-dtor-1.C
+ 4c84fe4dff7b3d19ac443da9140a4b42  gcc/testsuite/g++.dg/analyzer/devirt-1.C
+ 87ecfcd8c05ac7f47ac2d33a67c23442  gcc/testsuite/g++.dg/analyzer/devirt-multiple-inheritance-1.C
+ e2355543a6960ac9e0e6c93fea9416ad  gcc/testsuite/g++.dg/analyzer/devirt-noexcept-1.C
+ bdcbd54afae98a7e47de8b30d238a280  gcc/testsuite/g++.dg/analyzer/devirt-unknown-1.C
  ca19b24e4ca61370ea7f7cfe8f438371  gcc/testsuite/g++.dg/analyzer/divide-by-zero-7.C
  d1eaf073a251f60143e80284bc5a504c  gcc/testsuite/g++.dg/analyzer/dyncast-1.C
  8705636d8f03a04f16322230221596d5  gcc/testsuite/g++.dg/analyzer/exception-could-throw-1.C
*************** f54d42ee8e8df49f95a66d4102587e8e  gcc/te
*** 23323,23334 ****
  3ed2837ec0a605227e3db035996b80d7  gcc/testsuite/g++.dg/coroutines/pr105301.C
  3736008e5e89f5e62c30e8101e5acef0  gcc/testsuite/g++.dg/coroutines/pr105475-1.C
  8d0fa780fa98582b56eeda555793b5a4  gcc/testsuite/g++.dg/coroutines/pr105475-2.C
! 92371c0570249bfe00b9ce6c9a9d4b73  gcc/testsuite/g++.dg/coroutines/pr105475-3.C
  27fa89ff3b58b37e4344c5e638040611  gcc/testsuite/g++.dg/coroutines/pr105475-4.C
  4fe427417f7f5d8d525b4d0c90beace6  gcc/testsuite/g++.dg/coroutines/pr105475-5.C
  7357458562c1e0d36e5cb6f67af27450  gcc/testsuite/g++.dg/coroutines/pr105475-6.C
  dc116348933b70af69665c9477f14450  gcc/testsuite/g++.dg/coroutines/pr105475-broken-spec-2.C
! bfb4d4da5fe86af369bbdec84872cc96  gcc/testsuite/g++.dg/coroutines/pr105475-broken-spec.C
  2d3e12d9f28b3d12f5381192430ca293  gcc/testsuite/g++.dg/coroutines/pr105475.C
  c5029b3ababd909d21fec108130560c2  gcc/testsuite/g++.dg/coroutines/pr106188.C
  95d1fc3ce20e1869ccfe0388d864bb6f  gcc/testsuite/g++.dg/coroutines/pr106973.C
--- 23327,23338 ----
  3ed2837ec0a605227e3db035996b80d7  gcc/testsuite/g++.dg/coroutines/pr105301.C
  3736008e5e89f5e62c30e8101e5acef0  gcc/testsuite/g++.dg/coroutines/pr105475-1.C
  8d0fa780fa98582b56eeda555793b5a4  gcc/testsuite/g++.dg/coroutines/pr105475-2.C
! af70028d189a208dd54d81fbe29b3e35  gcc/testsuite/g++.dg/coroutines/pr105475-3.C
  27fa89ff3b58b37e4344c5e638040611  gcc/testsuite/g++.dg/coroutines/pr105475-4.C
  4fe427417f7f5d8d525b4d0c90beace6  gcc/testsuite/g++.dg/coroutines/pr105475-5.C
  7357458562c1e0d36e5cb6f67af27450  gcc/testsuite/g++.dg/coroutines/pr105475-6.C
  dc116348933b70af69665c9477f14450  gcc/testsuite/g++.dg/coroutines/pr105475-broken-spec-2.C
! 35cc597586cb0c16f76da6b44e2d8883  gcc/testsuite/g++.dg/coroutines/pr105475-broken-spec.C
  2d3e12d9f28b3d12f5381192430ca293  gcc/testsuite/g++.dg/coroutines/pr105475.C
  c5029b3ababd909d21fec108130560c2  gcc/testsuite/g++.dg/coroutines/pr106188.C
  95d1fc3ce20e1869ccfe0388d864bb6f  gcc/testsuite/g++.dg/coroutines/pr106973.C
*************** b8cd89a7510ad4bbf02ec052d02d2ee0  gcc/te
*** 23973,23978 ****
--- 23977,23983 ----
  00e99c6cae64f722f78b0f72a5209b78  gcc/testsuite/g++.dg/cpp0x/collapse.C
  5337801b3f3b1399a7748f6f77351f43  gcc/testsuite/g++.dg/cpp0x/cond1.C
  82b611352fd26c7db573eb5226ef4366  gcc/testsuite/g++.dg/cpp0x/cond2.C
+ e991613bc55c1fc86d26f02f52028961  gcc/testsuite/g++.dg/cpp0x/cond2a.C
  49892879cc50168564ac99cc87bfb0ab  gcc/testsuite/g++.dg/cpp0x/constexpr-100111.C
  5319a9de79517accc19d4cb1801c0616  gcc/testsuite/g++.dg/cpp0x/constexpr-104226.C
  eeac975a1b841cef4d5a4c468314ed8c  gcc/testsuite/g++.dg/cpp0x/constexpr-104472.C
*************** f570e39b0271d39d9cdde0565b1fe390  gcc/te
*** 25681,25686 ****
--- 25686,25692 ----
  171384a7319ac1870302b512ac8be270  gcc/testsuite/g++.dg/cpp0x/nsdmi-defer5.C
  01f9c6930a387a0b45cb4220fc7ec298  gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C
  d5481fd30f66f5324cfb9ec037967222  gcc/testsuite/g++.dg/cpp0x/nsdmi-defer7.C
+ 0705e0b10f15465116174aa55c3f1135  gcc/testsuite/g++.dg/cpp0x/nsdmi-defer8.C
  9a72677ce49b64f4a0e186df8902abff  gcc/testsuite/g++.dg/cpp0x/nsdmi-dr1397.C
  5af761999024cb836ca412ed02230774  gcc/testsuite/g++.dg/cpp0x/nsdmi-eh1.C
  a10475b2a54810b2909ccfef2102f693  gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C
*************** dd7f53c1057815c9ecba63c7f4408ec4  gcc/te
*** 25841,25847 ****
  4891c13c51126851f62b961486e6f9ef  gcc/testsuite/g++.dg/cpp0x/pr123692.C
  b2f7d7cab4ef6e12f25f82545d59869a  gcc/testsuite/g++.dg/cpp0x/pr123818.C
  9683c3ac21cac97aa0b1ce1d46d85320  gcc/testsuite/g++.dg/cpp0x/pr124173.C
! 823666b75dc5cb540393daba4df2d5df  gcc/testsuite/g++.dg/cpp0x/pr124489.C
  e9b2f79897e6f763134d4ec57a8eb3b7  gcc/testsuite/g++.dg/cpp0x/pr124531.C
  db3c45e556050cd08408ea433b7509b2  gcc/testsuite/g++.dg/cpp0x/pr125886.C
  26dea799d49ce223a0c4130a3c955271  gcc/testsuite/g++.dg/cpp0x/pr31431-2.C
--- 25847,25853 ----
  4891c13c51126851f62b961486e6f9ef  gcc/testsuite/g++.dg/cpp0x/pr123692.C
  b2f7d7cab4ef6e12f25f82545d59869a  gcc/testsuite/g++.dg/cpp0x/pr123818.C
  9683c3ac21cac97aa0b1ce1d46d85320  gcc/testsuite/g++.dg/cpp0x/pr124173.C
! a78a1da44083a942ae346b7716d77dcf  gcc/testsuite/g++.dg/cpp0x/pr124489.C
  e9b2f79897e6f763134d4ec57a8eb3b7  gcc/testsuite/g++.dg/cpp0x/pr124531.C
  db3c45e556050cd08408ea433b7509b2  gcc/testsuite/g++.dg/cpp0x/pr125886.C
  26dea799d49ce223a0c4130a3c955271  gcc/testsuite/g++.dg/cpp0x/pr31431-2.C
*************** e791b94844e59093ad5ec4175c3b673a  gcc/te
*** 26845,26850 ****
--- 26851,26857 ----
  f97d20d3d680128b6e125d1793e29b87  gcc/testsuite/g++.dg/cpp1y/auto-fn64.C
  a5fbd625e8b645b90b2755400e929e2b  gcc/testsuite/g++.dg/cpp1y/auto-fn65.C
  88309773bbf1feef7121ba73e86cc151  gcc/testsuite/g++.dg/cpp1y/auto-fn66.C
+ 7d57b6434ccba3852bf50075ffbba20b  gcc/testsuite/g++.dg/cpp1y/auto-fn67.C
  03b6f2674c38c8f6ed9f7fc03583b1dc  gcc/testsuite/g++.dg/cpp1y/auto-fn7.C
  e9a317fa32e36cef4553b50965e48550  gcc/testsuite/g++.dg/cpp1y/auto-fn8.C
  d67958b896eb1dae6f8862fd59b01c62  gcc/testsuite/g++.dg/cpp1y/auto-fn9.C
*************** c5c848aea6f9a89e57f856a7b0fcfa31  gcc/te
*** 27997,28002 ****
--- 28004,28010 ----
  e12f74995acc66bd02b8c9f5d34a8f25  gcc/testsuite/g++.dg/cpp1z/noexcept-type26.C
  302828ca56d4a605a4eedc8975baf4ab  gcc/testsuite/g++.dg/cpp1z/noexcept-type27.C
  8543fb24e0a022f9d137d2df4f8b17c7  gcc/testsuite/g++.dg/cpp1z/noexcept-type28.C
+ e6450cc87ba30c88dfbac69c90318df3  gcc/testsuite/g++.dg/cpp1z/noexcept-type29.C
  a07bd6eee0bbce4f76caa1372e66c614  gcc/testsuite/g++.dg/cpp1z/noexcept-type3.C
  a1507d2a44a55f27a0e7109b7c2a2c43  gcc/testsuite/g++.dg/cpp1z/noexcept-type4.C
  2cbc6352072676c50982358370c66f1e  gcc/testsuite/g++.dg/cpp1z/noexcept-type5.C
*************** e8e285d5f17f18710b7136f0f788f9c8  gcc/te
*** 28404,28409 ****
--- 28412,28421 ----
  a6073e074c44b5f830037756b9110934  gcc/testsuite/g++.dg/cpp26/constexpr-eh18.C
  795fd0b3bb6cd5fcab8ed3203d375892  gcc/testsuite/g++.dg/cpp26/constexpr-eh19.C
  5dd3cceecaa6ec4f3aba7e8c298dc74c  gcc/testsuite/g++.dg/cpp26/constexpr-eh2.C
+ 53e2886a3182cf6a4acc705fbda29a90  gcc/testsuite/g++.dg/cpp26/constexpr-eh20.C
+ 43355f1cc013294de9951388e4f152fa  gcc/testsuite/g++.dg/cpp26/constexpr-eh21.C
+ db870387b6079e42b01add3955155ce3  gcc/testsuite/g++.dg/cpp26/constexpr-eh22.C
+ 33742bb3c4bdff65ad4424d6965b75d6  gcc/testsuite/g++.dg/cpp26/constexpr-eh23.C
  26c369ca53153ae946088791d0790fa5  gcc/testsuite/g++.dg/cpp26/constexpr-eh3.C
  6ef0a812fa0528be79afea3ada17a5eb  gcc/testsuite/g++.dg/cpp26/constexpr-eh4.C
  1c0a703bddf109fe81f458c23001dcc2  gcc/testsuite/g++.dg/cpp26/constexpr-eh5.C
*************** fbaa97f955828122edb02abade5c00a5  gcc/te
*** 28506,28511 ****
--- 28518,28525 ----
  c52edd0a13ff5fb8338be44eb349b17c  gcc/testsuite/g++.dg/cpp26/expansion-stmt40.C
  9bf935574926cc3e4cd8cab9708f9ede  gcc/testsuite/g++.dg/cpp26/expansion-stmt41.C
  5cca76b98b9ab6de3265c4d30709010d  gcc/testsuite/g++.dg/cpp26/expansion-stmt42.C
+ e27734d7e4e947a649cda5e6668f2874  gcc/testsuite/g++.dg/cpp26/expansion-stmt43.C
+ 319ecdab284165f2fa4c6dd3103021b6  gcc/testsuite/g++.dg/cpp26/expansion-stmt44.C
  7cfc2afc603d55bfd66b320b3d190acd  gcc/testsuite/g++.dg/cpp26/expansion-stmt5.C
  8419176a2bf5898de53901daf6efe2a9  gcc/testsuite/g++.dg/cpp26/expansion-stmt6.C
  f3b34592f993c84838b0ef36dad5ed5e  gcc/testsuite/g++.dg/cpp26/expansion-stmt7.C
*************** a49bb05a98ee7ad2eb4c9f08711d3d4d  gcc/te
*** 30773,30780 ****
  d9feefe3043369b99ac1813781a3c3a3  gcc/testsuite/g++.dg/ext/arm-bf16/bf16-mangle-aarch64-1.C
  9ad9eafed83197342bcdbe7afa3a727f  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C
  888dbd717f5ba09e01e62616168dedf1  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C
! 20cf8d8234fffbde16b875fbfdbafb39  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C
! f19459f696c2045d2353b73d297e226d  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C
  55ccc89665481af2e7e6fc67952359f9  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C
  7b3de180584180ecc9cfa5543f4cb88c  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C
  df15bedf7dd28c41919973661d580f91  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C
--- 30787,30794 ----
  d9feefe3043369b99ac1813781a3c3a3  gcc/testsuite/g++.dg/ext/arm-bf16/bf16-mangle-aarch64-1.C
  9ad9eafed83197342bcdbe7afa3a727f  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C
  888dbd717f5ba09e01e62616168dedf1  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C
! 581f15e0f0f2f3833ef80f3d51601946  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C
! 556176ae960ce96392de80468fd7312e  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C
  55ccc89665481af2e7e6fc67952359f9  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C
  7b3de180584180ecc9cfa5543f4cb88c  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C
  df15bedf7dd28c41919973661d580f91  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C
*************** a6ad805aa4ca927da605193ee132e4c9  gcc/te
*** 32601,32606 ****
--- 32615,32621 ----
  94a7e987319d08f023e937de3e12d0d8  gcc/testsuite/g++.dg/init/array65.C
  6dacb8601d29390665707d5d3244c16d  gcc/testsuite/g++.dg/init/array66.C
  565294bed4047ecbc96e954cfc86f9cf  gcc/testsuite/g++.dg/init/array67.C
+ b6e503af7930bbb87c18e65129b23fdd  gcc/testsuite/g++.dg/init/array68.C
  02cf876b0b0d2594118addc046b9112a  gcc/testsuite/g++.dg/init/array7.C
  4ab5bb9dc38b78d749ba584adefbdc33  gcc/testsuite/g++.dg/init/array8.C
  b1c2a3438d19ab4734ef026ce6aba7fa  gcc/testsuite/g++.dg/init/array9.C
*************** c1520ffb1e8996e77b2da492ecc42175  gcc/te
*** 33687,33693 ****
  aa63ed16efc23c3cd90945cae6feaca6  gcc/testsuite/g++.dg/lto/pr126194.h
  b321c964a71193311ce1f572263f323f  gcc/testsuite/g++.dg/lto/pr126194_0.C
  b0221442ff7a2932e8574b51f9806156  gcc/testsuite/g++.dg/lto/pr126194_1.C
! 2ff30c8dcd415ce0d2a171da46c415cd  gcc/testsuite/g++.dg/lto/pr126194_2.C
  ba9b686c163762488051ec4094a838b2  gcc/testsuite/g++.dg/lto/pr40818_0.C
  08a786b250f802e56e458c7d60a358fc  gcc/testsuite/g++.dg/lto/pr42987_0.C
  1b56fef803fe85ec97121919ad3ba2b9  gcc/testsuite/g++.dg/lto/pr42987_1.C
--- 33702,33708 ----
  aa63ed16efc23c3cd90945cae6feaca6  gcc/testsuite/g++.dg/lto/pr126194.h
  b321c964a71193311ce1f572263f323f  gcc/testsuite/g++.dg/lto/pr126194_0.C
  b0221442ff7a2932e8574b51f9806156  gcc/testsuite/g++.dg/lto/pr126194_1.C
! dc9bcbe5dfb11ab62a48de0b4a081a84  gcc/testsuite/g++.dg/lto/pr126194_2.C
  ba9b686c163762488051ec4094a838b2  gcc/testsuite/g++.dg/lto/pr40818_0.C
  08a786b250f802e56e458c7d60a358fc  gcc/testsuite/g++.dg/lto/pr42987_0.C
  1b56fef803fe85ec97121919ad3ba2b9  gcc/testsuite/g++.dg/lto/pr42987_1.C
*************** f86a9d1e34660cdc674d9ad30862970e  gcc/te
*** 33901,33906 ****
--- 33916,33925 ----
  648ec55723c178ad14eaf4ab71699f69  gcc/testsuite/g++.dg/modules/anon-4.h
  d0d8cff39a3e77af87993a5e01ea87b5  gcc/testsuite/g++.dg/modules/anon-4_a.H
  3a7a266eb35d08b94e55c1844c0e878f  gcc/testsuite/g++.dg/modules/anon-4_b.C
+ daa807efa2e762ecbc7bc5cecd651f6b  gcc/testsuite/g++.dg/modules/anon-5_a.C
+ 6cdd171d0e87e7e08edc2cbe6183f273  gcc/testsuite/g++.dg/modules/anon-5_b.C
+ 8c7eb83959ede268a7cd03dda6d584e2  gcc/testsuite/g++.dg/modules/anon-5_c.C
+ bf35d022bc6e015fff4489768aa4e747  gcc/testsuite/g++.dg/modules/anon-5_d.C
  a7104a7f65a894a81867f80af8612399  gcc/testsuite/g++.dg/modules/atom-decl-0_a.C
  bb5c4cd9a7635fa1f03740e04c841427  gcc/testsuite/g++.dg/modules/atom-decl-0_b.C
  264f336f97e542ff429a149616ccd617  gcc/testsuite/g++.dg/modules/atom-decl-0_c.C
*************** b16ae5b90244df2461a7c023c7f3c88e  gcc/te
*** 35913,35918 ****
--- 35932,35938 ----
  5778a352c750259fe850421e364893fa  gcc/testsuite/g++.dg/opt/operator1.C
  1b20239db4498d5cce85a900755fb433  gcc/testsuite/g++.dg/opt/placeholder1.C
  cf9e1c6c02a4aee1d10b86325166de66  gcc/testsuite/g++.dg/opt/pmf1.C
+ 7ef9e644dc94ee7766c4c288c1d9b0e8  gcc/testsuite/g++.dg/opt/pmf2.C
  b7d92853a5faa70c9b8f4e124609991d  gcc/testsuite/g++.dg/opt/pr100148.C
  b599b75470b905e959a7172363b13d69  gcc/testsuite/g++.dg/opt/pr100254.C
  5f80ce2bf0e46962ab3163d51184a71d  gcc/testsuite/g++.dg/opt/pr100469.C
*************** c383f7bdf34cc8248e3fb9c61011574a  gcc/te
*** 37938,37944 ****
  32ccc692cd8f4f800d5b7cf0f8c10e82  gcc/testsuite/g++.dg/reflect/diag3.C
  1533eb5d112721a72e26e68b9d092170  gcc/testsuite/g++.dg/reflect/diag4.C
  20539bb1e62472f10fa8334f10ff9cd3  gcc/testsuite/g++.dg/reflect/diag5.C
! db85d7c65c5f57d9c7f5d259e7145883  gcc/testsuite/g++.dg/reflect/diag6.C
  6e51e54469631fcaf1fd97c86928c65e  gcc/testsuite/g++.dg/reflect/display_string_of1.C
  bfb32884dd0c74934dec0a8d6ce03d92  gcc/testsuite/g++.dg/reflect/eh1.C
  8cab0986acf9fb4bd447cea1a90ab571  gcc/testsuite/g++.dg/reflect/eh10.C
--- 37958,37964 ----
  32ccc692cd8f4f800d5b7cf0f8c10e82  gcc/testsuite/g++.dg/reflect/diag3.C
  1533eb5d112721a72e26e68b9d092170  gcc/testsuite/g++.dg/reflect/diag4.C
  20539bb1e62472f10fa8334f10ff9cd3  gcc/testsuite/g++.dg/reflect/diag5.C
! 350c3bc1b942abef3a30314697b0a2ac  gcc/testsuite/g++.dg/reflect/diag6.C
  6e51e54469631fcaf1fd97c86928c65e  gcc/testsuite/g++.dg/reflect/display_string_of1.C
  bfb32884dd0c74934dec0a8d6ce03d92  gcc/testsuite/g++.dg/reflect/eh1.C
  8cab0986acf9fb4bd447cea1a90ab571  gcc/testsuite/g++.dg/reflect/eh10.C
*************** aa8f04eae840cf292352166e158cfd5c  gcc/te
*** 38034,38040 ****
  d90fcc99ddaeb5505678c7c407e0ab75  gcc/testsuite/g++.dg/reflect/init17.C
  dabe4ff7939752efdbbb1268dec52d43  gcc/testsuite/g++.dg/reflect/init18.C
  ad250c99277937010b4bff3a40b50e9e  gcc/testsuite/g++.dg/reflect/init19.C
! 314f62be0110f9e0a46fdc1b7585aebd  gcc/testsuite/g++.dg/reflect/init2.C
  0512b3bdec0b0fd28051477e9423aa67  gcc/testsuite/g++.dg/reflect/init3.C
  d46e1560ddd6be61c86743909c517b4e  gcc/testsuite/g++.dg/reflect/init4.C
  16e06e6f77463e4d204ed502c4b1312b  gcc/testsuite/g++.dg/reflect/init5.C
--- 38054,38060 ----
  d90fcc99ddaeb5505678c7c407e0ab75  gcc/testsuite/g++.dg/reflect/init17.C
  dabe4ff7939752efdbbb1268dec52d43  gcc/testsuite/g++.dg/reflect/init18.C
  ad250c99277937010b4bff3a40b50e9e  gcc/testsuite/g++.dg/reflect/init19.C
! 946aa3ba59607c0498f841ad62daf9fa  gcc/testsuite/g++.dg/reflect/init2.C
  0512b3bdec0b0fd28051477e9423aa67  gcc/testsuite/g++.dg/reflect/init3.C
  d46e1560ddd6be61c86743909c517b4e  gcc/testsuite/g++.dg/reflect/init4.C
  16e06e6f77463e4d204ed502c4b1312b  gcc/testsuite/g++.dg/reflect/init5.C
*************** d1618ed5affc804f7f8cda302ecd3b2e  gcc/te
*** 38262,38267 ****
--- 38282,38288 ----
  ccc4415ba1de4b5fda2f4d61583fab4c  gcc/testsuite/g++.dg/reflect/pr125179.C
  c35e7ee674a0e569c67e5b1b3a3dc568  gcc/testsuite/g++.dg/reflect/pr125412.C
  b5ad51bdbd04ae99b7c4d59988ca4ec5  gcc/testsuite/g++.dg/reflect/pr126036.C
+ 45caf81d17f97af511dba04da32ca830  gcc/testsuite/g++.dg/reflect/pr126343.C
  e6404856d4cc9cc02aa5ebec3e5ecb82  gcc/testsuite/g++.dg/reflect/qrn1.C
  4ef5fc49aed920d8bfc3bc57a9ddef71  gcc/testsuite/g++.dg/reflect/qrn2.C
  8a49e7b1ad0cad9ac48fdcf37ad900cf  gcc/testsuite/g++.dg/reflect/range_args.C
*************** bd9c2b59a2d08bc8b4c7a43415693ca4  gcc/te
*** 41033,41038 ****
--- 41054,41061 ----
  284302237efd60e1d517c0925cad7644  gcc/testsuite/g++.dg/tree-ssa/pr118924.C
  ed3340a40acd33f762437309c5501969  gcc/testsuite/g++.dg/tree-ssa/pr119903-1.C
  908933a34da6afc2a67d90c014998779  gcc/testsuite/g++.dg/tree-ssa/pr124663.C
+ e0d352a65cdb899f409416dc9a71fd11  gcc/testsuite/g++.dg/tree-ssa/pr126296-1.C
+ d5f4cf75d87f4593f1c0185c8e5d0d9c  gcc/testsuite/g++.dg/tree-ssa/pr126296-2.C
  482a64ed60783060cd1097d55e09aa68  gcc/testsuite/g++.dg/tree-ssa/pr13146.C
  e92faf794746371f0e92e8a68244ff5e  gcc/testsuite/g++.dg/tree-ssa/pr13954.C
  8027add8ad61fc532147eff30549380f  gcc/testsuite/g++.dg/tree-ssa/pr14703.C
*************** e24f0e502cef393d2dbeeea684980651  gcc/te
*** 46533,46538 ****
--- 46556,46562 ----
  d8ba8c12676113bab781623c9b4c8a1f  gcc/testsuite/g++.target/riscv/pr119832.C
  a8a857220d4221ed70fa20fdbdf0cfca  gcc/testsuite/g++.target/riscv/pr122692-run-1.C
  605f86e49704fde491263d58c2ccade7  gcc/testsuite/g++.target/riscv/pr122692-run-2.C
+ 258b41559e9271d9bbb51e2f01295aed  gcc/testsuite/g++.target/riscv/pr126449.C
  4c45e102d6dd19ee08a476904b64542d  gcc/testsuite/g++.target/riscv/pr96759.C
  990bf8b294d516f7b952bfe2bc8d8dfd  gcc/testsuite/g++.target/riscv/pr97682.C
  daceaf1f0da7e5c955e4b13180536bca  gcc/testsuite/g++.target/riscv/redundant-andi.C
*************** cb4c82184137c0933c1bae60a7df15bc  gcc/te
*** 49922,49927 ****
--- 49946,49954 ----
  95b7f2d687a5a5e2df1e09fad845a195  gcc/testsuite/gcc.c-torture/execute/pr123978.c
  256e8d04f36f265861609fbe23468388  gcc/testsuite/gcc.c-torture/execute/pr124358.c
  2dbc141227c879172c1b89d0bc7d747a  gcc/testsuite/gcc.c-torture/execute/pr125291.c
+ 608550ce880607fac32d304e57877431  gcc/testsuite/gcc.c-torture/execute/pr126405-2.c
+ 2f6303a3292ca140f3a45d8991ce2671  gcc/testsuite/gcc.c-torture/execute/pr126405-3.c
+ 398c91d12795072b1c8b4324f6e28d2e  gcc/testsuite/gcc.c-torture/execute/pr126405.c
  80c02c70a0b6b91b06942e395c34960f  gcc/testsuite/gcc.c-torture/execute/pr15262-1.c
  987c511633ad57d9f08d352eb9512819  gcc/testsuite/gcc.c-torture/execute/pr15262-2.c
  f7f514cfbd791b0c828e0710493b0910  gcc/testsuite/gcc.c-torture/execute/pr15262.c
*************** c6c062afcbfcf1773f8643cb9c680878  gcc/te
*** 52557,52563 ****
--- 52584,52594 ----
  224168b724b7cd0477d851df0b0508fd  gcc/testsuite/gcc.dg/bitint-135.c
  2b817b0eceb5bad3bd6792766b2e505f  gcc/testsuite/gcc.dg/bitint-136.c
  53575d210b89232e79f90e210bebc31f  gcc/testsuite/gcc.dg/bitint-137.c
+ e14b94a3cdaaf5c4d9f5e25958271517  gcc/testsuite/gcc.dg/bitint-138.c
+ 1ed8e005daa6b40a0c9b7b239c98c8be  gcc/testsuite/gcc.dg/bitint-139.c
  e6db29256563268a3c327706e78c79a4  gcc/testsuite/gcc.dg/bitint-14.c
+ 2eb8d482a4d6c7b44134d01a1c84a353  gcc/testsuite/gcc.dg/bitint-140.c
+ b76f22f76bafd555d897bb0b2bd338fa  gcc/testsuite/gcc.dg/bitint-141.c
  c748706240385773f27caba61cbbcbd8  gcc/testsuite/gcc.dg/bitint-15.c
  acfbe287f11e3faf0020cde57be42822  gcc/testsuite/gcc.dg/bitint-16.c
  5fe723ea15779d8c01ab2c2fd255acaf  gcc/testsuite/gcc.dg/bitint-17.c
*************** f402be89e4891c76c691c8144fe168f7  gcc/te
*** 59225,59231 ****
  5bc3929959db4e7efdda8bc02c4c7e26  gcc/testsuite/gcc.dg/pr124454-1.c
  f733cdb22a88b058648393623d505a3f  gcc/testsuite/gcc.dg/pr124476.c
  0a528d1a520aeb7f2f06f4c696c6f365  gcc/testsuite/gcc.dg/pr124545-2.c
! 36ee7eea41c31945982771e0ffcb01dc  gcc/testsuite/gcc.dg/pr124545.c
  579ed8ebf6c470274c30ac557f9672d2  gcc/testsuite/gcc.dg/pr124576.c
  a0af6600ae1ec0429d2ce13c4ccc8a92  gcc/testsuite/gcc.dg/pr124630.c
  0b8c4e1486bc61b4cdb4efb2e7f08d74  gcc/testsuite/gcc.dg/pr124635.c
--- 59256,59262 ----
  5bc3929959db4e7efdda8bc02c4c7e26  gcc/testsuite/gcc.dg/pr124454-1.c
  f733cdb22a88b058648393623d505a3f  gcc/testsuite/gcc.dg/pr124476.c
  0a528d1a520aeb7f2f06f4c696c6f365  gcc/testsuite/gcc.dg/pr124545-2.c
! bc2be56cf10a909382928518c2e50949  gcc/testsuite/gcc.dg/pr124545.c
  579ed8ebf6c470274c30ac557f9672d2  gcc/testsuite/gcc.dg/pr124576.c
  a0af6600ae1ec0429d2ce13c4ccc8a92  gcc/testsuite/gcc.dg/pr124630.c
  0b8c4e1486bc61b4cdb4efb2e7f08d74  gcc/testsuite/gcc.dg/pr124635.c
*************** ba5b967dcab5d2013a4e339db765537e  gcc/te
*** 59267,59272 ****
--- 59298,59309 ----
  be4bf63d628709587a553e3f7f656631  gcc/testsuite/gcc.dg/pr126212.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  177a6f8e8c9facaff89f83a2b63a3d61  gcc/testsuite/gcc.dg/pr126341.c
+ 1361ed8f27243e2bfbb76c4926a3124c  gcc/testsuite/gcc.dg/pr126405-1.c
+ 80a660d63f731dcfb059b481a0a629ad  gcc/testsuite/gcc.dg/pr126405-2.c
+ 041741cee155bdd0ba85ca7e66ce9551  gcc/testsuite/gcc.dg/pr126405-3.c
+ 5d373ede2bf6c667b8c04b7685b77476  gcc/testsuite/gcc.dg/pr126434.c
+ f3ad76ba5080e5c627e1d54c8e3fc967  gcc/testsuite/gcc.dg/pr126464.c
+ cb2e908e56265acf56829462158a2436  gcc/testsuite/gcc.dg/pr126569-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
  86dc5cfaafafc79e11d0559d71baea6b  gcc/testsuite/gcc.dg/pr13804-1.c
  2a52cc05fb1415e0eafbc468a7ccc138  gcc/testsuite/gcc.dg/pr14092-1.c
*************** d23f5563695ea2b9898397f0244ca90d  gcc/te
*** 62246,62257 ****
  2063dc05a74374000dcf03fc407536e5  gcc/testsuite/gcc.dg/torture/alias-2.c
  623b6f1d93f75b391f9d1dc139c50697  gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c
  79136fa8006ded4d50fd423e8feb0576  gcc/testsuite/gcc.dg/torture/arm-fp16-compile-convert.c
! b9eb255566755af3180eb0e9b25d0db1  gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c
  acce6a0692aef9e9f3765bf8135e97a4  gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-ieee.c
  9ad9eafed83197342bcdbe7afa3a727f  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-1.c
  888dbd717f5ba09e01e62616168dedf1  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-2.c
! 863d9c5a7d15467a72e816b2b43571e2  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c
! 9bd8042dcfc26701d025f9153b773ec7  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c
  55ccc89665481af2e7e6fc67952359f9  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c
  7b3de180584180ecc9cfa5543f4cb88c  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c
  df15bedf7dd28c41919973661d580f91  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c
--- 62283,62294 ----
  2063dc05a74374000dcf03fc407536e5  gcc/testsuite/gcc.dg/torture/alias-2.c
  623b6f1d93f75b391f9d1dc139c50697  gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c
  79136fa8006ded4d50fd423e8feb0576  gcc/testsuite/gcc.dg/torture/arm-fp16-compile-convert.c
! e49e815c9944c912ac203cb7ddba3271  gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c
  acce6a0692aef9e9f3765bf8135e97a4  gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-ieee.c
  9ad9eafed83197342bcdbe7afa3a727f  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-1.c
  888dbd717f5ba09e01e62616168dedf1  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-2.c
! 581f15e0f0f2f3833ef80f3d51601946  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c
! 556176ae960ce96392de80468fd7312e  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c
  55ccc89665481af2e7e6fc67952359f9  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c
  7b3de180584180ecc9cfa5543f4cb88c  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c
  df15bedf7dd28c41919973661d580f91  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c
*************** b17b4527a47b2b6306755793803b481f  gcc/te
*** 62267,62272 ****
--- 62304,62313 ----
  8cfffe5a41a2c17d05155efffa603ce3  gcc/testsuite/gcc.dg/torture/bitint-100.c
  91e3ecf6956920cfc43a0be09d9adff4  gcc/testsuite/gcc.dg/torture/bitint-101.c
  d21799d1355d134c49fbb279e9061c5d  gcc/testsuite/gcc.dg/torture/bitint-102.c
+ 4cd35e190f8a05b09f5f598b569b1b60  gcc/testsuite/gcc.dg/torture/bitint-103.c
+ 6ba65cff2455ee6dc281876d27829fa1  gcc/testsuite/gcc.dg/torture/bitint-104.c
+ ff8cf5c09693d848fab5f482d5bb2be3  gcc/testsuite/gcc.dg/torture/bitint-105.c
+ 8dbb47772e9818aa86f1d571c4503063  gcc/testsuite/gcc.dg/torture/bitint-106.c
  6e0edfd615730c144c767fcf9cebc844  gcc/testsuite/gcc.dg/torture/bitint-11.c
  70badd65fbc9d51f24c59244ff200b8c  gcc/testsuite/gcc.dg/torture/bitint-12.c
  d43d461c9733529f16abae58889c550b  gcc/testsuite/gcc.dg/torture/bitint-13.c
*************** a397aa54be3f8e0f5ba40494ea6c1e4b  gcc/te
*** 62675,62680 ****
--- 62716,62722 ----
  2c86b58e3ce82bd270f40ef46e833fba  gcc/testsuite/gcc.dg/torture/matrix-5.c
  01c44e2631fc1766743c8a6a08af7692  gcc/testsuite/gcc.dg/torture/matrix-6.c
  a1453b71bbe2c1b559adfcb46671e7cf  gcc/testsuite/gcc.dg/torture/memcpy-1.c
+ ba22811b5eefbd2b300fb93768b902e8  gcc/testsuite/gcc.dg/torture/minmax-1.c
  97616ce02317be72e66b3a994f9d5675  gcc/testsuite/gcc.dg/torture/minmaxneeqptr-1.c
  e18294d3404279a1f70b16e5f321d933  gcc/testsuite/gcc.dg/torture/mips-clobber-at.c
  33f2d5a949f3be0de5e28e8cf8bec90f  gcc/testsuite/gcc.dg/torture/mips-div-1.c
*************** d37f980a2ba8a3f7fef2d2c9a4f2a81d  gcc/te
*** 63174,63179 ****
--- 63216,63227 ----
  88f559ffc5e83c1bb94493a45386dc31  gcc/testsuite/gcc.dg/torture/pr126121.c
  1443d1972260ff2e56dfdda315fb0452  gcc/testsuite/gcc.dg/torture/pr126136.c
  5d7dbe26c6352a8eb2fa8a8a76386e10  gcc/testsuite/gcc.dg/torture/pr126171-2.c
+ 672d0c44de1f67e02b896d92945db96c  gcc/testsuite/gcc.dg/torture/pr126313.c
+ 01cb9d719e57df3f224da0cfe0cd6ec1  gcc/testsuite/gcc.dg/torture/pr126415.c
+ 33931213701c8ff6e961657ea59c35a1  gcc/testsuite/gcc.dg/torture/pr126458-1.c
+ 41ed1d0a724d4e7e08239b14b14a1043  gcc/testsuite/gcc.dg/torture/pr126464.c
+ e3b97fe82bf44e7ca3ada5b69e89137b  gcc/testsuite/gcc.dg/torture/pr126470-1.c
+ aa10a1eb9919015a063f6b2c6b1c583c  gcc/testsuite/gcc.dg/torture/pr126571-1.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
*************** d7f6676805ef97e4089df1fa8fade683  gcc/te
*** 64941,64946 ****
--- 64989,64995 ----
  60c3fd4ef212339e0d486d7d6d140709  gcc/testsuite/gcc.dg/tree-ssa/factor_op_phi-load-offsets-2.c
  1d05301c8449a4196f4c86942a6c33f8  gcc/testsuite/gcc.dg/tree-ssa/factor_op_phi-load-offsets-3.c
  b069caf152c3eca0e024d32d14335580  gcc/testsuite/gcc.dg/tree-ssa/factor_op_phi-load-stores-1.c
+ 9bb96b30818398e8d43a6f18682c120e  gcc/testsuite/gcc.dg/tree-ssa/factor_op_phi-restrict-1.c
  33a3fcae747cee654667314a41d7dae6  gcc/testsuite/gcc.dg/tree-ssa/flatten-1.c
  5aa642235531b56fe71d129b3128e653  gcc/testsuite/gcc.dg/tree-ssa/flatten-2.c
  7013e9405bbea7d794f84d52c038fb91  gcc/testsuite/gcc.dg/tree-ssa/flatten-3.c
*************** b68223b518f77b2ecd5ae8c4d1b359d1  gcc/te
*** 65289,65295 ****
--- 65338,65348 ----
  9ec74ef4541fdec26e0bc5b9bef689ee  gcc/testsuite/gcc.dg/tree-ssa/minmax-28.c
  9b3184c7c9c06ecb5cf9ab3feddda34b  gcc/testsuite/gcc.dg/tree-ssa/minmax-28e.c
  5e777401203ee4999d0583493b6c4fc8  gcc/testsuite/gcc.dg/tree-ssa/minmax-28f.c
+ 020792e15621866dd011dda44f088ed9  gcc/testsuite/gcc.dg/tree-ssa/minmax-29.c
  ebd64598eb4ae669eb0b23c8f04d5a46  gcc/testsuite/gcc.dg/tree-ssa/minmax-3.c
+ eaa8e3d427bcca8317ce7c0f30f66ec2  gcc/testsuite/gcc.dg/tree-ssa/minmax-30.c
+ eb3efaa1c756e0b6cc3f05f459443001  gcc/testsuite/gcc.dg/tree-ssa/minmax-31.c
+ f7d4e98c591552f4f8f96c57fb47af58  gcc/testsuite/gcc.dg/tree-ssa/minmax-32.c
  7c34c6b9eac11cf5e9264d6575d41224  gcc/testsuite/gcc.dg/tree-ssa/minmax-4.c
  639bc9b57e1078143511dae7efca80b0  gcc/testsuite/gcc.dg/tree-ssa/minmax-5.c
  64d1ac96d63f1275356a5f31398dce9d  gcc/testsuite/gcc.dg/tree-ssa/minmax-6.c
*************** bcc1e80ace8dfce442cc953aeebe8f09  gcc/te
*** 65539,65544 ****
--- 65592,65598 ----
  224ab867e798b5cf13d97d39d2a1eb10  gcc/testsuite/gcc.dg/tree-ssa/pr109711-1.c
  40a15ee5d38d19b2ca6d98814456dcfc  gcc/testsuite/gcc.dg/tree-ssa/pr109711-2.c
  b0a5d0cb26e6cc9477b05eaf27f231fe  gcc/testsuite/gcc.dg/tree-ssa/pr109834-1.c
+ baa64be8feec120e127e1fbdd4bb1460  gcc/testsuite/gcc.dg/tree-ssa/pr109843.c
  c894a43d6d18577fb0be67375fb6fe32  gcc/testsuite/gcc.dg/tree-ssa/pr109849.c
  8c0caf0d8a583fdc73e90e71dad9f1a9  gcc/testsuite/gcc.dg/tree-ssa/pr109878-1.c
  868d895ed843592746c256f27d6e1e77  gcc/testsuite/gcc.dg/tree-ssa/pr109878-2.c
*************** fa7603643fb0875e44fb78188614e8a3  gcc/te
*** 65640,65647 ****
--- 65694,65704 ----
  592ff8296452a90640cda6fbbbecff26  gcc/testsuite/gcc.dg/tree-ssa/pr122569-3.c
  de81b2d2951773077a5d5e6d9db8a8e4  gcc/testsuite/gcc.dg/tree-ssa/pr122588-1.c
  63935006310fe21a6b06fca6cc5d6a98  gcc/testsuite/gcc.dg/tree-ssa/pr122629-1.c
+ f1c83a10a9177343e67682edb81ef8ae  gcc/testsuite/gcc.dg/tree-ssa/pr122848.c
  71eb14b3ae5faf81c5226dc766d48edd  gcc/testsuite/gcc.dg/tree-ssa/pr122976.c
  b0dfa81cfe991cc45aece9c3f083a075  gcc/testsuite/gcc.dg/tree-ssa/pr122996.c
+ edc20f5c780fbd865af68ae4792383d2  gcc/testsuite/gcc.dg/tree-ssa/pr123311-1.c
+ 0bbffcde5a5738b357ad421872d7e3d5  gcc/testsuite/gcc.dg/tree-ssa/pr123311-2.c
  fa32f3c662bc31e5bbf4daa360b9c87f  gcc/testsuite/gcc.dg/tree-ssa/pr123372.c
  daf3fee63585def52d6c516a9bfa3503  gcc/testsuite/gcc.dg/tree-ssa/pr123514.c
  f0a08ed77be180f8c72684f8274f2548  gcc/testsuite/gcc.dg/tree-ssa/pr123966.c
*************** c696d7723e6935b64e8868efdada71d9  gcc/te
*** 66603,66608 ****
--- 66660,66667 ----
  78f5b94faf6fa73b44dd51964967e5c2  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-110.c
  e17e18c4987b53f256b8271310af6347  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-111.c
  1c4e46dde7b0fe083a98ab1723ffd455  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-112.c
+ a9c3664946fda99312411e077c20b3ce  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-113.c
+ 675d6d09a9128b4f7648612d0a2d866e  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-114.c
  5561c38451474a42839647e4e156c010  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-12.c
  b95088c9ed88a484349d681f36871312  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c
  87ba541be7f38ef117b8b5cc09ff4932  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c
*************** a6cf066e6e502eee358c3db0aee78926  gcc/te
*** 67116,67121 ****
--- 67175,67181 ----
  3bb3d7147b5445fd4f17d2be28e5a317  gcc/testsuite/gcc.dg/ubsan/bitint-2.c
  199adf7daa04d85435a3c1a0995f955f  gcc/testsuite/gcc.dg/ubsan/bitint-3.c
  209487ed7251c08b5d467814d7e24249  gcc/testsuite/gcc.dg/ubsan/bitint-4.c
+ c66016f07e4c6af135d26f68b6ee23fb  gcc/testsuite/gcc.dg/ubsan/bitint-5.c
  b9d67dbc50419a82b76d70029936f329  gcc/testsuite/gcc.dg/ubsan/bounds-1.c
  8ef707e5f4c734c1b8be85269cd93d06  gcc/testsuite/gcc.dg/ubsan/bounds-2.c
  49c14bdc09fb274e14fd4f886b5e6fb9  gcc/testsuite/gcc.dg/ubsan/bounds-3.c
*************** a1f9fcfa78f1b46b116ce7996f906058  gcc/te
*** 67792,67797 ****
--- 67852,67858 ----
  6f4bf2c4a507528f38d259981fb499fc  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-12.c
  19081e29f1e62a6af5f2b3541e3347d3  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-13.c
  045f71cd9dc60802f1b1538cff78a188  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-14.c
+ acdc421fa41e1b9e27c5b17769db4074  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-15.c
  33cd89200cb4fcc1b82602b00dc1b812  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-2.c
  8867409dcfcc10a34b02ce112f87eb26  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-3.c
  830d08bebe6bc2a1ee79de78371b6950  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-4.c
*************** e094ee1a12f158fa8be372b1974af637  gcc/te
*** 67869,67875 ****
  f69c055c238cc0217c98e86380f16061  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c
  396130749e6b4f9ec773821041143ba0  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-33.c
  d13254c5eb24a8e02c724470d3f22c66  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-68.c
! f2976042c525e5f95f95c9e6a6567575  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-epil-1.c
  460815bb26ae1f6c220e23de56a2d3fd  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-reduc-1char.c
  f6fdadd0ea9395aed541bf9b57b73780  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp-2.c
  8fa1df6d327c2eef9e16ea686cbebd42  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp.c
--- 67930,67936 ----
  f69c055c238cc0217c98e86380f16061  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c
  396130749e6b4f9ec773821041143ba0  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-33.c
  d13254c5eb24a8e02c724470d3f22c66  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-68.c
! 779105c20446d35d3e8e99b8d38c6de7  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-epil-1.c
  460815bb26ae1f6c220e23de56a2d3fd  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-reduc-1char.c
  f6fdadd0ea9395aed541bf9b57b73780  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp-2.c
  8fa1df6d327c2eef9e16ea686cbebd42  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp.c
*************** da160a8349fe2e0daa932c3bd967f635  gcc/te
*** 69577,69582 ****
--- 69638,69645 ----
  09beadb34e2b0bfa6179ef89f2e6d9f7  gcc/testsuite/gcc.dg/vect/vect-pr124802.c
  35ab3c217a19586ac0d452e88ef57bb3  gcc/testsuite/gcc.dg/vect/vect-pr126159-1.c
  090aafcb956b616f328a80c7570602a2  gcc/testsuite/gcc.dg/vect/vect-pr126159-2.c
+ 6f15db608de3b3df52942cc35f7e39b8  gcc/testsuite/gcc.dg/vect/vect-pr126404.c
+ af2363c3657a936b2857b789e9845648  gcc/testsuite/gcc.dg/vect/vect-pr126457.c
  464c872c62ad2fc5d241ed918e0cf5de  gcc/testsuite/gcc.dg/vect/vect-pr61247.c
  4d57df9e3b3522c9f1a6707c05f1da45  gcc/testsuite/gcc.dg/vect/vect-pr69848.c
  3a3a316ff2f2496494ecb0bd77d61aad  gcc/testsuite/gcc.dg/vect/vect-pre-interact.c
*************** ec22fbdd8271e68304a64fd92533fcc2  gcc/te
*** 70600,70605 ****
--- 70663,70671 ----
  8b7fe5e3f608156c6dd8c2382aa48368  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_zero_op.inc
  09467f6d3704f99313ea2c4bb06ebadd  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/combine.c
  33561c768270392fb8ed106191c7da6c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/compute-ref-data.h
+ 9d4d14d9d8442911d27a7e43b4228577  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-1.c
+ 2362d5b171445ad4f14249e043679967  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-2.c
+ ecf5259690db790f218c93c9e919b85f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-3.c
  5125cb4b3bd28f66b40d4070ec5aaf36  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/ignored_return_1.c
  8d14e25c822c3fe9f91adb12909b4bce  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/mf8-reinterpret.c
  0244d27c155f8b9253241c5715fda41f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/p64_p128.c
*************** f9169397bf470048c41876d5ff1f24a7  gcc/te
*** 71564,71570 ****
  75b06b7d31f887b42eaed60fcbd375b5  gcc/testsuite/gcc.target/aarch64/feature-memtag-backport.c
  d256d1ca6afee8c9f035975033b2b6c6  gcc/testsuite/gcc.target/aarch64/feature-sha3-backport.c
  1910bf77e3f13c7816c4d38120f1dabb  gcc/testsuite/gcc.target/aarch64/feature-sm4-backport.c
! abd619065b2bb89f1db8ad4689a1764b  gcc/testsuite/gcc.target/aarch64/ffs.c
  9c5bbea35483b24fc9a870096facec01  gcc/testsuite/gcc.target/aarch64/fix_extend1.c
  abddc9f1fca0b1871d2b5fa9f425d10a  gcc/testsuite/gcc.target/aarch64/fix_trunc1.c
  08efe84ed3a8a3a4d9a85a6d64eb9cae  gcc/testsuite/gcc.target/aarch64/float_truncate_zero.c
--- 71630,71636 ----
  75b06b7d31f887b42eaed60fcbd375b5  gcc/testsuite/gcc.target/aarch64/feature-memtag-backport.c
  d256d1ca6afee8c9f035975033b2b6c6  gcc/testsuite/gcc.target/aarch64/feature-sha3-backport.c
  1910bf77e3f13c7816c4d38120f1dabb  gcc/testsuite/gcc.target/aarch64/feature-sm4-backport.c
! f8679e0b991f041f8acfafa7f617731d  gcc/testsuite/gcc.target/aarch64/ffs.c
  9c5bbea35483b24fc9a870096facec01  gcc/testsuite/gcc.target/aarch64/fix_extend1.c
  abddc9f1fca0b1871d2b5fa9f425d10a  gcc/testsuite/gcc.target/aarch64/fix_trunc1.c
  08efe84ed3a8a3a4d9a85a6d64eb9cae  gcc/testsuite/gcc.target/aarch64/float_truncate_zero.c
*************** cd9487c1160ca881603404b4abd49999  gcc/te
*** 71651,71665 ****
  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
  22ce675229a62ee836f1fbec03e0a9f1  gcc/testsuite/gcc.target/aarch64/frint_double.c
  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
--- 71717,71731 ----
  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
! 4bcb73f5768688f9eda639d6f4453c43  gcc/testsuite/gcc.target/aarch64/frecpe_1.c
! 91edb254ef7f608594ecd41ab45257f0  gcc/testsuite/gcc.target/aarch64/frecpe_2.c
  88cae34e11d9f2c547f396460813b774  gcc/testsuite/gcc.target/aarch64/frint.x
  22ce675229a62ee836f1fbec03e0a9f1  gcc/testsuite/gcc.target/aarch64/frint_double.c
  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
! e35250299d7e35e88b7a5e612fe648db  gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel-1.c
! 7cb0a72d95fef130a78ffe4cf803e67f  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
*************** c1b669eba35fd9ddf0fc4ad45466f77e  gcc/te
*** 72289,72294 ****
--- 72355,72361 ----
  0942fe2fb0f84b796db39af8bb697fa5  gcc/testsuite/gcc.target/aarch64/pr126184.c
  17d5f7acaed609156f93734b9fdd4c26  gcc/testsuite/gcc.target/aarch64/pr126291-2.c
  1c19f70d3b6f3a1da443e3c4e7b805b7  gcc/testsuite/gcc.target/aarch64/pr126291.c
+ 8d70d3f3bddcfe3e225c9da37cd065f7  gcc/testsuite/gcc.target/aarch64/pr126480.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
*************** df08a7f1b91a8c0f914aab7f291c95e7  gcc/te
*** 72564,72570 ****
  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
! 4e98c4f97b3d4106b3e4ddbd68a509fb  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
  67e9f00dffaa6f894241ef054cf29a1e  gcc/testsuite/gcc.target/aarch64/simd/pr121749.c
--- 72631,72637 ----
  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
  67e9f00dffaa6f894241ef054cf29a1e  gcc/testsuite/gcc.target/aarch64/simd/pr121749.c
*************** cd04bfeb885395f8141a5eb5e79d513b  gcc/te
*** 73316,73329 ****
--- 73383,73416 ----
  5da06bb8e1f77e628372e25b0a9a48e8  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvt_s32_f32_x4.c
  f8cd4f07fb93f3045ab21c993af3b464  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvt_u32_f32_x2.c
  bfad1ade50c6407affa0bb57d100e232  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvt_u32_f32_x4.c
+ 88b76d9206bfe2d82316a325a7c464a5  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_s8.c
+ f3ccc8472d35241903a6e62927418206  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_u8.c
+ 8280160ab300725a53f709ab2c0c5a8b  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_s16.c
+ abc31e9d54acfe636a97bd7cbf6b1a8b  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_u16.c
+ ecbea1edf24fb7cf97d8e41623d5e00f  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_s32.c
+ 9a2f9a728d66928bc89ad49e8fc10b4c  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_u32.c
  448d818556f26c9c1fe377c6c26e3826  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtl_f32_f16_x2.c
  90742e69be923e36837dbd965e837a62  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtl_mf8_x2.c
  c7e70850df6204b80a6eb2a595dde2c5  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_bf16_f32_x2.c
  8fb32ef3a80092caff5869318f4a26ea  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_f16_f32_x2.c
  64d67aad8d75b51ca4e234428bf37b8e  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_mf8_f32_x4.c
+ 7429f06fe97676909a4c82346bbead48  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s16_f32_x2.c
+ 2acc8f3c11c4ea60cbf291842dfb4d78  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s32_f64_x2.c
+ 0790052f7815cfa80ae667d588dc28cf  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s8_f16_x2.c
+ 68f7c3099eb1c31d762c6e5cab849956  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u16_f32_x2.c
+ 4986403ce240e7bcfce30ecf90f80e35  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u32_f64_x2.c
+ 93b07e454fcb048c3c0d59dfa1baeab7  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u8_f16_x2.c
+ 6a4a5755bced2d9b250bd847c862864a  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_s8.c
+ 1a8373d87cad5b937cd9fa4d8ed14607  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_u8.c
+ 990af3e2799184a2aedc7e280e051b65  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_s16.c
+ 63ef3b8bc4bd31aad106abcf3ef6562e  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_u16.c
+ 7ed43a065c8009055ef2727636a15d31  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_s32.c
+ 3a14d2b46eadd20b47eb01cf7b67bede  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_u32.c
  6d2e06bbf42e9a73d30281a2ef54d819  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_f32.c
  2254e8fce53e727c3c39066718e987a5  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_f32.c
+ 29b6a71311fb842b71c4ca3b432a6aee  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_s16.c
  9f7f258d6d152e8e4e9e0d166efba1b4  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_s32.c
+ 4606f08707f3985134feb3c13e6b3462  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_u16.c
  2f90e9c4c59aa90dc949d2e18df4e7c5  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_u32.c
  66c7a4f5ded3417d75bd5ade0872b536  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_za16_mf8_vg1x2.c
  ece04ffa870e27476d0694e9c05f32ac  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_za16_mf8_vg1x4.c
*************** c241c089b8ab3d16858bc39b4a02e19a  gcc/te
*** 73345,73355 ****
--- 73432,73444 ----
  82ca80a01f4b14a9011fb681cae95e62  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_za64_s16_vg1x4.c
  9a73744c0c4e15b184bb36bb5d86ae30  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_za64_u16_vg1x2.c
  b32cddc1437ee499dde6e742aa28993a  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_za64_u16_vg1x4.c
+ 734d358ae09942f0df62961cf5f63af6  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_s16.c
  6945f4b4c7935aa74ad875b92039760a  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_s32.c
  f69228a174a67079638ad80f6bd42dd0  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_single_za16_mf8_vg1x2.c
  a579620b6b6b827e936a0d746404416d  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_single_za16_mf8_vg1x4.c
  5b0eb67d660fb3a5de6791af916e94ad  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_single_za32_mf8_vg1x2.c
  65fc110b401f8361b844c37b7712ccca  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_single_za32_mf8_vg1x4.c
+ 58c57f23e11cf63a9141cc66e538b5b6  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_u16.c
  c2aaad259d2a6d2baebf63670e518d4d  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_u32.c
  6f51023f41f7fee60401af89a1f3345b  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_za16_mf8_vg1x2.c
  e9c4be9af1411580ba528948fd912f2b  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_za16_mf8_vg1x4.c
*************** e342b7fa2ce17d6cfd00030f2f3965d3  gcc/te
*** 76530,76535 ****
--- 76619,76626 ----
  b7e78bb84de099569d29a829e069cbdf  gcc/testsuite/gcc.target/aarch64/sve/cond_fadd_3_run.c
  c1b6e314ccc33e03e318141e9a67069b  gcc/testsuite/gcc.target/aarch64/sve/cond_fadd_4.c
  55463c73d53ad6c6f93532abb0d0d552  gcc/testsuite/gcc.target/aarch64/sve/cond_fadd_4_run.c
+ bb2263d3189ef85dfccb76a18f013116  gcc/testsuite/gcc.target/aarch64/sve/cond_fma.c
+ 6d12dedf40efea2b5abe15e4438bb466  gcc/testsuite/gcc.target/aarch64/sve/cond_fma_neg_addend.c
  522b2b22a6513e32c8b3d8daea434091  gcc/testsuite/gcc.target/aarch64/sve/cond_fmaxnm_1.c
  52ad44c429dd4422f4d2b6df0bc07c76  gcc/testsuite/gcc.target/aarch64/sve/cond_fmaxnm_1_run.c
  0e39b871b01c57f14ac862a3eb53f539  gcc/testsuite/gcc.target/aarch64/sve/cond_fmaxnm_2.c
*************** cfc1ede9abf6a933d31c314278c77af2  gcc/te
*** 76562,76567 ****
--- 76653,76659 ----
  072ae2d9a5e9d32d48faa5e62b996609  gcc/testsuite/gcc.target/aarch64/sve/cond_fminnm_7_run.c
  64db42388579ec976e07f51afc168086  gcc/testsuite/gcc.target/aarch64/sve/cond_fminnm_8.c
  cb1bf1ff48a5e6bb1ba79530c0b05adb  gcc/testsuite/gcc.target/aarch64/sve/cond_fminnm_8_run.c
+ a75dd87812d4a7ff0f2494fef6be896f  gcc/testsuite/gcc.target/aarch64/sve/cond_fms.c
  e0705706a25a622a4b620338485c3a81  gcc/testsuite/gcc.target/aarch64/sve/cond_fmul_1.c
  780caf8bf7717806fd0f84c048ee97eb  gcc/testsuite/gcc.target/aarch64/sve/cond_fmul_1_run.c
  b52b14b2138a13194cbcff7473ba55c2  gcc/testsuite/gcc.target/aarch64/sve/cond_fmul_2.c
*************** b3f9c3240fdec2e7408c3b787bce4286  gcc/te
*** 76571,76576 ****
--- 76663,76670 ----
  64405df4d9f806fb4184767b01f9c860  gcc/testsuite/gcc.target/aarch64/sve/cond_fmul_4.c
  17d8db4e44cf467bc1ad2287738ba543  gcc/testsuite/gcc.target/aarch64/sve/cond_fmul_4_run.c
  191ccb4ceae58f8c666f1676fca6708f  gcc/testsuite/gcc.target/aarch64/sve/cond_fmul_5.c
+ a0857ad747f6a9a2337df2088a4da9a6  gcc/testsuite/gcc.target/aarch64/sve/cond_fnma.c
+ a8c342ddcabea0e9f5ddded87a17ad5e  gcc/testsuite/gcc.target/aarch64/sve/cond_fnms.c
  f2191497eb739d9ec3a96c5a36857dfd  gcc/testsuite/gcc.target/aarch64/sve/cond_fsubr_1.c
  ee8d2477e2e6cf35e0492bebab2e9489  gcc/testsuite/gcc.target/aarch64/sve/cond_fsubr_1_run.c
  788b065dda79085ad117d4c5ee3206af  gcc/testsuite/gcc.target/aarch64/sve/cond_fsubr_2.c
*************** d3252738fa0db5bfceb3e80d9754a54f  gcc/te
*** 77135,77142 ****
  859d5154812c85cbc1e73c45328f242a  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_2_2048.c
  4f44041e2c506ee8f11eda5ef8e6d82a  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_2_256.c
  10f8dc4eefc15929b133ffd9eb7d8dcc  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_2_512.c
! 2e5fb1c0c537accfa30029eb471129ed  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_128.c
! dbe89864fb99377871dd0d209abfd059  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_256.c
  ff2ac4b70a46e17015348c2091d8ca97  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_512.c
  4d884f04b08f8626de41656c2dc89c2b  gcc/testsuite/gcc.target/aarch64/sve/pcs/unprototyped_1.c
  dbe533f64021d2fa4e2cf74186903196  gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_1.c
--- 77229,77236 ----
  859d5154812c85cbc1e73c45328f242a  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_2_2048.c
  4f44041e2c506ee8f11eda5ef8e6d82a  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_2_256.c
  10f8dc4eefc15929b133ffd9eb7d8dcc  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_2_512.c
! 0b5bcecdf99776c2552b580374606a3f  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_128.c
! 76320497702096fa8c4306c4dcef8365  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_256.c
  ff2ac4b70a46e17015348c2091d8ca97  gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_512.c
  4d884f04b08f8626de41656c2dc89c2b  gcc/testsuite/gcc.target/aarch64/sve/pcs/unprototyped_1.c
  dbe533f64021d2fa4e2cf74186903196  gcc/testsuite/gcc.target/aarch64/sve/pcs/varargs_1.c
*************** f138a3da42d63bd49959d9ace6c814ab  gcc/te
*** 79430,79435 ****
--- 79524,79530 ----
  138cb696e2f9aecb8036abf684116d9a  gcc/testsuite/gcc.target/aarch64/sve2/bitsel_3.c
  db510fed2a207b35df2126caab14bc03  gcc/testsuite/gcc.target/aarch64/sve2/bitsel_4.c
  c0db897049451d05160e3d761c3e6da0  gcc/testsuite/gcc.target/aarch64/sve2/div-by-bitmask_1.c
+ 83a2ebff6de9f605dbeb6ed95e9c4ab8  gcc/testsuite/gcc.target/aarch64/sve2/dotproduct_intrinsicless.c
  4c1f47b22f95b90c917c3c6e70530e4e  gcc/testsuite/gcc.target/aarch64/sve2/dupq_1.c
  89d5827d6649de87899d14beeaa9a82b  gcc/testsuite/gcc.target/aarch64/sve2/dupq_1_run.c
  6cf392a332495a2c13ccb608c1258a78  gcc/testsuite/gcc.target/aarch64/sve2/eon_bsl2n.c
*************** bb3354b56d86a7d30bc259ff8c5b77b9  gcc/te
*** 79757,79763 ****
  a0789981a953d5159e7a01e2a306cfe4  gcc/testsuite/gcc.target/aarch64/vect-simd-clone-4.c
  9beae85b914c12abd4365f24d1b9d2e0  gcc/testsuite/gcc.target/aarch64/vect-slp-dup.c
  a556a66b392d3b57cd0df3d82b71201e  gcc/testsuite/gcc.target/aarch64/vect-slp-two-operator.c
! 909f6319658fdb0f9bdf4418a97e4bed  gcc/testsuite/gcc.target/aarch64/vect-vaddv.c
  ab6883e822bb3f1fc8d811e7e3f12d7a  gcc/testsuite/gcc.target/aarch64/vect-vca.c
  00f6ce34304d67309d3c34f69cbf32c0  gcc/testsuite/gcc.target/aarch64/vect-vcvt.c
  f4f649fed2885c785319cab7327c85be  gcc/testsuite/gcc.target/aarch64/vect-vfmaxv.c
--- 79852,79858 ----
  a0789981a953d5159e7a01e2a306cfe4  gcc/testsuite/gcc.target/aarch64/vect-simd-clone-4.c
  9beae85b914c12abd4365f24d1b9d2e0  gcc/testsuite/gcc.target/aarch64/vect-slp-dup.c
  a556a66b392d3b57cd0df3d82b71201e  gcc/testsuite/gcc.target/aarch64/vect-slp-two-operator.c
! 20581e637e45bf739561bea3fc249df0  gcc/testsuite/gcc.target/aarch64/vect-vaddv.c
  ab6883e822bb3f1fc8d811e7e3f12d7a  gcc/testsuite/gcc.target/aarch64/vect-vca.c
  00f6ce34304d67309d3c34f69cbf32c0  gcc/testsuite/gcc.target/aarch64/vect-vcvt.c
  f4f649fed2885c785319cab7327c85be  gcc/testsuite/gcc.target/aarch64/vect-vfmaxv.c
*************** a6701935d18c8ed062555c8a48454bc9  gcc/te
*** 84077,84085 ****
  14ec7b85b2ab003574d858aa229c3112  gcc/testsuite/gcc.target/avr/dtofx.c
  2028ceccf9f97e5e84e9adf6beb7597e  gcc/testsuite/gcc.target/avr/exit-abort.h
  6c83d167de5a523cffe112594bd1cd56  gcc/testsuite/gcc.target/avr/fminfmax-1.c
! f532eaf588f6ef6eec6589656fb3da4b  gcc/testsuite/gcc.target/avr/fx64-mul-1.c
! 595e5f3315c67813b6fea61b03183200  gcc/testsuite/gcc.target/avr/fx64-mul-2.c
! e7dfc33da34647a60d7f68786c6b3fe4  gcc/testsuite/gcc.target/avr/fx64-mul.h
  f99b6b374e8532e344331366048bd0b9  gcc/testsuite/gcc.target/avr/fxtod.c
  ba7c48974675d54204196ccc8c44007e  gcc/testsuite/gcc.target/avr/isr-test.h
  d258157b4a9f2a166772579aaadca0be  gcc/testsuite/gcc.target/avr/lra-cpymem_qi.c
--- 84172,84183 ----
  14ec7b85b2ab003574d858aa229c3112  gcc/testsuite/gcc.target/avr/dtofx.c
  2028ceccf9f97e5e84e9adf6beb7597e  gcc/testsuite/gcc.target/avr/exit-abort.h
  6c83d167de5a523cffe112594bd1cd56  gcc/testsuite/gcc.target/avr/fminfmax-1.c
! c94f1f072a07daba151a47e359d66c4f  gcc/testsuite/gcc.target/avr/fx64-div-1.c
! 92ee9d105da404668d2c7a787afec380  gcc/testsuite/gcc.target/avr/fx64-div-2.c
! 8b6bff0de6b8a718af648eec157e4237  gcc/testsuite/gcc.target/avr/fx64-div-3.c
! 6cb1140b43dc7b2f8a6d38c8e67c4660  gcc/testsuite/gcc.target/avr/fx64-mul-1.c
! f098a2a219d9b8d5b9e679a4bbdd100f  gcc/testsuite/gcc.target/avr/fx64-mul-2.c
! 1a9b47e28c96d968e9b07625e4a9e895  gcc/testsuite/gcc.target/avr/fx64.h
  f99b6b374e8532e344331366048bd0b9  gcc/testsuite/gcc.target/avr/fxtod.c
  ba7c48974675d54204196ccc8c44007e  gcc/testsuite/gcc.target/avr/isr-test.h
  d258157b4a9f2a166772579aaadca0be  gcc/testsuite/gcc.target/avr/lra-cpymem_qi.c
*************** fc4c4391126114b2453f5c93481bf914  gcc/te
*** 85285,85290 ****
--- 85383,85389 ----
  7f8bc20ec8f18def15b87ad8d72b8edf  gcc/testsuite/gcc.target/i386/apx-ndd-adc.c
  f02238e467f2946d202f6d718be9db28  gcc/testsuite/gcc.target/i386/apx-ndd-base-index-1.c
  cada0f8a782f8acbce1e56dbe723fdd1  gcc/testsuite/gcc.target/i386/apx-ndd-cmov.c
+ 960ab354e033d407454cac5837a403c6  gcc/testsuite/gcc.target/i386/apx-ndd-mem-tune.c
  4e9e6b68850faa5f7d11d9ee9c827948  gcc/testsuite/gcc.target/i386/apx-ndd-no-seg-global-1.c
  af7a323d2943cf68087ba393f8306206  gcc/testsuite/gcc.target/i386/apx-ndd-sbb.c
  dc44128fffea608a1efc7355f7ec1a12  gcc/testsuite/gcc.target/i386/apx-ndd-seg-1.c
*************** ef100fd83dc3fcc0f4db7670c47568e4  gcc/te
*** 85421,85426 ****
--- 85520,85534 ----
  d492956a81debfaf73314310c70144c2  gcc/testsuite/gcc.target/i386/avx-ifma-6.c
  3fcfbd4df0b603c8e844267d3e61dbf0  gcc/testsuite/gcc.target/i386/avx-ifma-vpmaddhuq-2.c
  07183f89ef41a2e991a020e38a54b194  gcc/testsuite/gcc.target/i386/avx-ifma-vpmaddluq-2.c
+ 35fedb21fd5559cd4a7d0e26bbd1e681  gcc/testsuite/gcc.target/i386/avx-init-v16qi-1.c
+ 4374d9bdc962f25802a9d1321b825c94  gcc/testsuite/gcc.target/i386/avx-init-v2df-1.c
+ 76d6b702876a0992afab452caaf3dc29  gcc/testsuite/gcc.target/i386/avx-init-v2df-2.c
+ 81075c15eeac3a1bc1daa4e59f97c5e5  gcc/testsuite/gcc.target/i386/avx-init-v2di-1.c
+ e571c1daf21e372402aa8fd026a0e7bf  gcc/testsuite/gcc.target/i386/avx-init-v2di-2.c
+ 0f65c59cea2fa64ccc23238479c3ccd9  gcc/testsuite/gcc.target/i386/avx-init-v4sf-1.c
+ 0d5baccdcd2d0f70870a9e487bfd3101  gcc/testsuite/gcc.target/i386/avx-init-v4sf-2.c
+ 76654b0bf59704da5121798e9b7fd74d  gcc/testsuite/gcc.target/i386/avx-init-v4si-1.c
+ ab8e2e25d84eb4c4c10f883a5b098f55  gcc/testsuite/gcc.target/i386/avx-init-v8hi-1.c
  00da02db70f133be74dae17241af27eb  gcc/testsuite/gcc.target/i386/avx-inline.c
  6ce5bb66230471952f8d93ba742e9287  gcc/testsuite/gcc.target/i386/avx-int-covert-1.c
  bb988640d708e14bbba7f036d1d900dc  gcc/testsuite/gcc.target/i386/avx-loadu2-m128-1.c
*************** bdb1dbd34e41a723a3f7e19c6659fddd  gcc/te
*** 86259,86264 ****
--- 86367,86375 ----
  a1d47036a9ce365a559716be2cf89ec1  gcc/testsuite/gcc.target/i386/avx2-i64gatherq256-2.c
  84e6e6a5c3c2b77b0d28a411f41a0a26  gcc/testsuite/gcc.target/i386/avx2-i64gatherq256-3.c
  132568e07b06a6440e09bc976ef49452  gcc/testsuite/gcc.target/i386/avx2-i64gatherq256-4.c
+ 79482eb6b23ee3cfdfee498671b5dd95  gcc/testsuite/gcc.target/i386/avx2-init-v4sf-1.c
+ eed8c042327d65693753e7394bbb3219  gcc/testsuite/gcc.target/i386/avx2-init-v4si-1.c
+ 7741cccac7e40b320201a88c8f646e40  gcc/testsuite/gcc.target/i386/avx2-init-v4si-2.c
  9d7021f10aab16079c5f9602e594cd42  gcc/testsuite/gcc.target/i386/avx2-mpsadbw-1.c
  6fc4ada896c32f2d08cf540bde78c355  gcc/testsuite/gcc.target/i386/avx2-mpsadbw-2.c
  fe43a9deff46d9922603adbeeafc1bca  gcc/testsuite/gcc.target/i386/avx2-mul-1.c
*************** f6a4ee4d223cdf4463f296171468844c  gcc/te
*** 86271,86276 ****
--- 86382,86388 ----
  6fa4b94fa60e1eec4b7906f5939c053f  gcc/testsuite/gcc.target/i386/avx2-pr115517.c
  91b0404bb9414d32d9ec704f6f6e82fe  gcc/testsuite/gcc.target/i386/avx2-pr125357-2.c
  09237138d4aefde84fe073675701b7bd  gcc/testsuite/gcc.target/i386/avx2-pr125357.c
+ a1410da90f646f82394ac1561d97a301  gcc/testsuite/gcc.target/i386/avx2-pr126446.c
  a544282846ec57648b2f38abf14119f0  gcc/testsuite/gcc.target/i386/avx2-pr51581-1.c
  46ffedd4e5e66cd46ad561ee8562eb7b  gcc/testsuite/gcc.target/i386/avx2-pr51581-2.c
  adf63582badc02467af57f768108628f  gcc/testsuite/gcc.target/i386/avx2-pr57233.c
*************** b3301869110b12f5c4b23cfb9d100a2a  gcc/te
*** 88651,88657 ****
  99ab8f6b1890ccfcd14f1ea1cc6ca1c8  gcc/testsuite/gcc.target/i386/avx512vl-check.h
  0617dd4b8fef3764392d3723a75e2c8b  gcc/testsuite/gcc.target/i386/avx512vl-concatv2di-1.c
  aa1c65ae5d415bc961f9a1df5e0e7664  gcc/testsuite/gcc.target/i386/avx512vl-concatv2si-1.c
! cfe2aa1be3273634b71c46e44025ff10  gcc/testsuite/gcc.target/i386/avx512vl-concatv4si-1.c
  6788a25423c898ac689e10dd7d5299f8  gcc/testsuite/gcc.target/i386/avx512vl-dest-false-dep-for-glc.c
  9c18b5a50845fa97a3fa72f280bdd73e  gcc/testsuite/gcc.target/i386/avx512vl-div-sf-xmm-1.c
  5a5bb900735bbe0f16a8a6c42b1fbdf4  gcc/testsuite/gcc.target/i386/avx512vl-div-sf-ymm-1.c
--- 88763,88769 ----
  99ab8f6b1890ccfcd14f1ea1cc6ca1c8  gcc/testsuite/gcc.target/i386/avx512vl-check.h
  0617dd4b8fef3764392d3723a75e2c8b  gcc/testsuite/gcc.target/i386/avx512vl-concatv2di-1.c
  aa1c65ae5d415bc961f9a1df5e0e7664  gcc/testsuite/gcc.target/i386/avx512vl-concatv2si-1.c
! ee4e36c67fbd889994e64a8c86ad8f01  gcc/testsuite/gcc.target/i386/avx512vl-concatv4si-1.c
  6788a25423c898ac689e10dd7d5299f8  gcc/testsuite/gcc.target/i386/avx512vl-dest-false-dep-for-glc.c
  9c18b5a50845fa97a3fa72f280bdd73e  gcc/testsuite/gcc.target/i386/avx512vl-div-sf-xmm-1.c
  5a5bb900735bbe0f16a8a6c42b1fbdf4  gcc/testsuite/gcc.target/i386/avx512vl-div-sf-ymm-1.c
*************** f5f208c5e365ee18db85e363e2aa0330  gcc/te
*** 88683,88688 ****
--- 88795,88803 ----
  de16d3536da23cd8a5f1fd84c3f22c4c  gcc/testsuite/gcc.target/i386/avx512vl-i64scatterpd-1.c
  4ad175d6aa649e10ea2104199ff41ca5  gcc/testsuite/gcc.target/i386/avx512vl-i64scatterps-1.c
  cd96f3da4c2192b767b58d01e5f08cd4  gcc/testsuite/gcc.target/i386/avx512vl-i64scatterq-1.c
+ 195eda912cd0fbc6e6919be24057c128  gcc/testsuite/gcc.target/i386/avx512vl-init-v2di-1.c
+ f9cc74b95c60419711b9bdc3a73be6eb  gcc/testsuite/gcc.target/i386/avx512vl-init-v2di-2.c
+ e2af176af5bb431e7ebabf91a54cfdad  gcc/testsuite/gcc.target/i386/avx512vl-init-v4si-1.c
  45bbb91ea6f62986057afc4426fd06da  gcc/testsuite/gcc.target/i386/avx512vl-logic-1.c
  6b1fbd422db0115eef17bf3d36005958  gcc/testsuite/gcc.target/i386/avx512vl-logic-2.c
  8559abbcaffcdb5c5a3e557ae8c5f848  gcc/testsuite/gcc.target/i386/avx512vl-logicsuffix-1.c
*************** bc23d02ee3eec2758045f35d85c64808  gcc/te
*** 90016,90021 ****
--- 90131,90138 ----
  639d6d00f318ac6a27eea7f5d73e1aa7  gcc/testsuite/gcc.target/i386/fma_run_float_results_5.h
  a8f61a3e9626bdd65b4e124dbc719d3e  gcc/testsuite/gcc.target/i386/fma_run_float_results_6.h
  0bcde4f779166e7219135f96319daf7e  gcc/testsuite/gcc.target/i386/fnabs.c
+ 2a64333f2475e9ed35082bc37ee26013  gcc/testsuite/gcc.target/i386/fold-left-reduc-chain-cost.c
+ 4e43b16198244eb0ddd7cd604f0d7916  gcc/testsuite/gcc.target/i386/fold-left-reduc-cost.c
  304b0b76a9b34898928cb8cc565ca031  gcc/testsuite/gcc.target/i386/force-indirect-call-1.c
  7d4fde6435ac834b0cefb1bad29aaeec  gcc/testsuite/gcc.target/i386/force-indirect-call-2.c
  43fed2ad7f6111a8568f635af1144012  gcc/testsuite/gcc.target/i386/force-indirect-call-3.c
*************** af34b77e5ee2963838afcd3330821e7f  gcc/te
*** 91414,91420 ****
  f465b493ef4cd8fedb8eb45d4397bdf2  gcc/testsuite/gcc.target/i386/pr116142.c
  047d24cb35d473698c2bcf2094d483fc  gcc/testsuite/gcc.target/i386/pr116174.c
  53b4f9f435b0daa700fd5937cf27f349  gcc/testsuite/gcc.target/i386/pr116258.c
! 6909f87518edc9432bf3b69c22d01d5f  gcc/testsuite/gcc.target/i386/pr116274-2.c
  68dcc6e225835bd404fac33fbc2ba3c1  gcc/testsuite/gcc.target/i386/pr116274.c
  5d7ed648796e3bb1badb99e986fd299a  gcc/testsuite/gcc.target/i386/pr116512.c
  8e60e9aaa7e5010e46a423fda04b10c4  gcc/testsuite/gcc.target/i386/pr116587.c
--- 91531,91537 ----
  f465b493ef4cd8fedb8eb45d4397bdf2  gcc/testsuite/gcc.target/i386/pr116142.c
  047d24cb35d473698c2bcf2094d483fc  gcc/testsuite/gcc.target/i386/pr116174.c
  53b4f9f435b0daa700fd5937cf27f349  gcc/testsuite/gcc.target/i386/pr116258.c
! bccafcaa9fba53d3eefcf7bf7a593646  gcc/testsuite/gcc.target/i386/pr116274-2.c
  68dcc6e225835bd404fac33fbc2ba3c1  gcc/testsuite/gcc.target/i386/pr116274.c
  5d7ed648796e3bb1badb99e986fd299a  gcc/testsuite/gcc.target/i386/pr116512.c
  8e60e9aaa7e5010e46a423fda04b10c4  gcc/testsuite/gcc.target/i386/pr116587.c
*************** aa2391715b97a0c720aed106bbf1dec9  gcc/te
*** 91737,91742 ****
--- 91854,91870 ----
  2b28be29db3ab8d125fb4e3ec1f245c9  gcc/testsuite/gcc.target/i386/pr126275.c
  b843b68b0395d76ef5d007bb1b7c1c91  gcc/testsuite/gcc.target/i386/pr126283.c
  72a320a57995ef433a0303aadb5f7263  gcc/testsuite/gcc.target/i386/pr126320.c
+ 2ffa4c898f448644e06506df86ec3803  gcc/testsuite/gcc.target/i386/pr126382.c
+ e0420282352c23067708bad7a0ded983  gcc/testsuite/gcc.target/i386/pr126410-1a.c
+ 64d38e12a9193ac181202b2dd78ce882  gcc/testsuite/gcc.target/i386/pr126410-1b.c
+ 474aa01bf905a176cf9eceaa2547674e  gcc/testsuite/gcc.target/i386/pr126410-1c.c
+ e6b62ceaec27a6a0d9fc28af8665472b  gcc/testsuite/gcc.target/i386/pr126410-2a.c
+ 65af2311b83efa293ef3706ca33aa0fd  gcc/testsuite/gcc.target/i386/pr126410-2b.c
+ be4e8b0fcf5e3a7d20f20b827c5453e8  gcc/testsuite/gcc.target/i386/pr126410-2c.c
+ daa1cb0a89547fecac9f64b4325b1f0c  gcc/testsuite/gcc.target/i386/pr126429-1.c
+ d9d1ab3d2667d8d27fc797db1a80a184  gcc/testsuite/gcc.target/i386/pr126450-1.c
+ ea8a7999fd2a0092b1d51934ca3617bf  gcc/testsuite/gcc.target/i386/pr126450-2.c
+ 90c3a1b1720e1c236e58fb0b53d4841a  gcc/testsuite/gcc.target/i386/pr126571-1.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
*************** ffcce96371587a5ab9eeb902a6a14d85  gcc/te
*** 93732,93744 ****
  7e0dde45159253331e31cc4b0e3377c4  gcc/testsuite/gcc.target/i386/preserve-none-33b.c
  a01fcc2325a87d228aae331b4da740c8  gcc/testsuite/gcc.target/i386/preserve-none-34a.c
  81bb1e5441437a1782e930697297e6f6  gcc/testsuite/gcc.target/i386/preserve-none-34b.c
! e77e2260a49f0c0fbb8a197136d4f7e2  gcc/testsuite/gcc.target/i386/preserve-none-35a.c
! 4896a0c2b8b484c34dbf7008b308d0f0  gcc/testsuite/gcc.target/i386/preserve-none-35b.c
! 90f4d45e4f0d3ed149d003ab42e6516d  gcc/testsuite/gcc.target/i386/preserve-none-35c.c
! 66010d010c347fc7b8de1f8f894548cb  gcc/testsuite/gcc.target/i386/preserve-none-35d.c
! 23d53c6dd01c124a87ac092636f6dec4  gcc/testsuite/gcc.target/i386/preserve-none-35e.c
! 8781c83730c52535099b9ad36150e49d  gcc/testsuite/gcc.target/i386/preserve-none-35f.c
! 4e7333e6b1f84214ccfa77c67c49192e  gcc/testsuite/gcc.target/i386/preserve-none-35g.c
  51cb7592769a92e7a9f4fe59da52229e  gcc/testsuite/gcc.target/i386/preserve-none-36a.c
  050c4557308725a61de9b041f52a48df  gcc/testsuite/gcc.target/i386/preserve-none-36b.c
  67c64991d50f07113d057831581fa2de  gcc/testsuite/gcc.target/i386/preserve-none-36c.c
--- 93860,93872 ----
  7e0dde45159253331e31cc4b0e3377c4  gcc/testsuite/gcc.target/i386/preserve-none-33b.c
  a01fcc2325a87d228aae331b4da740c8  gcc/testsuite/gcc.target/i386/preserve-none-34a.c
  81bb1e5441437a1782e930697297e6f6  gcc/testsuite/gcc.target/i386/preserve-none-34b.c
! 87c38f0ac457a5615b12ff7b2497b457  gcc/testsuite/gcc.target/i386/preserve-none-35a.c
! ccba700e170f0df1b5eb9f53a8397d61  gcc/testsuite/gcc.target/i386/preserve-none-35b.c
! b658086225be86466e57079091c4de3d  gcc/testsuite/gcc.target/i386/preserve-none-35c.c
! 81cb441f86b8493117c31dc6ff313f11  gcc/testsuite/gcc.target/i386/preserve-none-35d.c
! 2b825ffc6338e5e51ccb46a403f1b204  gcc/testsuite/gcc.target/i386/preserve-none-35e.c
! 2aa4d31666b0209b3428fbc4e320e438  gcc/testsuite/gcc.target/i386/preserve-none-35f.c
! a7df72c3a74d16b76660efdbf064a080  gcc/testsuite/gcc.target/i386/preserve-none-35g.c
  51cb7592769a92e7a9f4fe59da52229e  gcc/testsuite/gcc.target/i386/preserve-none-36a.c
  050c4557308725a61de9b041f52a48df  gcc/testsuite/gcc.target/i386/preserve-none-36b.c
  67c64991d50f07113d057831581fa2de  gcc/testsuite/gcc.target/i386/preserve-none-36c.c
*************** a17640d6e8c3fb4015b3e46eedfec394  gcc/te
*** 93975,93982 ****
--- 94103,94119 ----
  0c0f489b28655dbafacbf31bb309f555  gcc/testsuite/gcc.target/i386/sse-divss-1.c
  dc1af79bcd7ae2cec043c419d41673ca  gcc/testsuite/gcc.target/i386/sse-fp-covert-1.c
  631a6c000197451ea43058b342a6f855  gcc/testsuite/gcc.target/i386/sse-globalreg.c
+ 4c554019acfa594408fbd230c2203b78  gcc/testsuite/gcc.target/i386/sse-init-v16qi-1.c
+ a7a7bbeebbedfe221abf1303c16903f8  gcc/testsuite/gcc.target/i386/sse-init-v2df-1.c
+ ad39067f20435454291b1687c53a813b  gcc/testsuite/gcc.target/i386/sse-init-v2df-2.c
+ 20e609fdbd932791238508d58bfaf409  gcc/testsuite/gcc.target/i386/sse-init-v2di-1.c
+ 8eb54b19a0555f5d5edd257613764743  gcc/testsuite/gcc.target/i386/sse-init-v2di-2.c
  e41b0032514bd98819d07cc4bbcd2e12  gcc/testsuite/gcc.target/i386/sse-init-v4hi-1.c
  bb408838f48f3bff5e57b21b3ec99129  gcc/testsuite/gcc.target/i386/sse-init-v4sf-1.c
+ 091e9ea4f156cee09806290e554c0e47  gcc/testsuite/gcc.target/i386/sse-init-v4sf-2.c
+ 76f1040b34807d2132b4fbeef6a54cce  gcc/testsuite/gcc.target/i386/sse-init-v4sf-3.c
+ 910e9105f2b5ee699fcc263bfb11cd92  gcc/testsuite/gcc.target/i386/sse-init-v4si-1.c
+ ccd02e344d27f26a8b340992781eb2ba  gcc/testsuite/gcc.target/i386/sse-init-v8hi-1.c
  be63d01c33082ac86b6798bbcdf39f53  gcc/testsuite/gcc.target/i386/sse-int-covert-1.c
  e705960bdfcc3fab219a9646e69f574e  gcc/testsuite/gcc.target/i386/sse-maxps-1.c
  3586f28051dca7de135795e687bde3d2  gcc/testsuite/gcc.target/i386/sse-maxss-1.c
*************** f8306e38605e0cbae5c9cbfe5ac4c94c  gcc/te
*** 94070,94079 ****
--- 94207,94226 ----
  a8cbfe4bb81133de6efac722e80f2cb9  gcc/testsuite/gcc.target/i386/sse2-float16-4.c
  a3416b6dfb05d892d60cb3d5025f5a68  gcc/testsuite/gcc.target/i386/sse2-float16-5.c
  bce0423c5fcea8a8b29f29c4fb6680c2  gcc/testsuite/gcc.target/i386/sse2-init-v16qi-1.c
+ ddf6913e0aba64d3934a2f2157732826  gcc/testsuite/gcc.target/i386/sse2-init-v16qi-2.c
+ acfed53e5368dcd09543e27aff6e6961  gcc/testsuite/gcc.target/i386/sse2-init-v16qi-3.c
+ b9c64c23f0f67e694047dcdc7e4ce92d  gcc/testsuite/gcc.target/i386/sse2-init-v2df-1.c
+ 5f5d8d8916b8b01d9c7b734f0f87ccda  gcc/testsuite/gcc.target/i386/sse2-init-v2df-2.c
  8e1f68af9dae754623af8653e461ece1  gcc/testsuite/gcc.target/i386/sse2-init-v2di-1.c
  a483238e8a216ddeb00c43d4921dd054  gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c
+ b8976b9c64bb590acd6790b169b58b33  gcc/testsuite/gcc.target/i386/sse2-init-v2di-3.c
+ b38a6996bfd6e481c2a20e2d85f697ea  gcc/testsuite/gcc.target/i386/sse2-init-v2di-4.c
+ a54ccc676e6a4b3aa0438b47de3ad7cd  gcc/testsuite/gcc.target/i386/sse2-init-v4sf-1.c
+ 259b32801d636905b94f8c11c471b966  gcc/testsuite/gcc.target/i386/sse2-init-v4sf-2.c
  22cfc5e0e378015ed2ae19d500d60459  gcc/testsuite/gcc.target/i386/sse2-init-v4si-1.c
+ 37f4035b939cb25685594ab580947472  gcc/testsuite/gcc.target/i386/sse2-init-v4si-2.c
  aed1b9df37d34e50ddddbcb943bc885f  gcc/testsuite/gcc.target/i386/sse2-init-v8hi-1.c
+ ab8e2e25d84eb4c4c10f883a5b098f55  gcc/testsuite/gcc.target/i386/sse2-init-v8hi-2.c
  ab3d931551e5d316055b4496b4315710  gcc/testsuite/gcc.target/i386/sse2-insvhi.c
  522d6dacbcacd63f4bbf3622dd990f22  gcc/testsuite/gcc.target/i386/sse2-load-multi.c
  de4aecf22a8108ad2498b7a0761ed800  gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c
*************** d404976f59c4de6496aa6683c99c74b2  gcc/te
*** 94410,94418 ****
--- 94557,94573 ----
  e9f20122ecb5bb01fe925c11939c0daa  gcc/testsuite/gcc.target/i386/sse4_1-floorf-sfix-vec.c
  bdae5ff1d18a830901bb43d664174dd6  gcc/testsuite/gcc.target/i386/sse4_1-floorf-vec.c
  3f14907ce2fa5cc9febdb63b89492f7d  gcc/testsuite/gcc.target/i386/sse4_1-init-v16qi-1.c
+ c154f58bcc158020b2ec001ffe01917f  gcc/testsuite/gcc.target/i386/sse4_1-init-v16qi-2.c
+ 3ae95a20c860b52d6b662f48ee6c5386  gcc/testsuite/gcc.target/i386/sse4_1-init-v2df-1.c
+ 1096e8943c1be4b7a80f69655c3ed18c  gcc/testsuite/gcc.target/i386/sse4_1-init-v2df-2.c
  5900f29c5ea41c98405b4f812fb3d908  gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-1.c
+ 638b4f9c21b75eff1991d2756bbf299f  gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-2.c
+ 0a4afcafb9eeed5ab5a1f0adb71188e3  gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-3.c
  8f3390d1b4b53a23ee7608e2d7647fca  gcc/testsuite/gcc.target/i386/sse4_1-init-v4sf-1.c
+ fa495078fb696333ed8718f061aa7ca8  gcc/testsuite/gcc.target/i386/sse4_1-init-v4sf-2.c
+ 69d40f737274331d02d17220c72441e4  gcc/testsuite/gcc.target/i386/sse4_1-init-v4sf-3.c
  3fd300d166748ae79a88589044240f93  gcc/testsuite/gcc.target/i386/sse4_1-init-v4si-1.c
+ 9d4ddff90709902054121abe9f291593  gcc/testsuite/gcc.target/i386/sse4_1-init-v4si-2.c
  9697ffdb1e10ae3cb3b7e1c2c8cfaa01  gcc/testsuite/gcc.target/i386/sse4_1-insertps-1.c
  90c8599a467abc2454dac6a68dc4ba6c  gcc/testsuite/gcc.target/i386/sse4_1-insertps-2.c
  909b150567f6eceb243322e353156041  gcc/testsuite/gcc.target/i386/sse4_1-insertps-3.c
*************** f051165d89e47b8a312b00b106705673  gcc/te
*** 94761,94768 ****
  0cdc2fbe9ff36733bd7f8f345b352aa9  gcc/testsuite/gcc.target/i386/vect-epilogues-3.c
  96d83c1100ee48a3e94fc3aea99f8c6b  gcc/testsuite/gcc.target/i386/vect-epilogues-4.c
  bd48480826774a1e0edcea9a018ebf1b  gcc/testsuite/gcc.target/i386/vect-epilogues-5.c
! 4a3752854f880672ab695720ea3d815d  gcc/testsuite/gcc.target/i386/vect-epilogues-6.c
! 435fdad515e19a24fb9864655d011255  gcc/testsuite/gcc.target/i386/vect-epilogues-7.c
  a358ef7adfa9247678cbb184ee0193f6  gcc/testsuite/gcc.target/i386/vect-epilogues-8.c
  1e7f3c1715eabbf2bb11450edbe63326  gcc/testsuite/gcc.target/i386/vect-epilogues-9.c
  44589af45370ba4865592d1e9e717b40  gcc/testsuite/gcc.target/i386/vect-float16-1.c
--- 94916,94923 ----
  0cdc2fbe9ff36733bd7f8f345b352aa9  gcc/testsuite/gcc.target/i386/vect-epilogues-3.c
  96d83c1100ee48a3e94fc3aea99f8c6b  gcc/testsuite/gcc.target/i386/vect-epilogues-4.c
  bd48480826774a1e0edcea9a018ebf1b  gcc/testsuite/gcc.target/i386/vect-epilogues-5.c
! 8c03b4b96720eec578206156f3235a0a  gcc/testsuite/gcc.target/i386/vect-epilogues-6.c
! 75933a34addf2cf3f1b40473477ac185  gcc/testsuite/gcc.target/i386/vect-epilogues-7.c
  a358ef7adfa9247678cbb184ee0193f6  gcc/testsuite/gcc.target/i386/vect-epilogues-8.c
  1e7f3c1715eabbf2bb11450edbe63326  gcc/testsuite/gcc.target/i386/vect-epilogues-9.c
  44589af45370ba4865592d1e9e717b40  gcc/testsuite/gcc.target/i386/vect-float16-1.c
*************** c1f619c85acf6302085e7b426a707374  gcc/te
*** 94924,94931 ****
  928b2ab134391048e3dc1272d26b7f0a  gcc/testsuite/gcc.target/i386/x86gprintrin-5a.c
  e620cb612e6e5e7d4d2148b916d23273  gcc/testsuite/gcc.target/i386/x86gprintrin-5b.c
  cd5f15dc6f4513c2f0c6b7723c73a3cc  gcc/testsuite/gcc.target/i386/x86gprintrin-6.c
! 1f2e5d3b847d99c461aa80cb646bdd2c  gcc/testsuite/gcc.target/i386/xchg-1.c
! b6d6abcfbd5245e5750e48d0e9518639  gcc/testsuite/gcc.target/i386/xchg-2.c
  6b4af20868897fdf46e4f385241c152d  gcc/testsuite/gcc.target/i386/xchg-3.c
  092f70544db9f4e0ae2995376586d4cb  gcc/testsuite/gcc.target/i386/xchg-4.c
  bb9856cef755854e2f3eebc7fffd6629  gcc/testsuite/gcc.target/i386/xgetsetbv.c
--- 95079,95086 ----
  928b2ab134391048e3dc1272d26b7f0a  gcc/testsuite/gcc.target/i386/x86gprintrin-5a.c
  e620cb612e6e5e7d4d2148b916d23273  gcc/testsuite/gcc.target/i386/x86gprintrin-5b.c
  cd5f15dc6f4513c2f0c6b7723c73a3cc  gcc/testsuite/gcc.target/i386/x86gprintrin-6.c
! ff399caed2a5f892a92606a3541c5f1c  gcc/testsuite/gcc.target/i386/xchg-1.c
! f99d1b18a60c88950468af86d866f48f  gcc/testsuite/gcc.target/i386/xchg-2.c
  6b4af20868897fdf46e4f385241c152d  gcc/testsuite/gcc.target/i386/xchg-3.c
  092f70544db9f4e0ae2995376586d4cb  gcc/testsuite/gcc.target/i386/xchg-4.c
  bb9856cef755854e2f3eebc7fffd6629  gcc/testsuite/gcc.target/i386/xgetsetbv.c
*************** b4c0f3fd4670da4309e2a028316c3c4c  gcc/te
*** 95093,95098 ****
--- 95248,95254 ----
  82faab3f51217ce0561916dde4f4f801  gcc/testsuite/gcc.target/loongarch/div-2.c
  7247cc240dabb3c9514ba4b0a07278c5  gcc/testsuite/gcc.target/loongarch/div-3.c
  adc95e9ab59294f8040ec17904b73569  gcc/testsuite/gcc.target/loongarch/div-4.c
+ 88313a6fc35d92b8efa126b344376d7a  gcc/testsuite/gcc.target/loongarch/dtprel.c
  40042c7bbd496ecf64b96ae4ff1f8fdc  gcc/testsuite/gcc.target/loongarch/eh_return-normal-return.c
  ddf9ecd0daf6d14ef98de40e7fd68f34  gcc/testsuite/gcc.target/loongarch/fcopysign.c
  b91ffe240e28453bec3b93f2dfadd5a4  gcc/testsuite/gcc.target/loongarch/float-load.c
*************** f4767f7e42f7ea8cf7def350ea5c64f2  gcc/te
*** 95342,95348 ****
  fc2eff72ff94e1f24b1ded5d567647ec  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vcond-1.c
  c34cbb6754e054b443b5e2e9d65d81ac  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vcond-2.c
  99315ec4e2497c897d8c2f3d9d97cc3c  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vcond-3.c
! 46115a5ef060ecd6c057d311e492cbba  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-construct-opt.c
  3c28a8c37a3b35a9bd2a46f1805cd159  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-init-1.c
  1d6158e1f121c126a0fae3e7dcca1254  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-init-2.c
  d845651e74eb8d513a9364ca9fc69afa  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vseteqz.c
--- 95498,95504 ----
  fc2eff72ff94e1f24b1ded5d567647ec  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vcond-1.c
  c34cbb6754e054b443b5e2e9d65d81ac  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vcond-2.c
  99315ec4e2497c897d8c2f3d9d97cc3c  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vcond-3.c
! b8bd2bd964e673b094ba7433ccad9af7  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-construct-opt.c
  3c28a8c37a3b35a9bd2a46f1805cd159  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-init-1.c
  1d6158e1f121c126a0fae3e7dcca1254  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-init-2.c
  d845651e74eb8d513a9364ca9fc69afa  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vseteqz.c
*************** e850a2d4d5d1cf01a0cc82d1158702f4  gcc/te
*** 100468,100473 ****
--- 100624,100631 ----
  b289cfd1cdd529019c81c25ebf8aee0f  gcc/testsuite/gcc.target/riscv/ext-dce-promote-1.c
  a9e21b2d22d00c5d449271103515f86d  gcc/testsuite/gcc.target/riscv/ext-dce-promote-2.c
  7cf820151c7fd7e6165871cdb49c8cac  gcc/testsuite/gcc.target/riscv/extend-shift-helpers.h
+ 4ebeeaa4749394fbc66a7d9f34bbc2f3  gcc/testsuite/gcc.target/riscv/extract-sign-no-scratch.c
+ 044462f0f7d448ef011cf19fe58f5197  gcc/testsuite/gcc.target/riscv/extract-zero-no-scratch.c
  6433e8c2e6104dc54c5c0424b4b021fe  gcc/testsuite/gcc.target/riscv/fclass.c
  05ed4f1ac94c30dd53e37aad6b9251fb  gcc/testsuite/gcc.target/riscv/fix.c
  ac22a668a6627141957bbd3d791e4b02  gcc/testsuite/gcc.target/riscv/flattened-struct-abi-1.c
*************** d90ca4ab32f893e58362b7afbe85e6fd  gcc/te
*** 101728,101734 ****
  edd0a4ba6a9489214ca39d04c6a65fdc  gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/strided_store-2.c
  107743a69f58f28cf14e8a598bd333e7  gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/strided_store_run-1.c
  c1274e3ee15699a124ca1ff4e24fd55b  gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/strided_store_run-2.c
! f0313d555d6c2e9b87b91b352cad7dc8  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h
  744e1d9bf456f63d1459b76959635e65  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m1.c
  2edd9f50633fb2bb265afe189912b331  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m2.c
  15f1fc409628c7f79c90d0634d242e01  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m4.c
--- 101886,101892 ----
  edd0a4ba6a9489214ca39d04c6a65fdc  gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/strided_store-2.c
  107743a69f58f28cf14e8a598bd333e7  gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/strided_store_run-1.c
  c1274e3ee15699a124ca1ff4e24fd55b  gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/strided_store_run-2.c
! fcfe04412d1b2fa6361e9df03005bf7b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h
  744e1d9bf456f63d1459b76959635e65  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m1.c
  2edd9f50633fb2bb265afe189912b331  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m2.c
  15f1fc409628c7f79c90d0634d242e01  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m4.c
*************** a38cc702fc0e0c3a0353c472da553230  gcc/te
*** 101832,101837 ****
--- 101990,102010 ----
  209e100b9223e7231c991e340ea2e1f8  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vsext_vf8-i8-mf2.c
  381ea1cbe4fc04aa11f433c0c713a502  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vsext_vf8-i8-mf4.c
  9f3a524ece1b631426cec8de592e6c0e  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vsext_vf8-i8-mf8.c
+ bc11ded8ad99ab09bc34de830586ae43  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m1.c
+ 42c98d2dbbe9112a28cda63ac6260b26  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m2.c
+ 88c9999d8375fbf509b9311da46920fb  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m4.c
+ 99a0e2248ff853689881b6ffa2a5e508  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-mf2.c
+ 1dc6fe3710eb4074375cb860977540ed  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-mf4.c
+ a69db2175f7c1f55def90114a82f4891  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m1.c
+ ddb4b80c7baa549a9f131a25f8f6b326  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m2.c
+ c0287f3ddea46f4920ad8cab0233f4b6  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m4.c
+ 7e75d8934a8404d5c4aa2c86af5148c3  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-mf2.c
+ 4cd8c197ce17ecd8e617f7f1e46ef2a1  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m1.c
+ b53a4231bb0671c98d54d83e5d676e32  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m2.c
+ b2887a4eb0c5eba476b631a06c8c8982  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m4.c
+ faaf31454bf2ad2d21d6d877592d83d9  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf2.c
+ adc3d0afac0ca08c1ff72856c0101050  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf4.c
+ 4386cd42af643364bdc153a8e986367b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf8.c
  dc014dea1b501d459b153c3d48676f48  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i16-m1.c
  5ebdea99923567ebf76c4626ceae2d73  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i16-m2.c
  5c1c2db95e077b1ba1e72c35229da85a  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i16-m4.c
*************** d06eb01ce062682b200c632a677d1466  gcc/te
*** 101847,101852 ****
--- 102020,102040 ----
  964f8d4e42f4b6534c8606ec8386a726  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i8-mf2.c
  5bc12d697fa40e865f4b42cdb13ef7f9  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i8-mf4.c
  a57c719b4bf4b2f1585e8000ccf38ae0  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i8-mf8.c
+ 2c1b0b0f1dd3d28df6dd352fb6527de6  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m1.c
+ e98a54291557afcd9981c51a8ccd8634  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m2.c
+ bfcec24f702207485ab4c732a063869e  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m4.c
+ 52ddc386a4996b077a5b31c530b1b612  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-mf2.c
+ 241fa3a8eb8862a69362cee2037b428e  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-mf4.c
+ 90fea0e2a50ea719449f47fa43df605e  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m1.c
+ 279c2ba9c05901ce2572141e117af167  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m2.c
+ d0c2a6b74e60bbb4a9d6f5f7fbd51457  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m4.c
+ 2c9f4bcac06b19d1e587edcfa4dc69fa  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-mf2.c
+ 0b7baa1e619efb9efe5b33d4d8b2b3c9  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m1.c
+ e6e703edb3121d9cfe23c4d044eab009  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m2.c
+ cbcc47c7bf7a10724ab99d0e7fcc382a  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m4.c
+ f977cf47cd4b0baca532e06fdfebbf27  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf2.c
+ b65cac1be0dd226227dd9408638ba540  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf4.c
+ eecce353a8a25c0b68b996b7d0814839  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf8.c
  df0b2f7ea477d2d4ac1e0b2c7bdaf0cd  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u16-m1.c
  dfe157e0c52775e30fc2427066b4c07c  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u16-m2.c
  8c7261d38fc20193f108713121028580  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u16-m4.c
*************** d291f2d2444b934d620084fd8c063414  gcc/te
*** 101892,101897 ****
--- 102080,102115 ----
  851347b582ef8e57091b7443e584ccac  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwcvtu-i8-mf2.c
  d9f2754b44f0752977303b6caafc387b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwcvtu-i8-mf4.c
  8f5a96f5232792ea41981dd05a83d4ee  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwcvtu-i8-mf8.c
+ 339851984f6ec6fefa5d51aa6d0a5362  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m1.c
+ 6584cb8a39d204ea54f6d578f267525b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m2.c
+ db90e33def1699f49f982eb585e252f5  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m4.c
+ 8a0814a2e18f7eac0d2e6d4421d474df  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-mf2.c
+ 3a4ab23899331c2b9c499909b8939a5b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-mf4.c
+ 9e81120626e1a8ab5e41dbaf9202e95b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m1.c
+ ee83c8fbbf9b93961eb0d9500b2354df  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m2.c
+ 7187d92a4d009169d8b772c36fef6af7  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m4.c
+ ac5cecbcb1f9242a2b7c326760cdb9ed  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-mf2.c
+ 40e84693c68c3e6983a3ffd25d90e4b7  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m1.c
+ db0ec3d3f22fa7d611beb0b1ed4de951  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m2.c
+ 5f49f6afece273607401751f3bb5aa84  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m4.c
+ 381bbe34b7c59e27f7efc1172a879adc  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf2.c
+ 7f9dcf49dcdb380544cfd324092af300  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf4.c
+ 7f0fbf826adf3bae9cdeee7d4c94f205  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf8.c
+ dbb089583923564f923f4b416b627741  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m1.c
+ aeb9d70e45b4fb595237e130baf00205  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m2.c
+ 0d2f663c53d6fac29050efe30312f299  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m4.c
+ a8c7d85d5988d2a534c8bc687e6aaae3  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-mf2.c
+ 5e84725ec9b03aeb5555bb1676a816e3  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-mf4.c
+ 9dc5d15b5d6dfe061d035a08e8241360  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m1.c
+ b8f0c753e9afbd84d11aa04c158caf91  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m2.c
+ 975f315c1fcef2b9d292158856581ae8  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m4.c
+ 6f93cc061431d7c6143f56546f5bc4cd  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-mf2.c
+ 4071f2ee8089a0e5ff5dd1eab62d3971  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m1.c
+ 4e3f49624818f26e26ba63e210ae8220  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m2.c
+ 75df7067ca3a7cbb4c721006bce0d9ac  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m4.c
+ 3c1145242e95f84daf786ae5a9dcc808  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf2.c
+ 4f1af6ba9d5af61867349e1d0496db0b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf4.c
+ 01f5cc78e19825f0894c841952d5ce3f  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf8.c
  af78252741efde1331f37b68b3e48175  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vzext_vf2-u16-m1.c
  b0d5a3bf53fa786dea6c2f4704c9f52e  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vzext_vf2-u16-m2.c
  cb1adfb03ea24c507b7cf273b40f9287  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vzext_vf2-u16-m4.c
*************** a8b154f3ebc705a72dd58140a6419d33  gcc/te
*** 104103,104109 ****
  c4ce5811a887d193e1ff4f3353c39632  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-6.c
  8187bff72b496df98c214a34eb4957eb  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-7.c
  c3a6ba3dd89b27bf15bc5242257c3228  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-8.c
! 2d38def6c0f803f0b8d1b4f41f8ade0f  gcc/testsuite/gcc.target/riscv/rvv/autovec/zvabd-1.c
  e3913554dd183888dbead2e30810963f  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-1.c
  526e5a62cb0908c681251c17247e28e9  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-2.c
  9e8ce3e7531b579d60705be38d675d10  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-3.c
--- 104321,104327 ----
  c4ce5811a887d193e1ff4f3353c39632  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-6.c
  8187bff72b496df98c214a34eb4957eb  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-7.c
  c3a6ba3dd89b27bf15bc5242257c3228  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-8.c
! b7c3bafb7774a24931316d245d3c82f1  gcc/testsuite/gcc.target/riscv/rvv/autovec/zvabd-1.c
  e3913554dd183888dbead2e30810963f  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-1.c
  526e5a62cb0908c681251c17247e28e9  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-2.c
  9e8ce3e7531b579d60705be38d675d10  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-3.c
*************** ef4245fd73f1de259b051142efa963ad  gcc/te
*** 104546,104552 ****
  08054e5f470b078b510e4a3e83f162d6  gcc/testsuite/gcc.target/riscv/rvv/base/frm-1.c
  62b9c34ffc66f09c2f8e7f4e0f7963a6  gcc/testsuite/gcc.target/riscv/rvv/base/integer-cmp-eqne.c
  49f1b4782476ece5ef4b7d47553b9e13  gcc/testsuite/gcc.target/riscv/rvv/base/integer_compare_insn_shortcut.c
! e1b6721569cd290fd5be5cbd06e06b04  gcc/testsuite/gcc.target/riscv/rvv/base/intrinsic-detection.c
  ad3f94be809a85189ad1c49198c4c3ad  gcc/testsuite/gcc.target/riscv/rvv/base/intrinsic_required_ext-1.c
  c6b052e57c2390fdf919c33521b5abdc  gcc/testsuite/gcc.target/riscv/rvv/base/intrinsic_required_ext-10.c
  a1c36473cff92034ab6df5d98269988d  gcc/testsuite/gcc.target/riscv/rvv/base/intrinsic_required_ext-2.c
--- 104764,104770 ----
  08054e5f470b078b510e4a3e83f162d6  gcc/testsuite/gcc.target/riscv/rvv/base/frm-1.c
  62b9c34ffc66f09c2f8e7f4e0f7963a6  gcc/testsuite/gcc.target/riscv/rvv/base/integer-cmp-eqne.c
  49f1b4782476ece5ef4b7d47553b9e13  gcc/testsuite/gcc.target/riscv/rvv/base/integer_compare_insn_shortcut.c
! eb29c293531729475a41db3578333c75  gcc/testsuite/gcc.target/riscv/rvv/base/intrinsic-detection.c
  ad3f94be809a85189ad1c49198c4c3ad  gcc/testsuite/gcc.target/riscv/rvv/base/intrinsic_required_ext-1.c
  c6b052e57c2390fdf919c33521b5abdc  gcc/testsuite/gcc.target/riscv/rvv/base/intrinsic_required_ext-10.c
  a1c36473cff92034ab6df5d98269988d  gcc/testsuite/gcc.target/riscv/rvv/base/intrinsic_required_ext-2.c
*************** b654b48048b78f1643d89a32b5255958  gcc/te
*** 104725,104730 ****
--- 104943,104949 ----
  8d9845973db492819f22ab4477fdf738  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-40.c
  efdbae8fd822c979e672138c6ef5913b  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-41.c
  4a495ccab8bdb2c1283e197a403f58dc  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-42.c
+ fd24821be2161d2858fde2da93caa029  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-43.c
  19140a4383e8b06d1d20ab5f9e1496c5  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-5.c
  2ed4fb55a4dc2e5bba7bdac02954f3c2  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-6.c
  6c90b3544a064a82a7d8cc3dde89a693  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-7.c
*************** a940c896bd0332a56f70d93a10f191e5  gcc/te
*** 105002,105007 ****
--- 105221,105227 ----
  d4b845b37c1db36e564e49baf5cd8e49  gcc/testsuite/gcc.target/riscv/rvv/base/vxrm-8.c
  2d52719c034a5801989d67be7c33f0af  gcc/testsuite/gcc.target/riscv/rvv/base/vxrm-9.c
  2de15487c12126f324038bdb2050abfa  gcc/testsuite/gcc.target/riscv/rvv/base/zero_base_load_store_optimization.c
+ 1b62dcc06a74d08f35adba398ff73493  gcc/testsuite/gcc.target/riscv/rvv/base/zvabd-intrinsic.c
  30bd95b0d8fa20d5e5ec5567c4ed306a  gcc/testsuite/gcc.target/riscv/rvv/base/zvbb-intrinsic.c
  a94e58f7b7e8dac6a24eaeb26d91a894  gcc/testsuite/gcc.target/riscv/rvv/base/zvbb_vandn_vx_constraint.c
  d7fd06e3af3dd81cf77886dd8ab671d7  gcc/testsuite/gcc.target/riscv/rvv/base/zvbc-intrinsic.c
*************** d7d36cde73bbffacd89d6522c066b2b4  gcc/te
*** 115671,115676 ****
--- 115891,115897 ----
  1c2dc953c0fe2494a8d2d4ecaa8aac11  gcc/testsuite/gfortran.dg/coarray/sync_1.f90
  01e1eb3862a8d45db4047c66d5b42fcd  gcc/testsuite/gfortran.dg/coarray/sync_3.f90
  88f2efa9940621c9d125b2ea4290fe80  gcc/testsuite/gfortran.dg/coarray/sync_team.f90
+ f72f7ecb7791c6ed0eab07fc2ac22858  gcc/testsuite/gfortran.dg/coarray/team_allocated_coarrays.f90
  5822c2d89d9063829c412517b5498373  gcc/testsuite/gfortran.dg/coarray/this_image_1.f90
  ac59a53542ba1c45e3d363202502b8d7  gcc/testsuite/gfortran.dg/coarray/this_image_2.f90
  006a73081fcf3549f75666795a40153d  gcc/testsuite/gfortran.dg/coarray_1.f90
*************** f062d49184fa5ca95a859017d0ac7c8d  gcc/te
*** 117256,117261 ****
--- 117477,117488 ----
  a6770caefb05f127ef2000ee00ed4d83  gcc/testsuite/gfortran.dg/goacc-gomp/pr63858.f
  1df11935775af1f0859dfd7fbb101022  gcc/testsuite/gfortran.dg/goacc-gomp/pr93329.f90
  4beebc6402fc920e7e48f720eb42638c  gcc/testsuite/gfortran.dg/goacc-gomp/pr93463.f90
+ 9a203ae69a5d1bb4d51d3496db3ac11d  gcc/testsuite/gfortran.dg/goacc/acc-init-1.f90
+ 5e4f781d0fd39317badecd3f71699062  gcc/testsuite/gfortran.dg/goacc/acc-init-clauses-1.f90
+ 6f9186ada6da738a06022c8234837ec2  gcc/testsuite/gfortran.dg/goacc/acc-set-1.f90
+ 6efb303bf573efe748621172fcc2b0a5  gcc/testsuite/gfortran.dg/goacc/acc-set-clauses-1.f90
+ ecabe537c4b8901d602f12bfcf92def6  gcc/testsuite/gfortran.dg/goacc/acc-shutdown-1.f90
+ d58fcbb3d07aba34c6d511d293cd1f7f  gcc/testsuite/gfortran.dg/goacc/acc-shutdown-clauses-1.f90
  ca804f2df22c482ff1ff6d8e4e966c95  gcc/testsuite/gfortran.dg/goacc/acc-wait-1.f90
  623dd259c1089424ad39ce48ecf7872f  gcc/testsuite/gfortran.dg/goacc/acc_on_device-1.f95
  1bb13022cfc4df10f7b288df9b2ceaa7  gcc/testsuite/gfortran.dg/goacc/acc_on_device-2-off.f95
*************** b81b5f4ac39ebfc6de7e0cff8e11e6e7  gcc/te
*** 117490,117499 ****
  2fcae0aca98e7612762a0d64de5d1b4d  gcc/testsuite/gfortran.dg/goacc/uninit-copy-clause.f95
  bebac4bfa98c897bd162574a4f45948c  gcc/testsuite/gfortran.dg/goacc/uninit-dim-clause.f95
  f8465776106b63fb5b5ceb95fe4f98f6  gcc/testsuite/gfortran.dg/goacc/uninit-firstprivate-clause.f95
! 13c4667263e4bb4a1bccbfc14139aa60  gcc/testsuite/gfortran.dg/goacc/uninit-if-clause.f95
  cc049d7a09437572cf0153480f72863e  gcc/testsuite/gfortran.dg/goacc/uninit-use-device-clause.f95
  e5de83f3c72df9c91e2516026a10fd5c  gcc/testsuite/gfortran.dg/goacc/update-if_present-1.f90
! ec6f1af4201fcc3c0c1471347159a131  gcc/testsuite/gfortran.dg/goacc/update-if_present-2.f90
  5c6b557fbcefd15ad6ec6ef08ade9d19  gcc/testsuite/gfortran.dg/goacc/update.f95
  e9972505e1a87fdeda00b94d99cf711b  gcc/testsuite/gfortran.dg/goacc/vector_length.f90
  d09b6d0bd3c55d3b99ebe64fe2ee3d04  gcc/testsuite/gfortran.dg/goacc/wait.f90
--- 117717,117726 ----
  2fcae0aca98e7612762a0d64de5d1b4d  gcc/testsuite/gfortran.dg/goacc/uninit-copy-clause.f95
  bebac4bfa98c897bd162574a4f45948c  gcc/testsuite/gfortran.dg/goacc/uninit-dim-clause.f95
  f8465776106b63fb5b5ceb95fe4f98f6  gcc/testsuite/gfortran.dg/goacc/uninit-firstprivate-clause.f95
! 11403186d5b88239f7c8544f57cfd9de  gcc/testsuite/gfortran.dg/goacc/uninit-if-clause.f95
  cc049d7a09437572cf0153480f72863e  gcc/testsuite/gfortran.dg/goacc/uninit-use-device-clause.f95
  e5de83f3c72df9c91e2516026a10fd5c  gcc/testsuite/gfortran.dg/goacc/update-if_present-1.f90
! 261d3152ab595e165b3c21351395eb0c  gcc/testsuite/gfortran.dg/goacc/update-if_present-2.f90
  5c6b557fbcefd15ad6ec6ef08ade9d19  gcc/testsuite/gfortran.dg/goacc/update.f95
  e9972505e1a87fdeda00b94d99cf711b  gcc/testsuite/gfortran.dg/goacc/vector_length.f90
  d09b6d0bd3c55d3b99ebe64fe2ee3d04  gcc/testsuite/gfortran.dg/goacc/wait.f90
*************** b5986a53328bb489154897146dcfa806  gcc/te
*** 118110,118118 ****
  9dd19a9e9dfc0e4a98f98e8a7fc69049  gcc/testsuite/gfortran.dg/gomp/sharing-2.f90
  fc64cb37c3738dda4203d0b7f045abdc  gcc/testsuite/gfortran.dg/gomp/sharing-3.f90
  b3d1280c39c6cae9dddab498b1e1eeb4  gcc/testsuite/gfortran.dg/gomp/sharing-4.f90
! fbbfab4d8e0bd7ca847a25b106869ffb  gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-1.f90
! 1eae3021ce3f51c8ff5d05f48eea6a0e  gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-2.f90
! b4a96e6d15b8a11f2553072e216d8678  gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-3.f90
  7be819d09c269efea52ae9d2a290478b  gcc/testsuite/gfortran.dg/gomp/strictly-structured-block-1.f90
  5d4fae4bcc40648259edea77f34ad30a  gcc/testsuite/gfortran.dg/gomp/strictly-structured-block-2.f90
  2645b64d7f38b00ac8056bed5284cfb5  gcc/testsuite/gfortran.dg/gomp/strictly-structured-block-3.f90
--- 118337,118347 ----
  9dd19a9e9dfc0e4a98f98e8a7fc69049  gcc/testsuite/gfortran.dg/gomp/sharing-2.f90
  fc64cb37c3738dda4203d0b7f045abdc  gcc/testsuite/gfortran.dg/gomp/sharing-3.f90
  b3d1280c39c6cae9dddab498b1e1eeb4  gcc/testsuite/gfortran.dg/gomp/sharing-4.f90
! 7b05528be0ced3fe0a3e68c36be5753c  gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-1.f90
! 47225e54c9bcbdc2de9bae1c472addb2  gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-2.f90
! 06c0e4650a032766f3f82458bc32b2e1  gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-3.f90
! 1319a2368594a020f6df8ba57cf98b5a  gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-4.f90
! 0467b3f8e0aeaaf0f2854de20eaa3296  gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-5.f90
  7be819d09c269efea52ae9d2a290478b  gcc/testsuite/gfortran.dg/gomp/strictly-structured-block-1.f90
  5d4fae4bcc40648259edea77f34ad30a  gcc/testsuite/gfortran.dg/gomp/strictly-structured-block-2.f90
  2645b64d7f38b00ac8056bed5284cfb5  gcc/testsuite/gfortran.dg/gomp/strictly-structured-block-3.f90
*************** d5dddad98efc37928795b446cb8d6501  gcc/te
*** 118680,118685 ****
--- 118909,118915 ----
  4887d0ef96e236941f816ecf873abb25  gcc/testsuite/gfortran.dg/inline_matmul_26.f90
  f500cc59ecbd3442513dea98e8f73719  gcc/testsuite/gfortran.dg/inline_matmul_27.f90
  b86dbc1f75df99fd92a0357727ec3a37  gcc/testsuite/gfortran.dg/inline_matmul_28.f90
+ ad9b9d50fc71e86bc2c25d6b4ac95490  gcc/testsuite/gfortran.dg/inline_matmul_29.f90
  ffdb4ca68f61f3bd618415335c9c7c21  gcc/testsuite/gfortran.dg/inline_matmul_3.f90
  f95e5fd479c839cfa9cb3ac127ee7584  gcc/testsuite/gfortran.dg/inline_matmul_4.f90
  6cb787ca0dac6ea814c8af4ac7cb8022  gcc/testsuite/gfortran.dg/inline_matmul_5.f90
*************** c82475796fec905fbcbddbebc480ad15  gcc/te
*** 120247,120256 ****
--- 120477,120488 ----
  5b0777068e1d7ec735043f942f680e93  gcc/testsuite/gfortran.dg/pr125117.f90
  355d56226f56678c5cd357d83a78ddff  gcc/testsuite/gfortran.dg/pr125263.f90
  21a6fcd9db938827306935bac8eec1c1  gcc/testsuite/gfortran.dg/pr125391.f90
+ d2d5151630bb11e6342143dc4afe5e96  gcc/testsuite/gfortran.dg/pr125866.f90
  7e2e05a5f046a763356f94130e52c9a6  gcc/testsuite/gfortran.dg/pr126116.f90
  6e08f4627287595ccc509969aa703e88  gcc/testsuite/gfortran.dg/pr126210.f90
  ee4028c15df35bd899fb0f4ccdae563b  gcc/testsuite/gfortran.dg/pr126221.f90
  5a00ca35ba1faa29766a381172b84b0d  gcc/testsuite/gfortran.dg/pr126234.f90
+ 79f761eaecad212ada45e8ca1650129e  gcc/testsuite/gfortran.dg/pr126303.f
  984f8307f36d56a0b48b5acce2dd5eb5  gcc/testsuite/gfortran.dg/pr12884.f
  64075248b9d1bffd6f380bb4e2a6eae0  gcc/testsuite/gfortran.dg/pr15129.f90
  2b5f18b773a5db29b0a2ee2d8cce767c  gcc/testsuite/gfortran.dg/pr15140.f90
*************** be7f18f8b43ef70b7585a74284446e57  gcc/te
*** 122558,122563 ****
--- 122790,122796 ----
  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
+ 56ea6ec97a70d7f5d6ba81b71d8d3180  gcc/testsuite/gfortran.dg/warn_undefined_vars_10.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
*************** bc764eca2f460bc6fb657fb675420237  gcc/te
*** 123046,123052 ****
  eabee42e1a561616023ffd1f4d1a64e2  gcc/testsuite/gfortran.fortran-torture/execute/write_logical.f90
  ea03fb5ca9bd2d3e425e988e74bfcaa3  gcc/testsuite/gfortran.target/aarch64/aarch64.exp
  c37460d9fc2ef94382053354df0c3ef3  gcc/testsuite/gfortran.target/aarch64/pr116234.f
! f49a9e5ed9144077a6174c71610d8918  gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90
  6890252516b3245a15477e317869c38e  gcc/testsuite/gfortran.target/aarch64/pr122408_2.f90
  4cf281323629b728b4290a96ac918826  gcc/testsuite/gfortran.target/aarch64/pr123628.f90
  ae00a4e2372b755ec611b96aaff6a49b  gcc/testsuite/gfortran.target/riscv/rvv/pr111395.f90
--- 123279,123285 ----
  eabee42e1a561616023ffd1f4d1a64e2  gcc/testsuite/gfortran.fortran-torture/execute/write_logical.f90
  ea03fb5ca9bd2d3e425e988e74bfcaa3  gcc/testsuite/gfortran.target/aarch64/aarch64.exp
  c37460d9fc2ef94382053354df0c3ef3  gcc/testsuite/gfortran.target/aarch64/pr116234.f
! b272d8bf3eaf445c0bebc73d1953d326  gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90
  6890252516b3245a15477e317869c38e  gcc/testsuite/gfortran.target/aarch64/pr122408_2.f90
  4cf281323629b728b4290a96ac918826  gcc/testsuite/gfortran.target/aarch64/pr123628.f90
  ae00a4e2372b755ec611b96aaff6a49b  gcc/testsuite/gfortran.target/riscv/rvv/pr111395.f90
*************** bb65c4fde027a30c686dc94b413d88df  gcc/te
*** 127806,127811 ****
--- 128039,128045 ----
  1394b7d36fa61e7f3417caa6cf755de5  gcc/testsuite/gnat.dg/unchecked_union2.adb
  22691e0b30f29e2232672977844f75c1  gcc/testsuite/gnat.dg/unchecked_union3.adb
  a5d89ecafbb5dd31c1a79cf5513d61ed  gcc/testsuite/gnat.dg/unchecked_union4.adb
+ a8e411bf96534371c9135ba8380bcdaf  gcc/testsuite/gnat.dg/unchecked_union5.adb
  9bcc7fe177662a52afe92c8e863cb022  gcc/testsuite/gnat.dg/uninit_array.adb
  8e53621d67942b5d53e2c54dd1648dd7  gcc/testsuite/gnat.dg/uninit_array.ads
  be51b72e76043adb990a3e95f4c40554  gcc/testsuite/gnat.dg/uninit_array_pkg.ads
*************** feb95263871116fed73934dd0bb3fbf9  gcc/te
*** 127836,127841 ****
--- 128070,128076 ----
  54c3a51bfffb1449ddb2f96d64bc4ed6  gcc/testsuite/gnat.dg/validity_check.adb
  dd9e1c79a365f3c5572752bd8ddcfe84  gcc/testsuite/gnat.dg/validity_check2.adb
  da0ce573bcb3ddebededa8ee3a72be25  gcc/testsuite/gnat.dg/validity_check2_pkg.ads
+ 5d4d4719b450b3694bf6cdebf343b3f7  gcc/testsuite/gnat.dg/validity_check3.adb
  be705ea9eb2b2a25acd0c7f8bce18372  gcc/testsuite/gnat.dg/valued_proc.adb
  4513681c73046063b5b42df22c9ffc1e  gcc/testsuite/gnat.dg/valued_proc_pkg.ads
  b98dad271fa48ba2b9248ffeb13133e0  gcc/testsuite/gnat.dg/varsize1.adb
*************** cc0ad95b0f3d6b4ef54e287b438acb10  gcc/te
*** 130233,130239 ****
  327125e0f9770fa0fdc3ed8f820c8fb2  gcc/testsuite/lib/options.exp
  4837951677485b41199b6215388f44c4  gcc/testsuite/lib/plugin-support.exp
  0b47cfd7dff343f4c4e9785998f240c7  gcc/testsuite/lib/print-stack.exp
! 11bc3c94d1410de260592b2ecddf37dc  gcc/testsuite/lib/profopt.exp
  4ef74e524e3ef5f3dec8824220faea8a  gcc/testsuite/lib/prune.exp
  52ac0ffa39ac607ccf00f72889b6058a  gcc/testsuite/lib/rust-dg.exp
  d84a04f02b348b9b24a659413d60a25b  gcc/testsuite/lib/rust.exp
--- 130468,130474 ----
  327125e0f9770fa0fdc3ed8f820c8fb2  gcc/testsuite/lib/options.exp
  4837951677485b41199b6215388f44c4  gcc/testsuite/lib/plugin-support.exp
  0b47cfd7dff343f4c4e9785998f240c7  gcc/testsuite/lib/print-stack.exp
! feabf5276252df970f5acd1a2788857f  gcc/testsuite/lib/profopt.exp
  4ef74e524e3ef5f3dec8824220faea8a  gcc/testsuite/lib/prune.exp
  52ac0ffa39ac607ccf00f72889b6058a  gcc/testsuite/lib/rust-dg.exp
  d84a04f02b348b9b24a659413d60a25b  gcc/testsuite/lib/rust.exp
*************** de9eeadec9703aff96169206e31a3a22  gcc/te
*** 130258,130264 ****
  275f7eb9618e6b097a58c1fba25cdb9c  gcc/testsuite/lib/scanwpaipa.exp
  9bc4cbcf0cb4f1aa30a8cf3142d157eb  gcc/testsuite/lib/target-libpath.exp
  6f6a566231f79b409eb113cf2e7f5132  gcc/testsuite/lib/target-supports-dg.exp
! 0e2b6837266313270499d77f45045a9f  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
--- 130493,130499 ----
  275f7eb9618e6b097a58c1fba25cdb9c  gcc/testsuite/lib/scanwpaipa.exp
  9bc4cbcf0cb4f1aa30a8cf3142d157eb  gcc/testsuite/lib/target-libpath.exp
  6f6a566231f79b409eb113cf2e7f5132  gcc/testsuite/lib/target-supports-dg.exp
! b3fd316f564d71af2082d9e591a18026  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
*************** f69e4c4ce8bf5067318a63c77a37f17f  gcc/tr
*** 133124,133130 ****
  f52407e888b9f0b3706e16b105f0ee56  gcc/tree-chrec.cc
  1cf760e3e7aab6f94a5e56897486623d  gcc/tree-chrec.h
  f6230fc0d600174a276b14cbea9f0e37  gcc/tree-complex.cc
! 891f03cd6411a8a239edcf6e6789611f  gcc/tree-core.h
  52c5a671b1bb3224dba45336f53f7dad  gcc/tree-data-ref.cc
  8a41e760788789609c052d419c155691  gcc/tree-data-ref.h
  89ef786b9c4639015bae3652c90fa60f  gcc/tree-dfa.cc
--- 133359,133365 ----
  f52407e888b9f0b3706e16b105f0ee56  gcc/tree-chrec.cc
  1cf760e3e7aab6f94a5e56897486623d  gcc/tree-chrec.h
  f6230fc0d600174a276b14cbea9f0e37  gcc/tree-complex.cc
! edf2db59e5890e3a73d65b5e13ec3c86  gcc/tree-core.h
  52c5a671b1bb3224dba45336f53f7dad  gcc/tree-data-ref.cc
  8a41e760788789609c052d419c155691  gcc/tree-data-ref.h
  89ef786b9c4639015bae3652c90fa60f  gcc/tree-dfa.cc
*************** da9de571efa01bc66c1db48e416352ae  gcc/tr
*** 133157,133163 ****
  d239500c752edeffb49a14623c8a522a  gcc/tree-nrv.cc
  8157c4cf3bda13c019a5c6784e7e9e70  gcc/tree-object-size.cc
  ceb2c708500ddb7d48dbc25764c96b5d  gcc/tree-object-size.h
! eda36cc70f28e8545929c60003571840  gcc/tree-outof-ssa.cc
  7810fba9c2ee7167c24df41d8458fad3  gcc/tree-outof-ssa.h
  1f0636a04a2cc3390a38e648d396a06f  gcc/tree-parloops.cc
  898be2fb978b49d3654ad458a2cfab7d  gcc/tree-parloops.h
--- 133392,133398 ----
  d239500c752edeffb49a14623c8a522a  gcc/tree-nrv.cc
  8157c4cf3bda13c019a5c6784e7e9e70  gcc/tree-object-size.cc
  ceb2c708500ddb7d48dbc25764c96b5d  gcc/tree-object-size.h
! 3b6edc404216596bb2c6938724e9760f  gcc/tree-outof-ssa.cc
  7810fba9c2ee7167c24df41d8458fad3  gcc/tree-outof-ssa.h
  1f0636a04a2cc3390a38e648d396a06f  gcc/tree-parloops.cc
  898be2fb978b49d3654ad458a2cfab7d  gcc/tree-parloops.h
*************** eda36cc70f28e8545929c60003571840  gcc/tr
*** 133166,133172 ****
  d370934f01e7c80fa4e88a80fabbcb95  gcc/tree-phinodes.h
  e955b77da9f61f19437f61d65861e763  gcc/tree-predcom.cc
  47856333edaecc32813dad93ecb96fbe  gcc/tree-pretty-print-markup.h
! 7e047cc8a5cfdc1db70f3b2bedf457b6  gcc/tree-pretty-print.cc
  c021bc7a8aa59f2b8184de8bff6b1d14  gcc/tree-pretty-print.h
  353091e462e88bd539abdb45ea13c810  gcc/tree-profile.cc
  1f8a56c52a91a6a6e79b16a2ccc6ae40  gcc/tree-scalar-evolution.cc
--- 133401,133407 ----
  d370934f01e7c80fa4e88a80fabbcb95  gcc/tree-phinodes.h
  e955b77da9f61f19437f61d65861e763  gcc/tree-predcom.cc
  47856333edaecc32813dad93ecb96fbe  gcc/tree-pretty-print-markup.h
! 3366ed6992e9babbe8fd92946b2ed27c  gcc/tree-pretty-print.cc
  c021bc7a8aa59f2b8184de8bff6b1d14  gcc/tree-pretty-print.h
  353091e462e88bd539abdb45ea13c810  gcc/tree-profile.cc
  1f8a56c52a91a6a6e79b16a2ccc6ae40  gcc/tree-scalar-evolution.cc
*************** ec31925fe8431d27258939fc79f1f02e  gcc/tr
*** 133190,133201 ****
  ec4fb47e62593f549e393a7e359eab42  gcc/tree-ssa-dse.cc
  1df01d660e0f98ade0ae7a3152aa33ed  gcc/tree-ssa-dse.h
  64f290141db5370c77870170b2b1b461  gcc/tree-ssa-forwprop.cc
! 73a65ea218baf0c7c76cf64fe397c987  gcc/tree-ssa-ifcombine.cc
  417a76837cd2f895f07d02485a3cdffe  gcc/tree-ssa-ifcombine.h
  b1c1f1362ac401ede3373f8aa23c02f1  gcc/tree-ssa-live.cc
  7c36b95c9d109be3302936ceed49fb4f  gcc/tree-ssa-live.h
  8810d451bbe1958d41d972bc0224c156  gcc/tree-ssa-loop-ch.cc
! f1057b330ee10c6234f1f927ffba2f4d  gcc/tree-ssa-loop-im.cc
  972578d2900bb38415f9eb02b271096c  gcc/tree-ssa-loop-ivcanon.cc
  a7e4faa79a06e6da75ffb6e7e7a01df1  gcc/tree-ssa-loop-ivopts.cc
  73db7c26eb3c2afa63524b388a9849fd  gcc/tree-ssa-loop-ivopts.h
--- 133425,133436 ----
  ec4fb47e62593f549e393a7e359eab42  gcc/tree-ssa-dse.cc
  1df01d660e0f98ade0ae7a3152aa33ed  gcc/tree-ssa-dse.h
  64f290141db5370c77870170b2b1b461  gcc/tree-ssa-forwprop.cc
! 248183d5c026a6265d43c63a90f41a31  gcc/tree-ssa-ifcombine.cc
  417a76837cd2f895f07d02485a3cdffe  gcc/tree-ssa-ifcombine.h
  b1c1f1362ac401ede3373f8aa23c02f1  gcc/tree-ssa-live.cc
  7c36b95c9d109be3302936ceed49fb4f  gcc/tree-ssa-live.h
  8810d451bbe1958d41d972bc0224c156  gcc/tree-ssa-loop-ch.cc
! c0b0eee8718bdd98efee6fb91221f995  gcc/tree-ssa-loop-im.cc
  972578d2900bb38415f9eb02b271096c  gcc/tree-ssa-loop-ivcanon.cc
  a7e4faa79a06e6da75ffb6e7e7a01df1  gcc/tree-ssa-loop-ivopts.cc
  73db7c26eb3c2afa63524b388a9849fd  gcc/tree-ssa-loop-ivopts.h
*************** c371423899467f80168b205dcf8d016e  gcc/tr
*** 133212,133225 ****
  fa83f982a805985b3a3da2ca5e10e43a  gcc/tree-ssa-math-opts.h
  56d25f9d7a5f35aa3637460c00b7eb7e  gcc/tree-ssa-operands.cc
  f83d0b12185538e6f679296bebfe3d2f  gcc/tree-ssa-operands.h
! 29d8ee0ff0c801917dcc669e63b7ba56  gcc/tree-ssa-phiopt.cc
  fe5ca56c2551cb5cbd256cfafdcabecd  gcc/tree-ssa-phiprop.cc
  e44b0626464940cf1e9b857320ec790f  gcc/tree-ssa-pre.cc
  f39acc236b21f9150a1ef4359aef585e  gcc/tree-ssa-propagate.cc
  d38017eb69a50f24b5e47ee97928afde  gcc/tree-ssa-propagate.h
  6e6117c73429cd3635e978bbc73398a5  gcc/tree-ssa-reassoc.cc
  9a67eb78dfcbdb36f2fbf9b5dd4ff29c  gcc/tree-ssa-reassoc.h
! d366aae69955e13f3219a43bcbf801ea  gcc/tree-ssa-sccvn.cc
  5383ea87af0b46b54348af602d9b6243  gcc/tree-ssa-sccvn.h
  2b138ac94e5d6a2e499018e91e58a737  gcc/tree-ssa-scopedtables.cc
  f9f30b312deca96b11a781af60153767  gcc/tree-ssa-scopedtables.h
--- 133447,133460 ----
  fa83f982a805985b3a3da2ca5e10e43a  gcc/tree-ssa-math-opts.h
  56d25f9d7a5f35aa3637460c00b7eb7e  gcc/tree-ssa-operands.cc
  f83d0b12185538e6f679296bebfe3d2f  gcc/tree-ssa-operands.h
! 05ab60c76ac16cc3fe0d09ddfe1523ba  gcc/tree-ssa-phiopt.cc
  fe5ca56c2551cb5cbd256cfafdcabecd  gcc/tree-ssa-phiprop.cc
  e44b0626464940cf1e9b857320ec790f  gcc/tree-ssa-pre.cc
  f39acc236b21f9150a1ef4359aef585e  gcc/tree-ssa-propagate.cc
  d38017eb69a50f24b5e47ee97928afde  gcc/tree-ssa-propagate.h
  6e6117c73429cd3635e978bbc73398a5  gcc/tree-ssa-reassoc.cc
  9a67eb78dfcbdb36f2fbf9b5dd4ff29c  gcc/tree-ssa-reassoc.h
! b429ac04bc5706ac8fcdb73291acea81  gcc/tree-ssa-sccvn.cc
  5383ea87af0b46b54348af602d9b6243  gcc/tree-ssa-sccvn.h
  2b138ac94e5d6a2e499018e91e58a737  gcc/tree-ssa-scopedtables.cc
  f9f30b312deca96b11a781af60153767  gcc/tree-ssa-scopedtables.h
*************** f8119a019450befbbf3e3e40b010cf74  gcc/tr
*** 133251,133273 ****
  5c9352e02cad1ec310b10d331d908304  gcc/tree-switch-conversion.cc
  fa20fc0102b6036d5fa58b953c127e15  gcc/tree-switch-conversion.h
  6a0f6268d598b3c59871ad41e01f33c1  gcc/tree-tailcall.cc
! d26bb3f656aca146cd991af417611476  gcc/tree-vect-data-refs.cc
  851cdeabb53d017910c4c7442f3afe61  gcc/tree-vect-generic.cc
  8097a8b31ddd542184c52c26afb91da8  gcc/tree-vect-loop-manip.cc
! b84ef44005fc01213d83bbde85aa9486  gcc/tree-vect-loop.cc
! 14fdba1e6d50517ed4d832ad5d063740  gcc/tree-vect-patterns.cc
  c15ee3bd6f7d04ebcfec77ee0c3276b3  gcc/tree-vect-slp-patterns.cc
! a54a78df5c9f9e888be9a3fced278e32  gcc/tree-vect-slp.cc
! b5274d63a8eb2d7c301c7b6548575336  gcc/tree-vect-stmts.cc
  42032e04f389a2e0f43fbb46ac091dac  gcc/tree-vector-builder.cc
  4a1b4947e64a076fdca46d14aab2181f  gcc/tree-vector-builder.h
  a87f80d9a1405f816a0b6d544400beef  gcc/tree-vectorizer.cc
! 44474edf115594f834671ed7d19622dd  gcc/tree-vectorizer.h
  ca9cb422fed204a85a3a1a56b3ca8812  gcc/tree-vrp.cc
  c946b0d59b15393b95e356052c027eed  gcc/tree-vrp.h
! 3a7664bbd6a29e184794a50f2f418bd0  gcc/tree.cc
  f88475a43ca5e7c59112c941875a762c  gcc/tree.def
! 2d7f02d3dc4d4b6caad2bdf559f5d3e7  gcc/tree.h
  56652e612288132aa8395fdf720b0146  gcc/treestruct.def
  6c6350469a3dbb37f658f247d16ed872  gcc/tristate.cc
  704359710c2d40a58b6646b2da626443  gcc/tristate.h
--- 133486,133508 ----
  5c9352e02cad1ec310b10d331d908304  gcc/tree-switch-conversion.cc
  fa20fc0102b6036d5fa58b953c127e15  gcc/tree-switch-conversion.h
  6a0f6268d598b3c59871ad41e01f33c1  gcc/tree-tailcall.cc
! ae2b698a9f9784bf502d2a47c2b85e6a  gcc/tree-vect-data-refs.cc
  851cdeabb53d017910c4c7442f3afe61  gcc/tree-vect-generic.cc
  8097a8b31ddd542184c52c26afb91da8  gcc/tree-vect-loop-manip.cc
! d5d29d8bf288103a8da3b9a88b9bbe46  gcc/tree-vect-loop.cc
! 44804e5a5ed5fb1c1f6c01a0f5da838c  gcc/tree-vect-patterns.cc
  c15ee3bd6f7d04ebcfec77ee0c3276b3  gcc/tree-vect-slp-patterns.cc
! 93ae3d7a74dfd3c4c5e412942a92519c  gcc/tree-vect-slp.cc
! 27e10f1f8771d5ca1512213d16bd41e9  gcc/tree-vect-stmts.cc
  42032e04f389a2e0f43fbb46ac091dac  gcc/tree-vector-builder.cc
  4a1b4947e64a076fdca46d14aab2181f  gcc/tree-vector-builder.h
  a87f80d9a1405f816a0b6d544400beef  gcc/tree-vectorizer.cc
! e423e0c8bc0e73c61b732e822d11da9d  gcc/tree-vectorizer.h
  ca9cb422fed204a85a3a1a56b3ca8812  gcc/tree-vrp.cc
  c946b0d59b15393b95e356052c027eed  gcc/tree-vrp.h
! 6b43c26fc37f0eb1e71907986ea88311  gcc/tree.cc
  f88475a43ca5e7c59112c941875a762c  gcc/tree.def
! 6e4b49e38e6f8793e0357d7d1bcac35d  gcc/tree.h
  56652e612288132aa8395fdf720b0146  gcc/treestruct.def
  6c6350469a3dbb37f658f247d16ed872  gcc/tristate.cc
  704359710c2d40a58b6646b2da626443  gcc/tristate.h
*************** e904de1854afc7cd34a51dc8be49131d  gcc/va
*** 133286,133297 ****
  062dd0b6b7d499b7d7b9a11718fe3ecb  gcc/value-prof.h
  94b23ebf78fac3c6088cda5028dd1b89  gcc/value-query.cc
  c559980f2936e62bb80a512b1682d0fd  gcc/value-query.h
! 5fbef6eb8dbca23654897ee8b82c0534  gcc/value-range-pretty-print.cc
  2ac29a8fee451f101da64d0a64eefa26  gcc/value-range-pretty-print.h
! 1f162c4319d8238e5d6b13f9afceab21  gcc/value-range-storage.cc
! 1ae12844b31a74125ed49c6ddd316db3  gcc/value-range-storage.h
! 38dc44b972e14e6ac6b81cf41a484e96  gcc/value-range.cc
! 0aaab5896fc7cda73a6d27dfb872007e  gcc/value-range.h
  0762124b43196cd5479dd56590ed18b8  gcc/value-relation.cc
  8041b5e49f8eee53025484a5ecee676f  gcc/value-relation.h
  6454bc331f2f63645c4661fbd04fec5e  gcc/var-tracking.cc
--- 133521,133532 ----
  062dd0b6b7d499b7d7b9a11718fe3ecb  gcc/value-prof.h
  94b23ebf78fac3c6088cda5028dd1b89  gcc/value-query.cc
  c559980f2936e62bb80a512b1682d0fd  gcc/value-query.h
! ba27af0208a911fa45b8281e0f0ae4ff  gcc/value-range-pretty-print.cc
  2ac29a8fee451f101da64d0a64eefa26  gcc/value-range-pretty-print.h
! efe4450f620a14c6ad802571d85d975b  gcc/value-range-storage.cc
! 0c753f49985507bc8fc3b2ed9ec2a8e5  gcc/value-range-storage.h
! 394313527da754723cbc1af5c62e3259  gcc/value-range.cc
! f3565e9f653b03d75af3d6c62e61c7a5  gcc/value-range.h
  0762124b43196cd5479dd56590ed18b8  gcc/value-relation.cc
  8041b5e49f8eee53025484a5ecee676f  gcc/value-relation.h
  6454bc331f2f63645c4661fbd04fec5e  gcc/var-tracking.cc
*************** fc49680d0c6e77e437523ea496a6b8c4  libga6
*** 134184,134190 ****
  095aff369c31681c96b933fbedd8e05f  libga68/posix.a68
  b0d017b83148520411f1c1ebdbf28b58  libga68/sppp.awk
  2fa97828e3e0465a81a613f3f4173bdd  libga68/standard.a68.in
! 76bcd4a108eb1a804aea2db67b1a4f41  libgcc/ChangeLog
  6926dcea143d4f6166d7feff9e8ee35a  libgcc/Makefile.in
  2784b3778636af2fb69b003fd8743e11  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
--- 134419,134425 ----
  095aff369c31681c96b933fbedd8e05f  libga68/posix.a68
  b0d017b83148520411f1c1ebdbf28b58  libga68/sppp.awk
  2fa97828e3e0465a81a613f3f4173bdd  libga68/standard.a68.in
! 9531a9b850ca550cb51d79dec09b1fe4  libgcc/ChangeLog
  6926dcea143d4f6166d7feff9e8ee35a  libgcc/Makefile.in
  2784b3778636af2fb69b003fd8743e11  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
*************** c0d7a3cfbfadf9834e2dca30a4b55e96  libgcc
*** 134197,134203 ****
  3d191b7f750c01d46058e6ae0cf0319f  libgcc/config/aarch64/__arm_tpidr2_restore.S
  b558b0fe1c1f3450c92a793927788906  libgcc/config/aarch64/__arm_tpidr2_save.S
  d1dea04ccca0a3e0d8c326ec80ed9e0b  libgcc/config/aarch64/__arm_za_disable.S
! 426a22b209e3ba565bb671d2d91dc356  libgcc/config/aarch64/aarch64-asm.h
  9f312c9f3db89426a0989d3893f9eff5  libgcc/config/aarch64/aarch64-unwind-def.h
  d8c6d1674d20f39198bf26d837ca394c  libgcc/config/aarch64/aarch64-unwind.h
  bd96de89003e020f3d23b68bd4e4eb93  libgcc/config/aarch64/cpuinfo.c
--- 134432,134438 ----
  3d191b7f750c01d46058e6ae0cf0319f  libgcc/config/aarch64/__arm_tpidr2_restore.S
  b558b0fe1c1f3450c92a793927788906  libgcc/config/aarch64/__arm_tpidr2_save.S
  d1dea04ccca0a3e0d8c326ec80ed9e0b  libgcc/config/aarch64/__arm_za_disable.S
! a864130d95cbcc3f73dfaa6671cf2433  libgcc/config/aarch64/aarch64-asm.h
  9f312c9f3db89426a0989d3893f9eff5  libgcc/config/aarch64/aarch64-unwind-def.h
  d8c6d1674d20f39198bf26d837ca394c  libgcc/config/aarch64/aarch64-unwind.h
  bd96de89003e020f3d23b68bd4e4eb93  libgcc/config/aarch64/cpuinfo.c
*************** a2cbfeed5ac41bd10f73aa701e9ac26d  libgcc
*** 134331,134337 ****
  d1bc698652ed847a9a315e51f8dfecc1  libgcc/config/arm/unwind-arm.h
  7510ee12c9c65bef36fc601cb8d09173  libgcc/config/avr/asm-defs.h
  16da8ddeeb0393a8a09e4b1d871d728a  libgcc/config/avr/avr-lib.h
! 3f2396fb79feb0a7aac90b977f1b2f8e  libgcc/config/avr/lib1funcs-fixed.S
  42c265ee61530670d6b6a70faf9d8f49  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  c7a08febc167bf9a84c28593ca627617  libgcc/config/avr/lib2funcs.c
--- 134566,134572 ----
  d1bc698652ed847a9a315e51f8dfecc1  libgcc/config/arm/unwind-arm.h
  7510ee12c9c65bef36fc601cb8d09173  libgcc/config/avr/asm-defs.h
  16da8ddeeb0393a8a09e4b1d871d728a  libgcc/config/avr/avr-lib.h
! b6faacf336802cbfdfb8b608cd86941f  libgcc/config/avr/lib1funcs-fixed.S
  42c265ee61530670d6b6a70faf9d8f49  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  c7a08febc167bf9a84c28593ca627617  libgcc/config/avr/lib2funcs.c
*************** badb073cfbf15031442110b1cfaeab5f  libgcc
*** 134353,134359 ****
  2921a86fef727ada45668b8c0f091e33  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
  761826027ebb1cfbb089d23904494606  libgcc/config/avr/libf7/t-libf7-math-symbols
! 0ba35156c1644260a4b47a411d5239a2  libgcc/config/avr/t-avr
  42e21fd8b00be58d09a62b8654a8ba20  libgcc/config/avr/t-avrlibc
  77d29be9a46b600293b32c93c09dacbf  libgcc/config/avr/t-copy-libgcc
  a2c28c9fd8e63f29ab5a369ef41e8b3b  libgcc/config/bfin/crti.S
--- 134588,134594 ----
  2921a86fef727ada45668b8c0f091e33  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
  761826027ebb1cfbb089d23904494606  libgcc/config/avr/libf7/t-libf7-math-symbols
! bc352cd3bf485e51061499831bf94733  libgcc/config/avr/t-avr
  42e21fd8b00be58d09a62b8654a8ba20  libgcc/config/avr/t-avrlibc
  77d29be9a46b600293b32c93c09dacbf  libgcc/config/avr/t-copy-libgcc
  a2c28c9fd8e63f29ab5a369ef41e8b3b  libgcc/config/bfin/crti.S
*************** e8b89a67d7ba7a2256585eb4ee5697f7  libgcc
*** 135329,135335 ****
  81d8bfdd9028f651e74357a59a1352c5  libgcc/config/rs6000/float128-sed-hw
  9412d215bbd3c7fdc99b7840c7a93e07  libgcc/config/rs6000/floattikf-sw.c
  d1a6d296ffe24d2d307d3d951389b78d  libgcc/config/rs6000/floatuntikf-sw.c
! 9192ddb6b9a4d5d5b70a9ed247a85ba7  libgcc/config/rs6000/freebsd-unwind.h
  b2925b4070fc026bfd8df0721cd21812  libgcc/config/rs6000/gthr-aix.h
  ae38b68c16f67c8876bed97ac24d94bf  libgcc/config/rs6000/ibm-ldouble-format
  4bdbbe0e2d36da299ac616847a225d9f  libgcc/config/rs6000/ibm-ldouble.c
--- 135564,135570 ----
  81d8bfdd9028f651e74357a59a1352c5  libgcc/config/rs6000/float128-sed-hw
  9412d215bbd3c7fdc99b7840c7a93e07  libgcc/config/rs6000/floattikf-sw.c
  d1a6d296ffe24d2d307d3d951389b78d  libgcc/config/rs6000/floatuntikf-sw.c
! 0d31df2e765ced2a972560c36d25979e  libgcc/config/rs6000/freebsd-unwind.h
  b2925b4070fc026bfd8df0721cd21812  libgcc/config/rs6000/gthr-aix.h
  ae38b68c16f67c8876bed97ac24d94bf  libgcc/config/rs6000/ibm-ldouble-format
  4bdbbe0e2d36da299ac616847a225d9f  libgcc/config/rs6000/ibm-ldouble.c
*************** b7bdc64c03d62f87f61d3d8a61a75d2d  libgcc
*** 135758,135764 ****
  227525d7193394128a83ce15e7642842  libgcc/vtv_start.c
  23ad2a8d256ba5dca28382d64a20e8f2  libgcc/vtv_start_preinit.c
  e50c29294062dfe571c9c053a8ec217b  libgcobol/.gitignore
! 5a45b119a25909eb06c5421b1b16570b  libgcobol/ChangeLog
  bec1e79fc8ada70ed4ac3dc61a33d576  libgcobol/LICENSE
  8b9a5263fc79d367bdafa609a2ac1363  libgcobol/Makefile.am
  d97f1f2b9efb3a8fa8c9db9a04ea78db  libgcobol/Makefile.in
--- 135993,135999 ----
  227525d7193394128a83ce15e7642842  libgcc/vtv_start.c
  23ad2a8d256ba5dca28382d64a20e8f2  libgcc/vtv_start_preinit.c
  e50c29294062dfe571c9c053a8ec217b  libgcobol/.gitignore
! dcd42c5063989370943c55329dac0b4f  libgcobol/ChangeLog
  bec1e79fc8ada70ed4ac3dc61a33d576  libgcobol/LICENSE
  8b9a5263fc79d367bdafa609a2ac1363  libgcobol/Makefile.am
  d97f1f2b9efb3a8fa8c9db9a04ea78db  libgcobol/Makefile.in
*************** a5821ed24abf64b452f15f29da418d17  libgco
*** 135807,135821 ****
  649e793ce5ae15bd0f3dd1fe2ecfbea9  libgcobol/gcobolio.h
  0b68efe9e64e86726c8c0c4284da0852  libgcobol/gfileio.cc
  0ae92e32a618fa39e3ff18a50cbfff17  libgcobol/gfileio.h
! 2f25f550572b378a77867a149ca433e2  libgcobol/gmath.cc
  484b264b1c8d844ef5989f4d7075f520  libgcobol/gmath.h
! dcabaaf6ddd04cde5f6c45ec26776470  libgcobol/inspect.cc
! 9140485ed69b7e3b01329d2166a1d04d  libgcobol/intrinsic.cc
! 3e61c85524aa03d6d0f23aa8dfa8152c  libgcobol/io.cc
  fbd32f035f7b4e73896b3d489e50e747  libgcobol/io.h
  39a9dbab64d7e5acec671784d7ca4cde  libgcobol/libgcobol-fp.h
! 44bcc1629f2cc501dbabe668d66de471  libgcobol/libgcobol.cc
! 4413f7e166cc8e47d86e48a3abf4a0bd  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  88c1134ff3ee63c326541ce3f35f6699  libgcobol/m4/autoconf.m4
  96b721e88c5f79776cedad463373ad78  libgcobol/posix/README.md
--- 136042,136056 ----
  649e793ce5ae15bd0f3dd1fe2ecfbea9  libgcobol/gcobolio.h
  0b68efe9e64e86726c8c0c4284da0852  libgcobol/gfileio.cc
  0ae92e32a618fa39e3ff18a50cbfff17  libgcobol/gfileio.h
! c6d90b68af9faf9851cbae2f10e7092b  libgcobol/gmath.cc
  484b264b1c8d844ef5989f4d7075f520  libgcobol/gmath.h
! 2e5cc371a2a7e96c53286cd39cc0fd16  libgcobol/inspect.cc
! 8ce19238ab1b69a66932695b3a66bc63  libgcobol/intrinsic.cc
! 39a69263ea925e87b4be6a7a46fef00e  libgcobol/io.cc
  fbd32f035f7b4e73896b3d489e50e747  libgcobol/io.h
  39a9dbab64d7e5acec671784d7ca4cde  libgcobol/libgcobol-fp.h
! bef88565b3457d300c95c6f70f1fe8f7  libgcobol/libgcobol.cc
! 157016e154a48558dde115e75b94809f  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  88c1134ff3ee63c326541ce3f35f6699  libgcobol/m4/autoconf.m4
  96b721e88c5f79776cedad463373ad78  libgcobol/posix/README.md
*************** fa11a6e56c666d0f6aed79e8a76ee830  libgco
*** 135868,135874 ****
  859336a5b2670d1679e68d9e00bec381  libgcobol/posix/udf/posix-stat.cbl
  9c2b0ac9c647bc3a9b65244797bb88d7  libgcobol/posix/udf/posix-unlink.cbl
  f7f3ede57639856878087542116a625d  libgcobol/posix/udf/posix-write.cbl
! 5e28d0b3d3acd31b24a4c3bdaac8d346  libgcobol/stringbin.cc
  52ce4fc545bb5fe44f0fbc9b887fada7  libgcobol/stringbin.h
  72f6d694311f4eb82bd18968a55dfc0f  libgcobol/valconv.cc
  3466db9e6fc5748c08c947e71a566c07  libgcobol/valconv.h
--- 136103,136109 ----
  859336a5b2670d1679e68d9e00bec381  libgcobol/posix/udf/posix-stat.cbl
  9c2b0ac9c647bc3a9b65244797bb88d7  libgcobol/posix/udf/posix-unlink.cbl
  f7f3ede57639856878087542116a625d  libgcobol/posix/udf/posix-write.cbl
! 4433b7dd251f7d40f988c7a4fb9dd339  libgcobol/stringbin.cc
  52ce4fc545bb5fe44f0fbc9b887fada7  libgcobol/stringbin.h
  72f6d694311f4eb82bd18968a55dfc0f  libgcobol/valconv.cc
  3466db9e6fc5748c08c947e71a566c07  libgcobol/valconv.h
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 142469,142475 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 1cbbfb3a44e3502850f8866b91721560  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  e1d869816ce58d8fdc05a55313f8c194  libgomp/Makefile.am
  4da024f3aacefa7a1d2396c494ae6526  libgomp/Makefile.in
--- 142704,142710 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 6a211d19dcde26dd267bf08c717b9f10  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  e1d869816ce58d8fdc05a55313f8c194  libgomp/Makefile.am
  4da024f3aacefa7a1d2396c494ae6526  libgomp/Makefile.in
*************** e40f7f1dbaf7de3643dec21493aed6b5  libgom
*** 142613,142623 ****
  e59f9d9c4947a5f7d4bdd011da890930  libgomp/libgomp-plugin.c
  1644f3009d34c281ec809e68b96577fb  libgomp/libgomp-plugin.h
  22554240f601ce375cc5ea00791aed84  libgomp/libgomp.h
! fba8aa1e18209c73bc57c05936adecbb  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
  9eb7c3e37b419b4a014492b02af6ebf6  libgomp/libgomp.texi
  1d54928ce4032885323fb921fd1df788  libgomp/libgomp_f.h.in
! 7d6ac9524c57309f7d01f80d5dd8864f  libgomp/libgomp_g.h
  26474764313104462f3252f8ce962c10  libgomp/lock.c
  3807f889d52769370783315bd1d15081  libgomp/loop.c
  80446fe6cd6193819bea8853c8dcc525  libgomp/loop_ull.c
--- 142848,142858 ----
  e59f9d9c4947a5f7d4bdd011da890930  libgomp/libgomp-plugin.c
  1644f3009d34c281ec809e68b96577fb  libgomp/libgomp-plugin.h
  22554240f601ce375cc5ea00791aed84  libgomp/libgomp.h
! eb820417a149917488e3062fe209a8a9  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
  9eb7c3e37b419b4a014492b02af6ebf6  libgomp/libgomp.texi
  1d54928ce4032885323fb921fd1df788  libgomp/libgomp_f.h.in
! 436a8f8539152cc163fe78400d24bb6f  libgomp/libgomp_g.h
  26474764313104462f3252f8ce962c10  libgomp/lock.c
  3807f889d52769370783315bd1d15081  libgomp/loop.c
  80446fe6cd6193819bea8853c8dcc525  libgomp/loop_ull.c
*************** fba8aa1e18209c73bc57c05936adecbb  libgom
*** 142625,142631 ****
  6688bf57d8344fc3ab514e0ca98629a5  libgomp/oacc-async.c
  7685edcf1f7e7bced0d4ea02b83aa067  libgomp/oacc-cuda.c
  1c203d95eed0722ff0c93f4e0e340635  libgomp/oacc-host.c
! 8bd3e4be115e82ed618e989a47f44ca8  libgomp/oacc-init.c
  051187f12f492968f6d4abb837e9d0c8  libgomp/oacc-int.h
  dd36fcbd7fd6cd40560a449ca272d054  libgomp/oacc-mem.c
  95f728aad5cd1db8eca4190fa88e52f2  libgomp/oacc-parallel.c
--- 142860,142866 ----
  6688bf57d8344fc3ab514e0ca98629a5  libgomp/oacc-async.c
  7685edcf1f7e7bced0d4ea02b83aa067  libgomp/oacc-cuda.c
  1c203d95eed0722ff0c93f4e0e340635  libgomp/oacc-host.c
! bac05b9059b89f7dfa839506be5c4679  libgomp/oacc-init.c
  051187f12f492968f6d4abb837e9d0c8  libgomp/oacc-int.h
  dd36fcbd7fd6cd40560a449ca272d054  libgomp/oacc-mem.c
  95f728aad5cd1db8eca4190fa88e52f2  libgomp/oacc-parallel.c
*************** ff04658f034a805f42f6227468e350d8  libgom
*** 142926,142933 ****
  537fc9ac07046ce042391dfa19843e8c  libgomp/testsuite/libgomp.c++/single-1.C
  6c9d8951c10a36292097716f431c385a  libgomp/testsuite/libgomp.c++/single-2.C
  7d0f24f8edab30e9e5aa2d3f5133e9f4  libgomp/testsuite/libgomp.c++/single-3.C
! a6b584355d5e70bb4dd4c080756cf9ca  libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C
! 7691a822fae7a8fe0fb7046161e0fbe0  libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C
  887aefe7366c51c00d0def5dadc1e242  libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-3.C
  fc294ecae70ea0e846f751937b8f0cf4  libgomp/testsuite/libgomp.c++/struct-ref-1.C
  866b1595d3c521f9e048f3d196a4dea7  libgomp/testsuite/libgomp.c++/target-10.C
--- 143161,143168 ----
  537fc9ac07046ce042391dfa19843e8c  libgomp/testsuite/libgomp.c++/single-1.C
  6c9d8951c10a36292097716f431c385a  libgomp/testsuite/libgomp.c++/single-2.C
  7d0f24f8edab30e9e5aa2d3f5133e9f4  libgomp/testsuite/libgomp.c++/single-3.C
! f156d9dc01c4db163ba220cb5329cc48  libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C
! f5847e19b261844ede533a7f4522cbe3  libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C
  887aefe7366c51c00d0def5dadc1e242  libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-3.C
  fc294ecae70ea0e846f751937b8f0cf4  libgomp/testsuite/libgomp.c++/struct-ref-1.C
  866b1595d3c521f9e048f3d196a4dea7  libgomp/testsuite/libgomp.c++/target-10.C
*************** ee3b74a97c86ca49d1d4285adb171e36  libgom
*** 143411,143418 ****
  ab7fab712938c3ce3aec0814f264d192  libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-3.c
  961487ad180160a2ba2e101a7eca4f42  libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-4.c
  fdfd72627be1d262fb0a9802b8e5fb61  libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-5.c
! 69dd12ce5d2a48b7f97153765a590284  libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host-2.c
! 9e8fb2b92bd09fc8b76faad9bb3ef464  libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host.c
  d04c3cda0f5d9481f26ad3a000f4b3d3  libgomp/testsuite/libgomp.c-c++-common/target-link-2.c
  dea6e4773d5d9bcf4b5177f8c2dfb4de  libgomp/testsuite/libgomp.c-c++-common/target-link-3.c
  6d333518b73fa1f60b85aa1f88314355  libgomp/testsuite/libgomp.c-c++-common/target-link-4.c
--- 143646,143653 ----
  ab7fab712938c3ce3aec0814f264d192  libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-3.c
  961487ad180160a2ba2e101a7eca4f42  libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-4.c
  fdfd72627be1d262fb0a9802b8e5fb61  libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-5.c
! cdefdb8bbee9f8ec7600bf96c6e80273  libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host-2.c
! a2660c007a50643957a524328b8ced54  libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host.c
  d04c3cda0f5d9481f26ad3a000f4b3d3  libgomp/testsuite/libgomp.c-c++-common/target-link-2.c
  dea6e4773d5d9bcf4b5177f8c2dfb4de  libgomp/testsuite/libgomp.c-c++-common/target-link-3.c
  6d333518b73fa1f60b85aa1f88314355  libgomp/testsuite/libgomp.c-c++-common/target-link-4.c
*************** a9b2ad991bd60cd4cd6ef4a68071bee6  libgom
*** 144027,144034 ****
  9249f482d7291a60ed32df9743b496fb  libgomp/testsuite/libgomp.c/target-8.c
  37f4629cc5ec7daf74c2204face7e933  libgomp/testsuite/libgomp.c/target-9.c
  0c22284da2bf46f8073fce86c2b87371  libgomp/testsuite/libgomp.c/target-critical-1.c
! edf30c9900f4a1a9fd2287383eb17ee2  libgomp/testsuite/libgomp.c/target-device-type-1.c
! 34eb76668ee3c1739c5de7a17f874495  libgomp/testsuite/libgomp.c/target-device-type-2.c
  5fba1b1f74991261406983aa57a8548b  libgomp/testsuite/libgomp.c/target-device-type-3.c
  d7cbe25f5829f4d664a461d6ef7327f5  libgomp/testsuite/libgomp.c/target-has-device-addr-3.c
  ae08608d1d34ffa14592283860b92d45  libgomp/testsuite/libgomp.c/target-link-1.c
--- 144262,144269 ----
  9249f482d7291a60ed32df9743b496fb  libgomp/testsuite/libgomp.c/target-8.c
  37f4629cc5ec7daf74c2204face7e933  libgomp/testsuite/libgomp.c/target-9.c
  0c22284da2bf46f8073fce86c2b87371  libgomp/testsuite/libgomp.c/target-critical-1.c
! ede0449fdf16941fed27975c1eb832c2  libgomp/testsuite/libgomp.c/target-device-type-1.c
! 74f2c885a63c39caa12684011c4f1921  libgomp/testsuite/libgomp.c/target-device-type-2.c
  5fba1b1f74991261406983aa57a8548b  libgomp/testsuite/libgomp.c/target-device-type-3.c
  d7cbe25f5829f4d664a461d6ef7327f5  libgomp/testsuite/libgomp.c/target-has-device-addr-3.c
  ae08608d1d34ffa14592283860b92d45  libgomp/testsuite/libgomp.c/target-link-1.c
*************** c253434fe103910b87d86dea9746db67  libgom
*** 144542,144550 ****
  c604509b615d707812822a4f9559faca  libgomp/testsuite/libgomp.fortran/target-in-reduction-2.f90
  bf93f552380dcf11254519b53957bd8b  libgomp/testsuite/libgomp.fortran/target-is-accessible-1.f90
  0a168e5a38556e28478014f8c502669f  libgomp/testsuite/libgomp.fortran/target-is-initial-device-3.f90
! b205f9e12d1bd4e2fa5b8ecd4f50db58  libgomp/testsuite/libgomp.fortran/target-is-initial-host-2.f90
! 6859dad56b2334740e8ca2b4290949fe  libgomp/testsuite/libgomp.fortran/target-is-initial-host.f
! 27af88403c16b3dceba23e48c356e1be  libgomp/testsuite/libgomp.fortran/target-is-initial-host.f90
  c8674726b7e6d033a64557c340289db9  libgomp/testsuite/libgomp.fortran/target-map-1.f90
  211d6bed9ac38c97cfe0d664276c45c4  libgomp/testsuite/libgomp.fortran/target-map-iterators-1.f90
  f131e8714093686071cd3d781117d735  libgomp/testsuite/libgomp.fortran/target-map-iterators-2.f90
--- 144777,144785 ----
  c604509b615d707812822a4f9559faca  libgomp/testsuite/libgomp.fortran/target-in-reduction-2.f90
  bf93f552380dcf11254519b53957bd8b  libgomp/testsuite/libgomp.fortran/target-is-accessible-1.f90
  0a168e5a38556e28478014f8c502669f  libgomp/testsuite/libgomp.fortran/target-is-initial-device-3.f90
! e5473eb713c17e0cf627993fe84b5fb6  libgomp/testsuite/libgomp.fortran/target-is-initial-host-2.f90
! 4efd96545bf8c788bb333da17e6ad96e  libgomp/testsuite/libgomp.fortran/target-is-initial-host.f
! 6732b4463c9b005394cb0d61d8a1e220  libgomp/testsuite/libgomp.fortran/target-is-initial-host.f90
  c8674726b7e6d033a64557c340289db9  libgomp/testsuite/libgomp.fortran/target-map-1.f90
  211d6bed9ac38c97cfe0d664276c45c4  libgomp/testsuite/libgomp.fortran/target-map-iterators-1.f90
  f131e8714093686071cd3d781117d735  libgomp/testsuite/libgomp.fortran/target-map-iterators-2.f90
*************** cf2a27da59d3b7856348e6c1707bc944  libgom
*** 145254,145259 ****
--- 145489,145495 ----
  e206d5fdc2a6366ff1ccbf7d55ab2b7d  libgomp/testsuite/libgomp.oacc-fortran/host_data-5.F90
  d2542a22538ab361b2100d4ecf933361  libgomp/testsuite/libgomp.oacc-fortran/if-1.f90
  9e79f04def374125ca7e12df1aa42e17  libgomp/testsuite/libgomp.oacc-fortran/implicit-firstprivate-ref.f90
+ cdbf1f47a43ac76d0e207547465f407f  libgomp/testsuite/libgomp.oacc-fortran/init-1.f90
  916dd1d0624fc62083348884a09e0cf8  libgomp/testsuite/libgomp.oacc-fortran/kernels-acc-loop-reduction-2.f90
  7c709c6d864edc4962556c34495e8b24  libgomp/testsuite/libgomp.oacc-fortran/kernels-acc-loop-reduction.f90
  c89e92bd2d859862bef91e6cd3a8347b  libgomp/testsuite/libgomp.oacc-fortran/kernels-collapse-3.f90
*************** acfd83d4c416c6c70fecbb7472ec3f36  libgom
*** 145283,145288 ****
--- 145519,145525 ----
  14bc729dac61a2568dcd16171d11f021  libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-6.f90
  a5d80da308c21f5cc3268318f4dd0d6c  libgomp/testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-7.f90
  ad0f604b81bd68d2854d88260581b24f  libgomp/testsuite/libgomp.oacc-fortran/kernels-reduction-1.f90
+ ee8f02118b32eaeccfe2c7361fddad7c  libgomp/testsuite/libgomp.oacc-fortran/lib-1-directives.f90
  aeaad5052b0b55075519fae4a77d2275  libgomp/testsuite/libgomp.oacc-fortran/lib-1.f90
  463b3f99768cf4a6b78111b273b6de56  libgomp/testsuite/libgomp.oacc-fortran/lib-10.f90
  2cb8539f9bc2791e35d9e5ba01f9b560  libgomp/testsuite/libgomp.oacc-fortran/lib-12.f90
*************** ded3fbe13b7b3a32094424794ec431a8  libgom
*** 145295,145301 ****
--- 145532,145541 ----
  1c546c6eef4d1ddd8e0b748ccc703357  libgomp/testsuite/libgomp.oacc-fortran/lib-3.f
  6cb1ae63d758b34c0b2ad54d247a16d7  libgomp/testsuite/libgomp.oacc-fortran/lib-32-1.f
  c02d06bf92c7e31995bf394f8ed4708f  libgomp/testsuite/libgomp.oacc-fortran/lib-32-2.f
+ c553ba599ae19a26f5e01406eeeba405  libgomp/testsuite/libgomp.oacc-fortran/lib-4-directives.f90
  a975bf7ac8e332ff727db7c22c514c28  libgomp/testsuite/libgomp.oacc-fortran/lib-4.f90
+ f493b27ff155c3a2179c60a16f2856ca  libgomp/testsuite/libgomp.oacc-fortran/lib-5-directives.f90
+ 047ca609bd92378cf5e1864a0e4ec3a7  libgomp/testsuite/libgomp.oacc-fortran/lib-5-init.f90
  b85dca7b9975ade4361803366910b9df  libgomp/testsuite/libgomp.oacc-fortran/lib-5.f90
  b17a9bac2116bc46ac5e479464f84c00  libgomp/testsuite/libgomp.oacc-fortran/lib-6.f90
  2da27ca69bd2accd960370b1a16c3f27  libgomp/testsuite/libgomp.oacc-fortran/lib-7.f90
*************** b17d9a6be87aa880c6f4edacb94c8b96  libgom
*** 145385,145390 ****
--- 145625,145632 ----
  d8a29de950f49f4fc90c9401a7c03227  libgomp/testsuite/libgomp.oacc-fortran/routine-9.f90
  0913cd77ca5a104a19aca1258c7e88fb  libgomp/testsuite/libgomp.oacc-fortran/routine-nohost-1.f90
  b82c902991148e9e09bcbe3437ff8128  libgomp/testsuite/libgomp.oacc-fortran/self-1.f90
+ 575e799a56a87f720672cca3cbdaee4d  libgomp/testsuite/libgomp.oacc-fortran/set-1.f90
+ 2b3dfa48d299b52e589d19eceb5a24fb  libgomp/testsuite/libgomp.oacc-fortran/shutdown-1.f90
  9aebdff3c875cae3883fa4571ea3eb33  libgomp/testsuite/libgomp.oacc-fortran/stop-1.f
  49ae3cc5d2cea3e73d2890d1f16db12d  libgomp/testsuite/libgomp.oacc-fortran/stop-2-nvptx.f
  b5793422db2ab1fac971637e71a0e842  libgomp/testsuite/libgomp.oacc-fortran/stop-2.f
*************** a73d560a3ba317c5ad0a7919d87b4b6d  libssp
*** 148158,148164 ****
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 9c27e91d1538f6df482c14048cfc2af2  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 148400,148406 ----
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 1c1f3c3bc338acf3e65ef08fb6687476  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** a94321c8d0dbbc71741ebf0f1cc9828c  libstd
*** 148190,148196 ****
  9161085c79a8bf8d60641b5525f28bd7  libstdc++-v3/Makefile.am
  dbe6646c8cac125dd885d66a4fd4ce40  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! fd385baf25a3888f02b79ef373b2f129  libstdc++-v3/acinclude.m4
  66d9ad645fa12cd3028e72df3375d9a6  libstdc++-v3/aclocal.m4
  99a3cff2df96180120774fefa11f050e  libstdc++-v3/config.h.in
  2345fca717fc01f8c1494241d6a88e94  libstdc++-v3/config/abi/compatibility.h
--- 148432,148438 ----
  9161085c79a8bf8d60641b5525f28bd7  libstdc++-v3/Makefile.am
  dbe6646c8cac125dd885d66a4fd4ce40  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 3662d6dbd98f7baa11d5b54948834239  libstdc++-v3/acinclude.m4
  66d9ad645fa12cd3028e72df3375d9a6  libstdc++-v3/aclocal.m4
  99a3cff2df96180120774fefa11f050e  libstdc++-v3/config.h.in
  2345fca717fc01f8c1494241d6a88e94  libstdc++-v3/config/abi/compatibility.h
*************** a144795bdde388f89eb6222f0c2e4932  libstd
*** 148384,148390 ****
  53df82982400fd3d426f3fd0e0c37b54  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  a3f907fa7f71dc9eb08755c9c438accc  libstdc++-v3/config/os/vxworks/ctype_inline.h
  e8e7da2b87b17dcd2c2faadb8b5cd1ad  libstdc++-v3/config/os/vxworks/os_defines.h
! 413478bb4859b74ffc2c36cb25bb5299  libstdc++-v3/configure
  159707023fcf6084313b6d6e970be4b2  libstdc++-v3/configure.ac
  b033b430e0de6b3da2c1dfdfc0b4080c  libstdc++-v3/configure.host
  e9366e11a064aa5c3169c19d2164c799  libstdc++-v3/crossconfig.m4
--- 148626,148632 ----
  53df82982400fd3d426f3fd0e0c37b54  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  a3f907fa7f71dc9eb08755c9c438accc  libstdc++-v3/config/os/vxworks/ctype_inline.h
  e8e7da2b87b17dcd2c2faadb8b5cd1ad  libstdc++-v3/config/os/vxworks/os_defines.h
! e3544cf2d0c9dcd68226b0269a957796  libstdc++-v3/configure
  159707023fcf6084313b6d6e970be4b2  libstdc++-v3/configure.ac
  b033b430e0de6b3da2c1dfdfc0b4080c  libstdc++-v3/configure.host
  e9366e11a064aa5c3169c19d2164c799  libstdc++-v3/crossconfig.m4
*************** bb9a7ef31b4a9de3a402d0493d5862e9  libstd
*** 148832,148838 ****
  2f4121a38a68c1efce93c7dafa3b408a  libstdc++-v3/include/backward/strstream
  a7d1ee943a62851fe350ec2bafff68be  libstdc++-v3/include/bits/algorithmfwd.h
  19a62011e468a574086c2dd3f6c8d0f2  libstdc++-v3/include/bits/align.h
! 8b861e997049da913d847c1c3386de8b  libstdc++-v3/include/bits/alloc_traits.h
  54d70975b96f74e9dab06dcfdeb88658  libstdc++-v3/include/bits/allocated_ptr.h
  057f2ba9795770f94d269ec61c0c9cf7  libstdc++-v3/include/bits/allocator.h
  b150985fe0890b1fd56c8ecb8d3f07fe  libstdc++-v3/include/bits/atomic_base.h
--- 149074,149080 ----
  2f4121a38a68c1efce93c7dafa3b408a  libstdc++-v3/include/backward/strstream
  a7d1ee943a62851fe350ec2bafff68be  libstdc++-v3/include/bits/algorithmfwd.h
  19a62011e468a574086c2dd3f6c8d0f2  libstdc++-v3/include/bits/align.h
! 262d6e3a6777557f3f9690bf89c07677  libstdc++-v3/include/bits/alloc_traits.h
  54d70975b96f74e9dab06dcfdeb88658  libstdc++-v3/include/bits/allocated_ptr.h
  057f2ba9795770f94d269ec61c0c9cf7  libstdc++-v3/include/bits/allocator.h
  b150985fe0890b1fd56c8ecb8d3f07fe  libstdc++-v3/include/bits/atomic_base.h
*************** d0c15c840deae482dec44e2172ecee5c  libstd
*** 148850,148862 ****
  5cbbd0fafb904f86c9ddce3fc54380f1  libstdc++-v3/include/bits/char_traits.h
  9a3227d14b324832ae22b4c7ec6979e2  libstdc++-v3/include/bits/charconv.h
  a15f9dcf8ee271924862e5e3c21b9bd5  libstdc++-v3/include/bits/chrono.h
! cc28141afa84710913384c72c661b939  libstdc++-v3/include/bits/chrono_io.h
  1f26067336c4957237db887ab1ce6b55  libstdc++-v3/include/bits/codecvt.h
  53f7e45e350f1bb99b3d67e27f914b61  libstdc++-v3/include/bits/concept_check.h
  57c20bfd264af582740709b6953c165f  libstdc++-v3/include/bits/cow_string.h
  97d90498ee103018406f19468a5500ec  libstdc++-v3/include/bits/cpp_type_traits.h
  8890a18d951d6a850abe7666583a1d50  libstdc++-v3/include/bits/cpyfunc_impl.h
! a00599dc44159a6b255d87ddbb7e237c  libstdc++-v3/include/bits/deque.tcc
  b3b7f49179a45d11260480d53dd3cf0e  libstdc++-v3/include/bits/elements_of.h
  021c9e8af006934e2df53e05441f3d8c  libstdc++-v3/include/bits/enable_special_members.h
  0761a634c5ad798abd93ae68d0f8f1e2  libstdc++-v3/include/bits/erase_if.h
--- 149092,149104 ----
  5cbbd0fafb904f86c9ddce3fc54380f1  libstdc++-v3/include/bits/char_traits.h
  9a3227d14b324832ae22b4c7ec6979e2  libstdc++-v3/include/bits/charconv.h
  a15f9dcf8ee271924862e5e3c21b9bd5  libstdc++-v3/include/bits/chrono.h
! 4afff0951e01d3e90fe0cc9f7f1779ad  libstdc++-v3/include/bits/chrono_io.h
  1f26067336c4957237db887ab1ce6b55  libstdc++-v3/include/bits/codecvt.h
  53f7e45e350f1bb99b3d67e27f914b61  libstdc++-v3/include/bits/concept_check.h
  57c20bfd264af582740709b6953c165f  libstdc++-v3/include/bits/cow_string.h
  97d90498ee103018406f19468a5500ec  libstdc++-v3/include/bits/cpp_type_traits.h
  8890a18d951d6a850abe7666583a1d50  libstdc++-v3/include/bits/cpyfunc_impl.h
! aa7442d2c3a0b4a7dec18616be5c7a2e  libstdc++-v3/include/bits/deque.tcc
  b3b7f49179a45d11260480d53dd3cf0e  libstdc++-v3/include/bits/elements_of.h
  021c9e8af006934e2df53e05441f3d8c  libstdc++-v3/include/bits/enable_special_members.h
  0761a634c5ad798abd93ae68d0f8f1e2  libstdc++-v3/include/bits/erase_if.h
*************** f69aa477afbbb88f2ee81c3b9aa8d777  libstd
*** 148900,148906 ****
  716c8efa6fcde62f7fadd4778790d518  libstdc++-v3/include/bits/localefwd.h
  7d421045a2c29aed04d8138049f30a0f  libstdc++-v3/include/bits/mask_array.h
  3b8fde32379284f35ba1b16a4a8e5b75  libstdc++-v3/include/bits/max_size_type.h
! c2a37a4d261aa6aa543de47ce2a11603  libstdc++-v3/include/bits/memory_resource.h
  d8251691b710967c63f24ecf3e8cad75  libstdc++-v3/include/bits/memoryfwd.h
  e088e7321950878babb11f672f90e1f1  libstdc++-v3/include/bits/mofunc_impl.h
  4169d644c2ef24f0668b2a257a0a5e54  libstdc++-v3/include/bits/monostate.h
--- 149142,149148 ----
  716c8efa6fcde62f7fadd4778790d518  libstdc++-v3/include/bits/localefwd.h
  7d421045a2c29aed04d8138049f30a0f  libstdc++-v3/include/bits/mask_array.h
  3b8fde32379284f35ba1b16a4a8e5b75  libstdc++-v3/include/bits/max_size_type.h
! 1901e42f53416784d2423d56f9051670  libstdc++-v3/include/bits/memory_resource.h
  d8251691b710967c63f24ecf3e8cad75  libstdc++-v3/include/bits/memoryfwd.h
  e088e7321950878babb11f672f90e1f1  libstdc++-v3/include/bits/mofunc_impl.h
  4169d644c2ef24f0668b2a257a0a5e54  libstdc++-v3/include/bits/monostate.h
*************** a1863495964944e6744cf640845d44fc  libstd
*** 148926,148932 ****
  4bbb7559472c9a9d579b509d462b9f49  libstdc++-v3/include/bits/range_access.h
  91a3a127b4d8b0d05094dd720c6074ae  libstdc++-v3/include/bits/ranges_algo.h
  2376637350495a1dbd9c27901ed68027  libstdc++-v3/include/bits/ranges_algobase.h
! 0161842d905e6c0a2ecb43b2833ee850  libstdc++-v3/include/bits/ranges_base.h
  c04d8e83343df391a348af7cf384e792  libstdc++-v3/include/bits/ranges_cmp.h
  01f0b1bd6742b4a2e642b03e16e87ca0  libstdc++-v3/include/bits/ranges_uninitialized.h
  1e16e9219782b5cd7f75c9d3e4611b1b  libstdc++-v3/include/bits/ranges_util.h
--- 149168,149174 ----
  4bbb7559472c9a9d579b509d462b9f49  libstdc++-v3/include/bits/range_access.h
  91a3a127b4d8b0d05094dd720c6074ae  libstdc++-v3/include/bits/ranges_algo.h
  2376637350495a1dbd9c27901ed68027  libstdc++-v3/include/bits/ranges_algobase.h
! 3514abca1d9151998b077443593a8afa  libstdc++-v3/include/bits/ranges_base.h
  c04d8e83343df391a348af7cf384e792  libstdc++-v3/include/bits/ranges_cmp.h
  01f0b1bd6742b4a2e642b03e16e87ca0  libstdc++-v3/include/bits/ranges_uninitialized.h
  1e16e9219782b5cd7f75c9d3e4611b1b  libstdc++-v3/include/bits/ranges_util.h
*************** cbd44f9447b308b0901004443db53e93  libstd
*** 148948,148954 ****
  39e2988a6581d891172e27c28e87c62f  libstdc++-v3/include/bits/semaphore_base.h
  83ffdab4b50f31e7bb34b9c38dbe5fd0  libstdc++-v3/include/bits/shared_ptr.h
  3464ab6bcb3ccff1cae5bcff7a6eb9ca  libstdc++-v3/include/bits/shared_ptr_atomic.h
! 36ef52638647251fcb35fa7716ff6856  libstdc++-v3/include/bits/shared_ptr_base.h
  a3287036233bd3e6387160d82f75e7dd  libstdc++-v3/include/bits/simd_alg.h
  3ba0268d3c388b4d85b3ac335d00ad2c  libstdc++-v3/include/bits/simd_bit.h
  9556c0d3896130a6a149cab635617a9b  libstdc++-v3/include/bits/simd_complex.h
--- 149190,149196 ----
  39e2988a6581d891172e27c28e87c62f  libstdc++-v3/include/bits/semaphore_base.h
  83ffdab4b50f31e7bb34b9c38dbe5fd0  libstdc++-v3/include/bits/shared_ptr.h
  3464ab6bcb3ccff1cae5bcff7a6eb9ca  libstdc++-v3/include/bits/shared_ptr_atomic.h
! b6d811135e263899ef42b97eb030a31a  libstdc++-v3/include/bits/shared_ptr_base.h
  a3287036233bd3e6387160d82f75e7dd  libstdc++-v3/include/bits/simd_alg.h
  3ba0268d3c388b4d85b3ac335d00ad2c  libstdc++-v3/include/bits/simd_bit.h
  9556c0d3896130a6a149cab635617a9b  libstdc++-v3/include/bits/simd_complex.h
*************** eae71ddcefd0eda0b73f00439edf8ed4  libstd
*** 148977,148988 ****
  67a3769f143eec167c37d2842987f547  libstdc++-v3/include/bits/stl_algobase.h
  93fb042c4fe4f9ba7e63ccbb7c5f3845  libstdc++-v3/include/bits/stl_bvector.h
  dee57b6a88249dded126c87e67e24d82  libstdc++-v3/include/bits/stl_construct.h
! 3e4f6e814111cf95a66ca90d92f7cee6  libstdc++-v3/include/bits/stl_deque.h
  dad6f36c0bb9a2b5c5cfe42d6904e350  libstdc++-v3/include/bits/stl_function.h
  c0f29373700aa4d52ef22cddc3975b26  libstdc++-v3/include/bits/stl_heap.h
  5bb92c950881ea1e58555eea3f491411  libstdc++-v3/include/bits/stl_iterator.h
! e4fadcd5fca526cd53e83c472d606b4f  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
! 9ca5002544e6d43a87c20d3052b7348a  libstdc++-v3/include/bits/stl_iterator_base_types.h
  0b716dbdfa551e19bc190dc3329971b4  libstdc++-v3/include/bits/stl_list.h
  fc37d0e099f85ad87857bb0e58413e4e  libstdc++-v3/include/bits/stl_map.h
  134a1d79c1c13a5012ac629bdf40005d  libstdc++-v3/include/bits/stl_multimap.h
--- 149219,149230 ----
  67a3769f143eec167c37d2842987f547  libstdc++-v3/include/bits/stl_algobase.h
  93fb042c4fe4f9ba7e63ccbb7c5f3845  libstdc++-v3/include/bits/stl_bvector.h
  dee57b6a88249dded126c87e67e24d82  libstdc++-v3/include/bits/stl_construct.h
! 799a9817eb24388b9de8e0ee3f07b8f1  libstdc++-v3/include/bits/stl_deque.h
  dad6f36c0bb9a2b5c5cfe42d6904e350  libstdc++-v3/include/bits/stl_function.h
  c0f29373700aa4d52ef22cddc3975b26  libstdc++-v3/include/bits/stl_heap.h
  5bb92c950881ea1e58555eea3f491411  libstdc++-v3/include/bits/stl_iterator.h
! 82a16e8c43ac3dcc9b2f90e660efc7d0  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
! 586a85b40edf42cd124f7cfa84789fac  libstdc++-v3/include/bits/stl_iterator_base_types.h
  0b716dbdfa551e19bc190dc3329971b4  libstdc++-v3/include/bits/stl_list.h
  fc37d0e099f85ad87857bb0e58413e4e  libstdc++-v3/include/bits/stl_map.h
  134a1d79c1c13a5012ac629bdf40005d  libstdc++-v3/include/bits/stl_multimap.h
*************** d33f07a2c476cc45af97a78f4020e731  libstd
*** 149134,149140 ****
  86f440721d11a555ec97526d018eabf7  libstdc++-v3/include/debug/multiset.h
  05b2e599111f72660b0453d2350d1feb  libstdc++-v3/include/debug/safe_base.h
  b901bcac560763f13f4c3a3e076f8f7f  libstdc++-v3/include/debug/safe_container.h
! 5ca1b9eebe149e209cf2b872caecf94e  libstdc++-v3/include/debug/safe_iterator.h
  732aac16ab9dafe9252686005236d0fd  libstdc++-v3/include/debug/safe_iterator.tcc
  39f9bb5fedeccdf52877aac2636a47c7  libstdc++-v3/include/debug/safe_local_iterator.h
  86b787ce43f8d75f10315d2c404c22e4  libstdc++-v3/include/debug/safe_local_iterator.tcc
--- 149376,149382 ----
  86f440721d11a555ec97526d018eabf7  libstdc++-v3/include/debug/multiset.h
  05b2e599111f72660b0453d2350d1feb  libstdc++-v3/include/debug/safe_base.h
  b901bcac560763f13f4c3a3e076f8f7f  libstdc++-v3/include/debug/safe_container.h
! 6edf7737847e3aa076ce091a48383851  libstdc++-v3/include/debug/safe_iterator.h
  732aac16ab9dafe9252686005236d0fd  libstdc++-v3/include/debug/safe_iterator.tcc
  39f9bb5fedeccdf52877aac2636a47c7  libstdc++-v3/include/debug/safe_local_iterator.h
  86b787ce43f8d75f10315d2c404c22e4  libstdc++-v3/include/debug/safe_local_iterator.tcc
*************** f1c08a4c9a736109edfd3c39c60c1669  libstd
*** 149580,149588 ****
  6250fdc57cc9fcf4c5cc699808a8871f  libstdc++-v3/include/std/codecvt
  841a79fbef033cbe8ca8c554dc66d5b9  libstdc++-v3/include/std/complex
  48a40100ca3cd85337d3b2f0c27e0862  libstdc++-v3/include/std/concepts
! 6ea0f7f1302716643c09ceac647c23fd  libstdc++-v3/include/std/condition_variable
  687bcecfb8a35508f2a7025bad9ddade  libstdc++-v3/include/std/contracts
! 30926456f62b01c212f18e128fa8f543  libstdc++-v3/include/std/coroutine
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
  a505b55fe4f9b1f72b2b10fb26d67920  libstdc++-v3/include/std/deque
  649d9183a0fa35d50371bb1bce3f70c2  libstdc++-v3/include/std/execution
--- 149822,149830 ----
  6250fdc57cc9fcf4c5cc699808a8871f  libstdc++-v3/include/std/codecvt
  841a79fbef033cbe8ca8c554dc66d5b9  libstdc++-v3/include/std/complex
  48a40100ca3cd85337d3b2f0c27e0862  libstdc++-v3/include/std/concepts
! 760e93341ed90a69fc84e4364e8ab1df  libstdc++-v3/include/std/condition_variable
  687bcecfb8a35508f2a7025bad9ddade  libstdc++-v3/include/std/contracts
! 56366b751e21bc8d1f80704719551b51  libstdc++-v3/include/std/coroutine
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
  a505b55fe4f9b1f72b2b10fb26d67920  libstdc++-v3/include/std/deque
  649d9183a0fa35d50371bb1bce3f70c2  libstdc++-v3/include/std/execution
*************** c3b66598ccd8ea2009de9b04433b7dcf  libstd
*** 149599,149605 ****
  92dbcd3cff0bf76d425ffb95e028ed48  libstdc++-v3/include/std/inplace_vector
  1c55d0a56e95a92d4869875b32fb966a  libstdc++-v3/include/std/iomanip
  4def558fc37b3c6d78642dc4f86d2785  libstdc++-v3/include/std/ios
! cd03c7a97eb0db3f618710ef28e40fc3  libstdc++-v3/include/std/iosfwd
  ca0b85731f9c9d61a813d97c3286740e  libstdc++-v3/include/std/iostream
  22e9396150e64d747537779f3e7972cf  libstdc++-v3/include/std/istream
  139672a57dd1d2720c2ce7b44066b699  libstdc++-v3/include/std/iterator
--- 149841,149847 ----
  92dbcd3cff0bf76d425ffb95e028ed48  libstdc++-v3/include/std/inplace_vector
  1c55d0a56e95a92d4869875b32fb966a  libstdc++-v3/include/std/iomanip
  4def558fc37b3c6d78642dc4f86d2785  libstdc++-v3/include/std/ios
! e358aee9a332d8594a5c9a8410881707  libstdc++-v3/include/std/iosfwd
  ca0b85731f9c9d61a813d97c3286740e  libstdc++-v3/include/std/iostream
  22e9396150e64d747537779f3e7972cf  libstdc++-v3/include/std/istream
  139672a57dd1d2720c2ce7b44066b699  libstdc++-v3/include/std/iterator
*************** bcf1c0b79e2efd9cd34763d368f40966  libstd
*** 149620,149626 ****
  e24e6fab84ab94b060b3c31ebc39b264  libstdc++-v3/include/std/print
  879fbfbd4d520dc45943e6e1c095a2e7  libstdc++-v3/include/std/queue
  3f2ecc03a66eecb18b68d4fdbf35e268  libstdc++-v3/include/std/random
! ba52d6ad1d3fa99930fbef6939960c3e  libstdc++-v3/include/std/ranges
  ee576f89ae347224177df91fe86d905d  libstdc++-v3/include/std/ratio
  a5c4f3df840ba7c3fbc9b7b9d5567ef2  libstdc++-v3/include/std/regex
  8e6ef0834acfc88dd03f5eae2990e41a  libstdc++-v3/include/std/scoped_allocator
--- 149862,149868 ----
  e24e6fab84ab94b060b3c31ebc39b264  libstdc++-v3/include/std/print
  879fbfbd4d520dc45943e6e1c095a2e7  libstdc++-v3/include/std/queue
  3f2ecc03a66eecb18b68d4fdbf35e268  libstdc++-v3/include/std/random
! 7bd00d56a13d5262e05796d317754dbe  libstdc++-v3/include/std/ranges
  ee576f89ae347224177df91fe86d905d  libstdc++-v3/include/std/ratio
  a5c4f3df840ba7c3fbc9b7b9d5567ef2  libstdc++-v3/include/std/regex
  8e6ef0834acfc88dd03f5eae2990e41a  libstdc++-v3/include/std/scoped_allocator
*************** b543e8338c70f9c51d69b22f6e57859e  libstd
*** 149819,149825 ****
  1c37dd242e9d4dc84fddd039c7935dae  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  3759fb926a7736f99a99a4fa25b747c9  libstdc++-v3/python/libstdcxx/v6/__init__.py
! de882facfd33a3a4d4ed924ea04cc30e  libstdc++-v3/python/libstdcxx/v6/printers.py
  bbd304c6c3f96d550228583e74e330d3  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
--- 150061,150067 ----
  1c37dd242e9d4dc84fddd039c7935dae  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  3759fb926a7736f99a99a4fa25b747c9  libstdc++-v3/python/libstdcxx/v6/__init__.py
! b3ea1f84132184ec27216953f93e9678  libstdc++-v3/python/libstdcxx/v6/printers.py
  bbd304c6c3f96d550228583e74e330d3  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
*************** c2bd27af25e57adce5807e0f01a2d0dc  libstd
*** 149953,149959 ****
  a270ee65b1040ddec3d1ccf46a1d71d3  libstdc++-v3/src/c++20/string-inst.cc
  50ac2e00d5794df965e47509f3c16cb5  libstdc++-v3/src/c++20/syncbuf.cc
  0dfa4a770289b4e926b8281770732d5a  libstdc++-v3/src/c++20/tzdata.zi
! 092d485e2b4bd98b07068a901d3feff2  libstdc++-v3/src/c++20/tzdb.cc
  ac7b7a080d5f7aa8fe6a26188631fc18  libstdc++-v3/src/c++20/windows_zones-map.h
  863fc49f52a3a3665416a7c88fc4f3e7  libstdc++-v3/src/c++23/Makefile.am
  0d7332606e5b7973ac0d4398f18cfd17  libstdc++-v3/src/c++23/Makefile.in
--- 150195,150201 ----
  a270ee65b1040ddec3d1ccf46a1d71d3  libstdc++-v3/src/c++20/string-inst.cc
  50ac2e00d5794df965e47509f3c16cb5  libstdc++-v3/src/c++20/syncbuf.cc
  0dfa4a770289b4e926b8281770732d5a  libstdc++-v3/src/c++20/tzdata.zi
! c6e87cbd3e24dd4afb9473d1990cdab1  libstdc++-v3/src/c++20/tzdb.cc
  ac7b7a080d5f7aa8fe6a26188631fc18  libstdc++-v3/src/c++20/windows_zones-map.h
  863fc49f52a3a3665416a7c88fc4f3e7  libstdc++-v3/src/c++23/Makefile.am
  0d7332606e5b7973ac0d4398f18cfd17  libstdc++-v3/src/c++23/Makefile.in
*************** a48259cf2dc7fdce0dd213702cb38485  libstd
*** 150104,150109 ****
--- 150346,150352 ----
  d0a24cdda56dca4acc05b4d194c731e3  libstdc++-v3/testsuite/18_support/coroutines/95917.cc
  783af524f848615e0b0b76d03bcc9e9c  libstdc++-v3/testsuite/18_support/coroutines/hash.cc
  74c121e0875645b9d2f8ff1bed2655c1  libstdc++-v3/testsuite/18_support/coroutines/lwg3460.cc
+ 4b95f75fb428ffd592fdb2af9145832b  libstdc++-v3/testsuite/18_support/coroutines/specializations_neg.cc
  d67d5a0efba04970f3b97159730e13ca  libstdc++-v3/testsuite/18_support/cxa_vec.cc
  96bd1dfae8dacda862f72962c2c99a57  libstdc++-v3/testsuite/18_support/destroying_delete.cc
  89d0523b1eaa57fa3be5dbb8822d9171  libstdc++-v3/testsuite/18_support/exception/38732.cc
*************** d631be6892fcf3b4f81860b5047e59c3  libstd
*** 150384,150389 ****
--- 150627,150633 ----
  c251058edf0da3925c1a031363514596  libstdc++-v3/testsuite/20_util/allocator_traits/members/select.cc
  0694b0cd3c914c9d36efc9721a85ea44  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc
  bef0ecc9b87819710fa15591c4f27204  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/rebind_neg.cc
+ ecad9ca5b9be5d826fa5c5eaef7a3231  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/specializations_neg.cc
  5d9759cf74726f09bb7bc8b37602e992  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs.cc
  fa498b656083618577fcd84a90846470  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs2.cc
  53d95c7e7934ce41b96d0a86033b6a99  libstdc++-v3/testsuite/20_util/any/102894.cc
*************** d295c333b153aa3c9bf748e3187d6da7  libstd
*** 151540,151545 ****
--- 151784,151791 ----
  a266dc0f16f792d7c9755b3cf4a833cc  libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation.cc
  9e76ff109f258554d326d64fb91e34a0  libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc
  98eeeb9df65778568c9dfbdc6dcf1713  libstdc++-v3/testsuite/20_util/shared_ptr/creation/version.cc
+ c60beac16f39d87d8cedfea2801aea6b  libstdc++-v3/testsuite/20_util/shared_ptr/dest/122197-2.cc
+ c1a0891fe2b1736d4ab4439c57a3236d  libstdc++-v3/testsuite/20_util/shared_ptr/dest/122197.cc
  0f04a1fa70e9bb29daa18cf40c8df1fe  libstdc++-v3/testsuite/20_util/shared_ptr/dest/dest.cc
  75d3c9fc51bd9a563829e21cb30f6ac5  libstdc++-v3/testsuite/20_util/shared_ptr/hash/1.cc
  48b377623ff060c8012fba670943893d  libstdc++-v3/testsuite/20_util/shared_ptr/misc/24595.cc
*************** ba769f9f8f0e3dd9df1cfdaed6eeb11c  libstd
*** 153203,153208 ****
--- 153449,153455 ----
  b8f8990c3670338147275606d795affb  libstdc++-v3/testsuite/23_containers/deque/debug/iterator2_neg.cc
  9fd8ab09cd9aa7d0635181049e997203  libstdc++-v3/testsuite/23_containers/deque/debug/shrink_to_fit.cc
  1c9d5ad8ec1ddfb5303a76f537f33469  libstdc++-v3/testsuite/23_containers/deque/erasure.cc
+ b6d7c2b5522fc695e8e119599de760eb  libstdc++-v3/testsuite/23_containers/deque/for_each_segment.cc
  b5e829cab1c03dbb3dce27d99c1d655c  libstdc++-v3/testsuite/23_containers/deque/init-list.cc
  d6389dca6900efed9092c757879cb4bb  libstdc++-v3/testsuite/23_containers/deque/modifiers/append_range.cc
  9982e7d414131d813277f7c9b3acc842  libstdc++-v3/testsuite/23_containers/deque/modifiers/assign/1.cc
*************** c246735e030f2a891097b39f7b1f674f  libstd
*** 157418,157424 ****
  7212250d677876506f0df5e1b018e210  libstdc++-v3/testsuite/27_io/headers/iomanip/synopsis.cc
  8801627458be811224b1417875feacc0  libstdc++-v3/testsuite/27_io/headers/ios/synopsis.cc
  0c3353f34afae391b62fc668551431f0  libstdc++-v3/testsuite/27_io/headers/ios/types_std.cc
! 563e1beef4d8fc03f62916396fccea88  libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc
  16eebae0b45ab9320a5df94e03dfa4e7  libstdc++-v3/testsuite/27_io/headers/iosfwd/types.cc
  28aef2d437b2722351cf2ce1b9c4b993  libstdc++-v3/testsuite/27_io/headers/iostream/synopsis.cc
  66a0cddebdef1b8b8ebc8ae6b9e598da  libstdc++-v3/testsuite/27_io/headers/iostream/types_std.cc
--- 157665,157671 ----
  7212250d677876506f0df5e1b018e210  libstdc++-v3/testsuite/27_io/headers/iomanip/synopsis.cc
  8801627458be811224b1417875feacc0  libstdc++-v3/testsuite/27_io/headers/ios/synopsis.cc
  0c3353f34afae391b62fc668551431f0  libstdc++-v3/testsuite/27_io/headers/ios/types_std.cc
! 991cbfe87ef0119f650fe91acd9a0b51  libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc
  16eebae0b45ab9320a5df94e03dfa4e7  libstdc++-v3/testsuite/27_io/headers/iosfwd/types.cc
  28aef2d437b2722351cf2ce1b9c4b993  libstdc++-v3/testsuite/27_io/headers/iostream/synopsis.cc
  66a0cddebdef1b8b8ebc8ae6b9e598da  libstdc++-v3/testsuite/27_io/headers/iostream/types_std.cc
*************** ae67e12b1c6f9ffca9d7f3023ef13a9b  libstd
*** 159218,159224 ****
  32d4944898c5e42531913c85e4ea9ff6  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
  a5010e1860bebb1e16830ce834c641b9  libstdc++-v3/testsuite/lib/dg-options.exp
  553de715cd949bf28f1c09918d91f7e3  libstdc++-v3/testsuite/lib/gdb-test.exp
! 685da342a84446bbbb35d1f2f93745e4  libstdc++-v3/testsuite/lib/libstdc++.exp
  6acf65c30e8c11621ea821f66462e155  libstdc++-v3/testsuite/lib/prune.exp
  9869c7f65acdb8c56e8bf71f506efa5e  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
  52c743e70b23bd7101609f0386f83fb5  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
--- 159465,159471 ----
  32d4944898c5e42531913c85e4ea9ff6  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
  a5010e1860bebb1e16830ce834c641b9  libstdc++-v3/testsuite/lib/dg-options.exp
  553de715cd949bf28f1c09918d91f7e3  libstdc++-v3/testsuite/lib/gdb-test.exp
! bba3063cad006d1b00715568e9a54c3d  libstdc++-v3/testsuite/lib/libstdc++.exp
  6acf65c30e8c11621ea821f66462e155  libstdc++-v3/testsuite/lib/prune.exp
  9869c7f65acdb8c56e8bf71f506efa5e  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
  52c743e70b23bd7101609f0386f83fb5  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
*************** d243d356509403efc1a51ff4bf67411b  libstd
*** 159596,159601 ****
--- 159843,159849 ----
  40e31845569daf0829a17a44a8ee56a0  libstdc++-v3/testsuite/std/ranges/adaptors/enumerate/1.cc
  190dd5fc0737d90cc62b4b53cc0c3a0e  libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc
  0d0e8a2b6558c1f0cc6951a999f02636  libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
+ 7f8028d43754e38754683e4a2269c04d  libstdc++-v3/testsuite/std/ranges/adaptors/join/for_each_segment.cc
  326917eee6123d6a19d60b706ad52413  libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc
  0d90b9bce22611d61b66f489d7769dd4  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
  7acd154a7a523edcf187f726281ae30b  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split_neg.cc
*************** a0e630899068a41f2ddf2c81cbd386a4  libstd
*** 159618,159623 ****
--- 159866,159872 ----
  84729959634b1ddb951ede66b24e991f  libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc
  c1b23609040e813a09294f54b708a162  libstdc++-v3/testsuite/std/ranges/cartesian_product/1.cc
  6121dbeb75930b73fe5c552392ee5693  libstdc++-v3/testsuite/std/ranges/concat/1.cc
+ 9e4e58beb07febda8159124e7a9fd82a  libstdc++-v3/testsuite/std/ranges/concat/for_each_segment.cc
  474d22d474aece24ab6833bba4c36b37  libstdc++-v3/testsuite/std/ranges/conv/1.cc
  63a2d6de25511179d0f6232f1739a1bd  libstdc++-v3/testsuite/std/ranges/conv/112803.cc
  30b021647d63542228568a19a21f2fd4  libstdc++-v3/testsuite/std/ranges/conv/2_neg.cc
*************** cf4542818b82e245ea144438f5eb223f  libstd
*** 159747,159752 ****
--- 159996,160002 ----
  60231b6bb71cc9175500ebf6d9f92ceb  libstdc++-v3/testsuite/std/time/parse/114240.cc
  a0be85b8053be995a48a4cfec6a5b675  libstdc++-v3/testsuite/std/time/parse/114279.cc
  4547b0badce5668333f08490264f6870  libstdc++-v3/testsuite/std/time/parse/125369.cc
+ 17197e02c1d6a756688f8179fbe1bc25  libstdc++-v3/testsuite/std/time/parse/126364.cc
  5762399d57d6d0d2d2d8cd51ff3f423d  libstdc++-v3/testsuite/std/time/parse/parse.cc
  f16dd4eb7915f1558b6ae75425ab2987  libstdc++-v3/testsuite/std/time/syn_c++20.cc
  921f77c4f14f5fb0bb99573484318421  libstdc++-v3/testsuite/std/time/time_zone/116110.cc
diff -Nrcpad gcc-17-20260727/config/ChangeLog gcc-17-20260802/config/ChangeLog
*** gcc-17-20260727/config/ChangeLog	Mon Jul 27 02:16:03 2026
--- gcc-17-20260802/config/ChangeLog	Sun Aug  2 22:32:05 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-07-31  Pietro Monteiro  <pietro@sociotechnical.xyz>
+ 
+ 	PR bootstrap/103459
+ 	* clang-plugin.m4: Update AC_TRY_COMPILE to AC_COMPILE_IFELSE.
+ 	* gcc-plugin.m4: Likewise.
+ 
  2026-07-12  Manuel Jacob  <me@manueljacob.de>
  
  	* acx.m4 (ACX_CHECK_INSTALLED_TARGET_TOOL): Fix handling of
diff -Nrcpad gcc-17-20260727/config/clang-plugin.m4 gcc-17-20260802/config/clang-plugin.m4
*** gcc-17-20260727/config/clang-plugin.m4	Mon Jul 27 02:16:03 2026
--- gcc-17-20260802/config/clang-plugin.m4	Sun Aug  2 22:32:05 2026
*************** AC_DEFUN([CLANG_PLUGIN_FILE_FOR_TARGET],
*** 73,85 ****
    saved_CC="$CC"
    CC="$COMPILER_FOR_TARGET"
    AC_CACHE_CHECK([for clang for target], clang_target_cv_working, [
!     AC_TRY_COMPILE([
  #ifndef __clang__
  #error Not clang
  #endif
!     ],
!     [],
!     clang_target_cv_working=yes, clang_target_cv_working=no)])
    CC="$saved_CC"
    plugin_file=
    if test $clang_target_cv_working = yes; then
--- 73,85 ----
    saved_CC="$CC"
    CC="$COMPILER_FOR_TARGET"
    AC_CACHE_CHECK([for clang for target], clang_target_cv_working, [
!     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  #ifndef __clang__
  #error Not clang
  #endif
!     ]],
!     [[]])],
!     [clang_target_cv_working=yes], [clang_target_cv_working=no])])
    CC="$saved_CC"
    plugin_file=
    if test $clang_target_cv_working = yes; then
diff -Nrcpad gcc-17-20260727/config/gcc-plugin.m4 gcc-17-20260802/config/gcc-plugin.m4
*** gcc-17-20260727/config/gcc-plugin.m4	Mon Jul 27 02:16:03 2026
--- gcc-17-20260802/config/gcc-plugin.m4	Sun Aug  2 22:32:05 2026
*************** fi
*** 183,193 ****
  saved_CC="$CC"
  CC="$COMPILER_FOR_TARGET"
  AC_CACHE_CHECK([for gcc for target], gcc_target_cv_working, [
!   AC_TRY_COMPILE(
!   [],
!   [],
!   gcc_target_cv_working=yes,
!   gcc_target_cv_working=no)])
  CC="$saved_CC"
  AC_MSG_CHECKING([for target -plugin option])
  plugin_option=
--- 183,193 ----
  saved_CC="$CC"
  CC="$COMPILER_FOR_TARGET"
  AC_CACHE_CHECK([for gcc for target], gcc_target_cv_working, [
!   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
!   [[]],
!   [[]])],
!   [gcc_target_cv_working=yes],
!   [gcc_target_cv_working=no])])
  CC="$saved_CC"
  AC_MSG_CHECKING([for target -plugin option])
  plugin_option=
diff -Nrcpad gcc-17-20260727/contrib/ChangeLog gcc-17-20260802/contrib/ChangeLog
*** gcc-17-20260727/contrib/ChangeLog	Mon Jul 27 02:16:03 2026
--- gcc-17-20260802/contrib/ChangeLog	Sun Aug  2 22:32:05 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-07-29  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* check_GNU_style_lib.py: Use visual tab size rather than
+ 	blindly using 8 spaces as replacement.
+ 
  2026-07-22  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
  	    Arsen Arsenović  <aarsenovic@baylibre.com>
  
diff -Nrcpad gcc-17-20260727/contrib/check_GNU_style_lib.py gcc-17-20260802/contrib/check_GNU_style_lib.py
*** gcc-17-20260727/contrib/check_GNU_style_lib.py	Mon Jul 27 02:16:03 2026
--- gcc-17-20260802/contrib/check_GNU_style_lib.py	Sun Aug  2 22:32:05 2026
*************** class CheckError:
*** 78,87 ****
  class LineLengthCheck:
      def __init__(self):
          self.limit = 80
-         self.expanded_tab = ' ' * ts
  
      def check(self, filename, lineno, line):
!         line_expanded = line.replace('\t', self.expanded_tab)
          if not filename.endswith(".opt") and len(line_expanded) > self.limit:
              return CheckError(filename, lineno,
                  line_expanded[:self.limit]
--- 78,86 ----
  class LineLengthCheck:
      def __init__(self):
          self.limit = 80
  
      def check(self, filename, lineno, line):
!         line_expanded = line.expandtabs(ts)
          if not filename.endswith(".opt") and len(line_expanded) > self.limit:
              return CheckError(filename, lineno,
                  line_expanded[:self.limit]
diff -Nrcpad gcc-17-20260727/gcc/ChangeLog gcc-17-20260802/gcc/ChangeLog
*** gcc-17-20260727/gcc/ChangeLog	Mon Jul 27 02:16:03 2026
--- gcc-17-20260802/gcc/ChangeLog	Sun Aug  2 22:32:05 2026
***************
*** 1,3 ****
--- 1,698 ----
+ 2026-08-01  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386-expand.cc (ix86_expand_vector_init_one_nonzero):
+ 	Improved implementations for V2DI, V2DF, V4SI, V4SF, V4DI and V4DF
+ 	modes.  Return false for V2SI and V2SF modes if the one non-zero
+ 	element isn't the first/lowest.  Improved implementations for V8HI,
+ 	V16QI, V2HI and V8QI modes.
+ 	(nonzero_int_const_count): New helper function to count the
+ 	number of non-zero integer constants in a given array.
+ 	(nonzero_float_const_count): Likewise for SFmode floats.
+ 	(nonzero_double_const_count): Likewise for DFmode doubles.
+ 	(ix86_expand_vector_init_insert): New function to initialize a
+ 	V4SI, V8HI or V16QI vector using a sequence of pinsr[bwd] insns.
+ 	(onevar_perm_p): New local helper function.
+ 	(twovar_perm_p): Likewise.
+ 	(ix86_expand_vector_init_v2di): New mode-specific function.
+ 	(ix86_expand_vector_init_v2df): Likewise.
+ 	(ix86_expand_vector_init_v4si): Likewise.
+ 	(ix86_expand_vector_init_v4sf): Likewise.
+ 	(ix86_expand_vector_init_v8hi): Likewise.
+ 	(ix86_expand_vector_init_v16qi): Likewise.
+ 	(ix86_expand_vector_init_v4di): Likewise.
+ 	(ix86_expand_vector_init_v4df): Likewise.
+ 	(ix86_expand_vector_init_v8si): Likewise.
+ 	(ix86_expand_vector_init_v8sf): Likewise.
+ 	(ix86_expand_vector_init_general): Call the above custom helper
+ 	functions for the relevant modes.
+ 	* config/i386/sse.md (*vec_interleave_lowv4si_sse): New pattern
+ 	for (V4SImode) unpcklps on TARGET_SSE but not TARGET_SSE2.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* ipa-polymorphic-call.cc (csftc_abort_walking_p): Remove useless
+ 	"? true : false".
+ 	* tree-ssa-loop-im.cc (ref_indep_loop_p): Likewise.
+ 	* match.pd (X ==/!= !X is false/true): Replace "? false : true"
+ 	with negation of the condition.
+ 	(((C << x) & D) != 0): Likewise.
+ 	(fold_sign_changed_comparison and fold_widened_comparison): Likewise.
+ 	Remove useless "? true : false".
+ 	(if the second operand is NaN, the result is constant): Replace
+ 	"? false : true" with negation of the condition.
+ 	(__builtin_ctz (x) >= C -> (x & ((1 << C) - 1)) == 0): Likewise.
+ 	Remove useless "? true : false".
+ 	(__builtin_ctz (x) == C -> (x & ((1 << (C + 1)) - 1)) == (1 << C)):
+ 	Replace "? false : true" with negation of the condition.
+ 	(__builtin_ffs (X) == 0 -> X == 0): Remove useless "? true : false".
+ 	(__builtin_ffs (X) > 6 -> X != 0 && (X & 63) == 0): Likewise.
+ 	Replace "? false : true" with negation of the condition.
+ 	* gimple-pretty-print.cc (dump_phi_nodes): Use !(flags & TDF_GIMPLE)
+ 	instead of (flags & TDF_GIMPLE) ? false : true.
+ 
+ 2026-08-01  Pan Li  <pan2.li@intel.com>
+ 	    Claude Opus 5 (1M context)  <noreply@anthropic.com>
+ 
+ 	* config/riscv/vector.md: Leverage Wvr constraint.
+ 
+ 2026-08-01  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126313
+ 	* gimple-fold.cc (follow_outer_ssa_edges): Swap around returning
+ 	for undefined overflow and saving off the global range.
+ 
+ 2026-07-31  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126458
+ 	* match.pd (min/max detection): Fix precision of
+ 	the signed type min.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126504
+ 	* match.pd ((CST1 << A) == CST2 -> A == ctz (CST2) - ctz (CST1)):
+ 	If cand isn't representable in TREE_TYPE (@1), simplify to
+ 	cmp == NE_EXPR.
+ 	(((1 << n) & M) != 0 -> n == log2 (M)): Don't simplify if
+ 	log2 doesn't fit into TREE_TYPE (@0).
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126503
+ 	* gimple-lower-bitint.cc (bitint_large_huge::handle_plus_minus): If
+ 	IFN_ADDC/IFN_SUBC can't be used and rhs1_type is not the limb type
+ 	and is signed, perform both additions or both subtractions in
+ 	unsigned type for the rhs1_type and cast to rhs1_type at the end.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/126497
+ 	* gimplify.cc (recalculate_side_effects): Return for
+ 	tcc_declaration.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126490
+ 	* match.pd ((a & b) == (a ^ b) -> !(a | b)): If @0 has
+ 	integral one bit precision type, use (convert:type ...) around the
+ 	bit_not just in case the comparison has a different result type
+ 	from the type of its operands.  Otherwise do that too but with
+ 	bit_not replaced with bit_xor with one of the appropriate type.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126464
+ 	* range-op-float.cc (float_widen_lhs_range): Remove also_inf
+ 	argument, replace its uses as if it was always true.
+ 	(operator_cast::op1_range): Don't pass third argument to
+ 	float_widen_lhs_range.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126476
+ 	* match.pd (((C << A) & D) != 0 -> A == 0,
+ 	((C << A) & D) == 0 -> A != 0): Fold to false/true if
+ 	c1 - c2 resp. c2 - c1 doesn't fit into TREE_TYPE (@0).
+ 
+ 2026-07-30  Aldy Hernandez  <aldy@quesejoda.com>
+ 
+ 	* value-range-storage.h (class frange_storage): Replace the fixed
+ 	m_pairs[MAX_PAIRS] with a variable-length trailing array and an
+ 	m_max_ranges capacity; declare size and the constructor.
+ 	* value-range-storage.cc (frange_storage::size): New.
+ 	(frange_storage::alloc): Allocate size (r) bytes.
+ 	(frange_storage::frange_storage): New; record m_max_ranges.
+ 	(frange_storage::fits_p): Check m_max_ranges.
+ 
+ 2026-07-30  Aldy Hernandez  <aldy@quesejoda.com>
+ 
+ 	* value-range.cc (frange::union_): Merge both operands' sub-ranges
+ 	via set_pairs instead of widening to the hull.
+ 
+ 2026-07-30  Aldy Hernandez  <aldy@quesejoda.com>
+ 
+ 	* value-range.cc (frange_min, frange_max): New.
+ 	(frange::intersect_nans): Use set_nan.
+ 	(frange::intersect): Meet every sub-range against every other.
+ 
+ 2026-07-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.cc (vect_bb_vectorization_profitable_p):
+ 	Dump SLP graph entries.
+ 
+ 2026-07-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.cc (vectorizable_live_operation): Insert
+ 	on entry when the vector def is a default def or a constant.
+ 
+ 2026-07-30  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122848
+ 	* match.pd (zero_extend & sign_extend -> zero_extend): New pattern.
+ 	(zero_extend | sign_extend -> sign_extend): Likewise.
+ 
+ 2026-07-30  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/109843
+ 	* match.pd ((signbit (x) cmp 0) cmp (signbit (y) cmp 0) ? y : -y):
+ 	New simplification to copysign (y, +-x).
+ 
+ 2026-07-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* config/rs6000/rs6000.cc (rs6000_cost_data::density_test):
+ 	Start BB walk after labels.
+ 
+ 2026-07-30  Bohan Lei  <garthlei@linux.alibaba.com>
+ 
+ 	* config/riscv/autovec-opt.md: Match the new vwmacc-like pattern.
+ 	* config/riscv/genrvv-type-indexer.cc: Support
+ 	DOUBLE_TRUNC_SIGNED type for v[u]int types.
+ 	* config/riscv/riscv-vector-builtins-bases.cc (class vabd): New
+ 	class.
+ 	(class vabs): Ditto.
+ 	(class vabda): Ditto.
+ 	(BASE): Define.
+ 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
+ 	* config/riscv/riscv-vector-builtins-functions.def (REQUIRED_EXTENSIONS):
+ 	Ditto.
+ 	(vabs): Ditto.
+ 	(vabd): Ditto.
+ 	(vabdu): Ditto.
+ 	(vwabda): Ditto.
+ 	(vwabdau): Ditto.
+ 	* config/riscv/riscv-vector-builtins-types.def (DEF_RVV_QU_HU_OPS):
+ 	Define.
+ 	(DEF_RVV_HU_SU_OPS): Ditto.
+ 	* config/riscv/riscv-vector-builtins.cc (qu_hu_ops): Ditto.
+ 	(hu_su_ops): Ditto.
+ 	(ss_args): Ditto.
+ 	(wwss_args): Ditto.
+ 	(qu_hu_vss_ops): Ditto
+ 	(qu_hu_vvv_ops): Ditto
+ 	(hu_su_wwss_ops): Ditto
+ 	(hu_su_wwvv_ops): Ditto
+ 	(u_s_ops): Ditto
+ 	(get_builtin_partition): Add Zvabd case.
+ 	* config/riscv/riscv-vector-builtins.h (enum required_ext):
+ 	Ditto.
+ 	(enum rvv_builtin_partition): Ditto.
+ 	(required_ext_to_isa_name): Ditto.
+ 	(required_extensions_specified): Ditto.
+ 	* config/riscv/riscv_vector.h (__riscv_intrinsic_zvabd): Define.
+ 	* config/riscv/vector.md: Rewrite pred_widen_abd_plus as
+ 	vwmacc-like form.
+ 
+ 2026-07-30  Bohan Lei  <garthlei@linux.alibaba.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vwabda<su><mode>): Limit mode to
+ 	VWEXTI_HS.
+ 	(*vwabda_right<su><mode>): Ditto.
+ 	* config/riscv/autovec.md (<su>abd<mode>3): Limit mode to VI_QH.
+ 	* config/riscv/vector-iterators.md: New iterators.  VWEXTI
+ 	rewritten using VWEXTI_HS and VWEXTI_D.
+ 	* config/riscv/vector.md: Limit modes in Zvabd patterns except
+ 	vabs.
+ 
+ 2026-07-30  Christopher Bazley  <chris.bazley@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_detect_scalar_stmt_subtype):
+ 	Call the new vect_is_truncating_store function and return 0 if
+ 	vect_is_truncating_store returns true.
+ 	(aarch64_sve_adjust_stmt_cost): Call vect_is_truncating_store
+ 	and assign 0 to stmt_cost if vect_is_truncating_store returns
+ 	true.
+ 	* tree-vectorizer.h (vect_is_truncating_store): New function
+ 	analogous to vect_is_extending_load.
+ 
+ 2026-07-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Also
+ 	skip labels.
+ 	* tree-vect-slp.cc (_bb_vec_info::_bb_vec_info): Likewise.
+ 	* tree-vect-data-refs.cc (vect_analyze_early_break_dependences):
+ 	Skip labels.
+ 
+ 2026-07-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.cc (vect_add_slp_permutation): We no longer
+ 	need a copy when the extraction is readily available.
+ 	(vect_schedule_slp_node): Handle default defs or constants
+ 	in vector defs.
+ 
+ 2026-07-30  Sebastian Galindo  <sebastian.galindo143@gmail.com>
+ 	    Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* builtin-types.def (BT_FN_VOID_INT_INT): New definition.
+ 	* omp-builtins.def (BUILT_IN_GOACC_INIT): New builtin for
+ 	init directive.
+ 	(BUILT_IN_GOACC_SHUTDOWN): New builtin for shutdown directive.
+ 	(BUILT_IN_GOACC_SET_DEVICE): New builtin for set directive.
+ 
+ 2026-07-30  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/123311
+ 	* match.pd (min(clz(x), clz(y)) -> clz(x | y)): New pattern.
+ 	(min(ctz(x), ctz(y)) -> ctz(x | y)): Likewise.
+ 
+ 2026-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126464
+ 	* range-op-float.cc (float_widen_lhs_range): Add also_inf argument
+ 	defaulted to false, if true, extend even lb of +inf and ub of -inf.
+ 	(operator_cast::op1_range): Adjust float_widen_lhs_range caller.
+ 
+ 2026-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/126084
+ 	* asan.cc (maybe_instrument_call): Don't instrument
+ 	BUILT_IN_ASAN_REPORT_{LOAD,STORE}{1,2,4,8,16,_N} builtins.
+ 	(initialize_sanitizer_builtins): Use
+ 	(*lang_hooks.types.type_for_mode) (ptr_mode, 0) instead of
+ 	pointer_sized_int_mode for PTRMODE arguments.
+ 	(asan_expand_poison_ifn): Likewise.
+ 
+ 2026-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* match.pd (parity(bswap(x)) is parity(x)): Use BSWAP BITREVERSE
+ 	instead of BUILT_IN_BSWAP16 BUILT_IN_BSWAP32 BUILT_IN_BSWAP64
+ 	BUILT_IN_BSWAP128.
+ 
+ 2026-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126471
+ 	* match.pd (parity(~X) is parity(X)): Only optimize this way
+ 	if element_precision is even, otherwise optimize into parity(X) ^ 1.
+ 
+ 2026-07-30  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	PR target/126449
+ 	* config/riscv/riscv.cc (riscv_legitimize_call_address): Use
+ 	STATIC_CHAIN_REGNUM when a sibcall address is materialized in
+ 	post-reload thunk code.
+ 
+ 2026-07-30  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/invoke.texi (AArch64 Options): Spell CPU in uppercase
+ 	letters.
+ 	(RS/6000 and PowerPC Options): Ditto.
+ 	(S/390 and zSeries Options): Ditto.
+ 	(SPARC Options): Ditto.
+ 
+ 2026-07-30  Avinash Jayakar  <avinashd@linux.ibm.com>
+ 
+ 	PR target/126438
+ 	* config/rs6000/darwin.h (REGISTER_NAMES): Add dmf registers.
+ 
+ 2026-07-30  Aldy Hernandez  <aldy@quesejoda.com>
+ 
+ 	* value-range.h (class frange): Declare set_pairs.  Document the
+ 	sub-range representation and that the no-argument bounds are the
+ 	convex hull.
+ 	* value-range.cc (frange_fusible_p): New.
+ 	(frange::set_pairs): New.
+ 	(frange::flush_denormals_to_zero): Reinstall the endpoints through
+ 	set_pairs.
+ 	(frange::normalize_kind): Note a range with a gap is never varying.
+ 	(frange::verify_range): Check the sub-range invariants.
+ 
+ 2026-07-30  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126455
+ 	* match.pd: Fix up patterns dealing with bitwise AND/OR/XOR
+ 	and comparisons for floating point types.
+ 
+ 2026-07-30  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126470
+ 	* match.pd (`(a != 0) ? (a / b) : 0`): Fix argument
+ 	to expr_no_side_effects_p.
+ 
+ 2026-07-30  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126456
+ 	* match.pd (`a CMP b ? MIN/MAX<a, c> : MIN/MAX<a, d>`): Fix
+ 	order of minmax_from_comparison arguments.
+ 
+ 2026-07-30  Pan Li  <pan2.li@intel.com>
+ 
+ 	* config/riscv/vector.md: Leverage Wvr constraint.
+ 
+ 2026-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/126446
+ 	* gimple-isel.cc (gimple_expand_vec_set_extract_expr): Punt if
+ 	idx doesn't fit into poly_uint64 but is poly_int_tree_p.  Use
+ 	known_ge rather than known_gt for out of bounds check.  Formatting
+ 	fixes.
+ 
+ 2026-07-29  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/126276
+ 	* config/cris/cris.md (*btst<BWD><ZnNNZSET): Handle BWD modes,
+ 	not just SImode.
+ 	(*cbranch<mode>4_btstrq1_<CC>): Likewise.
+ 	(*cbranch<mode>4_btstqb0_<CC>): Likewise.
+ 
+ 2026-07-29  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR rtl-optimization/126434
+ 	* avoid-store-forwarding.cc (process_store_forwarding): Unshare the
+ 	load destination when building the re-extension move.
+ 
+ 2026-07-29  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/126465
+ 	* match.pd: Fix FMS patterns.
+ 
+ 2026-07-29  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	PR tree-optimization/126415
+ 	PR tree-optimization/124545
+ 	* match.pd ((T)A +- CST -> (T)(A +- CST')): Revert.
+ 	* tree-ssa-sccvn.cc (ssa_integral_conversion_op): New function.
+ 	(vn_nary_result_avail_or_insertable_p): New function, split out
+ 	from ...
+ 	(visit_nary_op): ... here.  Handle ((T)p) +- X by looking up
+ 	(p +- X') and converting the result, for X an integer constant
+ 	that narrows and extends back unchanged or a conversion from
+ 	the same narrow type.
+ 
+ 2026-07-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126457
+ 	* tree-vect-loop.cc (vectorizable_reduction): Reject
+ 	operations where not all operands correspond to a SLP
+ 	child early.
+ 
+ 2026-07-29  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* gimplify.cc (gimplify_omp_workshare)
+ 	[OMP_TARGET && OMP_CLAUSE_DEVICE_TYPE_NOHOST]: Use
+ 	'build_string_literal'.  Use 'build_int_cst'.
+ 
+ 2026-07-29  mengqinggang  <mengqinggang@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc (loongarch_output_dwarf_dtprel):
+ 	Remove 0x8000.
+ 
+ 2026-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/126446
+ 	* config/i386/i386-expand.cc (ix86_expand_vector_set): If elt is
+ 	out of bounds, emit a no-op move.
+ 
+ 2026-07-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/126450
+ 	* config/i386/i386.cc (ix86_spill_register_argument_p): Check
+ 	the argument-linked memory used to store local variable.
+ 
+ 2026-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/126447
+ 	* gimple-lower-bitint.cc (gimple_lower_bitint): For
+ 	ifn calls with large/huge _BitInt (ab) SSA_NAME lhs if they
+ 	have such (ab) argument too, force it into temporary SSA_NAME
+ 	for IFN_BSWAP, IFN_BITREVERSE, IFN_UBSAN_CHECK_MUL and, if
+ 	bitint_big_endian, also for IFN_UBSAN_CHECK_{ADD,SUB}.
+ 
+ 2026-07-29  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* config/aarch64/gcc-auto-profile: Probe for arm_spe with
+ 	"perf list pmu" instead of "perf list".
+ 	* configure.ac: Likewise.
+ 	* configure: Regenerate.
+ 
+ 2026-07-29  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* config/s390/s390.cc (s390_canonicalize_comparison): Verify op0
+ 	for an UNSPEC_CC_TO_INT is a register.
+ 
+ 2026-07-29  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* config/i386/i386.md (*addqi_1<nf_name>): Merge the two
+ 	preferred_for_speed attributes into one.
+ 	(*andqi_1<nf_name>): Likewise.
+ 	(*andqi_2_maybe_si): Likewise.
+ 	(*<code>qi_1<nf_name>): Likewise.
+ 	(*notxorqi_1): Likewise.
+ 	(*one_cmplqi2_1): Likewise.
+ 	(*ashlqi3_1<nf_name>): Likewise.
+ 
+ 2026-07-28  Kael Andrew Alonzo Franco  <kaelfandrew@gmail.com>
+ 
+ 	PR tree-optimization/126397
+ 	* tree-ssa-ifcombine.cc (ifcombine_ifandif): Remove
+ 	true condition.
+ 
+ 2026-07-28  Reshma Roy  <Reshma.Roy@amd.com>
+ 
+ 	* config/i386/i386-features.cc (ix86_emit_tls_call): Additional
+ 	check to see if DRAP register is live in basic block with DF_LR_IN.
+ 
+ 2026-07-28  Aldy Hernandez  <aldy@quesejoda.com>
+ 
+ 	* value-range-storage.cc (frange_storage::get_frange): Restore
+ 	every sub-range.
+ 	* value-range-pretty-print.cc (vrange_printer::visit): Print each
+ 	sub-range.
+ 
+ 2026-07-28  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* configure.ac: Set gcc_cv_as_cfi_directive to no on
+ 	hppa*-*-hpux*.
+ 	* configure: Regenerate.
+ 
+ 2026-07-28  Arsen Arsenović  <aarsenovic@baylibre.com>
+ 
+ 	* gcc.cc (execute): Make "signal terminated program" message
+ 	clearer.
+ 
+ 2026-07-28  Aldy Hernandez  <aldy@quesejoda.com>
+ 
+ 	* value-range.h (struct frange_pair): New.
+ 	(class frange): Replace m_min and m_max with m_pairs[MAX_PAIRS]
+ 	and m_num_ranges.  Add MAX_PAIRS, num_pairs, and the indexed
+ 	lower_bound and upper_bound.  Have canonicalize_zeros take an
+ 	frange_pair.
+ 	(frange::lower_bound, frange::upper_bound): Adjust.
+ 	(frange::set_varying, frange::set_undefined, frange::set_nan)
+ 	(frange::known_isfinite, frange::known_isnormal)
+ 	(frange::known_isdenormal_or_zero, frange::maybe_isinf)
+ 	(frange::known_isinf, frange::signbit_p): Adjust.
+ 	* value-range.cc (frange::flush_denormals_to_zero): Adjust.
+ 	(frange::canonicalize_zeros): Take an frange_pair.
+ 	(frange::set, frange::normalize_kind, frange::union_nans)
+ 	(frange::union_, frange::intersect, frange::operator=)
+ 	(frange::operator==, frange::contains_p)
+ 	(frange::internal_singleton_p, frange::singleton_p)
+ 	(frange::verify_range, frange::zero_p): Adjust.
+ 	* value-range-storage.h (class frange_storage): Replace m_min
+ 	and m_max with m_pairs and m_num_ranges.
+ 	* value-range-storage.cc (frange_storage::set_frange): Adjust.
+ 	(frange_storage::get_frange): Adjust.
+ 
+ 2026-07-28  Kael Andrew Alonzo Franco  <kaelfandrew@gmail.com>
+ 
+ 	* match.pd: Combine patterns into five for.
+ 
+ 2026-07-28  Richard Ball  <Richard.Ball@arm.com>
+ 
+ 	* config/aarch64/aarch64-acle-builtins.h
+ 	(TYPES_cvtzn): New function types.
+ 	(TYPES_cvttb): Likewise.
+ 	(cvtzn): Likewise.
+ 	(cvttb): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.cc
+ 	(class svcvtt_impl): New function impl.
+ 	(class svcvtb_impl): Likewise.
+ 	(FUNCTION): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.def
+ 	(svcvtn): New function.
+ 	(svcvtt): Likewise.
+ 	(svcvtb): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.h: Likewise.
+ 	* config/aarch64/aarch64-sve2.md
+ 	(@aarch64_sve2_scvtfb<mode>): New pattern.
+ 	(@aarch64_sve2_scvtflt<mode>): Likewise.
+ 	(@aarch64_sve2_ucvtfb<mode>): Likewise.
+ 	(@aarch64_sve2_ucvtflt<mode>): Likewise.
+ 	(@aarch64_sve2_fcvtzsn<mode>): Likewise.
+ 	(@aarch64_sve2_fcvtzun<mode>): Likewise.
+ 	* config/aarch64/iterators.md
+ 	(b): Ventype changes.
+ 	(VNx16HF): Likewise.
+ 	(VNx16QI): Likewise.
+ 
+ 2026-07-28  Richard Ball  <Richard.Ball@arm.com>
+ 
+ 	* config/aarch64/aarch64-c.cc
+ 	(aarch64_update_cpp_builtins): New target flag.
+ 	* config/aarch64/aarch64-simd-builtins.def: New functions.
+ 	* config/aarch64/aarch64-simd.md
+ 	(sdot_prod<VDQSF:vsi2qi><vczle><vczbe>): New pattern.
+ 	(sdot_lane<VF:isquadop><VDQSF:vsi2qi><vczle><vczbe>): Likewise.
+ 	* config/aarch64/aarch64.h
+ 	(TARGET_F16F32DOT): New target flag.
+ 	* config/aarch64/arm_neon.h
+ 	(target): Add f16f32dot section.
+ 	(__attribute__): New builtin function calls.
+ 	(vdot_f32_f16): Likewise.
+ 	(vdotq_f32_f16): Likewise.
+ 	(vdot_lane_f32_f16): Likewise.
+ 	(vdot_laneq_f32_f16): Likewise.
+ 	(vdotq_lane_f32_f16): Likewise.
+ 	(vdotq_laneq_f32_f16): Likewise.
+ 	* config/aarch64/iterators.md
+ 	(q): New options for isquadop.
+ 	* doc/invoke.texi: Add f16f32dot.
+ 
+ 2026-07-28  Richard Ball  <Richard.Ball@arm.com>
+ 
+ 	* config/aarch64/aarch64-acle-builtins.h
+ 	(TYPES_s_narrow_su): New type array.
+ 	(s_narrow_su): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-base.cc
+ 	(class svdot_impl): Update impl.
+ 	(FUNCTION): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.def
+ 	(REQUIRED_EXTENSIONS): New function.
+ 	(svdot): Likewise.
+ 	(svdot_lane): Likewise.
+ 	* config/aarch64/aarch64-sve2.md
+ 	(<sur>dot_prodvnx4sivnx8hi): Renamed.
+ 	(@<sur>dot_prod<VNx4SI_ONLY:mode><VNx8HI_ONLY:mode>): New Name.
+ 	(@<sur>dot_prod<VNx8HI_ONLY:mode><VNx16QI_ONLY:mode>): New pattern.
+ 	(@aarch64_<sur>dot_prod_lane<VNx8HI_ONLY:mode><VNx16QI_ONLY:mode>): Likewise.
+ 	* config/aarch64/aarch64.h
+ 	(TARGET_SVE2p3): New Target Flag.
+ 	(TARGET_SME2p3): Likewise.
+ 	(TARGET_STREAMING_SME2p3): Likewise.
+ 	(TARGET_SVE2p3_OR_SME2p3): Likewise.
+ 	* doc/invoke.texi: Add sve2p3/sme2p3.
+ 
+ 2026-07-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126404
+ 	* tree-vect-patterns.cc (vect_recog_popcount_clz_ctz_ffs_pattern):
+ 	Avoid recursing to vect_recog_ctz_ffs_pattern with a reduction.
+ 
+ 2026-07-28  H.J. Lu  <hjl.tools@gmail.com>
+ 	    Richard Biener   <rguenther@suse.de>
+ 
+ 	PR middle-end/126410
+ 	* tree-vect-stmts.cc (vectorizable_store): Only commit to
+ 	recorded base alignment when transforming.
+ 	(vectorizable_load): Likewise.
+ 
+ 2026-07-28  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	PR target/126429
+ 	* config/i386/sse.md (avx512fmaskhalfmode): Removed.
+ 	(avx512f_dpbf16ps_<mode>_maskz): Use avx512fmaskmode instead of
+ 	avx512fmaskhalfmode.
+ 	(avx512f_dpbf16ps_<mode>_mask): Ditto.
+ 	(avx512f_dpbf16ps_<mode><maskz_half_name>): Rename to ...
+ 	(avx512f_dpbf16ps_<mode><sd_maskz_name>): ... this. Use
+ 	corresponding sd_mask_op4.
+ 	* config/i386/subst.md (maskz_half): Remove not used pattern.
+ 
+ 2026-07-28  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR middle-end/126405
+ 	* cfgexpand.cc (verify_partition_mem_exprs): New function.
+ 	(pass_expand::execute): Call it.
+ 
+ 2026-07-28  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR middle-end/126405
+ 	* tree-outof-ssa.cc (split_overlapping_partition_decls): Also split
+ 	partitions of PARM_DECLs and RESULT_DECLs.
+ 
+ 2026-07-28  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR middle-end/126405
+ 	* cfgexpand.cc (leader_merge): Rename to...
+ 	(expand_leader_merge): ...this.  Make external.
+ 	* cfgexpand.h (expand_leader_merge): Declare.
+ 	* tree-outof-ssa.cc: Include cfgexpand.h.
+ 	(split_overlapping_partition_decls): Determine the variable of a
+ 	partition from all of its names.
+ 
+ 2026-07-28  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/126433
+ 	* config/i386/i386.md (*bswaphi2_movbe) Use enabled attribute.
+ 	Remove preferred_for_speed and preferred_for_size attributes.
+ 	(*bswaphi2): Ditto.
+ 	(*bswaphisi2_lowpart): Ditto.
+ 
+ 2026-07-28  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* tree.cc (ssa_uniform_vector_p): Look through a
+ 	VEC_DUPLICATE_EXPR SSA definition.
+ 
+ 2026-07-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126417
+ 	* tree-vect-slp.cc (vectorizable_bb_reduc_epilogue): Check
+ 	the total number of lanes instead of the vector type against
+ 	the two-lane special case that doesn't need fold-left reduction
+ 	handling.
+ 
+ 2026-07-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126404
+ 	* tree-vect-slp.cc (vect_analyze_slp_reduc_chain): Fixup
+ 	conversion detection.
+ 
+ 2026-07-27  Kael Andrew Alonzo Franco  <kaelfandrew@gmail.com>
+ 
+ 	* match.pd: Combine two for into one for.
+ 
+ 2026-07-27  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* gimplify.cc (gimplify_scan_omp_clauses): Handle also TREE_LIST
+ 	for num_teams, num_threads, thread_num clauses. Add message clause
+ 	to switch statement.
+ 	* omp-expand.cc (expand_parallel_call, expand_teams_call,
+ 	get_target_arguments): Handle, mostly with 'sorry, unimplemented',
+ 	the 'dims' and 'strict' modifiers and the 'message' clause.
+ 	* omp-low.cc (scan_sharing_clauses): Add message clause to switch.
+ 	(lower_omp_teams): Handle TREE_LIST for num_threads + thread_num.
+ 	* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_MESSAGE.
+ 	* tree-pretty-print.cc (dump_omp_clause): Handle 'message' clause,
+ 	update num_teams, num_threads, thread_num clause printing.
+ 	* tree.cc (omp_clause_num_ops, omp_clause_code_name): Update for
+ 	message clause.
+ 	* tree.h (OMP_CLAUSE_NUM_THREADS_STRICT,
+ 	OMP_CLAUSE_THREAD_LIMIT_STRICT, OMP_CLAUSE_NUM_TEAMS_DIMS,
+ 	OMP_CLAUSE_NUM_THREADS_DIMS, OMP_CLAUSE_THREAD_LIMIT_DIMS,
+ 	OMP_CLAUSE_MESSAGE_EXPR, OMP_CLAUSE_MESSAGE_LEN,
+ 	OMP_CLAUSE_MESSAGE_SEVERITY_WARN): New.
+ 
+ 2026-07-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* doc/sourcebuild.texi (arm_neon_fp16_hw, arm_fp16_alternative_hw):
+ 	Use @code{...} instead of @code(...).
+ 
+ 2026-07-27  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* doc/sourcebuild.texi (arm_fp16_alternative_hw): Document.
+ 	(arm_neon_fp16_hw): Add reference to arm_neon_fp16_ok.
+ 
+ 2026-07-27  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386.cc (ix86_vector_costs): Add
+ 	better_fold_left_reduc_than_p and m_num_fold_left_reduc_lanes.
+ 	(ix86_vector_costs::ix86_vector_costs): Initialize it.
+ 	(ix86_vector_costs::finish_cost): Count and dump fold-left
+ 	reduction lanes.
+ 	(ix86_vector_costs::better_fold_left_reduc_than_p): New function.
+ 	(ix86_vector_costs::better_main_loop_than_p): Use it.
+ 	(ix86_vector_costs::better_epilogue_loop_than_p): Likewise.
+ 
  2026-07-26  Pan Li  <pan2.li@intel.com>
  
  	* config/riscv/riscv-v.cc (riscv_v_widen_constraint_ok): Return
diff -Nrcpad gcc-17-20260727/gcc/DATESTAMP gcc-17-20260802/gcc/DATESTAMP
*** gcc-17-20260727/gcc/DATESTAMP	Mon Jul 27 02:16:03 2026
--- gcc-17-20260802/gcc/DATESTAMP	Sun Aug  2 22:32:05 2026
***************
*** 1 ****
! 20260727
--- 1 ----
! 20260802
diff -Nrcpad gcc-17-20260727/gcc/ada/ChangeLog gcc-17-20260802/gcc/ada/ChangeLog
*** gcc-17-20260727/gcc/ada/ChangeLog	Mon Jul 27 02:16:03 2026
--- gcc-17-20260802/gcc/ada/ChangeLog	Sun Aug  2 22:32:05 2026
***************
*** 1,3 ****
--- 1,27 ----
+ 2026-08-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/126553
+ 	* exp_attr.adb (Build_Record_VS_Func.Validate_Field): Do nothing
+ 	if the field is of an Unchecked_Union type.
+ 
+ 2026-07-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/126379
+ 	* exp_ch6.adb (Insert_Post_Call_Actions): Also deal with attribute
+ 	references as parent node.
+ 
+ 2026-07-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/126482
+ 	* sem_attr.adb (Analyze_Attribute): Treat Unrestricted_Access like
+ 	[Unchecked_]Access when it comes to the overloading of the prefix.
+ 
+ 2026-07-28  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* libgnat/libgnat_common.gpr (Ada_Flags): Remove the -gnatpg.
+ 	(No_Reorder): Remove -O0.
+ 	(Version): Added.
+ 
  2026-07-17  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* sem_attr.adb (Resolve_Attribute) <Attribute_Reduce>: Perform the
diff -Nrcpad gcc-17-20260727/gcc/ada/exp_attr.adb gcc-17-20260802/gcc/ada/exp_attr.adb
*** gcc-17-20260727/gcc/ada/exp_attr.adb	Mon Jul 27 02:16:03 2026
--- gcc-17-20260802/gcc/ada/exp_attr.adb	Sun Aug  2 22:32:05 2026
*************** package body Exp_Attr is
*** 781,789 ****
           if Field_Nam in Name_uObject | Name_uParent | Name_uTag then
              null;
  
!          --  Do not process fields without any scalar components
  
!          elsif not Scalar_Part_Present (Field_Typ) then
              null;
  
           --  Otherwise the field needs to be validated. Use Make_Identifier
--- 781,792 ----
           if Field_Nam in Name_uObject | Name_uParent | Name_uTag then
              null;
  
!          --  Do not process fields without any scalar components, or whose type
!          --  is an unchecked union since we cannot know where they are.
  
!          elsif not Scalar_Part_Present (Field_Typ)
!            or else Is_Unchecked_Union (Field_Typ)
!          then
              null;
  
           --  Otherwise the field needs to be validated. Use Make_Identifier
diff -Nrcpad gcc-17-20260727/gcc/ada/exp_ch6.adb gcc-17-20260802/gcc/ada/exp_ch6.adb
*** gcc-17-20260727/gcc/ada/exp_ch6.adb	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/ada/exp_ch6.adb	Sun Aug  2 22:32:05 2026
*************** package body Exp_Ch6 is
*** 7859,7871 ****
           return;
        end if;
  
!       --  Cases where the call is not a member of a statement list. This also
!       --  includes the cases where the call is an actual in another function
!       --  call, or is an index, or is an operand of an if-expression, i.e. is
!       --  in an expression context.
  
        if not Is_List_Member (N)
!         or else Nkind (Context) in N_Function_Call
                                   | N_If_Expression
                                   | N_Indexed_Component
        then
--- 7859,7872 ----
           return;
        end if;
  
!       --  Cases where the call is not a member of a statement list, or cases
!       --  where the call is an actual in an attribute reference, or in another
!       --  function call, or is an index, or is an operand of an if-expression,
!       --  i.e. is in an expression context.
  
        if not Is_List_Member (N)
!         or else Nkind (Context) in N_Attribute_Reference
!                                  | N_Function_Call
                                   | N_If_Expression
                                   | N_Indexed_Component
        then
diff -Nrcpad gcc-17-20260727/gcc/ada/libgnat/libgnat_common.gpr gcc-17-20260802/gcc/ada/libgnat/libgnat_common.gpr
*** gcc-17-20260727/gcc/ada/libgnat/libgnat_common.gpr	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/ada/libgnat/libgnat_common.gpr	Sun Aug  2 22:32:05 2026
*************** abstract project Libgnat_Common is
*** 6,19 ****
                      "-DSTANDALONE") &
                     External_As_List ("EXTRALIBFLAGS", " ");
     Ada_Flags    := Common_Flags & ("-nostdinc", "-I../adainclude", "-gnatg")
!                    & Split (External ("ADAFLAGS", "-gnatpg"), " ");
     Library_Kind := External ("LIBRARY_KIND", "static");
  
     No_Opt      := ("-O0");
     Force_Debug := ("-g");
     No_Inline   := ("-fno-inline");
     No_Omit     := ("-fno-omit-frame-pointer");
     No_Sibling  := ("-fno-optimize-sibling-calls");
!    No_Reorder  := ("-fno-toplevel-reorder", "-O0");
  
  end Libgnat_Common;
--- 6,20 ----
                      "-DSTANDALONE") &
                     External_As_List ("EXTRALIBFLAGS", " ");
     Ada_Flags    := Common_Flags & ("-nostdinc", "-I../adainclude", "-gnatg")
!                    & Split (External ("ADAFLAGS", ""), " ");
     Library_Kind := External ("LIBRARY_KIND", "static");
+    Version      := External ("LIBRARY_VERSION", "0");
  
     No_Opt      := ("-O0");
     Force_Debug := ("-g");
     No_Inline   := ("-fno-inline");
     No_Omit     := ("-fno-omit-frame-pointer");
     No_Sibling  := ("-fno-optimize-sibling-calls");
!    No_Reorder  := ("-fno-toplevel-reorder");
  
  end Libgnat_Common;
diff -Nrcpad gcc-17-20260727/gcc/ada/sem_attr.adb gcc-17-20260802/gcc/ada/sem_attr.adb
*** gcc-17-20260727/gcc/ada/sem_attr.adb	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/ada/sem_attr.adb	Sun Aug  2 22:32:06 2026
*************** package body Sem_Attr is
*** 3527,3532 ****
--- 3527,3533 ----
          and then Aname /= Name_Code_Address
          and then Aname /= Name_Result
          and then Aname /= Name_Unchecked_Access
+         and then Aname /= Name_Unrestricted_Access
        then
           --  The prefix must be resolvable by itself, without reference to the
           --  attribute. One case that requires special handling is a prefix
diff -Nrcpad gcc-17-20260727/gcc/analyzer/ChangeLog gcc-17-20260802/gcc/analyzer/ChangeLog
*** gcc-17-20260727/gcc/analyzer/ChangeLog	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/analyzer/ChangeLog	Sun Aug  2 22:32:06 2026
***************
*** 1,3 ****
--- 1,13 ----
+ 2026-07-28  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 
+ 	PR analyzer/97114
+ 	* region-model.cc (can_throw_p): improve NOTHROW detection and
+ 	consider the thunk case.
+ 	(region_model::get_fndecl_for_virtual_call): New function.
+ 	(region_model::get_fndecl_for_call): Update to use
+ 	get_fndecl_for_virtual_call on OBJ_TYPE_REF.
+ 	* region-model.h (class region_model): New decl.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* access-diagram.cc: Fix typos.
diff -Nrcpad gcc-17-20260727/gcc/analyzer/region-model.cc gcc-17-20260802/gcc/analyzer/region-model.cc
*** gcc-17-20260727/gcc/analyzer/region-model.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/analyzer/region-model.cc	Sun Aug  2 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 48,53 ****
--- 48,56 ----
  #include "channels.h"
  #include "value-relation.h"
  #include "range-op.h"
+ #include "ipa-utils.h"
+ #include "gimple-iterator.h"
+ #include "gimple-fold.h"
  
  #include "text-art/tree-widget.h"
  
*************** can_throw_p (const gcall &call, tree fnd
*** 2210,2215 ****
--- 2213,2226 ----
  
    if (fndecl)
      {
+       /* If we are checking a thunk, we want to verify whether or not the
+ 	 underlying function is nothrow.  */
+       if (cgraph_node *n = cgraph_node::get (fndecl))
+ 	fndecl = n->function_symbol ()->decl;
+ 
+       if (TREE_NOTHROW (fndecl))
+ 	return false;
+ 
        const function_set fs = get_fns_assumed_not_to_throw ();
        if (fs.contains_decl_p (fndecl))
  	return false;
*************** region_model::can_merge_with_p (const re
*** 6479,6484 ****
--- 6490,6564 ----
    return true;
  }
  
+ /* Attempt to get the fndecl for a virtual call via OBJ_TYPE_REF, or
+    NULL_TREE if it can't be resolved.
+ 
+    Reads the value bound to the object's vptr field (OBJ_TYPE_REF_OBJECT's
+    vfield).
+    If that value has the form "&vtable_decl + constant" (a region_svalue for a
+    _ZTV* decl plus a byte offset), recover the vtable decl and offset and use
+    gimple_get_virt_method_for_vtable, together with OBJ_TYPE_REF_TOKEN, to look
+    up the concrete fndecl in the vtable's initializer.
+ 
+    Relies on the store having bound the vptr field to the _ZTV* instance, so no
+    separate modeling of the object's dynamic type is needed.  */
+ 
+ tree
+ region_model::get_fndecl_for_virtual_call (const_tree obj_type_ref,
+ 					   region_model_context *ctxt)
+ {
+   tree obj = OBJ_TYPE_REF_OBJECT (obj_type_ref);
+   tree obj_type = obj_type_ref_class (obj_type_ref);
+   if (!obj_type)
+     return NULL_TREE;
+   tree vfield = TYPE_VFIELD (obj_type);
+   if (!vfield)
+     return NULL_TREE;
+ 
+   const svalue *obj_sval = get_rvalue (obj, ctxt);
+   const region *obj_reg = deref_rvalue (obj_sval, obj, ctxt);
+   const region *vptr_reg = m_mgr->get_field_region (obj_reg, vfield);
+ 
+   const svalue *vptr_sval = get_store_value (vptr_reg, ctxt);
+   while (const svalue *cast = vptr_sval->maybe_undo_cast ())
+     vptr_sval = cast;
+ 
+   const binop_svalue *b = vptr_sval->dyn_cast_binop_svalue ();
+   if (!b || b->get_op () != POINTER_PLUS_EXPR)
+     return NULL_TREE;
+ 
+   vptr_sval = b->get_arg0 ();
+   const svalue *offset_sval = b->get_arg1 ();
+ 
+   tree offset_const = offset_sval->maybe_get_constant ();
+   if (!offset_const || TREE_CODE (offset_const) != INTEGER_CST)
+     return NULL_TREE;
+   unsigned HOST_WIDE_INT offset = tree_to_uhwi (offset_const);
+ 
+   const region_svalue *vptr = vptr_sval->dyn_cast_region_svalue ();
+   /* Give up if we have a conjured vptr.  */
+   if (!vptr)
+     return NULL_TREE;
+ 
+   tree vtable = vptr->get_pointee ()->maybe_get_decl ();
+   if (!vtable)
+     return NULL_TREE;
+ 
+   unsigned HOST_WIDE_INT token
+     = tree_to_uhwi (OBJ_TYPE_REF_TOKEN (obj_type_ref));
+   bool can_refer;
+   tree vptr_fn
+     = gimple_get_virt_method_for_vtable (token, vtable, offset, &can_refer);
+   if (!vptr_fn || !can_refer)
+     return NULL_TREE;
+ 
+   if (cgraph_node *node = cgraph_node::get_create (vptr_fn))
+     if (const cgraph_node *ultimate = node->ultimate_alias_target ())
+       return ultimate->decl;
+ 
+   return NULL_TREE;
+ }
+ 
  /* Attempt to get the fndecl used at CALL, if known, or NULL_TREE
     otherwise.  */
  
*************** region_model::get_fndecl_for_call (const
*** 6489,6494 ****
--- 6569,6580 ----
    tree fn_ptr = gimple_call_fn (&call);
    if (fn_ptr == NULL_TREE)
      return NULL_TREE;
+ 
+   /* Handle OBJ_TYPE_REF so that we can try to find the definition for a virtual
+      call and treat it like any other call.  */
+   if (TREE_CODE (fn_ptr) == OBJ_TYPE_REF)
+     return get_fndecl_for_virtual_call (fn_ptr, ctxt);
+ 
    const svalue *fn_ptr_sval = get_rvalue (fn_ptr, ctxt);
    if (const region_svalue *fn_ptr_ptr
  	= fn_ptr_sval->dyn_cast_region_svalue ())
diff -Nrcpad gcc-17-20260727/gcc/analyzer/region-model.h gcc-17-20260802/gcc/analyzer/region-model.h
*** gcc-17-20260727/gcc/analyzer/region-model.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/analyzer/region-model.h	Sun Aug  2 22:32:06 2026
*************** class region_model
*** 509,514 ****
--- 509,516 ----
  
    tree get_fndecl_for_call (const gcall &call,
  			    region_model_context *ctxt);
+   tree get_fndecl_for_virtual_call (const_tree fn_ptr,
+ 				    region_model_context *ctxt);
  
    void get_regions_for_current_frame (auto_vec<const decl_region *> *out) const;
    static void append_regions_cb (const region *base_reg,
diff -Nrcpad gcc-17-20260727/gcc/asan.cc gcc-17-20260802/gcc/asan.cc
*** gcc-17-20260727/gcc/asan.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/asan.cc	Sun Aug  2 22:32:06 2026
*************** maybe_instrument_call (gimple_stmt_itera
*** 3185,3190 ****
--- 3185,3202 ----
  	    case BUILT_IN_UNREACHABLE:
  	    case BUILT_IN_UNREACHABLE_TRAP:
  	    case BUILT_IN_TRAP:
+ 	    case BUILT_IN_ASAN_REPORT_LOAD1:
+ 	    case BUILT_IN_ASAN_REPORT_LOAD2:
+ 	    case BUILT_IN_ASAN_REPORT_LOAD4:
+ 	    case BUILT_IN_ASAN_REPORT_LOAD8:
+ 	    case BUILT_IN_ASAN_REPORT_LOAD16:
+ 	    case BUILT_IN_ASAN_REPORT_LOAD_N:
+ 	    case BUILT_IN_ASAN_REPORT_STORE1:
+ 	    case BUILT_IN_ASAN_REPORT_STORE2:
+ 	    case BUILT_IN_ASAN_REPORT_STORE4:
+ 	    case BUILT_IN_ASAN_REPORT_STORE8:
+ 	    case BUILT_IN_ASAN_REPORT_STORE16:
+ 	    case BUILT_IN_ASAN_REPORT_STORE_N:
  	      /* Don't instrument these.  */
  	      return false;
  	    default:
*************** initialize_sanitizer_builtins (void)
*** 3585,3590 ****
--- 3597,3603 ----
    if (builtin_decl_implicit_p (BUILT_IN_ASAN_INIT))
      return;
  
+   tree ptrmode_type = (*lang_hooks.types.type_for_mode) (ptr_mode, 0);
    tree BT_FN_VOID = build_function_type_list (void_type_node, NULL_TREE);
    tree BT_FN_VOID_PTR
      = build_function_type_list (void_type_node, ptr_type_node, NULL_TREE);
*************** initialize_sanitizer_builtins (void)
*** 3598,3604 ****
  				ptr_type_node, ptr_type_node, NULL_TREE);
    tree BT_FN_VOID_PTR_PTRMODE
      = build_function_type_list (void_type_node, ptr_type_node,
! 				pointer_sized_int_node, NULL_TREE);
    tree BT_FN_VOID_INT
      = build_function_type_list (void_type_node, integer_type_node, NULL_TREE);
    tree BT_FN_SIZE_CONST_PTR_INT
--- 3611,3617 ----
  				ptr_type_node, ptr_type_node, NULL_TREE);
    tree BT_FN_VOID_PTR_PTRMODE
      = build_function_type_list (void_type_node, ptr_type_node,
! 				ptrmode_type, NULL_TREE);
    tree BT_FN_VOID_INT
      = build_function_type_list (void_type_node, integer_type_node, NULL_TREE);
    tree BT_FN_SIZE_CONST_PTR_INT
*************** initialize_sanitizer_builtins (void)
*** 3633,3639 ****
    tree BT_FN_VOID_PTR_UINT8_PTRMODE
      = build_function_type_list (void_type_node, ptr_type_node,
  				unsigned_char_type_node,
! 				pointer_sized_int_node, NULL_TREE);
  
    tree BT_FN_BOOL_VPTR_PTR_IX_INT_INT[5];
    tree BT_FN_IX_CONST_VPTR_INT[5];
--- 3646,3652 ----
    tree BT_FN_VOID_PTR_UINT8_PTRMODE
      = build_function_type_list (void_type_node, ptr_type_node,
  				unsigned_char_type_node,
! 				ptrmode_type, NULL_TREE);
  
    tree BT_FN_BOOL_VPTR_PTR_IX_INT_INT[5];
    tree BT_FN_IX_CONST_VPTR_INT[5];
*************** asan_expand_poison_ifn (gimple_stmt_iter
*** 4385,4395 ****
  	{
  	  tree fun = report_error_func (store_p, recover_p, tree_to_uhwi (size),
  					&nargs);
  	  call = gimple_build_call (fun, nargs,
  				    build_fold_addr_expr (shadow_var),
  				    nargs == 2
! 				    ? fold_convert (pointer_sized_int_node,
! 						    size)
  				    : NULL_TREE);
  	}
        gimple_set_location (call, gimple_location (use));
--- 4398,4410 ----
  	{
  	  tree fun = report_error_func (store_p, recover_p, tree_to_uhwi (size),
  					&nargs);
+ 	  tree ptrmode_type
+ 	    = (nargs == 2 ? (*lang_hooks.types.type_for_mode) (ptr_mode, 0)
+ 	       : NULL_TREE);
  	  call = gimple_build_call (fun, nargs,
  				    build_fold_addr_expr (shadow_var),
  				    nargs == 2
! 				    ? fold_convert (ptrmode_type, size)
  				    : NULL_TREE);
  	}
        gimple_set_location (call, gimple_location (use));
diff -Nrcpad gcc-17-20260727/gcc/avoid-store-forwarding.cc gcc-17-20260802/gcc/avoid-store-forwarding.cc
*** gcc-17-20260727/gcc/avoid-store-forwarding.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/avoid-store-forwarding.cc	Sun Aug  2 22:32:06 2026
*************** process_store_forwarding (vec<store_fwd_
*** 444,450 ****
        else
  	move_src = dest;
  
!       rtx move = gen_rtx_SET (SET_DEST (load), move_src);
  
        start_sequence ();
        rtx_insn *insn = emit_insn (move);
--- 444,452 ----
        else
  	move_src = dest;
  
!       /* In the non-elimination case the load insn is retained, so unshare
! 	 its destination to avoid sharing a SUBREG between two insns.  */
!       rtx move = gen_rtx_SET (copy_rtx (SET_DEST (load)), move_src);
  
        start_sequence ();
        rtx_insn *insn = emit_insn (move);
diff -Nrcpad gcc-17-20260727/gcc/builtin-types.def gcc-17-20260802/gcc/builtin-types.def
*** gcc-17-20260727/gcc/builtin-types.def	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/builtin-types.def	Sun Aug  2 22:32:06 2026
*************** DEF_FUNCTION_TYPE_2 (BT_FN_PTR_CONST_PTR
*** 694,699 ****
--- 694,700 ----
  DEF_FUNCTION_TYPE_2 (BT_FN_PTR_CONST_PTR_INT, BT_PTR, BT_CONST_PTR, BT_INT)
  DEF_FUNCTION_TYPE_2 (BT_FN_VOID_ULONGLONG_ULONGLONG,
  		     BT_VOID, BT_ULONGLONG, BT_ULONGLONG)
+ DEF_FUNCTION_TYPE_2 (BT_FN_VOID_INT_INT, BT_VOID, BT_INT, BT_INT)
  
  DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR)
  
diff -Nrcpad gcc-17-20260727/gcc/cfgexpand.cc gcc-17-20260802/gcc/cfgexpand.cc
*** gcc-17-20260727/gcc/cfgexpand.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cfgexpand.cc	Sun Aug  2 22:32:06 2026
*************** gimple_assign_rhs_to_tree (gimple *stmt)
*** 155,164 ****
  /* Choose either CUR or NEXT as the leader DECL for a partition.
     Prefer ignored decls, to simplify debug dumps and reduce ambiguity
     out of the same user variable being in multiple partitions (this is
!    less likely for compiler-introduced temps).  */
  
! static tree
! leader_merge (tree cur, tree next)
  {
    if (cur == NULL || cur == next)
      return next;
--- 155,165 ----
  /* Choose either CUR or NEXT as the leader DECL for a partition.
     Prefer ignored decls, to simplify debug dumps and reduce ambiguity
     out of the same user variable being in multiple partitions (this is
!    less likely for compiler-introduced temps).  Also used by out-of-SSA
!    to work out which variable a partition will be given.  */
  
! tree
! expand_leader_merge (tree cur, tree next)
  {
    if (cur == NULL || cur == next)
      return next;
*************** set_rtl (tree t, rtx x)
*** 251,257 ****
        else
  	gcc_unreachable ();
  
!       tree next = skip ? cur : leader_merge (cur, SSAVAR (t) ? SSAVAR (t) : t);
  
        if (cur != next)
  	{
--- 252,259 ----
        else
  	gcc_unreachable ();
  
!       tree next
! 	= skip ? cur : expand_leader_merge (cur, SSAVAR (t) ? SSAVAR (t) : t);
  
        if (cur != next)
  	{
*************** stack_protect_return_slot_p ()
*** 2460,2465 ****
--- 2462,2492 ----
    return false;
  }
  
+ /* Verify that partitions which claim to be the same object really are at the
+    same address.  MEM_EXPR-based disambiguation identifies a location by a
+    MEM_EXPR base and an offset from it, so two stack slots carrying one
+    MEM_EXPR read as a single object, which lets an access to one be redirected
+    to the other.  out-of-SSA keeps them apart, see the comment above
+    split_overlapping_partition_decls.  */
+ 
+ static void
+ verify_partition_mem_exprs (void)
+ {
+   hash_map<tree, rtx> slots;
+   for (unsigned i = 0; i < num_var_partitions (SA.map); i++)
+     {
+       rtx x = SA.partition_to_pseudo[i];
+       if (!x || !MEM_P (x) || !MEM_EXPR (x))
+ 	continue;
+       bool existed;
+       rtx &known = slots.get_or_insert (MEM_EXPR (x), &existed);
+       if (!existed)
+ 	known = x;
+       else
+ 	gcc_assert (rtx_equal_p (XEXP (known, 0), XEXP (x, 0)));
+     }
+ }
+ 
  /* Expand all variables used in the function.  */
  
  static rtx_insn *
*************** pass_expand::execute (function *fun)
*** 7170,7175 ****
--- 7197,7205 ----
        adjust_one_expanded_partition_var (name);
      }
  
+   if (flag_checking)
+     verify_partition_mem_exprs ();
+ 
    /* Clean up RTL of variables that straddle across multiple
       partitions, and check that the rtl of any PARM_DECLs that are not
       cleaned up is that of their default defs.  */
diff -Nrcpad gcc-17-20260727/gcc/cfgexpand.h gcc-17-20260802/gcc/cfgexpand.h
*** gcc-17-20260727/gcc/cfgexpand.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cfgexpand.h	Sun Aug  2 22:32:06 2026
*************** extern tree gimple_assign_rhs_to_tree (g
*** 24,29 ****
--- 24,30 ----
  extern HOST_WIDE_INT estimated_stack_frame_size (struct cgraph_node *);
  extern void expand_remove_edge (edge);
  extern void set_parm_rtl (tree, rtx);
+ extern tree expand_leader_merge (tree, tree);
  
  
  #endif /* GCC_CFGEXPAND_H */
diff -Nrcpad gcc-17-20260727/gcc/cobol/ChangeLog gcc-17-20260802/gcc/cobol/ChangeLog
*** gcc-17-20260727/gcc/cobol/ChangeLog	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/ChangeLog	Sun Aug  2 22:32:06 2026
***************
*** 1,3 ****
--- 1,171 ----
+ 2026-08-01  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* compare.cc (numeric_compare): Change comment.
+ 	* genutil.cc (get_power_of_ten): Likewise.
+ 
+ 2026-08-01  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* copybook.h (_COPYBOOK_H): #include <sys/types.h> for macOS.
+ 	* lexio.h (struct filespan_t): Mollify cppcheck with a const variable.
+ 	* parse.y: Adjust a dbgmsg() call.
+ 	* util.cc (cobol_filename): Likewise.
+ 
+ 2026-07-31  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* scan.l: Add value pattern.
+ 
+ 2026-07-30  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* parse.y (dialect_ok): Enable messages without a quoted tagline.
+ 	* scan.l: Add SECTION pattern so it is not handled by general NAME pattern.
+ 
+ 2026-07-30  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/120804
+ 	* cbldiag.h (enum cbl_diag_id_t): Add MfRedefinesFirst.
+ 	* cobol1.cc (cobol_langhook_handle_option): Handle option.
+ 	* gcobol.1: Document option.
+ 	* lang-specs.h: Add -Wredefines-first to spec string.
+ 	* lang.opt: Add option.
+ 	* messages.cc: Add option to dialect map.
+ 	* parse.y: Error message depends on option value.
+ 
+ 2026-07-30  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/126495
+ 	PR cobol/126496
+ 	* gcobol.1: Update manual to reflect new syntax.
+ 	* parse.y: Allow void sentence and increment s/r expected count to 7.
+ 	* scan.l: Lex $END-IF, optionally, as $END.
+ 
+ 2026-07-30  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/126393
+ 	* symbols.cc (symbol_redefines_root): Describe purpose in comment.
+ 	(symbol_explicitly_redefines): Remove function.
+ 	(symbols_update): Remove over-constrained validation.
+ 
+ 2026-07-29  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* parse_ante.h (parser_move_carefully): Use ordinary %s in message.
+ 
+ 2026-07-29  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* cbldiag.h (enum cbl_diag_id_t): Add MfSetNumeric and sort alphabetically.
+ 	* cobol1.cc (cobol_langhook_handle_option): Handle OPT_Wset_numeric.
+ 	* gcobol.1: Document Wset-numeric option.
+ 	* lang-specs.h: Add Wset-numeric to specs string.
+ 	* lang.opt: Add Wset-numeric option.
+ 	* messages.cc: Add MfSetNumeric to mf and gnu dialects, and sort alphabetically.
+ 	* parse_ante.h (parser_move_carefully): Report diagnotic per dialect.
+ 
+ 2026-07-29  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* parse.y: Report LPAREN token as '(', not ')'.
+ 	* scan.l: Remove newline exclusion from LPAREN pattern.
+ 	* scan_ante.h (rsearch): Helper function to ensure c++11 compatibility.
+ 	(trim_location): Use rsearch function.
+ 	(is_quote): New inline function to test quotiness.
+ 	(skip_string): New function to find end of string literal.
+ 	(is_refmod): Stay in bounds.
+ 	* util.cc (gcc_location_set): Decrease debug message verbosity.
+ 
+ 2026-07-28  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* parse_ante.h (set_real_from_capacity): Use symbol_field_capacity_set().
+ 	* symbols.cc (calculate_capacity): Whitespace.
+ 	(symbol_field_capacity_set): New function.
+ 	* symbols.h (symbol_field_capacity_set): Declare function.
+ 
+ 2026-07-28  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* parse.y: Remove value78 nonterminal, introduce
+ 	level_constant nonterminal for all constants.  Move validation
+ 	to level_constant.  Remove other special handling for Level 78.
+ 	* scan_post.h (prelex): Correct Level 78/88 typo.
+ 
+ 2026-07-28  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* cbldiag.h (location_dump): Only declare function.
+ 	* parse.y: Update numeric PICTURE parse, and better diagnostic.
+ 	* scan.l: Rewrite numeric and numeric-edited PICTURE scan.
+ 	* scan_ante.h (myless): Use "unique" local variable name.
+ 	(length_upto): New function.
+ 	(is_name_char): New function.
+ 	(length_of_name): New function.
+ 	(trim_location): Set location endpoint by addition, not subtraction.
+ 	(ndigit): Allow 'V' at beginning or end of PICTURE string.
+ 	* util.cc (gcc_location_set): Indentation, and more verbose debugging.
+ 	(yy_flex_debug): Undefine tree.h symbol.
+ 	(location_dump): Define function in .cc file, now public.
+ 
+ 2026-07-28  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* lexio.cc (cdftext::free_form_reference_format): Assign from char(0x8D).
+ 
+ 2026-07-27  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* lexio.cc (cdftext::free_form_reference_format): Use new sanitize_nul function.
+ 	* lexio.h (struct filespan_t): Define sanitize_nul().
+ 
+ 2026-07-27  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* cbldiag.h (cdf_push_source_format): Remove declaration.
+ 	(cdf_pop_source_format): Same.
+ 	* cdf-copy.cc (is_fixed_format): Same.
+ 	(is_reference_format): Same.
+ 	(esc): Pass new format parameter and use new 0x8D Debug indicator.
+ 	* cdf.y: Ignore SOURCE FORMAT directive (handled in lexio.cc).
+ 	* lexio.cc (cdf_source_format): Delete function definition.
+ 	(source_format_t::infer): Same.
+ 	(is_fixed_format): Same.
+ 	(is_reference_format): Same.
+ 	(left_margin): Same.
+ 	(right_margin): Same.
+ 	(include_debug): Assume fixed format.
+ 	(set_debug): Same.
+ 	(continues_at): Remove unused function.
+ 	(indicated): Move function to source_format_t class.
+ 	(source_format_t::indicated): Replace ::indicated().
+ 	(filespan_t::tab_check): Delete function.
+ 	(check_push_pop_directive): Add format stack parameter.
+ 	(check_source_format_directive): Same.
+ 	(esc): Add format parameter and use 0x8D indicator.
+ 	(parse_replace_pairs): Add format parameter.
+ 	(parse_copy_directive): Same.
+ 	(parse_replace_text): Same.
+ 	(parse_replace_directive): Same.
+ 	(cdftext::lex_open): Instantiate and pass format stack.
+ 	(cdftext::free_form_reference_format): Add format stack parameter and 0x8D indicator.
+ 	(cobol_set_indicator_column): Stash command-line option.
+ 	(cdftext::process_file): Add format stack parameter.
+ 	* lexio.h (struct filespan_t): Remove tab_check() function.
+ 	(class source_format_t): Lift into header file to share with cdf-copy.cc.
+ 	(class cdftext): Add several functions, formerly file-scope.
+ 	(free_form_reference_format): Move to source_format_t.
+ 	* parse.y: Slightly simplify parse of WITH DEBUGGING MODE.
+ 	* scan.l: Recognize new 0x8D indicator.
+ 	* scan_ante.h (cobol_set_indicator_column): Remove declaration.
+ 	* util.cc (class cdf_directives_t): Remove source format support.
+ 	(cobol_set_indicator_column): Move function to lexio.cc.
+ 	(cdf_source_format): Delete function.
+ 	(cdf_push_source_format): Same.
+ 	(cdf_pop_source_format): Same.
+ 	* util.h (class source_format_t): Move to lexio.h.
+ 
+ 2026-07-27  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* genapi.cc (array_of_long_long): Improved creation.
+ 	(gg_array_of_size_t): Likewise.
+ 	(gg_array_of_field_pointers): Likewise.
+ 	(gg_array_of_uchar_p): Likewise.
+ 	(parser_sort): Use modified routine.
+ 	(parser_file_sort): Likewise.
+ 	(parser_file_merge): Likewise.
+ 	* gengen.cc (gg_array_of_size_t): Improved creation.
+ 	* gengen.h (gg_array_of_field_pointers): Likewise.
+ 	(gg_array_of_size_t): Likewise.
+ 
  2026-07-25  Jakub Jelinek  <jakub@redhat.com>
  
  	* symbols.cc (symbols_dump): Use HOST_SIZE_T_PRINT_UNSIGNED instead
diff -Nrcpad gcc-17-20260727/gcc/cobol/cbldiag.h gcc-17-20260802/gcc/cobol/cbldiag.h
*** gcc-17-20260727/gcc/cobol/cbldiag.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/cbldiag.h	Sun Aug  2 22:32:06 2026
*************** void cdf_push_call_convention();
*** 81,93 ****
  void cdf_push_current_tokens();
  void cdf_push_dictionary();
  void cdf_push_enabled_exceptions();
- void cdf_push_source_format();
  
  void cdf_pop();
  void cdf_pop_call_convention();
  void cdf_pop_current_tokens();
  void cdf_pop_dictionary();
- void cdf_pop_source_format();
  void cdf_pop_enabled_exceptions();
  
  size_t current_program_index();
--- 81,91 ----
*************** enum cbl_diag_id_t : uint64_t {
*** 205,213 ****
    MfAnyLength, 
    MfMoveIndex, 
    MfMovePointer, 
    MfReturningNum,
!   MfUsageTypename,
    MfTrailing,
    
    Par78CdfDefinedW,
    ParIconvE, 
--- 203,213 ----
    MfAnyLength, 
    MfMoveIndex, 
    MfMovePointer, 
+   MfRedefinesFirst,
    MfReturningNum,
!   MfSetNumeric,
    MfTrailing,
+   MfUsageTypename,
    
    Par78CdfDefinedW,
    ParIconvE, 
*************** void gcc_location_set( const cbl_loc_t&
*** 288,309 ****
  
  void gcc_location_dump();
  
! // tree.h defines yy_flex_debug as a macro because options.h
! #if ! defined(yy_flex_debug)
! template <typename LOC>
! static void
! location_dump( const char func[], int line, const char tag[], const LOC& loc) {
!   extern int yy_flex_debug; // cppcheck-suppress shadowVariable
!   if( yy_flex_debug ) {
!     const char *detail = gcobol_getenv("update_location");
!     if( detail ) { // cppcheck-suppress knownConditionTrueFalse
!       fprintf(stderr, "%s:%d: %s location (%d,%d) to (%d,%d) '%c'\n",
!               func, line, tag,
!               loc.first_line, loc.first_column, loc.last_line, loc.last_column, detail[0]);
!       if( *detail == '2' ) gcc_location_dump();
!     }
!   }
! }
! #endif // defined(yy_flex_debug)
! 
  #endif
--- 288,294 ----
  
  void gcc_location_dump();
  
! void
! location_dump( const char func[], int line, const char tag[],
!                const cbl_loc_t& loc, bool force = false);
  #endif
diff -Nrcpad gcc-17-20260727/gcc/cobol/cdf-copy.cc gcc-17-20260802/gcc/cobol/cdf-copy.cc
*** gcc-17-20260727/gcc/cobol/cdf-copy.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/cdf-copy.cc	Sun Aug  2 22:32:06 2026
***************
*** 76,83 ****
   */
  
  const char * cobol_filename();
- bool is_fixed_format();
- bool is_reference_format();
  
  struct line_t {
    char *p, *pend;
--- 76,81 ----
*************** verify_bounds( size_t pos, size_t size,
*** 123,136 ****
   * directive.
   */
  const char *
! esc( size_t len, const char input[] ) {
    static const char space[]  = "([,;]?[[:space:]])+";
!   static const char spaceD[] = "(\n {6}D" "|" "[,;]?[[:space:]])+";
    static char buffer[64 * 1024];
    char *p = buffer;
    const char *eoinput = input + len;
  
!   const char *spacex = is_reference_format()? spaceD : space;
  
    for( const char *s=input; *s && s < eoinput; s++ ) {
      *p = '\0';
--- 121,134 ----
   * directive.
   */
  const char *
! esc( size_t len, const char input[], bool is_fixed_format ) {
    static const char space[]  = "([,;]?[[:space:]])+";
!   static const char spaceD[] = "(\n {6}\x8D" "|" "[,;]?[[:space:]])+";
    static char buffer[64 * 1024];
    char *p = buffer;
    const char *eoinput = input + len;
  
!   const char *spacex = is_fixed_format? spaceD : space;
  
    for( const char *s=input; *s && s < eoinput; s++ ) {
      *p = '\0';
diff -Nrcpad gcc-17-20260727/gcc/cobol/cdf.y gcc-17-20260802/gcc/cobol/cdf.y
*** gcc-17-20260727/gcc/cobol/cdf.y	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/cdf.y	Sun Aug  2 22:32:06 2026
*************** cdf_push:       CDF_PUSH cdf_stackable {
*** 513,519 ****
                    case parser::token::YDF_CALL_CONVENTION: cdf_push_call_convention(); break;
                    case parser::token::YDF_CDF_DEFINE: 	cdf_push_dictionary(); break;
                    case parser::token::YDF_COBOL_WORDS: 	cdf_push_current_tokens(); break;
!                   case parser::token::YDF_SOURCE_FORMAT:	cdf_push_source_format(); break;
                    default: cdf_unreachable(); 
                    }
                  }
--- 513,519 ----
                    case parser::token::YDF_CALL_CONVENTION: cdf_push_call_convention(); break;
                    case parser::token::YDF_CDF_DEFINE: 	cdf_push_dictionary(); break;
                    case parser::token::YDF_COBOL_WORDS: 	cdf_push_current_tokens(); break;
!                   case parser::token::YDF_SOURCE_FORMAT:
                    default: cdf_unreachable(); 
                    }
                  }
*************** cdf_pop:        CDF_POP cdf_stackable {
*** 524,530 ****
                    case parser::token::YDF_CALL_CONVENTION: cdf_pop_call_convention(); break;
                    case parser::token::YDF_CDF_DEFINE: 	cdf_pop_dictionary(); break;
                    case parser::token::YDF_COBOL_WORDS: 	cdf_pop_current_tokens(); break;
!                   case parser::token::YDF_SOURCE_FORMAT:	cdf_pop_source_format(); break; 
                    default: cdf_unreachable(); 
                    }
                  }
--- 524,530 ----
                    case parser::token::YDF_CALL_CONVENTION: cdf_pop_call_convention(); break;
                    case parser::token::YDF_CDF_DEFINE: 	cdf_pop_dictionary(); break;
                    case parser::token::YDF_COBOL_WORDS: 	cdf_pop_current_tokens(); break;
!                   case parser::token::YDF_SOURCE_FORMAT:
                    default: cdf_unreachable(); 
                    }
                  }
diff -Nrcpad gcc-17-20260727/gcc/cobol/cobol1.cc gcc-17-20260802/gcc/cobol/cobol1.cc
*** gcc-17-20260727/gcc/cobol/cobol1.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/cobol1.cc	Sun Aug  2 22:32:06 2026
*************** cobol_langhook_handle_option (size_t sco
*** 629,634 ****
--- 629,638 ----
            cobol_warning(MfMovePointer, move_pointer, warning_as_error);
            return true;
  
+         case OPT_Wset_numeric:
+           cobol_warning(MfSetNumeric, set_numeric, warning_as_error);
+           return true;
+ 
          case OPT_Wlevel_78:
            cobol_warning(MfLevel78, level_78, warning_as_error);
            return true;
*************** cobol_langhook_handle_option (size_t sco
*** 637,642 ****
--- 641,650 ----
            cobol_warning(MfAnyLength, cobol_any_length, warning_as_error);
            return true;
  
+         case OPT_Wredefines_first:
+           cobol_warning(MfRedefinesFirst, redefines_first, warning_as_error);
+           return true;
+ 
          case OPT_Wreturning_number:
            cobol_warning(MfReturningNum, returning_number, warning_as_error);
            return true;
diff -Nrcpad gcc-17-20260727/gcc/cobol/compare.cc gcc-17-20260802/gcc/cobol/compare.cc
*** gcc-17-20260727/gcc/cobol/compare.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/compare.cc	Sun Aug  2 22:32:06 2026
*************** numeric_compare(tree        &left,
*** 389,395 ****
       So consider comparing a 32.0 to a 1.9.  To normalize them, I would have to
       multiply the 32.0 by 10^9, which would mean I would be comparing a
       32.9 to a 1.9 .  This is mathematically correct; the problem is that an
!      int128 can hold only only 38 digits, and thus can't handle the 41 digits
       of a 32.9.
  
       So, in this routine I make sure the two values can be normalized into no
--- 389,395 ----
       So consider comparing a 32.0 to a 1.9.  To normalize them, I would have to
       multiply the 32.0 by 10^9, which would mean I would be comparing a
       32.9 to a 1.9 .  This is mathematically correct; the problem is that an
!      __int128 can hold only only 38 digits, and thus can't handle the 41 digits
       of a 32.9.
  
       So, in this routine I make sure the two values can be normalized into no
diff -Nrcpad gcc-17-20260727/gcc/cobol/copybook.h gcc-17-20260802/gcc/cobol/copybook.h
*** gcc-17-20260727/gcc/cobol/copybook.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/copybook.h	Sun Aug  2 22:32:06 2026
***************
*** 33,38 ****
--- 33,40 ----
  #else
  #define _COPYBOOK_H
  
+ #include <sys/types.h> // where macOS defines ino_t
+ 
  #if defined(CDF_Y)
  #define gcc_assert(x) assert(x)
  void gcc_unreachable(void);
diff -Nrcpad gcc-17-20260727/gcc/cobol/gcobol.1 gcc-17-20260802/gcc/cobol/gcobol.1
*** gcc-17-20260727/gcc/cobol/gcobol.1	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/gcobol.1	Sun Aug  2 22:32:06 2026
***************
*** 80,88 ****
--- 80,90 ----
  .Op Fl Wno-procedure-not-found
  .Op Fl Wno-procedure-pointer
  .Op Fl Wno-replace-error
+ .Op Fl Wno-redefines-first
  .Op Fl Wno-returning-number
  .Op Fl Wno-segment-error
  .Op Fl Wno-segment-negative
+ .Op Fl Wno-set-numeric
  .Op Fl Wno-stop-number
  .Op Fl Wno-stray-indicator
  .Op Fl Wno-usage-typename
*************** to indicate GnuCOBOL syntax, generally c
*** 490,495 ****
--- 492,500 ----
  to indicate MicroFocus syntax:
  .Bl -bullet -compact
  .It
+ CDF
+ .Sy $IF , $ELSE , $END , Sy $END-IF , Li and Sy $SET
+ .It
  .Sy BINARY-LONG-LONG
  .It
  .Sy CALL ... GIVING
*************** used with
*** 504,521 ****
  .It
  .Sy INSPECT ... TRAILING
  .It
  .Sy OCCURS
  at
  .Sy "LEVEL 01"
  .It
- .Sy LEVEL 78
- constants
- .It
  .Sy MOVE POINTER
  .It
  .Sy RETURNING
  <number>
  .It
  .Sy USAGE IS TYPENAME
  .El
  .El
--- 509,528 ----
  .It
  .Sy INSPECT ... TRAILING
  .It
+ .Sy LEVEL 78
+ constants
+ .It
  .Sy OCCURS
  at
  .Sy "LEVEL 01"
  .It
  .Sy MOVE POINTER
  .It
  .Sy RETURNING
  <number>
  .It
+ .Sy SET NUMERIC
+ .It
  .Sy USAGE IS TYPENAME
  .El
  .El
*************** Warn if CDF defines Level 78 constant.
*** 634,640 ****
  .It Fl Wno-move-index
  Warn if MOVE INDEX is used.
  .It Fl Wno-move-pointer
! Warn if MOVE POINTER is used.
  .It Fl Wno-returning-number
  Warn if RETURNING <number> is used.
  .It Fl Wno-usage-typename
--- 641,652 ----
  .It Fl Wno-move-index
  Warn if MOVE INDEX is used.
  .It Fl Wno-move-pointer
! Warn if
! MOVE POINTER is used.
! .It Fl Wno-set-numeric
! Warn if SET is used with NUMERIC target.
! .It Fl Wno-redefines-first
! Warn if REDEFINES does not appear immediately after NAME.
  .It Fl Wno-returning-number
  Warn if RETURNING <number> is used.
  .It Fl Wno-usage-typename
diff -Nrcpad gcc-17-20260727/gcc/cobol/genutil.cc gcc-17-20260802/gcc/cobol/genutil.cc
*** gcc-17-20260727/gcc/cobol/genutil.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/genutil.cc	Sun Aug  2 22:32:06 2026
*************** get_power_of_ten(int n)
*** 1036,1042 ****
      };
    if( n < 0 || n>MAX_POWER*2)     // The most we can handle is 10**38
      {
!     fprintf(stderr, "Trying to raise 10 to %d as an int128, which we can't do.\n", n);
      fprintf(stderr, "The problem is in %s.\n", __func__);
      abort();
      }
--- 1036,1042 ----
      };
    if( n < 0 || n>MAX_POWER*2)     // The most we can handle is 10**38
      {
!     fprintf(stderr, "Trying to raise 10 to %d as an __int128, which we can't do.\n", n);
      fprintf(stderr, "The problem is in %s.\n", __func__);
      abort();
      }
diff -Nrcpad gcc-17-20260727/gcc/cobol/lang-specs.h gcc-17-20260802/gcc/cobol/lang-specs.h
*** gcc-17-20260727/gcc/cobol/lang-specs.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/lang-specs.h	Sun Aug  2 22:32:06 2026
***************
*** 90,98 ****
--- 90,100 ----
  	"%{Wprocedure-not-found} %{Wno-procedure-not-found} "
  	"%{Wprocedure-pointer} %{Wno-procedure-pointer} "
  	"%{Wreplace-error} %{Wno-replace-error} "
+ 	"%{Wredefines-first} %{Wno-redefines-first} "
  	"%{Wreturning-number} %{Wno-returning-number} "
  	"%{Wsegment-error} %{Wno-segment-error} "
  	"%{Wsegment-negative} %{Wno-segment-negative} "
+ 	"%{Wset-numeric} %{Wno-set-numeric} "
  	"%{Wstop-number} %{Wno-stop-number} "
  	"%{Wstray-indicator} %{Wno-stray-indicator} "
  	"%{Wusage-typename} %{Wno-usage-typename} "
diff -Nrcpad gcc-17-20260727/gcc/cobol/lang.opt gcc-17-20260802/gcc/cobol/lang.opt
*** gcc-17-20260727/gcc/cobol/lang.opt	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/lang.opt	Sun Aug  2 22:32:06 2026
*************** Wmove-pointer
*** 174,184 ****
--- 174,194 ----
  Cobol Warning Var(move_pointer, 1) Init(1)
  Warn if MOVE POINTER is used.
  
+ ; MfRedefinesFirst
+ Wredefines-first
+ Cobol Warning Var(redefines_first, 1) Init(1)
+ Warn if REDEFINES does not appear immediately after NAME.
+ 
  ; MfReturningNum
  Wreturning-number
  Cobol Warning Var(returning_number, 1) Init(1)
  Warn if RETURNING <number> is used.
  
+ ; MfSetNumeric, 
+ Wset-numeric
+ Cobol Warning Var(set_numeric, 1) Init(1)
+ Warn if SET is used with NUMERIC target.
+ 
  ; MfUsageTypename
  Wusage-typename
  Cobol Warning Var(usage_typename, 1) Init(1)
diff -Nrcpad gcc-17-20260727/gcc/cobol/lexio.cc gcc-17-20260802/gcc/cobol/lexio.cc
*** gcc-17-20260727/gcc/cobol/lexio.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/lexio.cc	Sun Aug  2 22:32:06 2026
***************
*** 38,64 ****
  
  extern int yy_flex_debug;
  
- source_format_t& cdf_source_format();
- 
- void
- source_format_t::infer( const char *bol, bool want_reference_format ) {
-   if( bol ) {
-     left = 7;
-     if( want_reference_format ) {
-       right = 73;
-     }
-   }
-   dbgmsg("%s:%d: %s format detected", __func__, __LINE__,
-          description());
- }
- 
- 
- // public source format test functions
- bool is_fixed_format() { return cdf_source_format().is_fixed(); }
- bool is_reference_format() { return cdf_source_format().is_reffmt(); }
- 
- static bool debug_mode = false;
- 
  /*
   * The "debug mode" is a little odd, because we have to make sure a
   * leading "D" doesn't start the verb DISPLAY (for example).  If
--- 38,43 ----
*************** static bool debug_mode = false;
*** 68,81 ****
   *
   * So, the line is excluded if: fixed format and not debug mode
   * Else, it's included.
! */
! 
! static inline int left_margin() {
!   return cdf_source_format().left_margin();
! }
! static inline int right_margin() {
!   return cdf_source_format().right_margin();
! }
  
  /*
   * When setting the indicator column explicitly:
--- 47,54 ----
   *
   * So, the line is excluded if: fixed format and not debug mode
   * Else, it's included.
!  */
! static bool debug_mode = false;
  
  /*
   * When setting the indicator column explicitly:
*************** static inline int right_margin() {
*** 85,92 ****
  void
  cobol_set_indicator_column( int column );
  
! bool include_debug()      { return is_fixed_format() && debug_mode; }
! bool set_debug( bool tf ) { return debug_mode = tf && is_fixed_format(); }
  
  static bool nonblank( const char ch ) { return !isblank(ch); }
  
--- 58,65 ----
  void
  cobol_set_indicator_column( int column );
  
! bool include_debug()      { return debug_mode; }
! bool set_debug( bool tf ) { return debug_mode = tf; }
  
  static bool nonblank( const char ch ) { return !isblank(ch); }
  
*************** start_of_line( char *bol, char *eol ) {
*** 97,115 ****
    return bol;
  }
  
- static inline char *
- continues_at( char *bol, char *eol ) {
-   if( cdf_source_format().is_free() ) return NULL;  // cannot continue in free format
-   bol += left_margin();
-   if( *bol != '-' ) return NULL; // not a continuation line
-   return start_of_line(++bol, eol);
- }
- 
  // Return pointer to indicator column. Test ch if provided.
  // NULL means no indicator column or tested value not present.
! static inline char *
! indicated( char *bol, const char *eol, char ch = '\0' ) {
!   if( cdf_source_format().left_margin() == 0 && *bol != '*' ) {
      return NULL;  // no indicator column in free format, except for comments
    }
    gcc_assert(bol != NULL);
--- 70,80 ----
    return bol;
  }
  
  // Return pointer to indicator column. Test ch if provided.
  // NULL means no indicator column or tested value not present.
! char *
! source_format_t::indicated( char *bol, const char *eol, char ch ) {
!   if( left_margin() == 0 && *bol != '*' ) {
      return NULL;  // no indicator column in free format, except for comments
    }
    gcc_assert(bol != NULL);
*************** count_newlines( const char *beg, const c
*** 150,169 ****
    return std::count(beg, end, '\n');
  }
  
- size_t
- filespan_t::tab_check( const char *src, const char *esrc ) {
-   static const char tab = '\t';
- 
-   const char *data = src + left_margin();
-   if( data < esrc ) { // not a blank line
-     const char *tab_at = std::find(src, data, tab);
-     if( tab_at < data ) {
-       return (tab_at - src) + 1;
-     }
-   }
-   return 0;
- }
- 
  static const auto extended_icase = regex::extended | regex::icase;
  
  std::stack< std::list<replace_t> > replace_directives;
--- 115,120 ----
*************** recognize_replacements( filespan_t mfile
*** 321,327 ****
  }
  
  static void
! check_push_pop_directive( filespan_t& mfile ) {
    char eol = '\0';
    const char *p = std::find(mfile.cur, mfile.eol, '>');
    if( ! (p < mfile.eol && p[1] == *p ) ) return;
--- 272,279 ----
  }
  
  static void
! check_push_pop_directive( filespan_t& mfile,
!                           source_format_stack_t& source_format ) {
    char eol = '\0';
    const char *p = std::find(mfile.cur, mfile.eol, '>');
    if( ! (p < mfile.eol && p[1] == *p ) ) return;
*************** check_push_pop_directive( filespan_t& mf
*** 368,374 ****
        push? cdf_push_dictionary() : cdf_pop_dictionary();
        break;
      case 'S': // SOURCE FORMAT
!       push? cdf_push_source_format() : cdf_pop_source_format();
        break;
      case 'T': // TURN
        push? cdf_push_enabled_exceptions() : cdf_pop_enabled_exceptions();
--- 320,333 ----
        push? cdf_push_dictionary() : cdf_pop_dictionary();
        break;
      case 'S': // SOURCE FORMAT
!       if( push ) {
!         auto format = source_format.top();
!         source_format.push(format);
!       } else {
!         source_format.pop();
!         dbgmsg("%s: POP: format now %s", __func__,
!                source_format.top().description());
!       }
        break;
      case 'T': // TURN
        push? cdf_push_enabled_exceptions() : cdf_pop_enabled_exceptions();
*************** check_push_pop_directive( filespan_t& mf
*** 382,388 ****
  }
  
  static void
! check_source_format_directive( filespan_t& mfile ) {
    char eol = '\0';
    const char *p = std::find(mfile.cur, mfile.eol, '>');
    if( ! (p < mfile.eol && p[1] == *p ) ) return;
--- 341,348 ----
  }
  
  static void
! check_source_format_directive( filespan_t& mfile,
!                                source_format_t& source_format ) {
    char eol = '\0';
    const char *p = std::find(mfile.cur, mfile.eol, '>');
    if( ! (p < mfile.eol && p[1] == *p ) ) return;
*************** check_source_format_directive( filespan_
*** 405,414 ****
      gcc_assert(cm.size() > 1);
      switch( cm[3].length() ) {
      case 4:
!       cobol_set_indicator_column(0);
        break;
      case 5:
!       cobol_set_indicator_column(-7);
        break;
      default:
        gcc_assert(cm[3].length() == 4 || cm[3].length() == 5);
--- 365,374 ----
      gcc_assert(cm.size() > 1);
      switch( cm[3].length() ) {
      case 4:
!       source_format.indicator_column_set(0);
        break;
      case 5:
!       source_format.indicator_column_set(-7);
        break;
      default:
        gcc_assert(cm[3].length() == 4 || cm[3].length() == 5);
*************** check_source_format_directive( filespan_
*** 417,425 ****
  
      dbgmsg( "%s:%d: %s format set, on line " HOST_SIZE_T_PRINT_UNSIGNED,
              __func__, __LINE__,
!             cdf_source_format().description(),
              (fmt_size_t)mfile.lineno() );
!     char *bol = cdf_source_format().is_fixed()? mfile.cur : const_cast<char*>(cm[0].first);
      gcc_assert(cm[0].second <= mfile.eol);
      erase_line(bol, const_cast<char*>(cm[0].second));
    }
--- 377,385 ----
  
      dbgmsg( "%s:%d: %s format set, on line " HOST_SIZE_T_PRINT_UNSIGNED,
              __func__, __LINE__,
!             source_format.description(),
              (fmt_size_t)mfile.lineno() );
!     char *bol = source_format.is_fixed()? mfile.cur : const_cast<char*>(cm[0].first);
      gcc_assert(cm[0].second <= mfile.eol);
      erase_line(bol, const_cast<char*>(cm[0].second));
    }
*************** is_program_id( const char *p, const char
*** 478,484 ****
    return false;
  }
  
! const char * esc( size_t len, const char input[] );
  
  static bool
  is_word_char( char ch ) {
--- 438,444 ----
    return false;
  }
  
! const char * esc( size_t len, const char input[], bool is_fixed_format );
  
  static bool
  is_word_char( char ch ) {
*************** parse_replacing_pair( const char *stmt,
*** 811,822 ****
  }
  
  static std::pair<std::list<replace_t>, char *>
! parse_replace_pairs( const char *stmt, const char *estmt, bool is_copy_stmt ) {
    std::list<replace_t> pairs ;
  
    static const char     any_ch[] = "";
!   ////   const char    word_ch[] = "[[:alnum:]$_-]";
!   static const char nonword_ch[] = "[^[:alnum:]\"'$_-]";
  
    // Pattern to find one REPLACE pseudo-text pair
    static const char replace_pattern[] =
--- 771,783 ----
  }
  
  static std::pair<std::list<replace_t>, char *>
! parse_replace_pairs( const char *stmt, const char *estmt,
!                      bool is_copy_stmt, const source_format_t& source_format ) {
    std::list<replace_t> pairs ;
  
    static const char     any_ch[] = "";
!   // lexio replaces 'D' with 0x8D for a Debug indicator, which scan.l recognizes. 
!   static const char nonword_ch[] = "[^[:alnum:]\x8D\"'$_-]";
  
    // Pattern to find one REPLACE pseudo-text pair
    static const char replace_pattern[] =
*************** parse_replace_pairs( const char *stmt, c
*** 873,879 ****
      if( !is_word_char(before.p[0]) )     befter[0] = any_ch;
      if( !is_word_char(before.pend[-1]) ) befter[1] = any_ch;
  
!     const char *src = esc(before.size(), before.p);
  
      if( parsed.leading_trailing.size() > 0 ) {
        switch( TOUPPER(parsed.leading_trailing.p[0]) ) {
--- 834,840 ----
      if( !is_word_char(before.p[0]) )     befter[0] = any_ch;
      if( !is_word_char(before.pend[-1]) ) befter[1] = any_ch;
  
!     const char *src = esc(before.size(), before.p, source_format.is_fixed());
  
      if( parsed.leading_trailing.size() > 0 ) {
        switch( TOUPPER(parsed.leading_trailing.p[0]) ) {
*************** location_in( const filespan_t& mfile, co
*** 953,959 ****
  }
  
  static copy_descr_t
! parse_copy_directive( filespan_t& mfile ) {
    static const char *most_recent_buffer;
    static span_t copy_stmt(mfile.eodata, mfile.eodata);
  
--- 914,920 ----
  }
  
  static copy_descr_t
! parse_copy_directive( filespan_t& mfile, const source_format_t& source_format ) {
    static const char *most_recent_buffer;
    static span_t copy_stmt(mfile.eodata, mfile.eodata);
  
*************** parse_copy_directive( filespan_t& mfile
*** 1037,1043 ****
  
      if( replacing ) {
        std::pair<std::list<replace_t>, char*>
!         result = parse_replace_pairs( cm[0].second, mfile.eodata, true );
  
        const std::list<replace_t>& replacements(result.first);
        outcome.parsed = (outcome.nreplace = replacements.size()) > 0;
--- 998,1004 ----
  
      if( replacing ) {
        std::pair<std::list<replace_t>, char*>
!         result = parse_replace_pairs( cm[0].second, mfile.eodata, true, source_format );
  
        const std::list<replace_t>& replacements(result.first);
        outcome.parsed = (outcome.nreplace = replacements.size()) > 0;
*************** parse_copy_directive( filespan_t& mfile
*** 1060,1066 ****
      }
  
      mfile.eol = const_cast<char*>(copy_stmt.pend);
!     mfile.next_line();
    }
    return outcome;
  }
--- 1021,1027 ----
      }
  
      mfile.eol = const_cast<char*>(copy_stmt.pend);
!     mfile.next_line(source_format.is_reffmt());
    }
    return outcome;
  }
*************** parse_replace_last_off( const filespan_t
*** 1104,1110 ****
  }
  
  static span_t
! parse_replace_text( filespan_t& mfile ) {
    static const char pattern[] =
      /* 0 */    "REPLACE"
      /* 1 */    "([[:space:]]+ALSO)?"
--- 1065,1071 ----
  }
  
  static span_t
! parse_replace_text( filespan_t& mfile, const source_format_t& source_format ) {
    static const char pattern[] =
      /* 0 */    "REPLACE"
      /* 1 */    "([[:space:]]+ALSO)?"
*************** parse_replace_text( filespan_t& mfile )
*** 1166,1172 ****
    span_t replace_stmt(cm[0].first, cm[0].second);
  
    std::pair<std::list<replace_t>, char*>
!         result = parse_replace_pairs(replace_stmt.p, replace_stmt.pend, false);
    const std::list<replace_t>& replacements(result.first);
    replace_directives.push( replacements );
  
--- 1127,1133 ----
    span_t replace_stmt(cm[0].first, cm[0].second);
  
    std::pair<std::list<replace_t>, char*>
!     result = parse_replace_pairs(replace_stmt.p, replace_stmt.pend, false, source_format);
    const std::list<replace_t>& replacements(result.first);
    replace_directives.push( replacements );
  
*************** parse_replace_text( filespan_t& mfile )
*** 1190,1196 ****
  }
  
  static span_t
! parse_replace_directive( filespan_t& mfile ) {
    static const char *most_recent_buffer, *next_directive;
    static bool off_coming_up;
    static const char pattern[] =
--- 1151,1157 ----
  }
  
  static span_t
! parse_replace_directive( filespan_t& mfile, const source_format_t& source_format ) {
    static const char *most_recent_buffer, *next_directive;
    static bool off_coming_up;
    static const char pattern[] =
*************** parse_replace_directive( filespan_t& mfi
*** 1232,1238 ****
      if( off_coming_up ) {
        parse_replace_last_off(mfile);
      } else {
!       erased = parse_replace_text(mfile);
      }
    }
    return erased;
--- 1193,1199 ----
      if( off_coming_up ) {
        parse_replace_last_off(mfile);
      } else {
!       erased = parse_replace_text(mfile, source_format);
      }
    }
    return erased;
*************** inode_of( int fd ) {
*** 1509,1514 ****
--- 1470,1489 ----
  
  FILE *
  cdftext::lex_open( const char filename[] ) {
+   /*
+    * The source_format stack should be instantiated here with one element, the
+    * source format that lexio determined from the command-line options and
+    * heuristics.  The recently added command_line_indicator_column is probably
+    * redundant.
+    */
+ 
+   source_format_stack_t source_format;
+   source_format_t format;  // free-form by default
+   if( command_line_indicator_column ) {
+     format.indicator_column_set(command_line_indicator_column);
+   }
+   source_format.push(format);
+ 
    int input = open_input( filename );
    if( input == -1 ) return NULL;
  
*************** cdftext::lex_open( const char filename[]
*** 1524,1533 ****
      }
      dbgmsg("lex_open: including %zu of %zu: '%s'", ++n, included_files.size(), name);
      cobol_filename(name, inode_of(input));
!     filespan_t mfile( free_form_reference_format( input ) );
  
      please_push_filename = true;
!     process_file( mfile, output );
  
      dbgmsg("lex_open: processed %zu of %zu: '%s'", n, included_files.size(), name);
      cobol_filename_restore(); // process_file restores only for COPY
--- 1499,1508 ----
      }
      dbgmsg("lex_open: including %zu of %zu: '%s'", ++n, included_files.size(), name);
      cobol_filename(name, inode_of(input));
!     filespan_t mfile( free_form_reference_format( input, source_format ) );
  
      please_push_filename = true;
!     process_file( mfile, output, source_format );
  
      dbgmsg("lex_open: processed %zu of %zu: '%s'", n, included_files.size(), name);
      cobol_filename_restore(); // process_file restores only for COPY
*************** cdftext::lex_open( const char filename[]
*** 1536,1544 ****
    dbgmsg("lex_open: '%s'", filename);
  
    cobol_filename(filename, inode_of(input));
!   filespan_t mfile( free_form_reference_format( input ) );
  
!   process_file( mfile, output );
  
    if( lexer_echo() ) {
      echo_input(output, filename);
--- 1511,1519 ----
    dbgmsg("lex_open: '%s'", filename);
  
    cobol_filename(filename, inode_of(input));
!   filespan_t mfile( free_form_reference_format( input, source_format ) );
  
!   process_file( mfile, output, source_format );
  
    if( lexer_echo() ) {
      echo_input(output, filename);
*************** infer_reference_format( const char *bol,
*** 1738,1744 ****
  }
  
  filespan_t
! cdftext::free_form_reference_format( int input ) {
    filespan_t source_buffer = map_file(input);
    filespan_t mfile(source_buffer);
  
--- 1713,1720 ----
  }
  
  filespan_t
! cdftext::free_form_reference_format( int input,
!                                      source_format_stack_t& format ) {
    filespan_t source_buffer = map_file(input);
    filespan_t mfile(source_buffer);
  
*************** cdftext::free_form_reference_format( int
*** 1757,1790 ****
    /*
     * Infer source code format.
     */
!   if( cdf_source_format().inference_pending()  ) {
      const char *bol = valid_sequence_area(mfile.data, mfile.eodata);
      if( bol ) {
!       cdf_source_format().infer( bol, infer_reference_format(bol, mfile.eodata) );
      }
    }
  
!   while( mfile.next_line() ) {
!     check_push_pop_directive(mfile);
!     check_source_format_directive(mfile);
      remove_inline_comment(mfile.cur, mfile.eol);
  
      if( mfile.is_blank_line() ) continue;
  
!     char *indcol = indicated(mfile.cur, mfile.eol); // true only for fixed
      //                                              // format
  
!     if( is_fixed_format() && !indcol ) { // short line
        erase_source(mfile.cur, mfile.eol);
      }
  
      if( indcol ) {
        // Set to blank columns 1-6 and anything past the right margin.
        erase_source(mfile.cur, indcol);
!       if( is_reference_format() ) {
!         if( mfile.cur + right_margin() <  mfile.eol ) {
!           auto p = std::find(mfile.cur + right_margin(), mfile.eol, '\n');
!           erase_source(mfile.cur + right_margin(), p);
          }
        }
  
--- 1733,1766 ----
    /*
     * Infer source code format.
     */
!   if( format.top().inference_pending()  ) {
      const char *bol = valid_sequence_area(mfile.data, mfile.eodata);
      if( bol ) {
!       format.top().infer( bol, infer_reference_format(bol, mfile.eodata) );
      }
    }
  
!   while( mfile.next_line(format.top().is_reffmt()) ) {
!     check_push_pop_directive(mfile, format);
!     check_source_format_directive(mfile, format.top());
      remove_inline_comment(mfile.cur, mfile.eol);
  
      if( mfile.is_blank_line() ) continue;
  
!     char *indcol = format.top().indicated(mfile.cur, mfile.eol); // true only for fixed
      //                                              // format
  
!     if( format.top().is_fixed() && !indcol ) { // short line
        erase_source(mfile.cur, mfile.eol);
      }
  
      if( indcol ) {
        // Set to blank columns 1-6 and anything past the right margin.
        erase_source(mfile.cur, indcol);
!       if( format.top().is_reffmt() ) {
!         if( mfile.cur + format.top().right_margin() <  mfile.eol ) {
!           auto p = std::find(mfile.cur + format.top().right_margin(), mfile.eol, '\n');
!           erase_source(mfile.cur + format.top().right_margin(), p);
          }
        }
  
*************** cdftext::free_form_reference_format( int
*** 1798,1805 ****
           */
          {
            char *pend = mfile.eol;
!           if( right_margin() ) {
!             pend = std::min(mfile.cur + right_margin(), mfile.eol);
            }
            // The appended segment has no newline because the erased line retains
            // one.
--- 1774,1781 ----
           */
          {
            char *pend = mfile.eol;
!           if( format.top().right_margin() ) {
!             pend = std::min(mfile.cur + format.top().right_margin(), mfile.eol);
            }
            // The appended segment has no newline because the erased line retains
            // one.
*************** cdftext::free_form_reference_format( int
*** 1809,1833 ****
              erase_source(p, mfile.eol);
            }
          }
          continue;
        case SPACE:
          break;
        case 'D':
          /*
!          * Pass the D to the lexer, because WITH DEBUGGING MODE is
           * parsed in the parser.  This assumes too strict a rule: that
           * all the source is in one format. In fact, DEBUGGING MODE
           * could be set on, and >>SOURCE-FORMAT can switch back and
           * forth. To solve that, we'd have to parse WITH DEBUGGING MODE
           * in free_form_reference_format(), which is a lot of work for
           * an obsolete feature.
           */
          break;
        case '*':
        case '/':
          if( indcol < mfile.eol - 1 ) {
            erase_source(indcol, mfile.eol);
          }
          continue;
        case '$':
          if( lexio_dialect_mf() ) {
--- 1785,1815 ----
              erase_source(p, mfile.eol);
            }
          }
+         gcc_assert( ! mfile.line_contains_nul() );
          continue;
        case SPACE:
          break;
        case 'D':
          /*
!          * Pass the D to the lexer as 0x8D, because WITH DEBUGGING MODE is
           * parsed in the parser.  This assumes too strict a rule: that
           * all the source is in one format. In fact, DEBUGGING MODE
           * could be set on, and >>SOURCE-FORMAT can switch back and
           * forth. To solve that, we'd have to parse WITH DEBUGGING MODE
           * in free_form_reference_format(), which is a lot of work for
           * an obsolete feature.
+          *
+          * Use the weird input value to signify fixed format, information
+          * otherwise not available and not significant to the parser.
           */
+         if( format.top().is_fixed() ) *indcol = char(0x8D);
          break;
        case '*':
        case '/':
          if( indcol < mfile.eol - 1 ) {
            erase_source(indcol, mfile.eol);
          }
+         mfile.sanitize_nul();
          continue;
        case '$':
          if( lexio_dialect_mf() ) {
*************** cdftext::free_form_reference_format( int
*** 1845,1851 ****
          break;
        }
      }
!     current.line.update(mfile.cur, mfile.eol, right_margin());
      current.lineno = mfile.lineno();
    } // next line
  
--- 1827,1834 ----
          break;
        }
      }
!     mfile.sanitize_nul();
!     current.line.update(mfile.cur, mfile.eol, format.top().right_margin());
      current.lineno = mfile.lineno();
    } // next line
  
*************** cdftext::free_form_reference_format( int
*** 1853,1858 ****
--- 1836,1850 ----
  }
  
  bool cdftext::please_push_filename = false;
+ int cdftext::command_line_indicator_column = 0;
+ 
+ void
+ cobol_set_indicator_column( int column ) {
+   cdftext::command_line_indicator_column = column;
+   source_format_t local;
+   local.indicator_column_set(column);
+   dbgmsg("%s: format now %s", __func__, local.description());
+ }
  
  void
  cdftext::output_push_directive( const char filename[],
*************** cdftext::output_push_directive( const ch
*** 1898,1904 ****
   * cobol filename and yylineno.
   */
  void
! cdftext::process_file( filespan_t mfile, int output, bool second_pass ) {
    static size_t nfiles = 0;
    
    __gnu_cxx::stdio_filebuf<char> outbuf(fdopen(output, "a"), std::ios::out);
--- 1890,1899 ----
   * cobol filename and yylineno.
   */
  void
! cdftext::process_file( filespan_t mfile, int output, 
!                        source_format_stack_t source_format, 
!                        bool second_pass )
! {
    static size_t nfiles = 0;
    
    __gnu_cxx::stdio_filebuf<char> outbuf(fdopen(output, "a"), std::ios::out);
*************** cdftext::process_file( filespan_t mfile,
*** 1926,1934 ****
    }
  
    // parse CDF directives
!   while( mfile.next_line() ) {
      yylloc = mfile.as_location();
!     auto copied = parse_copy_directive(mfile);
      if( copied.parsed && copied.fd != -1 ) {
        gcc_assert(copied.erased_lines.p);
        output_push_directive( cobol_filename(), ofs );
--- 1921,1929 ----
    }
  
    // parse CDF directives
!   while( mfile.next_line(source_format.top().is_reffmt()) ) {
      yylloc = mfile.as_location();
!     auto copied = parse_copy_directive(mfile, source_format.top());
      if( copied.parsed && copied.fd != -1 ) {
        gcc_assert(copied.erased_lines.p);
        output_push_directive( cobol_filename(), ofs );
*************** cdftext::process_file( filespan_t mfile,
*** 1938,1944 ****
               __func__, __LINE__, (fmt_size_t)mfile.lineno(),
               copybook.source(), copybook.current()->fd);
        copy.in = copybook.current()->fd;
!       copy.mfile = free_form_reference_format( copy.in );
  
        if( copied.partial_line.size() ) {
          std::copy(copied.partial_line.p, copied.partial_line.pend, ofs);
--- 1933,1939 ----
               __func__, __LINE__, (fmt_size_t)mfile.lineno(),
               copybook.source(), copybook.current()->fd);
        copy.in = copybook.current()->fd;
!       copy.mfile = free_form_reference_format( copy.in, source_format );
  
        if( copied.partial_line.size() ) {
          std::copy(copied.partial_line.p, copied.partial_line.pend, ofs);
*************** cdftext::process_file( filespan_t mfile,
*** 1947,1961 ****
  
        if( copied.nreplace == 0 ) {
          // process with extant REPLACE directive
!         process_file(copy.mfile, output);
        } else {
          copy.out = open_output();
          // process to intermediate, applying COPY ... REPLACING
!         process_file(copy.mfile, copy.out);
          copy.mfile = map_file(copy.out);
          replace_directives.pop();
          // process intermediate with extant REPLACE directive
!         process_file(copy.mfile, output, true);
          // COPY statement is erased from input if processed successfully
        }
        /*
--- 1942,1956 ----
  
        if( copied.nreplace == 0 ) {
          // process with extant REPLACE directive
!         process_file(copy.mfile, output, source_format );
        } else {
          copy.out = open_output();
          // process to intermediate, applying COPY ... REPLACING
!         process_file(copy.mfile, copy.out, source_format);
          copy.mfile = map_file(copy.out);
          replace_directives.pop();
          // process intermediate with extant REPLACE directive
!         process_file(copy.mfile, output, source_format, true);
          // COPY statement is erased from input if processed successfully
        }
        /*
*************** cdftext::process_file( filespan_t mfile,
*** 1973,1979 ****
        dbgmsg("%s:%d: %lu blank lines erased", __func__, __LINE__, n);
      }
  
!     auto erased = parse_replace_directive(mfile);
      if( erased.p ) {
        std::copy_if( erased.p, erased.pend, ofs,
                      []( char ch ) { return ch == '\n'; } );
--- 1968,1974 ----
        dbgmsg("%s:%d: %lu blank lines erased", __func__, __LINE__, n);
      }
  
!     auto erased = parse_replace_directive(mfile, source_format.top());
      if( erased.p ) {
        std::copy_if( erased.p, erased.pend, ofs,
                      []( char ch ) { return ch == '\n'; } );
diff -Nrcpad gcc-17-20260727/gcc/cobol/lexio.h gcc-17-20260802/gcc/cobol/lexio.h
*** gcc-17-20260727/gcc/cobol/lexio.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/lexio.h	Sun Aug  2 22:32:06 2026
*************** struct filespan_t : public bytespan_t {
*** 152,160 ****
     */
    bool was_quote72() const { return iline == line_quote72 + 1; }
  
!   size_t next_line() {
      // Before advancing, mark the current line as ending in a quote, if true.
!     if( is_reference_format() && 72 <= line_length() ) {
        if( isquote(cur[71]) ) { line_quote72 = iline; }
      }
  
--- 152,177 ----
     */
    bool was_quote72() const { return iline == line_quote72 + 1; }
  
!   bool line_contains_nul() const {
!     const char *nul = std::find(cur, eol, '\0');
!     return nul != eol;
!   }
! 
!   void sanitize_nul() {
!     char *nul = std::find(cur, eol, '\0');
!     if( nul != eol ) {
!       int icol = nul - cur; // cppcheck-suppress shadowVariable
!       fprintf(stderr, "%s:%d:%d: error: NUL character detected in input\n%*s\n",
!               cobol_filename(), int(iline), ++icol,
!               int(eol - cur)-1, cur);
!       parse_error_inc();
!       std::replace(nul, eol, '\0', SPACE);
!     }
!   }
! 
!   size_t next_line(bool is_reference_format) {
      // Before advancing, mark the current line as ending in a quote, if true.
!     if( is_reference_format && 72 <= line_length() ) {
        if( isquote(cur[71]) ) { line_quote72 = iline; }
      }
  
*************** struct filespan_t : public bytespan_t {
*** 164,182 ****
  
      eol = std::find(cur, eodata, '\n');
  
-     char *nul = std::find(cur, eol, '\0');
-     if( nul != eol ) {
-       if( std::any_of( nul, eodata,
-                        []( char ch ) { return ch != '\0'; } ) ) {
-         int icol = nul - cur; // cppcheck-suppress shadowVariable
-         fprintf(stderr, "%s:%d:%d: error: NUL character detected in input\n%*s\n",
-                 cobol_filename(), int(iline + 1), ++icol,
-                 int(eol - cur), cur);
-         parse_error_inc();
-         std::replace(nul, eol, '\0', SPACE);
-       }
-     }
- 
      if( eol < eodata ) {
        ++eol;
        ++iline;
--- 181,186 ----
*************** struct filespan_t : public bytespan_t {
*** 187,194 ****
  
    size_t line_length() const { return eol - cur; }
  
-   static size_t tab_check( const char *src, const char *esrc );
- 
    bool is_blank_line() const {
      auto p = std::find_if( cur, eol, []( char ch ) { return !fisspace(ch); } );
      return p == eol;
--- 191,196 ----
*************** struct replace_t {
*** 281,293 ****
    }
  };
  
  #include <cstdio>
- #include <list>
  
  class cdftext {
    static bool please_push_filename;
!   static filespan_t  free_form_reference_format( int fd );
!   static void process_file( filespan_t, int output, bool second_pass = false );
  
    static void output_push_directive( const char filename[],
                                      std::ostream_iterator<char>& ofs);
--- 283,364 ----
    }
  };
  
+ /*
+  * The default source format, whether free or fixed, is determined
+  * heuristically by examining the PROGRAM-ID line, if it exists, in the first
+  * input file. If that file does not have such a line, the default is free
+  * format.  Else the format is set to fixed if anything appears on that line
+  * that would prohibit parsing it as free format,
+  */
+ class source_format_t {
+   bool first_file, explicitly;
+   int left, right;
+ public:
+   source_format_t()
+     : first_file(true), explicitly(false), left(0), right(0)
+   {}
+   void indicator_column_set( int column ) {
+     explicitly = true;
+     if( column == 0 ) right = 0;
+     if( column < 0 ) {
+       column = -column;
+       right = 73;
+     }
+     left = column;
+   }
+   
+   char * indicated( char *bol, const char *eol, char ch = '\0' );
+ 
+   bool inference_pending() {
+     bool tf = first_file && !explicitly;
+     first_file = false;
+     return tf;
+   }
+ 
+   inline bool is_fixed() const { return left == 7; }
+   inline bool is_reffmt() const { return is_fixed() && right == 73; }
+   inline bool is_free() const { return ! is_fixed(); }
+   
+   const char * description() const {
+     if( is_reffmt() ) return "REFERENCE";
+     if( is_fixed() ) return "FIXED";
+     if( is_free() ) return "FREE";
+     gcc_unreachable();
+   }    
+ 
+   inline int left_margin() {
+     return left == 0? left : left - 1;
+   }
+   inline int right_margin() {
+     return right == 0? right : right - 1;
+   }
+ 
+   void infer( const char *bol, bool want_reference_format ) {
+     if( bol ) {
+       left = 7;
+       if( want_reference_format ) {
+         right = 73;
+       }
+     }
+     dbgmsg("%s:%d: %s format detected", __func__, __LINE__,
+            description());
+   }
+ };
+ 
+ typedef std::stack<source_format_t> source_format_stack_t;
+ 
  #include <cstdio>
  
  class cdftext {
    static bool please_push_filename;
!   static int command_line_indicator_column;
! 
!   friend void cobol_set_indicator_column( int column );
! 
!   static void process_file( filespan_t mfile, int output, 
!                             source_format_stack_t source_format, 
!                             bool second_pass = false ) ;
!   static filespan_t  free_form_reference_format( int fd, source_format_stack_t& );
  
    static void output_push_directive( const char filename[],
                                      std::ostream_iterator<char>& ofs);
*************** class cdftext {
*** 305,310 ****
    static FILE * lex_open( const char filename[] );
  };
  
- std::list<replace_t> free_form_reference_format( filespan_t mfile );
- 
  #endif
--- 376,379 ----
diff -Nrcpad gcc-17-20260727/gcc/cobol/messages.cc gcc-17-20260802/gcc/cobol/messages.cc
*** gcc-17-20260727/gcc/cobol/messages.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/messages.cc	Sun Aug  2 22:32:06 2026
*************** std::set<cbl_diag_t> cbl_diagnostics {
*** 141,148 ****
    { IsoResume, "-Wcobol-resume", diagnostics::kind::error, dialect_ibm_e },
    // IBM, MF, and GNU all support ASSIGN TO filename, so we keep mum. 
    { IsoAssignFile, "-Wassign-file", diagnostics::kind::ignored, dialect_ibm_mf_gnu },
-   
  
    { MfAssignExternal, "-Wassign-external", diagnostics::kind::error, dialect_mf_gnu },
    { MfBinaryLongLong, "-Wbinary-long-long", diagnostics::kind::error, dialect_mf_gnu },
    { MfCallGiving, "-Wcall-giving", diagnostics::kind::error, dialect_mf_gnu },
--- 141,148 ----
    { IsoResume, "-Wcobol-resume", diagnostics::kind::error, dialect_ibm_e },
    // IBM, MF, and GNU all support ASSIGN TO filename, so we keep mum. 
    { IsoAssignFile, "-Wassign-file", diagnostics::kind::ignored, dialect_ibm_mf_gnu },
  
+   { MfAnyLength, "-Wany-length", diagnostics::kind::error, dialect_mf_gnu },
    { MfAssignExternal, "-Wassign-external", diagnostics::kind::error, dialect_mf_gnu },
    { MfBinaryLongLong, "-Wbinary-long-long", diagnostics::kind::error, dialect_mf_gnu },
    { MfCallGiving, "-Wcall-giving", diagnostics::kind::error, dialect_mf_gnu },
*************** std::set<cbl_diag_t> cbl_diagnostics {
*** 150,163 ****
    { MfCdfDollar, "-Wcdf-dollar", diagnostics::kind::error, dialect_mf_gnu },
    { MfComp6, "-Wcomp-6", diagnostics::kind::error, dialect_mf_gnu },
    { MfCompX, "-Wcomp-x", diagnostics::kind::error, dialect_mf_gnu },
-   { MfLevel_1_Occurs, "-Wlevel-1-occurs", diagnostics::kind::error, dialect_mf_gnu },
    { MfLevel78, "-Wlevel-78", diagnostics::kind::error, dialect_mf_gnu },
!   { MfAnyLength, "-Wany-length", diagnostics::kind::error, dialect_mf_gnu },
    { MfMoveIndex, "-Wmove-index", diagnostics::kind::error, dialect_gnu_e },
    { MfMovePointer, "-Wmove-pointer", diagnostics::kind::error, dialect_mf_gnu },
    { MfReturningNum, "-Wreturning-number", diagnostics::kind::error, dialect_mf_gnu },
!   { MfUsageTypename, "-Wusage-typename", diagnostics::kind::error, dialect_mf_gnu },
    { MfTrailing, "-Winspect-trailing", diagnostics::kind::error, dialect_mf_gnu },
  
    { LexIncludeE, "-Winclude-file-not-found", diagnostics::kind::error }, 
    { LexIncludeOkN, "-Winclude-file-found", diagnostics::kind::note }, 
--- 150,164 ----
    { MfCdfDollar, "-Wcdf-dollar", diagnostics::kind::error, dialect_mf_gnu },
    { MfComp6, "-Wcomp-6", diagnostics::kind::error, dialect_mf_gnu },
    { MfCompX, "-Wcomp-x", diagnostics::kind::error, dialect_mf_gnu },
    { MfLevel78, "-Wlevel-78", diagnostics::kind::error, dialect_mf_gnu },
!   { MfLevel_1_Occurs, "-Wlevel-1-occurs", diagnostics::kind::error, dialect_mf_gnu },
    { MfMoveIndex, "-Wmove-index", diagnostics::kind::error, dialect_gnu_e },
    { MfMovePointer, "-Wmove-pointer", diagnostics::kind::error, dialect_mf_gnu },
+   { MfRedefinesFirst, "-Wredefines-first", diagnostics::kind::error, dialect_mf_gnu },
    { MfReturningNum, "-Wreturning-number", diagnostics::kind::error, dialect_mf_gnu },
!   { MfSetNumeric, "-Wset-numeric", diagnostics::kind::error, dialect_mf_gnu },
    { MfTrailing, "-Winspect-trailing", diagnostics::kind::error, dialect_mf_gnu },
+   { MfUsageTypename, "-Wusage-typename", diagnostics::kind::error, dialect_mf_gnu },
  
    { LexIncludeE, "-Winclude-file-not-found", diagnostics::kind::error }, 
    { LexIncludeOkN, "-Winclude-file-found", diagnostics::kind::note }, 
*************** dialect_ok( const cbl_loc_t& loc, cbl_di
*** 404,411 ****
      if( !ok ) return true; // current dialect correctly does not match the feature
    }
  
!   cbl_message(loc, id, "%qs %s %<-dialect %s%>",
!               term, verb, cbl_dialect_str(diag->dialect));
    return false;
  }
  
--- 405,418 ----
      if( !ok ) return true; // current dialect correctly does not match the feature
    }
  
!   if( term[0] == '-' ) {
!     term++; // do not quote
!     cbl_message(loc, id, "%s %s %<-dialect %s%>",
!                 term, verb, cbl_dialect_str(diag->dialect));
!   } else {
!     cbl_message(loc, id, "%qs %s %<-dialect %s%>",
!                 term, verb, cbl_dialect_str(diag->dialect));
!   }
    return false;
  }
  
diff -Nrcpad gcc-17-20260727/gcc/cobol/move.cc gcc-17-20260802/gcc/cobol/move.cc
*** gcc-17-20260727/gcc/cobol/move.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/move.cc	Sun Aug  2 22:32:06 2026
*************** move_helper(tree size_error,        // T
*** 3495,3501 ****
              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
              )
    {
--- 3495,3502 ----
              cbl_refer_t sourceref,  // Call move_helper with this resolved.
              TREEPLET   &tsource,
              cbl_round_t rounded,
!             // True means our caller wants to know about truncation errors
!             bool check_for_error,
              bool restore_on_error
              )
    {
*************** move_helper(tree size_error,        // T
*** 3511,3517 ****
      gg_assign(size_error, integer_zero_node);
      }
  
!   static tree stash = gg_define_variable(UCHAR_P);
  
    tree st_data = NULL_TREE;
    tree st_size = NULL_TREE;
--- 3512,3519 ----
      gg_assign(size_error, integer_zero_node);
      }
  
!   static tree stash =
!                 gg_define_variable(UCHAR_P, "..move_stasher", vs_file_static);
  
    tree st_data = NULL_TREE;
    tree st_size = NULL_TREE;
diff -Nrcpad gcc-17-20260727/gcc/cobol/parse.y gcc-17-20260802/gcc/cobol/parse.y
*** gcc-17-20260727/gcc/cobol/parse.y	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/parse.y	Sun Aug  2 22:32:06 2026
*************** class locale_tgt_t {
*** 323,329 ****
  
    struct rel_part_t;
  
!   bool set_debug(bool);
  
  #include "../../libgcobol/ec.h"
  #include "../../libgcobol/common-defs.h"
--- 323,329 ----
  
    struct rel_part_t;
  
!   bool set_debug(bool = true);
  
  #include "../../libgcobol/ec.h"
  #include "../../libgcobol/common-defs.h"
*************** class locale_tgt_t {
*** 398,404 ****
  			NUMED     "NUMERIC-EDITED picture"
  			NUMED_CR  "NUMERIC-EDITED CR picture"
  			NUMED_DB  "NUMERIC-EDITED DB picture"
! %token  <number>        NINEDOT NINES NINEV PIC_P ONES
  %token  <string>        SPACES EQ "EQUAL"
  %token  <literal>       LITERAL
  %token  <number>        END EOP
--- 398,404 ----
  			NUMED     "NUMERIC-EDITED picture"
  			NUMED_CR  "NUMERIC-EDITED CR picture"
  			NUMED_DB  "NUMERIC-EDITED DB picture"
! %token  <number>        NINEDOT NINES NINEV PIC_P "PICTURE P symbol" ONES
  %token  <string>        SPACES EQ "EQUAL"
  %token  <literal>       LITERAL
  %token  <number>        END EOP
*************** class locale_tgt_t {
*** 579,585 ****
  			LOWER_CASE "LOWER-CASE"
  			LOW_VALUES "LOW-VALUES"
  			LOWEST_ALGEBRAIC "LOWEST-ALGEBRAIC"
! 			LPAREN " )"
  
  			MANUAL MAXX "Max" MEAN MEDIAN MIDRANGE
  			MINN "Min" MULTIPLE MOD MODE
--- 579,585 ----
  			LOWER_CASE "LOWER-CASE"
  			LOW_VALUES "LOW-VALUES"
  			LOWEST_ALGEBRAIC "LOWEST-ALGEBRAIC"
! 			LPAREN " ("
  
  			MANUAL MAXX "Max" MEAN MEDIAN MIDRANGE
  			MINN "Min" MULTIPLE MOD MODE
*************** class locale_tgt_t {
*** 730,736 ****
      // https://savannah.gnu.org/forum/forum.php?forum_id=9735
  %token  YYEOF 0 "end of file"
  
! %type   <number>        sentence statements statement
  %type   <number>        star_cbl_opt close_how
  
  %type   <number>        test_before usage_clause1 might_be alphanational
--- 730,736 ----
      // https://savannah.gnu.org/forum/forum.php?forum_id=9735
  %token  YYEOF 0 "end of file"
  
! %type   <number>        statements statement
  %type   <number>        star_cbl_opt close_how
  
  %type   <number>        test_before usage_clause1 might_be alphanational
*************** class locale_tgt_t {
*** 754,760 ****
  %type	<log_expr_t>	log_expr rel_abbrs eval_abbrs
  %type   <rel_term_t>	rel_term rel_term1
  
- %type   <field_data>    value78
  %type   <field>         literal name nume typename
  %type   <field>         num_constant num_literal signed_literal
  
--- 754,759 ----
*************** class locale_tgt_t {
*** 765,771 ****
  
  %type   <refer>         eval_subject1
  %type   <vargs>         vargs disp_vargs trim_expr
! %type   <field>         level_name
  %type   <number>        fd_name
  %type   <string>        picture_sym name66 paragraph_name
  %type   <literal>       literalism
--- 764,770 ----
  
  %type   <refer>         eval_subject1
  %type   <vargs>         vargs disp_vargs trim_expr
! %type   <field>         level_name level_constant
  %type   <number>        fd_name
  %type   <string>        picture_sym name66 paragraph_name
  %type   <literal>       literalism
*************** class locale_tgt_t {
*** 1567,1573 ****
  %locations
  %token-table
  %define parse.error verbose // custom
! %expect 6
  %require "3.5.1"  //    3.8.2 also works, but not 3.8.0
  %%
  
--- 1566,1572 ----
  %locations
  %token-table
  %define parse.error verbose // custom
! %expect 7
  %require "3.5.1"  //    3.8.2 also works, but not 3.8.0
  %%
  
*************** repo_property:  PROPERTY NAME repo_as
*** 2868,2874 ****
                  ;
  
  with_debug:     with DEBUGGING MODE {
!                   if( ! set_debug(true) ) {
                      error_msg(@2, "DEBUGGING MODE valid only in fixed format");
                    }
                  }
--- 2867,2874 ----
                  ;
  
  with_debug:     with DEBUGGING MODE {
!                   if( ! set_debug() ) {
!                     // always true because format not checked in parser
                      error_msg(@2, "DEBUGGING MODE valid only in fixed format");
                    }
                  }
*************** level_name:     LEVEL ctx_name
*** 3997,4002 ****
--- 3997,4004 ----
                    case 77:
                    case 88:
                      break;
+                   case 78:
+                       break;
                    default:
  		    if( 1 <= $LEVEL && $LEVEL <= 49 ) break;
                      error_msg(@LEVEL, "LEVEL %d not supported", $LEVEL);
*************** level_name:     LEVEL ctx_name
*** 4019,4024 ****
--- 4021,4029 ----
                    case 77:
                    case 88:
                      break;
+                   case 78:
+                       dialect_ok(@LEVEL, MfLevel78, "LEVEL 78");
+                       break;
                    default:
  		    if( 1 <= $LEVEL && $LEVEL <= 49 ) break;
                      error_msg(@LEVEL, "LEVEL %d not supported", $LEVEL);
*************** level_name:     LEVEL ctx_name
*** 4036,4041 ****
--- 4041,4068 ----
                  }
                  ;
  
+ level_constant: level_name CONSTANT is_global as {
+                   cbl_field_t& field = *$1;
+                   if( field.level != 1 ) {
+                     error_msg(@1, "%s must be an 01-level data item", field.name);
+                     YYERROR;
+                   }
+                   field.attr |= constant_e;
+                   if( $is_global ) field.attr |= global_e;
+                   $$ = $1;
+                 }
+         |       LEVEL78[level] NAME[name] VALUE is {
+                   dialect_ok(@level, MfLevel78, "LEVEL 78");
+                   struct cbl_field_t field = { FldInvalid, 
+ 		                               uint32_t($level),
+ 		                               @level.first_line };
+                   namcpy(@name, field.name, $name);
+                   field.attr |= constant_e;
+                   $$ = field_add(@1, &field);
+                   current_field($$); // make available for data_clauses
+                 }
+                 ;
+ 
  data_descr:     data_descr1
                  {
                    $$ = current_field($1); // make available for occurs, etc.
*************** const_value:    cce_expr
*** 4062,4098 ****
                  }
                  ;
  
- value78:        literalism
-                 {
-                   cbl_field_data_t data;
-                   data.capacity( capacity_cast(strlen($1.data)) );
-                   data.original($1.data);
-                   $$.encoding = $1.encoding;
-                   $$.data = new cbl_field_data_t(data);
-                 }
-         |       const_value
-                 {
-                   cbl_field_data_t data;
- 		  data = build_real (float128_type_node, $1.r);
-                   auto s = $1.s ? $1.s : reinterpret_cast<char*>(data.etc.value);
-                   data.original(s);
-                   $$.encoding = no_encoding_e;
-                   $$.data = new cbl_field_data_t(data);
-                 }
-         |       reserved_value[value]
-                 {
- 		  const auto figconst = constant_of(constant_index($value));
-                   $$.encoding = current_encoding('A');
-                   $$.data = new cbl_field_data_t(figconst->data);
-                 }
- 
-         |       true_false
-                 {
-                   cbl_unimplemented("Boolean constant");
-                   YYERROR;
-                 }
-                 ;
- 
  data_descr1:    level_name
                  {
                    assert($1 == current_field());
--- 4089,4094 ----
*************** data_descr1:    level_name
*** 4101,4116 ****
                    }
                  }
  
!         |       level_name CONSTANT is_global as const_value[cce]
                  {
                    cbl_field_t& field = *$1;
-                   if( field.level != 1 ) {
-                     error_msg(@1, "%s must be an 01-level data item", field.name);
-                     YYERROR;
-                   }
- 
-                   field.attr |= constant_e;
-                   if( $is_global ) field.attr |= global_e;
                    field.type = FldLiteralN;
  		  field.data = build_real (float128_type_node, $cce.r);
                    const char *s = $cce.s? $cce.s : string_of($cce.r);
--- 4097,4105 ----
                    }
                  }
  
!         |       level_constant const_value[cce]
                  {
                    cbl_field_t& field = *$1;
                    field.type = FldLiteralN;
  		  field.data = build_real (float128_type_node, $cce.r);
                    const char *s = $cce.s? $cce.s : string_of($cce.r);
*************** data_descr1:    level_name
*** 4124,4138 ****
                    }
                  }
  
!         |       level_name CONSTANT is_global as reserved_value[value]
                  {
                    cbl_field_t& field = *$1;
-                   if( field.level != 1 ) {
-                     error_msg(@1, "%s must be an 01-level data item", field.name);
-                     YYERROR;
-                   }
-                   field.attr |= constant_e;
-                   if( $is_global ) field.attr |= global_e;
                    field.type = FldLiteralA;
  		  auto fig = constant_of(constant_index($value));
                    field.data = fig->data;
--- 4113,4121 ----
                    }
                  }
  
!         |       level_constant reserved_value[value]
                  {
                    cbl_field_t& field = *$1;
                    field.type = FldLiteralA;
  		  auto fig = constant_of(constant_index($value));
                    field.data = fig->data;
*************** data_descr1:    level_name
*** 4140,4150 ****
                    field.set_initial(@value);
                  }
  
!         |       level_name CONSTANT is_global as literalism[lit]
                  {
                    cbl_field_t& field = *$1;
-                   field.attr |= constant_e;
-                   if( $is_global ) field.attr |= global_e;
                    field.type = FldLiteralA;
                    field.attr |= literal_attr($lit.prefix);
  
--- 4123,4131 ----
                    field.set_initial(@value);
                  }
  
!         |       level_constant literalism[lit]
                  {
                    cbl_field_t& field = *$1;
                    field.type = FldLiteralA;
                    field.attr |= literal_attr($lit.prefix);
  
*************** data_descr1:    level_name
*** 4155,4164 ****
                    field.data.original( $lit.data );
                    field.set_initial(@lit);
  
-                   if( field.level != 1 ) {
-                     error_msg(@lit, "%s must be an 01-level data item", field.name);
-                     YYERROR;
-                   }
                    if( cdf_value(field.name) ) {
                      cbl_message(@1, Par78CdfDefinedW,
                                  "%s was defined by CDF", field.name);
--- 4136,4141 ----
*************** data_descr1:    level_name
*** 4188,4221 ****
                      field.data = cdfval->number;
                    }
                  }
-         |       LEVEL78 NAME[name] VALUE is value78[data]
-                 {
-                   dialect_ok(@1, MfLevel78, "LEVEL 78");
-                   cbl_field_t field = { FldLiteralA, constant_e, *$data.data,
-                                         78, $name, @name.first_line };
-                   // cce reports no encoded initial value
-                   if( $data.encoding == no_encoding_e ) { 
-                     field.type = FldLiteralN;
-                     field.codeset.set();
-                     field.data.initial = string_of(field.data.value_of());
-                     if( cdf_value(field.name) ) {
-                       cbl_message(@name, Par78CdfDefinedW,
-                                   "%s was defined by CDF", field.name);
-                     }
-                   } else{ 
-                     field.attr |= quoted_e;
-                     field.codeset.set($data.encoding);
-                     field.set_initial(@data);
-                     if( cdf_value(field.name) ) {
-                       cbl_message(@name, Par78CdfDefinedW,
-                                   "%s was defined by CDF", field.name);
-                     }
-                   }
- 
-                   if( ($$ = field_add(@name, &field)) == NULL ) {
-                     error_msg(@name, "failed level 78");
-                   }
-                 }
  
          |       LEVEL88 NAME /* VALUE */ NULLPTR
                  {
--- 4165,4170 ----
*************** data_clauses:   data_clause
*** 4601,4607 ****
                  data_clause_t clause = data_clause_t($1);
                  proto_field.add_clause(clause);
                  }
!         |       data_clauses data_clause {
                    const char *clause = "data";
                    switch($2) {
                    case occurs_clause_e:     clause = "OCCURS";    break;
--- 4550,4556 ----
                  data_clause_t clause = data_clause_t($1);
                  proto_field.add_clause(clause);
                  }
!         |       data_clauses[clauses] data_clause {
                    const char *clause = "data";
                    switch($2) {
                    case occurs_clause_e:     clause = "OCCURS";    break;
*************** data_clauses:   data_clause
*** 4626,4641 ****
                      YYERROR;
                    }
  
- 		  // We could be more judicious. We could clear the map when
- 		  // the first clause is encountered, and e.g. set the location
- 		  // to just the VALUE string, not the whole clause.  As of now
- 		  // the map isn't used, though.
                    data_clause_locations[data_clause_t($2)] = @data_clause;
  
!                   if( $data_clause == redefines_clause_e ) {
!                     error_msg(@2, "REDEFINES must appear "
!                              "immediately after LEVEL and NAME");
!                     YYERROR;
                    }
                    cbl_field_t *field = current_field();
                    const int globex = (global_e | external_e);
--- 4575,4586 ----
                      YYERROR;
                    }
  
                    data_clause_locations[data_clause_t($2)] = @data_clause;
  
!                   if( $clauses && $data_clause == redefines_clause_e ) {
!                       dialect_ok(@2, MfRedefinesFirst,
!                                  "-REDEFINES must appear "
!                                  "immediately after LEVEL and NAME");
                    }
                    cbl_field_t *field = current_field();
                    const int globex = (global_e | external_e);
*************** data_clauses:   data_clause
*** 4688,4694 ****
                          dbgmsg("expanding %s size from %u bytes to %lu "
  			       "because it redefines %s with USAGE POINTER",
                                 field->name, field->size(),
!                                int_size_in_bytes(ptr_type_node),
                                 redefined->name);
                          field->embiggen();
                        }
--- 4633,4639 ----
                          dbgmsg("expanding %s size from %u bytes to %lu "
  			       "because it redefines %s with USAGE POINTER",
                                 field->name, field->size(),
!                                (unsigned long)int_size_in_bytes(ptr_type_node),
                                 redefined->name);
                          field->embiggen();
                        }
*************** data_clause:    any_length        { $$ =
*** 4758,4764 ****
          |       volatile_clause      { $$ = volatile_clause_e; }
                  ;
  
! picture_clause: PIC signed nps[fore] nines nps[aft]
                  {
                    cbl_field_t *field = current_field();
                    if( ! field->codeset.set() ) {
--- 4703,4709 ----
          |       volatile_clause      { $$ = volatile_clause_e; }
                  ;
  
! picture_clause: PIC signed PIC_P[fore] nines
                  {
                    cbl_field_t *field = current_field();
                    if( ! field->codeset.set() ) {
*************** picture_clause: PIC signed nps[fore] nin
*** 4783,4795 ****
                    auto nchar = type_capacity(field->type, $nines);
                    field->set_capacity(nchar);
                    field->blank_initial(nchar);
!                   if( $fore && $aft ) { // leading and trailing P's
!                     error_msg(@2, "PIC cannot have both leading and trailing P");
                      YYERROR;
                    }
!                   if( $fore || $aft ) {
                      field->attr |= scaled_e;
!                     field->data.rdigits = $fore? $fore : -$aft;
                    }
                    if( ! field->reasonable_capacity() ) {
                      error_msg(@2, "%s limited to capacity of %d (would need %u)",
--- 4728,4771 ----
                    auto nchar = type_capacity(field->type, $nines);
                    field->set_capacity(nchar);
                    field->blank_initial(nchar);
!                   assert($fore);
!                   field->attr |= scaled_e;
!                   field->data.rdigits = $fore;
!                   
!                   if( ! field->reasonable_capacity() ) {
!                     error_msg(@2, "%s limited to capacity of %d (would need %u)",
! 			     field->name, MAX_FIXED_POINT_DIGITS, field->char_capacity());
!                   }
!                 }
! 
!         |       PIC signed nines nps[aft]
!                 {
!                   cbl_field_t *field = current_field();
!                   if( ! field->codeset.set() ) {
!                     error_msg(@nines, "PICTURE inconsistent with encoding %s",
!                               cbl_alphabet_t::encoding_str(field->codeset.encoding));
!                   }
!                   if( !field_type_update(field, FldNumericDisplay, @$) ) {
                      YYERROR;
                    }
!                   ERROR_IF_CAPACITY(@PIC, field);
!                   // If signable_e is inherited from the group, it is effective
!                   // regardless of an 'S' in PICTURE.
!                   if( field->has_attr(signable_e) && ! $signed ) {
!                     dbgmsg("%s PICTURE must be signed for SIGN IS", field->name);
!                   }
!                   if( field->type == FldNumericEdited && $signed ) {
!                     gcc_assert(field->has_attr(blank_zero_e));
!                     error_msg(@signed, "%<S%> in PICTURE invalid with BLANK WHEN ZERO");
!                   }
!                   field->attr |= $signed;
!                   field->data.digits = $nines;
!                   auto nchar = type_capacity(field->type, $nines);
!                   field->set_capacity(nchar);
!                   field->blank_initial(nchar);
!                   if( $aft ) {
                      field->attr |= scaled_e;
!                     field->data.rdigits = -$aft;
                    }
                    if( ! field->reasonable_capacity() ) {
                      error_msg(@2, "%s limited to capacity of %d (would need %u)",
*************** paragraph_name: NAME
*** 5711,5717 ****
          |       NUMSTR { $$ = $1.string; }
  		;
  
! sentence:       statements  '.'
          |       statements  YYEOF
                  {
                    if( ! goodnight_gracie() ) {
--- 5687,5694 ----
          |       NUMSTR { $$ = $1.string; }
  		;
  
! sentence:       '.'
!         |       statements  '.'
          |       statements  YYEOF
                  {
                    if( ! goodnight_gracie() ) {
*************** section_name:	NAME section_kw '.'
*** 8055,8085 ****
                  ;
  
  section_kw:     SECTION
! /* Dubner commented out this code on 2026-06-28 as part of getting the
!    compiler working on the IBM S390. It was failing in an off-by-one way;
!    the $1 parameter, on the S390, wasn't the section number, but rather the
!    section name.  */
! //                {
! //                  if( $1 && dialect_ok(@1, IbmSectionSegmentW, "SECTION segment") ) {
! //		    cbl_message(@1, IbmSectionSegmentW,
! //                                "SECTION segment %qs was ignored", $1);
! //		    if( *$1 == '-' ) {
! //                      cbl_message(@1, IbmSectionNegE,
! //                                  "SECTION segment %qs is negative", $1);
! //                    } else {
! //                      int sectno;
! //                      sscanf($1, "%d", &sectno);
! //                      if( ! (0 <= sectno && sectno <= 99) ) {
! //                        cbl_message(@1, IbmSectionRangeE,
! //                                     "SECTION segment %qs must be 0-99", $1);
! //		      } 
! //                    }
! //		  }
! //                }
! //        |       SECTION error
! //                {
! //                  error_msg(@1, "unknown section qualifier");
! //                }
                  ;
  
  stop:           STOP RUN exit_with
--- 8032,8058 ----
                  ;
  
  section_kw:     SECTION
!                {
!                  if( $1 && dialect_ok(@1, IbmSectionSegmentW, "SECTION segment") ) {
! 		    cbl_message(@1, IbmSectionSegmentW,
!                                "SECTION segment %qs was ignored", $1);
! 		    if( *$1 == '-' ) {
!                      cbl_message(@1, IbmSectionNegE,
!                                  "SECTION segment %qs is negative", $1);
!                    } else {
!                      int sectno;
!                      sscanf($1, "%d", &sectno);
!                      if( ! (0 <= sectno && sectno <= 99) ) {
!                        cbl_message(@1, IbmSectionRangeE,
!                                     "SECTION segment %qs must be 0-99", $1);
! 		      } 
!                    }
! 		  }
!                }
!        |       SECTION error
!                {
!                  error_msg(@1, "unknown section qualifier");
!                }
                  ;
  
  stop:           STOP RUN exit_with
*************** subtract_body:  sum FROM rnames
*** 8733,8740 ****
                      corresponding_arith_fields( $sum->refers.front().field,
                                                  rhs.front().refer.field );
                      if( pairs.empty() ) {
!                       cbl_message(ParNoCorrespondingW,
!                                   "%s and %s have no corresponding fields",
                                    $sum->refers.front().field->name,
                                    rhs.front().refer.field->name );
                      }
--- 8706,8713 ----
                      corresponding_arith_fields( $sum->refers.front().field,
                                                  rhs.front().refer.field );
                      if( pairs.empty() ) {
!                       cbl_message(@$, ParNoCorrespondingW,
!                                   "%qs and %qs have no corresponding fields",
                                    $sum->refers.front().field->name,
                                    rhs.front().refer.field->name );
                      }
*************** xmlgen_impl:
*** 12549,12555 ****
  xmlgen_cond:    XMLGENERATE xmlgen_body[body] xmlexcepts[err]
                  ;
  
! xmlgen_body:    XMLGENERATE name[id1] FROM name[id2]
                  xmlgen_count xmlencoding xmlgen_decl xmlgen_namespace
                  xmlgen_nameof xmlgen_typeof xmlgen_suppress
                  ;
--- 12522,12528 ----
  xmlgen_cond:    XMLGENERATE xmlgen_body[body] xmlexcepts[err]
                  ;
  
! xmlgen_body:    name[id1] FROM name[id2]
                  xmlgen_count xmlencoding xmlgen_decl xmlgen_namespace
                  xmlgen_nameof xmlgen_typeof xmlgen_suppress
                  ;
*************** xmlexcept:      EXCEPTION
*** 12739,12746 ****
                  }
                  ;
  
! end_xml:        %empty     %prec XMLPARSE
!         |       END_XML    %prec XMLPARSE
                  ;
  %%
  
--- 12712,12719 ----
                  }
                  ;
  
! end_xml:        %empty   %prec XMLPARSE
!         |       END_XML  %prec XMLPARSE
                  ;
  %%
  
diff -Nrcpad gcc-17-20260727/gcc/cobol/parse_ante.h gcc-17-20260802/gcc/cobol/parse_ante.h
*** gcc-17-20260727/gcc/cobol/parse_ante.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/parse_ante.h	Sun Aug  2 22:32:06 2026
*************** set_real_from_capacity( const cbl_loc_t&
*** 3376,3381 ****
--- 3376,3384 ----
      error_msg(loc, "cannot define %s via self-reference", field->name);
      return;
    }
+   if( field->type == FldGroup ) {
+     symbol_field_capacity_set(field);
+   }
    field->data.set_real_from_capacity(r);
  }
  
*************** parser_move_carefully( const char */*F*/
*** 3433,3443 ****
  
      if( is_index ) {
        if( tgt.field->type != FldIndex && src.field->type != FldIndex) {
!         error_msg(src.loc, "invalid SET %qs (%s) TO %qs (%s): not a field index",
!                   name_of(tgt.field), 3 + cbl_field_type_str(tgt.field->type),
!                   name_of(src.field), 3 + cbl_field_type_str(src.field->type));
!         delete tgt_list;
!         return false;
        }
      } else {
        if( ! valid_move( tgt.field, src.field ) ) {
--- 3436,3446 ----
  
      if( is_index ) {
        if( tgt.field->type != FldIndex && src.field->type != FldIndex) {
!         auto msg = xasprintf("invalid SET %s (%s) TO %s (%s): not a field index",
!                              name_of(tgt.field), cbl_field_type_name(tgt.field->type),
!                              name_of(src.field), cbl_field_type_name(src.field->type));
!         dialect_ok(src.loc, MfSetNumeric, msg);
!         free(msg);
        }
      } else {
        if( ! valid_move( tgt.field, src.field ) ) {
diff -Nrcpad gcc-17-20260727/gcc/cobol/scan.l gcc-17-20260802/gcc/cobol/scan.l
*** gcc-17-20260727/gcc/cobol/scan.l	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/scan.l	Sun Aug  2 22:32:06 2026
*************** DOTEOL    [[:blank:]]*[.]{BLANK_EOL}
*** 101,106 ****
--- 101,107 ----
  	   *  (without an intervening separator space) by the separator period."
  	   */
  NONPIC	  [,]{DOTSEP} 
+ EOPIC	  [.,;]?[[:space:]]
  
  SKIP	  [[:blank:]]*SKIP[123][[:blank:]]*[.]?{BLANK_EOL}
  TITLE	  [[:blank:]]*TITLE($|[.]|[^\n]*)
*************** ALPHED   {ALPHEDREQ}([AX9B0/]{COUNT}?)*
*** 131,137 ****
  			 */
  NUMEDCHAR  [BPVZ90/,]+{COUNT}?
  NUMEDCHARS {NUMEDCHAR}([.]?{NUMEDCHAR})*
! NUMED     ([+-]{NUMEDCHARS}+)|({NUMEDCHARS}+[+-])
  CURRENCY [A-Zfhijklmoqtuwy\x80-\xFF]{-}[ABCDEGNPRSVXZ]
  NUMEDCUR (([.]?[$0B/Z*+,P9()V+-]|{CURRENCY}+|{COUNT})+([.][$0B/Z*+P9()V+-])*)+
  
--- 132,138 ----
  			 */
  NUMEDCHAR  [BPVZ90/,]+{COUNT}?
  NUMEDCHARS {NUMEDCHAR}([.]?{NUMEDCHAR})*
! NUMED     ([+-]{NUMEDCHARS}+)|({NUMEDCHARS}+[+-]?)
  CURRENCY [A-Zfhijklmoqtuwy\x80-\xFF]{-}[ABCDEGNPRSVXZ]
  NUMEDCUR (([.]?[$0B/Z*+,P9()V+-]|{CURRENCY}+|{COUNT})+([.][$0B/Z*+P9()V+-])*)+
  
*************** USE({SPC}FOR)?		{ return USE; }
*** 1113,1130 ****
    HIGH-VALUES?	        { return HIGH_VALUES; }
    QUOTES?		{ return QUOTES; }
    NULLS?		{ return NULLS; }
  
!   OF		           { return OF; }
    VALUE({SPC}IS)?/[[:space:]]   { return VALUE; }
    VALUES({SPC}ARE)?/[[:space:]] { return VALUE; }
-   THRU|THROUGH             { return THRU; }
  
    VALUES?({SPC}(IS|ARE))?{SPC}NULLS? { return NULLPTR; }
    VALUES?({SPC}(IS|ARE))?/{SPC}[+-]?{dfc} {
                            yy_push_state(numeric_state); return VALUE; }
  
   (THRU|THROUGH)/{SPC}[[:digit:].,+-] {
!                           yy_push_state(numeric_state); return THRU; }
  
    ALL			{ return ALL; }
    AS			{ return AS; }
--- 1114,1133 ----
    HIGH-VALUES?	        { return HIGH_VALUES; }
    QUOTES?		{ return QUOTES; }
    NULLS?		{ return NULLS; }
+   OF			{ return OF; }
  
!   VALUE				{ return VALUE; }
    VALUE({SPC}IS)?/[[:space:]]   { return VALUE; }
    VALUES({SPC}ARE)?/[[:space:]] { return VALUE; }
  
    VALUES?({SPC}(IS|ARE))?{SPC}NULLS? { return NULLPTR; }
    VALUES?({SPC}(IS|ARE))?/{SPC}[+-]?{dfc} {
                            yy_push_state(numeric_state); return VALUE; }
  
+   THRU|THROUGH		{ return THRU; }
   (THRU|THROUGH)/{SPC}[[:digit:].,+-] {
!                           yy_push_state(numeric_state);
! 			  return THRU; }
  
    ALL			{ return ALL; }
    AS			{ return AS; }
*************** USE({SPC}FOR)?		{ return USE; }
*** 1288,1314 ****
  
    [[:blank:]]+[-+]/{EDITED} 	{ return picset(yytext[yyleng-1]); }
  
!   S/({N9}|{NP}|V)+ { return picset('S'); }
!   V?{NP}/{N9}      { yylval.number = ndigit(yyleng);     return picset(PIC_P); }
!   {N9}/{N9}*{NP}V? { yylval.number = ndigit(yyleng);     return picset(NINES); }
!   {NP}V?/[,.]?     { yylval.number = ndigit(yyleng);     return picset(PIC_P); }
!   {N9}*V/{N9}*     { yylval.number = ndigit(yyleng - 1); return picset(NINEV); }
!   {N9}/{N9}*[,.]?  { yylval.number = ndigit(yyleng);     return picset(NINES); }
!   P+/[,.]?{EOL}    { yylval.number = yyleng;             return picset(PIC_P); }
  
    1{1,31}/({COUNT}|[(]{NAME}[)]) {
                           yy_push_state(picture_count);
                           yylval.string = xstrdup(yytext); return picset(ONES); }
    1{1,31} {              yylval.string = xstrdup(yytext); return picset(ONES); }
  
!   {ALNUM}/{COUNT}({ALNUM}{COUNT}?)+ {
                           yy_push_state(picture_count);
                           yylval.string = xstrdup(yytext); return picset(ALNUM); }
!   {ALNUM}/{COUNT}      { yy_push_state(picture_count);
!                          yylval.string = xstrdup(yytext); return picset(ALNUM); }
!   {ALNUM}/[(]{NAME}[)] { yy_push_state(picture_count);
                           yylval.string = xstrdup(yytext); return picset(ALNUM); }
!   {ALNUM}/{NONPIC}?    { yylval.string = xstrdup(yytext); return picset(ALNUM); }
  
    {ALPHED}             { yylval.string = xstrdup(yytext); return picset(ALPHED); }
    {NUMEDITED}          { yylval.string = xstrdup(yytext); return picset(NUMED); }
--- 1291,1330 ----
  
    [[:blank:]]+[-+]/{EDITED} 	{ return picset(yytext[yyleng-1]); }
  
!   /* Sign, if any, first */
!   S/({NP}|{N9}|V)+{EOPIC} { return picset('S'); }
!   /* P's either lead (after sign) or trail, with any V adjacent, see Table 10. */
!   V?{NP}/{N9}*{EOPIC}   { yylval.number =   ndigit(yyleng); return picset(PIC_P); }
!   {NP}V?/{EOPIC}        { yylval.number =   ndigit(yyleng); return picset(PIC_P); }
!   /* Parser accepts any sequence of 9's with one optional V. */
!   {N9}?V/{N9}*{EOPIC}   { yylval.number = ndigit(yyleng - 1); return picset(NINEV); }
!   {N9}/{NP}?V?{EOPIC}   { yylval.number = ndigit(yyleng); return picset(NINES); }
!   /* Match 99(5) as 9 and 9(5) */
!   99+{COUNT}/(V|{N9})*{EOPIC} {
!     auto len = length_upto('(');
!     yylval.number = len;
!     myless(len);
!     return picset(NINES);
!   }
!   [9P]+[(]{NAME}[)] {
!     cbl_unimplemented_at(yylloc, "unimplemented: symbolic count for numeric PICTURE" );
!   }
  
    1{1,31}/({COUNT}|[(]{NAME}[)]) {
                           yy_push_state(picture_count);
                           yylval.string = xstrdup(yytext); return picset(ONES); }
    1{1,31} {              yylval.string = xstrdup(yytext); return picset(ONES); }
  
!   {ALNUM}{COUNT}/({ALNUM}{COUNT}?)* {
! 			 auto len = length_upto('(');
! 			 myless(len); // avoid dangerous trailing context
                           yy_push_state(picture_count);
                           yylval.string = xstrdup(yytext); return picset(ALNUM); }
!   {ALNUM}[(]{NAME}[)] { auto len = length_upto('(');
! 			 myless(len); // avoid dangerous trailing context
!                          yy_push_state(picture_count);
                           yylval.string = xstrdup(yytext); return picset(ALNUM); }
!   {ALNUM}/{EOPIC}?     { yylval.string = xstrdup(yytext); return picset(ALNUM); }
  
    {ALPHED}             { yylval.string = xstrdup(yytext); return picset(ALPHED); }
    {NUMEDITED}          { yylval.string = xstrdup(yytext); return picset(NUMED); }
*************** USE({SPC}FOR)?		{ return USE; }
*** 1883,1891 ****
    STACK                 { return STACK; }
    TOP-LEVEL             { return TOP_LEVEL; }
  
!   {NAME}/{SPC}SECTION{OSPC}{DOTSEP} {
! 				    yylval.string = xstrdup(yytext);
! 				    return NAME; }
  
    (IS{SPC})?POSITIVE/[)[:space:]]  { yylval.number =  IS; return POSITIVE; }
    (IS{SPC})?NEGATIVE/[)[:space:]]  { yylval.number =  IS; return NEGATIVE; }
--- 1899,1909 ----
    STACK                 { return STACK; }
    TOP-LEVEL             { return TOP_LEVEL; }
  
!   {NAME}{SPC}SECTION{OSPC}{DOTSEP} { // Keep only {NAME}.
! 				     auto len = length_upto(0x20);
! 			 	     myless(len); // avoid dangerous trailing context
!                          	     yylval.string = xstrdup(yytext);
! 				     return NAME; }
  
    (IS{SPC})?POSITIVE/[)[:space:]]  { yylval.number =  IS; return POSITIVE; }
    (IS{SPC})?NEGATIVE/[)[:space:]]  { yylval.number =  IS; return NEGATIVE; }
*************** USE({SPC}FOR)?		{ return USE; }
*** 1899,1905 ****
  
    [(:)] 			{ return *yytext; }
    [(]/[^(:)""'']*[:][^)]*[)] 	{ return LPAREN; /* parentheses around a colon */ }
!   [(][^:""''\n]*[:][^)]*[)] 	{ // does not match foo(bar)\n:  :-(  
                                    int tok = is_refmod(yytext, yytext + yyleng)?
                                        int(LPAREN) : '(';
                                    myless(1);
--- 1917,1923 ----
  
    [(:)] 			{ return *yytext; }
    [(]/[^(:)""'']*[:][^)]*[)] 	{ return LPAREN; /* parentheses around a colon */ }
!   [(][^:""'']*[:][^)]*[)] 	{ // does not match foo(bar)\n:  :-(  
                                    int tok = is_refmod(yytext, yytext + yyleng)?
                                        int(LPAREN) : '(';
                                    myless(1);
*************** USE({SPC}FOR)?		{ return USE; }
*** 1971,1983 ****
  
    FUNCTION 			{ yy_push_state(function); return FUNCTION; }
  
    SECTION{OSPC}[.]+{SPC}/USE[[:space:]]	{ yylval.string = NULL; return SECTION; }
  
    [.]+({SPC}(EJECT|SKIP[123]))*{SPC}EXIT{OSPC}/{DOTSEP} {
                     // EXIT format-1 is a "continue" statement
                   }
!   {NAME}/{OSPC}{DOTSEP} {
! 		   assert(YY_START == procedure_div);
  		   int token;
  		   if( 0 != (token = binary_integer_usage(yytext)) ) return token;
                     if( 0 != (token = keyword_tok(yytext)) ) return token;
--- 1989,2004 ----
  
    FUNCTION 			{ yy_push_state(function); return FUNCTION; }
  
+   SECTION{OSPC}/{DOTSEP} { yylval.string = NULL; return SECTION; }
    SECTION{OSPC}[.]+{SPC}/USE[[:space:]]	{ yylval.string = NULL; return SECTION; }
  
    [.]+({SPC}(EJECT|SKIP[123]))*{SPC}EXIT{OSPC}/{DOTSEP} {
                     // EXIT format-1 is a "continue" statement
                   }
!   {NAME}{OSPC}{DOTSEP} { // Keep only {NAME}.
! 		   auto len = length_of_name();
! 		   myless(len); // avoid dangerous trailing context
!                    assert(YY_START == procedure_div);
  		   int token;
  		   if( 0 != (token = binary_integer_usage(yytext)) ) return token;
                     if( 0 != (token = keyword_tok(yytext)) ) return token;
*************** USE({SPC}FOR)?		{ return USE; }
*** 1987,2001 ****
                     return typed_name(yytext);
                   }
    LENGTH{SPC}OF/{SPC}{NAME}	 { return LENGTH_OF; }
!   {NAME}/{SPC}(IN|OF){SPC}{NAME}{SPC}(IN|OF)[[:space:]] {
!                     int token = keyword_tok(yytext);
!                     if( token ) return token;
!                     if( is_integer_token() ) return numstr_of(yytext);
! 		    myless(0);
! 	            yy_push_state(partial_name);
! 		    tee_up_empty();
! 		}
!   {NAME}/{SPC}(IN|OF){SPC}{NAME} {
                      int token = keyword_tok(yytext);
                      if( token ) return token;
                      if( is_integer_token() ) return numstr_of(yytext);
--- 2008,2016 ----
                     return typed_name(yytext);
                   }
    LENGTH{SPC}OF/{SPC}{NAME}	 { return LENGTH_OF; }
!   {NAME}{SPC}(IN|OF){SPC}{NAME} { // Keep only {NAME}.
! 		    auto len = length_upto(0x20);
! 		    myless(len); // avoid dangerous trailing context
                      int token = keyword_tok(yytext);
                      if( token ) return token;
                      if( is_integer_token() ) return numstr_of(yytext);
*************** USE({SPC}FOR)?		{ return USE; }
*** 2036,2041 ****
--- 2051,2066 ----
  	            yy_push_state(partial_name);
  		    tee_up_empty();
  		}
+   {NAME}({SPC}(IN|OF){SPC}{NAME})+ { // Keep only {NAME}.
+ 		    auto len = length_upto(0x20);
+ 		    myless(len); // avoid dangerous trailing context
+                     int token = keyword_tok(yytext);
+                     if( token ) return token;
+                     if( is_integer_token() ) return numstr_of(yytext);
+ 		    myless(0);
+ 	            yy_push_state(partial_name);
+ 		    tee_up_empty();
+ 		}
  }
  
  <partial_name>{
*************** BASIS		{ yy_push_state(basis); return BA
*** 2404,2416 ****
  		 * start condition.
                   */
  <*>{
!   ^[ ]{6}D.*\n 	{
! 		  if( !is_fixed_format() ) {
! 		    myless(6);
! 		  } else {
! 		    // If WITH DEBUGGING MODE, drop the D, else drop the line.
! 		    if( include_debug() ) myless(7);
! 		  }
  		}
    ^[ ]*>>{OBLANK}IF		{ yy_push_state(cdf_state); return CDF_IF; }
    ^[ ]*>>{OBLANK}ELSE	 	{ return CDF_ELSE; }
--- 2429,2438 ----
  		 * start condition.
                   */
  <*>{
!   ^[ ]{6}\x8d.*\n {
! 		  // lexio munged fixed-format D indicator to 0x8D. 
! 		  // If WITH DEBUGGING MODE, drop the D, else drop the line.
! 		  if( include_debug() ) myless(7);
  		}
    ^[ ]*>>{OBLANK}IF		{ yy_push_state(cdf_state); return CDF_IF; }
    ^[ ]*>>{OBLANK}ELSE	 	{ return CDF_ELSE; }
*************** BASIS		{ yy_push_state(basis); return BA
*** 2420,2426 ****
  				  yy_push_state(cdf_state); return CDF_IF; }
    ^[ ]*[$]{OBLANK}ELSE	 	{ dialect_ok(yylloc, MfCdfDollar, yytext); 
  				  return CDF_ELSE; }
!   ^[ ]*[$]{OBLANK}END	 	{ dialect_ok(yylloc, MfCdfDollar, yytext); 
  				  return CDF_END_IF; }
  
    ^[ ]*[$]{OBLANK}SET({SPC}CONSTANT)? {
--- 2442,2448 ----
  				  yy_push_state(cdf_state); return CDF_IF; }
    ^[ ]*[$]{OBLANK}ELSE	 	{ dialect_ok(yylloc, MfCdfDollar, yytext); 
  				  return CDF_ELSE; }
!   ^[ ]*[$]{OBLANK}END(-IF)? 	{ dialect_ok(yylloc, MfCdfDollar, yytext); 
  				  return CDF_END_IF; }
  
    ^[ ]*[$]{OBLANK}SET({SPC}CONSTANT)? {
diff -Nrcpad gcc-17-20260727/gcc/cobol/scan_ante.h gcc-17-20260802/gcc/cobol/scan_ante.h
*** gcc-17-20260727/gcc/cobol/scan_ante.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/scan_ante.h	Sun Aug  2 22:32:06 2026
*************** const char * keyword_str( int token );
*** 56,63 ****
  
  int repository_function_tok( const char name[] );
  
- void cobol_set_indicator_column( int column );
- 
  void next_sentence_label(cbl_label_t*);
  
  int repeat_count( const char picture[] );
--- 56,61 ----
*************** static void level_found() {
*** 358,373 ****
  }
  
  /*
!  * Trim the scanned location by the amount about to re-scanned. 
   * Must be a macro because it expands yyless. 
   */
  #define myless(N)				\
    do {						\
!     auto n(N);					\
!     trim_location(n);				\
!     yyless(n);					\
    } while(0)
  
  class enter_leave_t {
    typedef void( parser_enter_file_f)(const char *filename);
    typedef void (parser_leave_file_f)();
--- 356,398 ----
  }
  
  /*
!  * Return all but the first N characters, to be rescanned by the nexst yylex.
!  * IOW, keep N characters as the token, and relinquish the rest. 
   * Must be a macro because it expands yyless. 
   */
  #define myless(N)				\
    do {						\
!     auto _n(N);					\
!     trim_location(_n);				\
!     yyless(_n);					\
    } while(0)
  
+ static inline int
+ length_upto( char ch ) {
+     auto pend = std::find( yytext, yytext + yyleng, ch );
+     return pend - yytext;
+ }
+ 
+ static inline bool
+ is_name_char( char ch ) {
+   switch(ch) {
+   case '-': case '_':
+     return true;
+   }
+   return ISALNUM(ch);
+ }
+ 
+ static inline int
+ length_of_name() {
+   // Find first character in yyext that is not a name character.
+   auto pend = std::find_if( yytext, yytext + yyleng,
+                             []( char ch ) {
+                               return ! is_name_char(ch);
+                             } );
+   assert(yytext < pend); // scanner ensures yytext begins with {NAME}
+   return pend - yytext;
+ }
+ 
  class enter_leave_t {
    typedef void( parser_enter_file_f)(const char *filename);
    typedef void (parser_leave_file_f)();
*************** reset_location() {
*** 476,511 ****
  
  #define YY_USER_ACTION update_location();
  
  static void
  trim_location( int nkeep) {
    gcc_assert( 0 <= nkeep && nkeep <= yyleng );
!   struct { char *p, *pend;
!     size_t size() const { return pend - p; }
!   } rescan = { yytext + nkeep, yytext + yyleng };
  
!   auto nline = std::count(rescan.p, rescan.pend, '\n');
!   dbgmsg("%s:%d: yyless(%d), rescan '%.*s' (" HOST_SIZE_T_PRINT_UNSIGNED
!          " lines, " HOST_SIZE_T_PRINT_UNSIGNED " bytes)",
!          __func__, __LINE__,
!          nkeep,
!          int(rescan.size()), rescan.p,
!          (fmt_size_t)nline, (fmt_size_t)rescan.size());
!   if( nline ) {
!     gcc_assert( yylloc.first_line + nline <= yylloc.last_line );
!     yylloc.last_line -= int(nline);
!     gcc_assert( yylloc.first_line <= yylloc.last_line );
!     char *p = static_cast<char*>(memrchr(rescan.p, '\n', rescan.size()));
!     yylloc.last_column = rescan.pend - ++p;
!     return;
!   }
  
!   gcc_assert( int(rescan.size()) < yylloc.last_column );
!   yylloc.last_column -= rescan.size();
!   if( yylloc.last_column < yylloc.first_column ) {
!     yylloc.first_column = 1;
    }
  
!   location_dump(__func__, __LINE__, "yylloc", yylloc);
  }
  
  static void
--- 501,545 ----
  
  #define YY_USER_ACTION update_location();
  
+ template <typename T>
+ T * rsearch( T* a, T* z, T sarg ) {
+   std::reverse_iterator<T*> beg(z), end(a);
+   auto p = std::find(beg, end, sarg);
+   return p != end? p.base() : nullptr;
+ }
+ 
+ /*
+  * Before calling yyless to tell the generated scanner to rescan nkeep
+  * characters, set the scanner's location to reflect the cbl_loc_t of what
+  * we're keeping.  Set last_line and last_column by adding the newline count
+  * and characters after the last newline (if any) of the kept region to the
+  * first_line and first_column.
+  */
  static void
  trim_location( int nkeep) {
    gcc_assert( 0 <= nkeep && nkeep <= yyleng );
!   auto nline = std::count(yytext, yytext + nkeep, '\n');
!   auto ntoss = yyleng - nkeep;
!   dbgmsg("%s:%d: yyless(%d), rescan '%.*s' (%d bytes)",
!          __func__, __LINE__, nkeep, ntoss, yytext + nkeep, ntoss);
  
!   gcc_assert( yylloc.first_line + nline <= yylloc.last_line );
!   yylloc.last_line = yylloc.first_line + int(nline);
!   gcc_assert( yylloc.first_line <= yylloc.last_line );
  
!   if( nline == 0) {
!     yylloc.last_column = yylloc.first_column + nkeep;
!   } else {
!     auto eokeep = yytext + nkeep;
!     auto nl = rsearch(yytext, eokeep, '\n');
!     gcc_assert( nl != nullptr );
!     yylloc.last_column = 1 + (eokeep - nl);
    }
  
!   gcc_assert( yylloc.first_line <= yylloc.last_line );    
!   gcc_assert( 0 < yylloc.last_column );    
! 
!   location_dump(__func__, __LINE__, "yylloc", yylloc, true);
  }
  
  static void
*************** level_of( const char input[] ) {
*** 680,688 ****
    return output;
  }
  
  static inline int
  ndigit(int len) {
!   char *input = TOUPPER(yytext[0]) == 'V'? yytext + 1 : yytext;
    int n = repeat_count(input);
    return n == -1? len : n;
  }
--- 714,724 ----
    return output;
  }
  
+ // Called by lexer with leading or trailing V, which is ignored.
  static inline int
  ndigit(int len) {
!   const char *input = yytext + (TOUPPER(yytext[0]) == 'V'? 1 : 0);
!   if( input == yytext + yyleng ) return 0; // Only the V
    int n = repeat_count(input);
    return n == -1? len : n;
  }
*************** integer_of( const char input[], bool is_
*** 1281,1286 ****
--- 1317,1343 ----
    return output;
  }
  
+ static inline bool is_quote( const char ch ) {
+   return ch == '\'' || ch == '"';
+ }
+ 
+ static const char*
+ skip_string(const char* p, const char* pend, char delimiter) {
+   p++; // Skip opening delimiter
+   while (p < pend) {
+     if (p[0] == delimiter) {
+       if (p[1] == delimiter) {
+         p += 2; // doubled delimiter is escaped 
+       } else {
+         return ++p; // Found valid closing delimiter
+       }
+     } else {
+       p++;
+     }
+   }
+   return pend;
+ }
+ 
  /*
   * Loosely parse what might be a refmod expression.  This is used to decide
   * whether to indicate a refmod to the parser with an LPAREN token, or not,
*************** integer_of( const char input[], bool is_
*** 1293,1332 ****
   */
  static bool
  is_refmod( const char input[], const char enput[] ) {
! 	if( input == enput || *input != '(' ) return false;
! 	int depth = 0;
! 	bool colon_at_depth1 = false;
! 	const char *p = input;
  
! 	while( p < enput ) {
! 		char ch = *p++;
! 		if( ch == '"' || ch == '\'' ) {
! 			/* Skip quoted region; doubled quote is escape.  */
! 			const char quote = ch;
! 			while( p < enput ) {
! 				ch = *p++;
! 				if( ch == quote ) {
! 					if( p < enput && *p == quote ) { p++; continue; }
! 					break;
! 				}
! 			}
! 			continue;
! 		}
! 		if( ch == '(' ) {
! 			depth++;
! 			continue;
! 		}
! 		if( ch == ')' ) {
! 			depth--;
! 			if( depth < 0 ) return false;
! 			if( depth == 0 ) return colon_at_depth1;
! 			continue;
! 		}
! 		if( ch == ':' && depth == 1 ) {
! 			if( colon_at_depth1 ) return false;
! 			colon_at_depth1 = true;
! 			continue;
! 		}
! 	}
! 	return false;
  }
--- 1350,1383 ----
   */
  static bool
  is_refmod( const char input[], const char enput[] ) {
!   if( input == enput ) return false;
!   gcc_assert( *input == '(' );
!   int depth = 1;
!   bool colon_at_depth1 = false;
  
!   for( const char *p = input + 1; p < enput; p++ ) {
!     char ch = *p;
!     if( is_quote(ch) ) {
!       p = skip_string(p, enput, ch) - 1;
!       continue;
!     }
!     if( ch == '(' ) {
!       depth++;
!       continue;
!     }
!     if( ch == ')' ) {
!       depth--;
!       if( depth < 0 ) return false;
!       if( depth == 0 ) return colon_at_depth1;
!       continue;
!     }
!     if( ch == ':' && depth == 1 ) {
!       if( colon_at_depth1 ) return false;
!       colon_at_depth1 = true;
!       continue;
!     }
!   }
!   dbgmsg("%s:%d: '%.*s' is %sa refmod", __func__, __LINE__,
!          int(enput - input), input, colon_at_depth1? "" : "not ");
!   return colon_at_depth1;
  }
diff -Nrcpad gcc-17-20260727/gcc/cobol/scan_post.h gcc-17-20260802/gcc/cobol/scan_post.h
*** gcc-17-20260727/gcc/cobol/scan_post.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/scan_post.h	Sun Aug  2 22:32:06 2026
*************** prelex() {
*** 421,427 ****
          token = LEVEL78;
          break;
        case 88:
!         token = LEVEL78;
          break;
        }
      }
--- 421,427 ----
          token = LEVEL78;
          break;
        case 88:
!         token = LEVEL88;
          break;
        }
      }
diff -Nrcpad gcc-17-20260727/gcc/cobol/symbols.cc gcc-17-20260802/gcc/cobol/symbols.cc
*** gcc-17-20260727/gcc/cobol/symbols.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/symbols.cc	Sun Aug  2 22:32:06 2026
*************** symbol_redefines( const struct cbl_field
*** 762,767 ****
--- 762,772 ----
    return NULL;
  }
  
+ /*
+  * Find the first REDEFINES in a chain of redefines, which may be the input
+  * field itself.  ISO disallows a chain; one may not redefine something that
+  * redefines something else.  That is allowed under -dialect mf.
+  */
  cbl_field_t *
  symbol_redefines_root( const struct cbl_field_t *field ) {
    cbl_field_t *root = const_cast<cbl_field_t *>(field);
*************** symbol_redefines_root( const struct cbl_
*** 771,783 ****
    return root;
  }
  
- static cbl_field_t *
- symbol_explicitly_redefines( const cbl_field_t *field ) {
-   auto f = symbol_redefines(field);
-   if( f && is_record_area(f) ) return NULL;
-   return f;
- }
- 
  static uint32_t
  field_size( const struct cbl_field_t *field ) {
    size_t n = field->occurs.ntimes();
--- 776,781 ----
*************** grow_redefined_group( cbl_field_t *redef
*** 1250,1256 ****
   * For groups, return the element after the last field in the group.
   */
  static struct symbol_elem_t *
!  calculate_capacity( struct symbol_elem_t *e) {
    // For each group, sum capacities of children.  Exclude:
    //    FldClass, FldForward
    //    FldIndex with level 0 (really, any level 0)
--- 1248,1254 ----
   * For groups, return the element after the last field in the group.
   */
  static struct symbol_elem_t *
! calculate_capacity( struct symbol_elem_t *e) {
    // For each group, sum capacities of children.  Exclude:
    //    FldClass, FldForward
    //    FldIndex with level 0 (really, any level 0)
*************** static struct symbol_elem_t *
*** 1408,1413 ****
--- 1406,1417 ----
    return e;
  }
  
+ void
+ symbol_field_capacity_set( cbl_field_t *field ) {
+   gcc_assert(field->type == FldGroup);
+   calculate_capacity( symbol_elem_of(field) );
+ }
+ 
  static void
  verify_block( const struct symbol_elem_t *block,
                const struct symbol_elem_t *eoblock )
*************** symbols_update( size_t first, bool parse
*** 1886,1898 ****
        }
      }
  
!     bool size_invalid = field->data.memsize > 0 && symbol_redefines(field);
!     if( size_invalid ) { // redefine of record area is ok
!       const cbl_field_t * redefined = symbol_redefines(field);
!       size_invalid = ! is_record_area(redefined);
!     }
! 
!     if( !field->is_valid() || size_invalid )
      {
        size_t isym = p - symbols_begin();
        symbols_dump(symbols.first_program, true);
--- 1890,1896 ----
        }
      }
  
!     if( !field->is_valid() )
      {
        size_t isym = p - symbols_begin();
        symbols_dump(symbols.first_program, true);
*************** symbols_update( size_t first, bool parse
*** 1944,1950 ****
                (fmt_size_t)symbol_index(p), field_str(cbl_field_of(p)) );
      }
      assert(field->data.memsize == 0 || field_size(field) <= field_memsize(field));
-     assert( !(field->data.memsize > 0 && symbol_explicitly_redefines(field)) );
    }
  
    // A shared record area has no 01 child because that child redefines its parent.
--- 1942,1947 ----
diff -Nrcpad gcc-17-20260727/gcc/cobol/symbols.h gcc-17-20260802/gcc/cobol/symbols.h
*** gcc-17-20260727/gcc/cobol/symbols.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/symbols.h	Sun Aug  2 22:32:06 2026
*************** bool
*** 1180,1185 ****
--- 1180,1187 ----
  symbol_field_type_update( cbl_field_t *field,
                            cbl_field_type_t type, bool is_usage );
  
+ void symbol_field_capacity_set( cbl_field_t *field );
+ 
  struct sort_key_t;
  struct sort_key_t;
  
diff -Nrcpad gcc-17-20260727/gcc/cobol/util.cc gcc-17-20260802/gcc/cobol/util.cc
*** gcc-17-20260727/gcc/cobol/util.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/util.cc	Sun Aug  2 22:32:06 2026
*************** class cdf_directives_t
*** 183,191 ****
      static std::string str(cdf_values_t) {
        return "<dictionary>";
      }
-     static std::string str(source_format_t arg) {
-       return arg.description();
-     }
      static std::string str(cbl_enabled_exceptions_t) {
        return "<enabled_exceptions>";
      }
--- 183,188 ----
*************** class cdf_directives_t
*** 195,201 ****
    cdf_stack_t<cbl_call_convention_t> call_convention;
    cdf_stack_t<current_tokens_t> cobol_words;
    cdf_stack_t<cdf_values_t> dictionary;   // DEFINE
-   cdf_stack_t<source_format_t> source_format;
    cdf_stack_t<cbl_enabled_exceptions_t> enabled_exceptions;
  
    cdf_directives_t() {
--- 192,197 ----
*************** class cdf_directives_t
*** 206,219 ****
      call_convention.push();
      cobol_words.push();
      dictionary.push();
-     source_format.push();
      enabled_exceptions.push();
    }
    void pop() {
      call_convention.pop();
      cobol_words.pop();
      dictionary.pop();
-     source_format.pop();
      enabled_exceptions.pop();
    }
  };
--- 202,213 ----
*************** cbl_prototype_ok( const cbl_loc_t& loc,
*** 282,297 ****
    return true;
  }
  
- void
- cobol_set_indicator_column( int column ) {
-   cdf_directives.source_format.value().indicator_column_set(column);
-   dbgmsg("%s: format now %s", __func__,
-          cdf_directives.source_format.value().description());
- }
- source_format_t& cdf_source_format() {
-   return cdf_directives.source_format.value();
- }
- 
  cbl_enabled_exceptions_t&
  cdf_enabled_exceptions() {
    return cdf_directives.enabled_exceptions.value();
--- 276,281 ----
*************** void cdf_push_call_convention() { cdf_di
*** 302,323 ****
  void cdf_push_current_tokens() { cdf_directives.cobol_words.push(); }
  void cdf_push_dictionary() { cdf_directives.dictionary.push(); }
  void cdf_push_enabled_exceptions() { cdf_directives.enabled_exceptions.push(); }
- void cdf_push_source_format() {
-   cdf_directives.source_format.push();
-   dbgmsg("%s: format still %s", __func__,
-          cdf_directives.source_format.value().description());
- }
  
  void cdf_pop() { cdf_directives.pop(); }
  void cdf_pop_call_convention() { cdf_directives.call_convention.pop(); }
  void cdf_pop_current_tokens() { cdf_directives.cobol_words.pop(); }
  void cdf_pop_dictionary() { cdf_directives.dictionary.pop(); }
  void cdf_pop_enabled_exceptions() { cdf_directives.enabled_exceptions.pop(); }
- void cdf_pop_source_format() {
-   cdf_directives.source_format.pop();
-   dbgmsg("%s: format now %s", __func__,
-          cdf_directives.source_format.value().description());
- }
  
  void cdf_unreachable() { gcc_unreachable(); }
  
--- 286,297 ----
*************** bool cobol_filename( const char *name, i
*** 3435,3444 ****
    linemap_add(line_table, LC_ENTER, sysp, name, 1);
    input_filename_vestige = name;
    bool pushed = input_filenames.push( input_file_t(name, inode, 1) );
!   dbgmsg("%s: %s %s line %d-%d inode %ld", __func__,
           pushed? "pushed" : "set to", name,
           cobol_location().first_line,
!          cobol_location().last_line, inode);
    return pushed;
  }
  
--- 3409,3418 ----
    linemap_add(line_table, LC_ENTER, sysp, name, 1);
    input_filename_vestige = name;
    bool pushed = input_filenames.push( input_file_t(name, inode, 1) );
!   dbgmsg("%s: %s %s line %d-%d inode %lu", __func__,
           pushed? "pushed" : "set to", name,
           cobol_location().first_line,
!          cobol_location().last_line, (unsigned long) inode);
    return pushed;
  }
  
*************** void current_location_minus_one_clear()
*** 3527,3553 ****
  void
  gcc_location_set( const cbl_loc_t& loc ) {
    // Set the position to the first line & column in the location.
!  static location_t loc_m_1 = 0;
!  const location_t
!    start_line   = linemap_line_start( line_table, loc.first_line, 80 ),
!    token_start  = linemap_position_for_column( line_table, loc.first_column),
!    finish_line  = linemap_line_start( line_table, loc.last_line, 80 ),
!    token_finish = linemap_position_for_column( line_table, loc.last_column);
!  token_location = make_location (token_start, token_start, token_finish);
! 
!  if( loc.first_line > first_line_minus_1 ) {
!    // In order for GDB-COBOL to be able to step through COBOL code properly,
!    // it is sometimes necessary for the code at the beginning of a COBOL
!    // line to be using the location_t of the previous line.  This is true, for
!    // example, when laying down the infrastructure code between the last
!    // statement of a paragraph and the code created at the beginning of the
!    // following paragragh.  This code assumes that token_location values of
!    // interest are monotonic, and stores that prior value.
!    first_line_minus_1 = loc.first_line;
!    token_location_minus_1 = loc_m_1;
!    loc_m_1 = token_location;
!  }
! 
    location_dump(__func__, __LINE__, "parser", loc);
  }
  
--- 3501,3527 ----
  void
  gcc_location_set( const cbl_loc_t& loc ) {
    // Set the position to the first line & column in the location.
!   static location_t loc_m_1 = 0;
!   const location_t
!     start_line   = linemap_line_start( line_table, loc.first_line, 80 ),
!     token_start  = linemap_position_for_column( line_table, loc.first_column),
!     finish_line  = linemap_line_start( line_table, loc.last_line, 80 ),
!     token_finish = linemap_position_for_column( line_table, loc.last_column);
!   token_location = make_location (token_start, token_start, token_finish);
!   
!   if( loc.first_line > first_line_minus_1 ) {
!     // In order for GDB-COBOL to be able to step through COBOL code properly,
!     // it is sometimes necessary for the code at the beginning of a COBOL
!     // line to be using the location_t of the previous line.  This is true, for
!     // example, when laying down the infrastructure code between the last
!     // statement of a paragraph and the code created at the beginning of the
!     // following paragragh.  This code assumes that token_location values of
!     // interest are monotonic, and stores that prior value.
!     first_line_minus_1 = loc.first_line;
!     token_location_minus_1 = loc_m_1;
!     loc_m_1 = token_location;
!   }
!   
    location_dump(__func__, __LINE__, "parser", loc);
  }
  
*************** void gcc_location_dump() {
*** 3587,3592 ****
--- 3561,3585 ----
      fprintf(stderr, "\n");
  }
  
+ // tree.h defines yy_flex_debug as a macro because options.h
+ #ifdef yy_flex_debug
+ #undef yy_flex_debug
+ #endif
+ void
+ location_dump( const char func[], int line, const char tag[],
+                const cbl_loc_t& loc, bool force) {
+   extern int yy_flex_debug; // cppcheck-suppress shadowVariable
+   if( yy_flex_debug ) {
+     const char *detail = gcobol_getenv("update_location");
+     if( force || detail ) { // cppcheck-suppress knownConditionTrueFalse
+       bool gcc_detail = force || (detail && detail[0] == '2');
+       fprintf(stderr, "%s:%d: %s location (%d,%d) to (%d,%d)\n",
+               func, line, tag,
+               loc.first_line, loc.first_column, loc.last_line, loc.last_column);
+       if( gcc_detail ) gcc_location_dump();
+     }
+   }
+ }
  
  void ydferror( const char gmsgid[], ... ) ATTRIBUTE_GCOBOL_DIAG(1, 2);
  
*************** static const std::set<std::string> reser
*** 4227,4232 ****
--- 4220,4226 ----
    "END-SUBTRACT",
    "END-UNSTRING",
    "END-WRITE",
+   "END-XML",
    "ENVIRONMENT",
    "EO",
    "EOP",
diff -Nrcpad gcc-17-20260727/gcc/cobol/util.h gcc-17-20260802/gcc/cobol/util.h
*** gcc-17-20260727/gcc/cobol/util.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/cobol/util.h	Sun Aug  2 22:32:06 2026
*************** as_voidp( P p ) {
*** 54,111 ****
  }
  
  /*
-  * The default source format, whether free or fixed, is determined
-  * heuristically by examining the PROGRAM-ID line, if it exists, in the first
-  * input file. If that file does not have such a line, the default is free
-  * format.  Else the format is set to fixed if anything appears on that line
-  * that would prohibit parsing it as free format,
-  */
- class source_format_t {
-   bool first_file, explicitly;
-   int left, right;
- public:
-   source_format_t()
-     : first_file(true), explicitly(false), left(0), right(0)
-   {}
-   void indicator_column_set( int column ) {
-     explicitly = true;
-     if( column == 0 ) right = 0;
-     if( column < 0 ) {
-       column = -column;
-       right = 73;
-     }
-     left = column;
-   }
-   
-   bool inference_pending() {
-     bool tf = first_file && !explicitly;
-     first_file = false;
-     return tf;
-   }
- 
-   void infer( const char *bol, bool want_reference_format );
-   
-   inline bool is_fixed() const { return left == 7; }
-   inline bool is_reffmt() const { return is_fixed() && right == 73; }
-   inline bool is_free() const { return ! is_fixed(); }
-   
-   const char * description() const {
-     if( is_reffmt() ) return "REFERENCE";
-     if( is_fixed() ) return "FIXED";
-     if( is_free() ) return "FREE";
-     gcc_unreachable();
-   }    
- 
-   inline int left_margin() {
-     return left == 0? left : left - 1;
-   }
-   inline int right_margin() {
-     return right == 0? right : right - 1;
-   }
- }; 
- 
- 
- /*
   * Functions that validate every PERFORM calls a unique reference.
   */
  namespace match_proc {
--- 54,59 ----
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/aarch64-acle-builtins.h gcc-17-20260802/gcc/config/aarch64/aarch64-acle-builtins.h
*** gcc-17-20260727/gcc/config/aarch64/aarch64-acle-builtins.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/config/aarch64/aarch64-acle-builtins.h	Sun Aug  2 22:32:06 2026
*************** function_expander::result_mode () const
*** 1524,1529 ****
--- 1524,1545 ----
  #define TYPES_cvtnx_mf8(S, D, T) \
    D (mf8, f32)
  
+ #define TYPES_cvtzn(S, D, T) \
+   D (s8, f16), \
+   D (u8, f16), \
+   D (s16, f32), \
+   D (u16, f32), \
+   D (s32, f64), \
+   D (u32, f64)
+ 
+ #define TYPES_cvttb(S, D, T) \
+   D (f16, s8), \
+   D (f16, u8), \
+   D (f32, s16), \
+   D (f32, u16), \
+   D (f64, s32), \
+   D (f64, u32)
+ 
  /* { _s32 _s64 } x { _b8 _b16 _b32 _b64 }
     { _u32 _u64 }.  */
  #define TYPES_inc_dec_n1(D, A) \
*************** function_expander::result_mode () const
*** 1646,1651 ****
--- 1662,1672 ----
  #define TYPES_s_narrow_fsu(S, D, T) \
    D (f32, f16), D (s32, s16), D (u32, u16)
  
+ /* _s16_s8
+    _u16_u8.  */
+ #define TYPES_s_narrow_su(S, D, T) \
+   D (s16, s8), D (u16, u8)
+ 
  /* _za8 _za16 _za32 _za64 _za128.  */
  #define TYPES_all_za(S, D, T) \
    S (za8), S (za16), S (za32), S (za64), S (za128)
*************** DEF_SVE_TYPES_ARRAY (cvt_narrow);
*** 2012,2017 ****
--- 2033,2040 ----
  DEF_SVE_TYPES_ARRAY (cvt_s_s);
  DEF_SVE_TYPES_ARRAY (cvtn_mf8);
  DEF_SVE_TYPES_ARRAY (cvtnx_mf8);
+ DEF_SVE_TYPES_ARRAY (cvtzn);
+ DEF_SVE_TYPES_ARRAY (cvttb);
  DEF_SVE_TYPES_ARRAY (inc_dec_n);
  DEF_SVE_TYPES_ARRAY (qcvt_x2);
  DEF_SVE_TYPES_ARRAY (qcvt_x4);
*************** DEF_SVE_TYPES_ARRAY (while);
*** 2025,2030 ****
--- 2048,2054 ----
  DEF_SVE_TYPES_ARRAY (while_x);
  DEF_SVE_TYPES_ARRAY (while_x_c);
  DEF_SVE_TYPES_ARRAY (s_narrow_fsu);
+ DEF_SVE_TYPES_ARRAY (s_narrow_su);
  DEF_SVE_TYPES_ARRAY (all_za);
  DEF_SVE_TYPES_ARRAY (d_za);
  DEF_SVE_TYPES_ARRAY (za_bhsd_data);
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/aarch64-c.cc gcc-17-20260802/gcc/config/aarch64/aarch64-c.cc
*** gcc-17-20260727/gcc/config/aarch64/aarch64-c.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/config/aarch64/aarch64-c.cc	Sun Aug  2 22:32:06 2026
*************** aarch64_update_cpp_builtins (cpp_reader
*** 320,325 ****
--- 320,326 ----
    aarch64_def_or_undef (AARCH64_HAVE_ISA (SSVE_FEXPA),
  			"__ARM_FEATURE_SSVE_FEXPA", pfile);
    builtin_define ("__ARM_PREFETCH_RANGE");
+   aarch64_def_or_undef (TARGET_F16F32DOT, "__ARM_FEATURE_F16F32DOT", pfile);
  
    // Function multi-versioning defines
    aarch64_def_or_undef (targetm.has_ifunc_p (),
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/aarch64-simd-builtins.def gcc-17-20260802/gcc/config/aarch64/aarch64-simd-builtins.def
*** gcc-17-20260727/gcc/config/aarch64/aarch64-simd-builtins.def	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/config/aarch64/aarch64-simd-builtins.def	Sun Aug  2 22:32:06 2026
***************
*** 921,926 ****
--- 921,932 ----
    VAR2 (QUADOP_LANE_PAIR, bfdot_lane, 0, QUIET, v2sf, v4sf)
    VAR2 (QUADOP_LANE_PAIR, bfdot_laneq, 0, QUIET, v2sf, v4sf)
  
+   /* Implemented by sdot_prod<mode>.  */
+   BUILTIN_VF (TERNOP, sdot_prod, 10, DEFAULT)
+   /* Implemented by sdot_lane{q}<dot_mode>.  */
+   BUILTIN_VF (QUADOP_LANE_PAIR, sdot_lane, 10, DEFAULT)
+   BUILTIN_VF (QUADOP_LANE_PAIR, sdot_laneq, 10, DEFAULT)
+ 
    /* Implemented by aarch64_bfmmlaqv4sf  */
    VAR1 (TERNOP, bfmmlaq, 0, QUIET, v4sf)
  
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/aarch64-simd.md gcc-17-20260802/gcc/config/aarch64/aarch64-simd.md
*** gcc-17-20260727/gcc/config/aarch64/aarch64-simd.md	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/config/aarch64/aarch64-simd.md	Sun Aug  2 22:32:06 2026
***************
*** 782,787 ****
--- 782,817 ----
    [(set_attr "type" "neon_dot<VS:q>")]
  )
  
+ (define_insn "sdot_prod<VDQSF:vsi2qi><vczle><vczbe>"
+   [(set (match_operand:VDQSF 0 "register_operand" "=w")
+ 	(plus:VDQSF
+ 	  (unspec:VDQSF
+ 	   [(match_operand:<VSI2QI> 2 "register_operand" "w")
+ 	    (match_operand:<VSI2QI> 3 "register_operand" "w")]
+ 	    UNSPEC_FDOT)
+ 	  (match_operand:VDQSF 1 "register_operand" "0")))]
+   "TARGET_F16F32DOT"
+   "fdot\t%0.<Vtype>, %2.<Vbfdottype>, %3.<Vbfdottype>"
+   [(set_attr "type" "neon_dot<q>")]
+ )
+ 
+ (define_insn "sdot_lane<VF:isquadop><VDQSF:vsi2qi><vczle><vczbe>"
+   [(set (match_operand:VDQSF 0 "register_operand" "=w")
+ 	(plus:VDQSF
+ 	  (unspec:VDQSF
+ 	   [(match_operand:<VDQSF:VSI2QI> 2 "register_operand" "w")
+ 	    (match_operand:VF 3 "register_operand" "w")
+ 	    (match_operand:SI 4 "immediate_operand" "i")]
+ 	    UNSPEC_FDOT)
+ 	  (match_operand:VDQSF 1 "register_operand" "0")))]
+   "TARGET_F16F32DOT"
+ {
+   operands[4] = aarch64_endian_lane_rtx (<VF:MODE>mode, INTVAL (operands[4]));
+   return "fdot\t%0.<VDQSF:Vtype>, %2.<VDQSF:Vbfdottype>, %3.2h[%4]";
+ }
+   [(set_attr "type" "neon_dot<VDQSF:q>")]
+ )
+ 
  (define_expand "copysign<mode>3"
    [(match_operand:VHSDF 0 "register_operand")
     (match_operand:VHSDF 1 "register_operand")
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/aarch64-sve-builtins-base.cc gcc-17-20260802/gcc/config/aarch64/aarch64-sve-builtins-base.cc
*** gcc-17-20260727/gcc/config/aarch64/aarch64-sve-builtins-base.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/config/aarch64/aarch64-sve-builtins-base.cc	Sun Aug  2 22:32:06 2026
*************** public:
*** 938,950 ****
  };
  
  
! class svdot_impl : public function_base
  {
  public:
    rtx
    expand (function_expander &e) const override
    {
      insn_code icode;
      if (e.fpm_mode == aarch64_acle::FPM_set)
        icode = code_for_aarch64_sve_dot (e.result_mode ());
      else
--- 938,954 ----
  };
  
  
! class svdot_impl : public unspec_based_function_base
  {
  public:
+   using unspec_based_function_base::unspec_based_function_base;
+ 
    rtx
    expand (function_expander &e) const override
    {
      insn_code icode;
+     machine_mode mode0 = GET_MODE (e.args[0]);
+     machine_mode mode1 = GET_MODE (e.args[1]);
      if (e.fpm_mode == aarch64_acle::FPM_set)
        icode = code_for_aarch64_sve_dot (e.result_mode ());
      else
*************** public:
*** 952,957 ****
--- 956,962 ----
  	/* In the optab, the multiplication operands come before the accumulator
  	   operand.  The optab is keyed off the multiplication mode.  */
  	e.rotate_inputs_left (0, 3);
+ 	int unspec = unspec_for (e);
  	if (e.type_suffix_ids[1] == NUM_TYPE_SUFFIXES)
  	  icode = e.convert_optab_handler_for_sign (sdot_prod_optab,
  						    udot_prod_optab,
*************** public:
*** 960,968 ****
  	else
  	  icode = (e.type_suffix (0).float_p
  		   ? CODE_FOR_aarch64_sve_fdotvnx4sfvnx8hf
! 		   : e.type_suffix (0).unsigned_p
! 		   ? CODE_FOR_udot_prodvnx4sivnx8hi
! 		   : CODE_FOR_sdot_prodvnx4sivnx8hi);
        }
      return e.use_unpred_insn (icode);
    }
--- 965,971 ----
  	else
  	  icode = (e.type_suffix (0).float_p
  		   ? CODE_FOR_aarch64_sve_fdotvnx4sfvnx8hf
! 		   : code_for_dot_prod (unspec, mode0, mode1));
        }
      return e.use_unpred_insn (icode);
    }
*************** FUNCTION (svcvt, svcvt_impl,)
*** 3617,3623 ****
  FUNCTION (svcvtnt, NARROWING_TOP_CONVERT0 (aarch64_sve_cvtnt),)
  FUNCTION (svdiv, svdiv_impl,)
  FUNCTION (svdivr, rtx_code_function_rotated, (DIV, UDIV, UNSPEC_COND_FDIV))
! FUNCTION (svdot, svdot_impl,)
  FUNCTION (svdot_lane, svdotprod_lane_impl, (UNSPEC_SDOT, UNSPEC_UDOT,
  					    UNSPEC_FDOT, UNSPEC_DOT_LANE_FP8))
  FUNCTION (svdup, svdup_impl,)
--- 3620,3626 ----
  FUNCTION (svcvtnt, NARROWING_TOP_CONVERT0 (aarch64_sve_cvtnt),)
  FUNCTION (svdiv, svdiv_impl,)
  FUNCTION (svdivr, rtx_code_function_rotated, (DIV, UDIV, UNSPEC_COND_FDIV))
! FUNCTION (svdot, svdot_impl,(UNSPEC_SDOT, UNSPEC_UDOT, UNSPEC_FDOT))
  FUNCTION (svdot_lane, svdotprod_lane_impl, (UNSPEC_SDOT, UNSPEC_UDOT,
  					    UNSPEC_FDOT, UNSPEC_DOT_LANE_FP8))
  FUNCTION (svdup, svdup_impl,)
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc gcc-17-20260802/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
*** gcc-17-20260727/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc	Sun Aug  2 22:32:06 2026
*************** public:
*** 245,252 ****
      insn_code icode;
      if (e.fpm_mode == FPM_set)
        icode = code_for_aarch64_sve2_fp8_cvtn (GET_MODE (e.args[0]));
!     else
        icode = code_for_aarch64_sve_cvtn (e.result_mode ());
      return e.use_exact_insn (icode);
    }
  };
--- 245,286 ----
      insn_code icode;
      if (e.fpm_mode == FPM_set)
        icode = code_for_aarch64_sve2_fp8_cvtn (GET_MODE (e.args[0]));
!     else if (e.type_suffix (0).float_p)
        icode = code_for_aarch64_sve_cvtn (e.result_mode ());
+     else if (e.type_suffix (0).unsigned_p)
+       icode = code_for_aarch64_sve2_fcvtzun (e.result_mode ());
+     else
+       icode = code_for_aarch64_sve2_fcvtzsn (e.result_mode ());
+     return e.use_exact_insn (icode);
+   }
+ };
+ 
+ class svcvtt_impl : public function_base
+ {
+ public:
+   rtx
+   expand (function_expander &e) const override
+   {
+     insn_code icode;
+     if (e.type_suffix (1).unsigned_p)
+       icode = code_for_aarch64_sve2_ucvtflt (e.result_mode ());
+     else
+       icode = code_for_aarch64_sve2_scvtflt (e.result_mode ());
+     return e.use_exact_insn (icode);
+   }
+ };
+ 
+ class svcvtb_impl : public function_base
+ {
+ public:
+   rtx
+   expand (function_expander &e) const override
+   {
+     insn_code icode;
+     if (e.type_suffix (1).unsigned_p)
+       icode = code_for_aarch64_sve2_ucvtfb (e.result_mode ());
+     else
+       icode = code_for_aarch64_sve2_scvtfb (e.result_mode ());
      return e.use_exact_insn (icode);
    }
  };
*************** FUNCTION (svcvtn, svcvtn_impl,)
*** 1072,1077 ****
--- 1106,1113 ----
  FUNCTION (svcvtnb, fixed_insn_function, (CODE_FOR_aarch64_sve2_fp8_cvtnbvnx16qi))
  FUNCTION (svcvtx, unspec_based_function, (-1, -1, UNSPEC_COND_FCVTX))
  FUNCTION (svcvtxnt, NARROWING_TOP_CONVERT1 (aarch64_sve2_cvtxnt),)
+ FUNCTION (svcvtt, svcvtt_impl,)
+ FUNCTION (svcvtb, svcvtb_impl,)
  FUNCTION (svdup_laneq, svdup_laneq_impl,)
  FUNCTION (sveor3, CODE_FOR_MODE0 (aarch64_sve2_eor3),)
  FUNCTION (sveorbt, unspec_based_function, (UNSPEC_EORBT, UNSPEC_EORBT, -1))
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/aarch64-sve-builtins-sve2.def gcc-17-20260802/gcc/config/aarch64/aarch64-sve-builtins-sve2.def
*** gcc-17-20260727/gcc/config/aarch64/aarch64-sve-builtins-sve2.def	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/config/aarch64/aarch64-sve-builtins-sve2.def	Sun Aug  2 22:32:06 2026
*************** DEF_SVE_FUNCTION_GS_FPM (svmmla, mmla, h
*** 465,470 ****
--- 465,478 ----
  DEF_SVE_FUNCTION_GS_FPM (svmmla, mmla, s_float_mf8, none, none, set)
  #undef REQUIRED_EXTENSIONS
  
+ #define REQUIRED_EXTENSIONS sve_and_sme (AARCH64_FL_SVE2p3, AARCH64_FL_SME2p3)
+ DEF_SVE_FUNCTION (svdot, ternary_qq_opt_n_or_011, s_narrow_su, none)
+ DEF_SVE_FUNCTION (svdot_lane, ternary_qq_or_011_lane, s_narrow_su, none)
+ DEF_SVE_FUNCTION_GS (svcvtn, unary_convertxn, cvtzn, x2, none)
+ DEF_SVE_FUNCTION (svcvtt, unary_convert, cvttb, none)
+ DEF_SVE_FUNCTION (svcvtb, unary_convert, cvttb, none)
+ #undef REQUIRED_EXTENSIONS
+ 
  #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE_F16F32MM)
  DEF_SVE_FUNCTION (svmmla, mmla, cvt_f32_f16, none)
  #undef REQUIRED_EXTENSIONS
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/aarch64-sve-builtins-sve2.h gcc-17-20260802/gcc/config/aarch64/aarch64-sve-builtins-sve2.h
*** gcc-17-20260727/gcc/config/aarch64/aarch64-sve-builtins-sve2.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/config/aarch64/aarch64-sve-builtins-sve2.h	Sun Aug  2 22:32:06 2026
*************** namespace aarch64_acle
*** 70,75 ****
--- 70,77 ----
      extern const function_base *const svcvtlt1;
      extern const function_base *const svcvtlt2;
      extern const function_base *const svcvtn;
+     extern const function_base *const svcvtt;
+     extern const function_base *const svcvtb;
      extern const function_base *const svcvtnb;
      extern const function_base *const svcvtnt;
      extern const function_base *const svcvtx;
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/aarch64-sve2.md gcc-17-20260802/gcc/config/aarch64/aarch64-sve2.md
*** gcc-17-20260727/gcc/config/aarch64/aarch64-sve2.md	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/config/aarch64/aarch64-sve2.md	Sun Aug  2 22:32:06 2026
***************
*** 105,110 ****
--- 105,111 ----
  ;;
  ;; == Conversions
  ;; ---- [FP<-FP] Widening conversions
+ ;; ---- [FP<-INT] Widening conversions
  ;; ---- [FP<-FP] Narrowing conversions
  ;; ---- [FP<-FP] Multi-vector widening conversions
  ;; ---- [FP<-FP] Multi-vector narrowing conversions
***************
*** 2862,2875 ****
  )
  
  ;; Two-way dot-product.
! (define_insn "<sur>dot_prodvnx4sivnx8hi"
!   [(set (match_operand:VNx4SI 0 "register_operand")
! 	(plus:VNx4SI
! 	  (unspec:VNx4SI
! 	    [(match_operand:VNx8HI 1 "register_operand")
! 	     (match_operand:VNx8HI 2 "register_operand")]
  	    DOTPROD)
! 	  (match_operand:VNx4SI 3 "register_operand")))]
    "TARGET_SVE2p1_OR_SME2"
    {@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ]
       [ w        , w , w , 0 ; *              ] <sur>dot\t%0.s, %1.h, %2.h
--- 2863,2876 ----
  )
  
  ;; Two-way dot-product.
! (define_insn "@<sur>dot_prod<VNx4SI_ONLY:mode><VNx8HI_ONLY:mode>"
!   [(set (match_operand:VNx4SI_ONLY 0 "register_operand")
! 	(plus:VNx4SI_ONLY
! 	  (unspec:VNx4SI_ONLY
! 	    [(match_operand:VNx8HI_ONLY 1 "register_operand")
! 	     (match_operand:VNx8HI_ONLY 2 "register_operand")]
  	    DOTPROD)
! 	  (match_operand:VNx4SI_ONLY 3 "register_operand")))]
    "TARGET_SVE2p1_OR_SME2"
    {@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ]
       [ w        , w , w , 0 ; *              ] <sur>dot\t%0.s, %1.h, %2.h
***************
*** 2878,2883 ****
--- 2879,2919 ----
    [(set_attr "sve_type" "sve_int_dot")]
  )
  
+ ;; Two-way dot-product SME2p3 || SVE2p3.
+ (define_insn "@<sur>dot_prod<VNx8HI_ONLY:mode><VNx16QI_ONLY:mode>"
+   [(set (match_operand:VNx8HI_ONLY 0 "register_operand")
+ 	(plus:VNx8HI_ONLY
+ 	  (unspec:VNx8HI_ONLY
+ 	    [(match_operand:VNx16QI_ONLY 1 "register_operand")
+ 	     (match_operand:VNx16QI_ONLY 2 "register_operand")]
+ 	    DOTPROD)
+ 	  (match_operand:VNx8HI_ONLY 3 "register_operand")))]
+   "TARGET_SVE2p3_OR_SME2p3"
+   {@ [ cons: =0 , 1 , 2 , 3 ; attrs: movprfx ]
+      [ w        , w , w , 0 ; *              ] <sur>dot\t%0.h, %1.b, %2.b
+      [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %3\;<sur>dot\t%0.h, %1.b, %2.b
+   }
+   [(set_attr "sve_type" "sve_int_dot")]
+ )
+ 
+ (define_insn "@aarch64_<sur>dot_prod_lane<VNx8HI_ONLY:mode><VNx16QI_ONLY:mode>"
+   [(set (match_operand:VNx8HI_ONLY 0 "register_operand")
+ 	(plus:VNx8HI_ONLY
+ 	  (unspec:VNx8HI_ONLY
+ 	    [(match_operand:VNx16QI_ONLY 1 "register_operand")
+ 	     (unspec:VNx16QI_ONLY
+ 	       [(match_operand:VNx16QI_ONLY 2 "register_operand")
+ 		(match_operand:SI 3 "const_int_operand")]
+ 	       UNSPEC_SVE_LANE_SELECT)]
+ 	    DOTPROD)
+ 	  (match_operand:VNx8HI_ONLY 4 "register_operand")))]
+   "TARGET_SVE2p3_OR_SME2p3"
+   {@ [ cons: =0 , 1 , 2 , 4 ; attrs: movprfx ]
+      [ w        , w , y , 0 ; *              ] <sur>dot\t%0.h, %1.b, %2.b[%3]
+      [ ?&w      , w , y , w ; yes            ] movprfx\t%0, %4\;<sur>dot\t%0.h, %1.b, %2.b[%3]
+   }
+   [(set_attr "sve_type" "sve_fp_mul")]
+ )
  ;; -------------------------------------------------------------------------
  ;; ---- [FP] Multi-register operations
  ;; -------------------------------------------------------------------------
***************
*** 3634,3639 ****
--- 3670,3725 ----
  )
  
  ;; -------------------------------------------------------------------------
+ ;; ---- [FP<-INT] Widening conversions
+ ;; -------------------------------------------------------------------------
+ ;; Includes:
+ ;; - SCVTF (SME_2p3)
+ ;; - SCVTFLT (SME_2p3)
+ ;; - UCVTF (SME_2p3)
+ ;; - UCVTFLT (SME_2p3)
+ ;; -------------------------------------------------------------------------
+ 
+ (define_insn "@aarch64_sve2_scvtfb<mode>"
+   [(set (match_operand:SVE_FULL_F 0 "register_operand" "=w")
+ 	(unspec:SVE_FULL_F
+ 	  [(match_operand:<CVTTB_SRC> 1 "register_operand" "w")]
+ 	  UNSPEC_SCVTFB))]
+   "TARGET_SVE2p3_OR_SME2p3"
+   "scvtf\t%0.<Vetype>, %1.<Ventype>"
+   [(set_attr "sve_type" "sve_fp_cvt")]
+ )
+ 
+ (define_insn "@aarch64_sve2_scvtflt<mode>"
+   [(set (match_operand:SVE_FULL_F 0 "register_operand" "=w")
+ 	(unspec:SVE_FULL_F
+ 	  [(match_operand:<CVTTB_SRC> 1 "register_operand" "w")]
+ 	  UNSPEC_SCVTFLT))]
+   "TARGET_SVE2p3_OR_SME2p3"
+   "scvtflt\t%0.<Vetype>, %1.<Ventype>"
+   [(set_attr "sve_type" "sve_fp_cvt")]
+ )
+ 
+ (define_insn "@aarch64_sve2_ucvtfb<mode>"
+   [(set (match_operand:SVE_FULL_F 0 "register_operand" "=w")
+ 	(unspec:SVE_FULL_F
+ 	  [(match_operand:<CVTTB_SRC> 1 "register_operand" "w")]
+ 	  UNSPEC_UCVTFB))]
+   "TARGET_SVE2p3_OR_SME2p3"
+   "ucvtf\t%0.<Vetype>, %1.<Ventype>"
+   [(set_attr "sve_type" "sve_fp_cvt")]
+ )
+ 
+ (define_insn "@aarch64_sve2_ucvtflt<mode>"
+   [(set (match_operand:SVE_FULL_F 0 "register_operand" "=w")
+ 	(unspec:SVE_FULL_F
+ 	  [(match_operand:<CVTTB_SRC> 1 "register_operand" "w")]
+ 	  UNSPEC_UCVTFLT))]
+   "TARGET_SVE2p3_OR_SME2p3"
+   "ucvtflt\t%0.<Vetype>, %1.<Ventype>"
+   [(set_attr "sve_type" "sve_fp_cvt")]
+ )
+ 
+ ;; -------------------------------------------------------------------------
  ;; ---- [FP<-FP] Narrowing conversions
  ;; -------------------------------------------------------------------------
  ;; Includes:
***************
*** 3900,3905 ****
--- 3986,3993 ----
  ;; Includes the multi-register forms of:
  ;; - FCVTZS (SME2)
  ;; - FCVTZU (SME2)
+ ;; - FCVTZSN (SME2p3)
+ ;; - FCVTZUN (SME2p3)
  ;; -------------------------------------------------------------------------
  
  (define_insn "<optab><mode><v_int_equiv>2"
***************
*** 3911,3916 ****
--- 3999,4024 ----
    [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
+ (define_insn "@aarch64_sve2_fcvtzsn<mode>"
+   [(set (match_operand:SVE_FULL_BHSI 0 "register_operand" "=w")
+ 	(unspec:SVE_FULL_BHSI
+ 	  [(match_operand:<FCVTZN_SRC> 1 "aligned_register_operand" "Uw2")]
+ 	  UNSPEC_FCVTZSN))]
+   "TARGET_SVE2p3_OR_SME2p3"
+   "fcvtzsn\t%0.<Vetype>, %1"
+   [(set_attr "sve_type" "sve_fp_cvt")]
+ )
+ 
+ (define_insn "@aarch64_sve2_fcvtzun<mode>"
+   [(set (match_operand:SVE_FULL_BHSI 0 "register_operand" "=w")
+ 	(unspec:SVE_FULL_BHSI
+ 	  [(match_operand:<FCVTZN_SRC> 1 "aligned_register_operand" "Uw2")]
+ 	  UNSPEC_FCVTZUN))]
+   "TARGET_SVE2p3_OR_SME2p3"
+   "fcvtzun\t%0.<Vetype>, %1"
+   [(set_attr "sve_type" "sve_fp_cvt")]
+ )
+ 
  ;; =========================================================================
  ;; == Other arithmetic
  ;; =========================================================================
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/aarch64.cc gcc-17-20260802/gcc/config/aarch64/aarch64.cc
*** gcc-17-20260727/gcc/config/aarch64/aarch64.cc	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/config/aarch64/aarch64.cc	Sun Aug  2 22:32:06 2026
*************** aarch64_detect_scalar_stmt_subtype (vec_
*** 18247,18255 ****
  				    stmt_vec_info stmt_info,
  				    fractional_cost stmt_cost)
  {
!   /* Detect an extension of a loaded value.  In general, we'll be able to fuse
!      the extension with the load.  */
!   if (kind == scalar_stmt && vect_is_extending_load (vinfo, stmt_info))
      return 0;
  
    return stmt_cost;
--- 18247,18258 ----
  				    stmt_vec_info stmt_info,
  				    fractional_cost stmt_cost)
  {
!   /* Detect an extension of a loaded value or truncation of a value being
!      stored.  In general, we'll be able to fuse the extension/truncation with
!      the load/store.  */
!   if (kind == scalar_stmt
!       && (vect_is_extending_load (vinfo, stmt_info)
! 	  || vect_is_truncating_store (vinfo, stmt_info)))
      return 0;
  
    return stmt_cost;
*************** aarch64_sve_adjust_stmt_cost (class vec_
*** 18377,18382 ****
--- 18380,18392 ----
    if (kind == vector_stmt && vect_is_extending_load (vinfo, stmt_info))
      stmt_cost = 0;
  
+   /* Most stores have truncating forms that can do the truncation on the fly.
+      Optimistically assume that a truncation followed by a store will fold to
+      this form during combine, and that the truncation therefore comes for free.
+    */
+   if (kind == vector_stmt && vect_is_truncating_store (vinfo, stmt_info))
+     stmt_cost = 0;
+ 
    /* For similar reasons, vector_stmt integer truncations are a no-op,
       because we can just ignore the unused upper bits of the source.  */
    if (kind == vector_stmt && vect_is_integer_truncation (stmt_info))
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/aarch64.h gcc-17-20260802/gcc/config/aarch64/aarch64.h
*** gcc-17-20260727/gcc/config/aarch64/aarch64.h	Mon Jul 27 02:16:04 2026
--- gcc-17-20260802/gcc/config/aarch64/aarch64.h	Sun Aug  2 22:32:06 2026
*************** constexpr auto AARCH64_FL_DEFAULT_ISA_MO
*** 318,323 ****
--- 318,326 ----
  /* SVE2p2 instructions, enabled through +sve2p2.  */
  #define TARGET_SVE2p2 AARCH64_HAVE_ISA (SVE2p2)
  
+ /* SVE2p3 instructions, enabled through +sve2p3.  */
+ #define TARGET_SVE2p3 AARCH64_HAVE_ISA (SVE2p3)
+ 
  /* SME instructions, enabled through +sme.  Note that this does not
     imply anything about the state of PSTATE.SM; instructions that require
     SME and streaming mode should use TARGET_STREAMING instead.  */
*************** constexpr auto AARCH64_FL_DEFAULT_ISA_MO
*** 351,356 ****
--- 354,362 ----
  /* SME2p2 instructions, enabled through +sme2p2.  */
  #define TARGET_SME2p2 AARCH64_HAVE_ISA (SME2p2)
  
+ /* SME2p3 instructions, enabled through +sme2p3.  */
+ #define TARGET_SME2p3 AARCH64_HAVE_ISA (SME2p3)
+ 
  /* Same with streaming mode enabled.  */
  #define TARGET_STREAMING_SME2 (TARGET_STREAMING && TARGET_SME2)
  
*************** constexpr auto AARCH64_FL_DEFAULT_ISA_MO
*** 358,363 ****
--- 364,371 ----
  
  #define TARGET_STREAMING_SME2p2 (TARGET_STREAMING && AARCH64_HAVE_ISA (SME2p2))
  
+ #define TARGET_STREAMING_SME2p3 (TARGET_STREAMING && AARCH64_HAVE_ISA (SME2p3))
+ 
  #define TARGET_SME_B16B16 AARCH64_HAVE_ISA (SME_B16B16)
  
  /* ARMv8.3-A features.  */
*************** constexpr auto AARCH64_FL_DEFAULT_ISA_MO
*** 427,432 ****
--- 435,442 ----
  #define TARGET_F8F16MM (AARCH64_HAVE_ISA (F8F16MM))
  /* SVE_F16F32MM instructions, enabled through +sve-f16f32mm.  */
  #define TARGET_SVE_F16F32MM (AARCH64_HAVE_ISA (SVE_F16F32MM))
+ /* F16F32DOT instructions enabled through +f16f32dot.  */
+ #define TARGET_F16F32DOT (AARCH64_HAVE_ISA (F16F32DOT))
  
  /* Make sure this is always defined so we don't have to check for ifdefs
     but rather use normal ifs.  */
*************** constexpr auto AARCH64_FL_DEFAULT_ISA_MO
*** 532,537 ****
--- 542,549 ----
     functions, since streaming mode itself implies SME.  */
  #define TARGET_SVE2p1_OR_SME (TARGET_SVE2p1 || TARGET_STREAMING)
  
+ #define TARGET_SVE2p3_OR_SME2p3 (TARGET_SVE2p3 || TARGET_SME2p3)
+ 
  #define TARGET_SVE2p1_OR_SME2 \
    ((TARGET_SVE2p1 || TARGET_STREAMING) \
     && (TARGET_SME2 || TARGET_NON_STREAMING))
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/arm_neon.h gcc-17-20260802/gcc/config/aarch64/arm_neon.h
*** gcc-17-20260727/gcc/config/aarch64/arm_neon.h	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/aarch64/arm_neon.h	Sun Aug  2 22:32:06 2026
*************** vst4q_lane_bf16 (bfloat16_t *__ptr, bflo
*** 22404,22409 ****
--- 22404,22459 ----
  
  #pragma GCC pop_options
  
+ #pragma GCC push_options
+ #pragma GCC target ("+nothing+f16f32dot")
+ 
+ __extension__ extern __inline float32x2_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vdot_f32_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
+ {
+   return __builtin_aarch64_sdot_prodv4hf (__r, __a, __b);
+ }
+ 
+ __extension__ extern __inline float32x4_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vdotq_f32_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b)
+ {
+   return __builtin_aarch64_sdot_prodv8hf (__r, __a, __b);
+ }
+ 
+ __extension__ extern __inline float32x2_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vdot_lane_f32_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b,
+ 		 const int __index)
+ {
+   return __builtin_aarch64_sdot_lanev4hf (__r, __a, __b, __index);
+ }
+ 
+ __extension__ extern __inline float32x2_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vdot_laneq_f32_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b,
+ 		  const int __index)
+ {
+   return __builtin_aarch64_sdot_laneqv4hf (__r, __a, __b, __index);
+ }
+ 
+ __extension__ extern __inline float32x4_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vdotq_lane_f32_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b,
+ 		  const int __index)
+ {
+   return __builtin_aarch64_sdot_lanev8hf (__r, __a, __b, __index);
+ }
+ 
+ __extension__ extern __inline float32x4_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vdotq_laneq_f32_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b,
+ 		  const int __index)
+ {
+   return __builtin_aarch64_sdot_laneqv8hf (__r, __a, __b, __index);
+ }
+ 
+ #pragma GCC pop_options
  /* AdvSIMD 8-bit Integer Matrix Multiply (I8MM) intrinsics.  */
  
  #pragma GCC push_options
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/gcc-auto-profile gcc-17-20260802/gcc/config/aarch64/gcc-auto-profile
*** gcc-17-20260727/gcc/config/aarch64/gcc-auto-profile	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/aarch64/gcc-auto-profile	Sun Aug  2 22:32:06 2026
*************** if [ "$use_brbe" = true ] ; then
*** 45,51 ****
    set -x
    perf record --inherit -o perf.data -j any,$FLAGS "$@"
    set +x
! elif [ -n "$(perf list | grep arm_spe)" ] ; then
    echo >&2 "Info: Using SPE to collect branch profiles"
    set -x
    perf record --inherit -o perf.data -e arm_spe_0/branch_filter=1/ "$@"
--- 45,51 ----
    set -x
    perf record --inherit -o perf.data -j any,$FLAGS "$@"
    set +x
! elif [ -n "$(perf list pmu | grep arm_spe)" ]; then
    echo >&2 "Info: Using SPE to collect branch profiles"
    set -x
    perf record --inherit -o perf.data -e arm_spe_0/branch_filter=1/ "$@"
diff -Nrcpad gcc-17-20260727/gcc/config/aarch64/iterators.md gcc-17-20260802/gcc/config/aarch64/iterators.md
*** gcc-17-20260727/gcc/config/aarch64/iterators.md	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/aarch64/iterators.md	Sun Aug  2 22:32:06 2026
***************
*** 172,177 ****
--- 172,180 ----
  ;; BFmode vector modes.
  (define_mode_iterator VBF [V4BF V8BF])
  
+ ;; Fmode vector modes.
+ (define_mode_iterator VF [V4HF V8HF])
+ 
  ;; This mode iterator allows :P to be used for patterns that operate on
  ;; addresses in different modes.  In LP64, only DI will match, while in
  ;; ILP32, either can match.
***************
*** 1120,1125 ****
--- 1123,1134 ----
      UNSPEC_COND_FCVTNT	; Used in aarch64-sve2.md.
      UNSPEC_COND_FCVTX	; Used in aarch64-sve2.md.
      UNSPEC_COND_FCVTXNT	; Used in aarch64-sve2.md.
+     UNSPEC_FCVTZSN	; Used in aarch64-sve2.md.
+     UNSPEC_FCVTZUN	; Used in aarch64-sve2.md.
+     UNSPEC_SCVTFB	; Used in aarch64-sve2.md.
+     UNSPEC_SCVTFLT	; Used in aarch64-sve2.md.
+     UNSPEC_UCVTFB	; Used in aarch64-sve2.md.
+     UNSPEC_UCVTFLT	; Used in aarch64-sve2.md.
      UNSPEC_COND_FLOGB	; Used in aarch64-sve2.md.
      UNSPEC_DOT_FP8	; Used in aarch64-sve2.md.
      UNSPEC_DOT_LANE_FP8	; Used in aarch64-sve2.md.
***************
*** 2275,2281 ****
  			  (V8HI "4s") (V4SI "2d")])
  
  ;; SVE vector after narrowing.
! (define_mode_attr Ventype [(VNx8HI "b")
  			   (VNx4SI "h") (VNx4SF "h")
  			   (VNx2DI "s") (VNx2DF "s")
  			   (VNx8SI "h") (VNx16SI "b")
--- 2284,2290 ----
  			  (V8HI "4s") (V4SI "2d")])
  
  ;; SVE vector after narrowing.
! (define_mode_attr Ventype [(VNx8HI "b") (VNx8HF "b")
  			   (VNx4SI "h") (VNx4SF "h")
  			   (VNx2DI "s") (VNx2DF "s")
  			   (VNx8SI "h") (VNx16SI "b")
***************
*** 2668,2676 ****
  		      (V4HF "v") (V8HF  "v")])
  
  (define_mode_attr vsi2qi [(V2SI "v8qi") (V4SI "v16qi")
! 			  (VNx4SI "vnx16qi") (VNx2DI "vnx8hi")])
  (define_mode_attr VSI2QI [(V2SI "V8QI") (V4SI "V16QI")
! 			  (VNx4SI "VNx16QI") (VNx2DI "VNx8HI")])
  
  
  ;; Register suffix for DOTPROD input types from the return type.
--- 2677,2687 ----
  		      (V4HF "v") (V8HF  "v")])
  
  (define_mode_attr vsi2qi [(V2SI "v8qi") (V4SI "v16qi")
! 			  (VNx4SI "vnx16qi") (VNx2DI "vnx8hi")
! 			  (V2SF "v4hf") (V4SF "v8hf")])
  (define_mode_attr VSI2QI [(V2SI "V8QI") (V4SI "V16QI")
! 			  (VNx4SI "VNx16QI") (VNx2DI "VNx8HI")
! 			  (V2SF "V4HF") (V4SF "V8HF")])
  
  
  ;; Register suffix for DOTPROD input types from the return type.
***************
*** 2720,2726 ****
  
  (define_mode_attr f16quad [(V2SF "") (V4SF "q")])
  
! (define_mode_attr isquadop [(V8QI "") (V16QI "q") (V4BF "") (V8BF "q")])
  
  (define_code_attr f16mac [(plus "a") (minus "s")])
  
--- 2731,2738 ----
  
  (define_mode_attr f16quad [(V2SF "") (V4SF "q")])
  
! (define_mode_attr isquadop [(V8QI "") (V16QI "q") (V4BF "") (V8BF "q")
! 			    (V4HF "") (V8HF "q")])
  
  (define_code_attr f16mac [(plus "a") (minus "s")])
  
***************
*** 2903,2908 ****
--- 2915,2928 ----
  				    (V4HF "<Vetype>[%4]") (V8HF "<Vetype>[%4]")
  				    ])
  
+ (define_mode_attr FCVTZN_SRC [(VNx16QI "VNx16HF")
+ 			      (VNx8HI "VNx8SF")
+ 			      (VNx4SI "VNx4DF")])
+ 
+ (define_mode_attr CVTTB_SRC [(VNx8HF "VNx16QI")
+ 			     (VNx4SF "VNx8HI")
+ 			     (VNx2DF "VNx4SI")])
+ 
  (define_mode_attr za16_offset_range [(VNx16QI "0_to_14_step_2")
  				     (VNx32QI "0_to_6_step_2")
  				     (VNx64QI "0_to_6_step_2")])
diff -Nrcpad gcc-17-20260727/gcc/config/cris/cris.md gcc-17-20260802/gcc/config/cris/cris.md
*** gcc-17-20260727/gcc/config/cris/cris.md	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/cris/cris.md	Sun Aug  2 22:32:06 2026
***************
*** 430,450 ****
  ;; power of 2, or if val + 1 is a power of two, where we check for a bunch
  ;; of zeros starting at bit 0).
  
! ;; SImode.  This mode is the only one needed, since gcc automatically
! ;; extends subregs for lower-size modes.
! (define_insn "*btst<mode>"
    [(set (reg:ZnNNZSET CRIS_CC0_REGNUM)
  	(compare:ZnNNZSET
! 	 (zero_extract:SI
! 	  (match_operand:SI 0 "nonmemory_operand" "r, r,r, r,r, r,Kp")
  	  (match_operand:SI 1 "const_int_operand" "Kc,n,Kc,n,Kc,n,n")
  	  (match_operand:SI 2 "nonmemory_operand" "M, M,Kc,n,r, r,r"))
  	 (const_int 0)))]
    ;; Either it is a single bit, or consecutive ones starting at 0.
    "reload_completed
     && CONST_INT_P (operands[1])
!    && ((operands[1] == const1_rtx && <MODE>mode == CC_ZnNmode)
!        || (operands[2] == const0_rtx && <MODE>mode == CC_NZmode))
     && (REG_S_P (operands[0])
         || (operands[1] == const1_rtx
  	   && REG_S_P (operands[2])
--- 430,448 ----
  ;; power of 2, or if val + 1 is a power of two, where we check for a bunch
  ;; of zeros starting at bit 0).
  
! (define_insn "*btst<BWD:mode><ZnNNZSET:mode>"
    [(set (reg:ZnNNZSET CRIS_CC0_REGNUM)
  	(compare:ZnNNZSET
! 	 (zero_extract:BWD
! 	  (match_operand:BWD 0 "nonmemory_operand" "r, r,r, r,r, r,Kp")
  	  (match_operand:SI 1 "const_int_operand" "Kc,n,Kc,n,Kc,n,n")
  	  (match_operand:SI 2 "nonmemory_operand" "M, M,Kc,n,r, r,r"))
  	 (const_int 0)))]
    ;; Either it is a single bit, or consecutive ones starting at 0.
    "reload_completed
     && CONST_INT_P (operands[1])
!    && ((operands[1] == const1_rtx && <ZnNNZSET:MODE>mode == CC_ZnNmode)
!        || (operands[2] == const0_rtx && <ZnNNZSET:MODE>mode == CC_NZmode))
     && (REG_S_P (operands[0])
         || (operands[1] == const1_rtx
  	   && REG_S_P (operands[2])
***************
*** 2380,2386 ****
    "&& reload_completed"
    [(set (reg:CC_ZnN CRIS_CC0_REGNUM)
  	(compare:CC_ZnN
! 	 (zero_extract:SI (match_dup 0) (const_int 1) (match_dup 1))
  	 (const_int 0)))
     (set (pc)
  	(if_then_else (zcond (reg:CC_ZnN CRIS_CC0_REGNUM) (const_int 0))
--- 2378,2384 ----
    "&& reload_completed"
    [(set (reg:CC_ZnN CRIS_CC0_REGNUM)
  	(compare:CC_ZnN
! 	 (zero_extract:BWD (match_dup 0) (const_int 1) (match_dup 1))
  	 (const_int 0)))
     (set (pc)
  	(if_then_else (zcond (reg:CC_ZnN CRIS_CC0_REGNUM) (const_int 0))
***************
*** 2406,2412 ****
    "&& reload_completed"
    [(set (reg:CC_NZ CRIS_CC0_REGNUM)
  	(compare:CC_NZ
! 	 (zero_extract:SI (match_dup 0) (match_dup 1) (const_int 0))
  	 (const_int 0)))
     (set (pc)
  	(if_then_else (zcond (reg:CC_NZ CRIS_CC0_REGNUM) (const_int 0))
--- 2404,2410 ----
    "&& reload_completed"
    [(set (reg:CC_NZ CRIS_CC0_REGNUM)
  	(compare:CC_NZ
! 	 (zero_extract:BWD (match_dup 0) (match_dup 1) (const_int 0))
  	 (const_int 0)))
     (set (pc)
  	(if_then_else (zcond (reg:CC_NZ CRIS_CC0_REGNUM) (const_int 0))
diff -Nrcpad gcc-17-20260727/gcc/config/i386/i386-expand.cc gcc-17-20260802/gcc/config/i386/i386-expand.cc
*** gcc-17-20260727/gcc/config/i386/i386-expand.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/i386/i386-expand.cc	Sun Aug  2 22:32:06 2026
*************** bool
*** 17983,17990 ****
  ix86_expand_vector_init_one_nonzero (bool mmx_ok, machine_mode mode,
  				     rtx target, rtx var, int one_var)
  {
-   machine_mode vsimode;
-   rtx new_target;
    rtx x, tmp;
    bool use_vector_set = false;
    rtx (*gen_vec_set_0) (rtx, rtx, rtx) = NULL;
--- 17983,17988 ----
*************** ix86_expand_vector_init_one_nonzero (boo
*** 17992,18007 ****
    switch (mode)
      {
      case E_V2DImode:
!       /* For SSE4.1, we normally use vector set.  But if the second
! 	 element is zero and inter-unit moves are OK, we use movq
! 	 instead.  */
!       use_vector_set = (TARGET_64BIT && TARGET_SSE4_1
! 			&& !(TARGET_INTER_UNIT_MOVES_TO_VEC
! 			     && one_var == 0));
!       break;
!     case E_V16QImode:
      case E_V4SImode:
      case E_V4SFmode:
        use_vector_set = TARGET_SSE4_1;
        break;
      case E_V8HImode:
--- 17990,18191 ----
    switch (mode)
      {
      case E_V2DImode:
!       if (TARGET_64BIT || MEM_P (var))
! 	{
! 	  if (!REG_P (var) && !MEM_P (var))
! 	    var = force_reg (DImode, var);
! 	  x = gen_rtx_VEC_CONCAT (V2DImode, var, CONST0_RTX (DImode));
! 	  if (!one_var)
! 	    emit_insn (gen_rtx_SET (target, x));
! 	  else if (TARGET_SSE2)
! 	    {
! 	      tmp = gen_reg_rtx (V2DImode);
! 	      emit_insn (gen_rtx_SET (tmp, x));
! 	      emit_insn (gen_vec_shl_v2di (target, tmp, GEN_INT (64)));
! 	    }
! 	  else
! 	    {
! 	      rtx tmp1 = gen_reg_rtx (V2DImode);
! 	      emit_insn (gen_rtx_SET (tmp1, x));
! 	      rtx tmp2 = gen_reg_rtx (V4SImode);
! 	      emit_move_insn (tmp2, gen_lowpart (V4SImode, tmp1));
! 	      emit_insn (gen_sse_shufps_v4si (tmp2, tmp2, tmp2,
! 					      GEN_INT (2), GEN_INT (3),
! 					      GEN_INT (4), GEN_INT (5)));
! 	      emit_move_insn (target, gen_lowpart (V2DImode, tmp2));
! 	    }
! 	}
!       else
! 	{
! 	  rtx lo = force_reg (SImode, gen_lowpart (SImode, var));
! 	  rtx hi = force_reg (SImode, gen_highpart (SImode, var));
! 	  tmp = gen_reg_rtx (V4SImode);
! 	  if (TARGET_SSE4_1)
! 	    {
! 	      rtx tmp1 = gen_reg_rtx (V4SImode);
! 	      emit_insn (gen_vec_setv4si_0 (tmp1, CONST0_RTX (V4SImode), lo));
! 	      emit_insn (gen_sse4_1_pinsrd (tmp, tmp1, hi, GEN_INT (2)));
! 	    }
! 	  else
! 	    {
! 	      rtx ltmp = gen_reg_rtx (V4SImode);
! 	      rtx htmp = gen_reg_rtx (V4SImode);
! 	      emit_insn (gen_vec_setv4si_0 (ltmp, CONST0_RTX (V4SImode), lo));
! 	      emit_insn (gen_vec_setv4si_0 (htmp, CONST0_RTX (V4SImode), hi));
! 	      emit_insn (gen_vec_interleave_lowv4si (tmp, ltmp, htmp));
! 	    }
! 	  if (!one_var)
! 	    emit_move_insn (target, gen_lowpart (V2DImode, tmp));
! 	  else if (TARGET_SSE2)
! 	    {
! 	      rtx tmp2 = gen_reg_rtx (V2DImode);
! 	      emit_move_insn (tmp2, gen_lowpart (V2DImode, tmp));
! 	      emit_insn (gen_vec_shl_v2di (target, tmp2, GEN_INT (64)));
! 	    }
! 	  else
! 	    {
! 	      rtx tmp2 = gen_reg_rtx (V2DImode);
! 	      emit_insn (gen_sse_shufps_v4si (tmp2, tmp, tmp,
! 					      GEN_INT (2), GEN_INT (3),
! 					      GEN_INT (4), GEN_INT (5)));
! 	      emit_move_insn (target, gen_lowpart (V2DImode, tmp2));
! 	    }
! 	}
!       return true;
!     case E_V2DFmode:
!       if (!REG_P (var) && !MEM_P (var))
! 	var = force_reg (DFmode, var);
!       x = gen_rtx_VEC_CONCAT (V2DFmode, var, CONST0_RTX (DFmode));
!       if (one_var)
! 	{
! 	  tmp = gen_reg_rtx (V2DFmode);
! 	  emit_insn (gen_rtx_SET (tmp, x));
! 	  emit_insn (gen_vec_shl_v2df (target, tmp, GEN_INT (64)));
! 	}
!       else
! 	emit_insn (gen_rtx_SET (target, x));
!       return true;
      case E_V4SImode:
+       var = force_reg (SImode, var);
+       x = gen_rtx_VEC_DUPLICATE (V4SImode, var);
+       x = gen_rtx_VEC_MERGE (V4SImode, x, CONST0_RTX (V4SImode), const1_rtx);
+       if (!one_var)
+ 	emit_insn (gen_rtx_SET (target, x));
+       else if (TARGET_SSE2)
+ 	{
+ 	  rtx tmp = gen_reg_rtx (V4SImode);
+ 	  emit_insn (gen_rtx_SET (tmp, x));
+ 	  emit_insn (gen_vec_shl_v4si (target, tmp, GEN_INT (one_var * 32)));
+ 	}
+       else
+ 	{
+ 	  rtx tmp = gen_reg_rtx (V4SImode);
+ 	  emit_insn (gen_rtx_SET (tmp, x));
+ 	  emit_insn (gen_sse_shufps_v4si (target, tmp, tmp,
+ 					  const1_rtx,
+ 					  GEN_INT (one_var == 1 ? 0 : 1),
+ 					  GEN_INT (one_var == 2 ? 0+4 : 1+4),
+ 					  GEN_INT (one_var == 3 ? 0+4 : 1+4)));
+ 	}
+       return true;
      case E_V4SFmode:
+       var = force_reg (SFmode, var);
+       x = gen_rtx_VEC_DUPLICATE (V4SFmode, var);
+       x = gen_rtx_VEC_MERGE (V4SFmode, x, CONST0_RTX (V4SFmode), const1_rtx);
+       if (!one_var)
+ 	emit_insn (gen_rtx_SET (target, x));
+       else if (TARGET_SSE2)
+ 	{
+ 	  rtx tmp = gen_reg_rtx (V4SFmode);
+ 	  emit_insn (gen_rtx_SET (tmp, x));
+ 	  emit_insn (gen_vec_shl_v4sf (target, tmp, GEN_INT (one_var * 32)));
+ 	}
+       else
+ 	{
+ 	  rtx tmp = gen_reg_rtx (V4SFmode);
+ 	  emit_insn (gen_rtx_SET (tmp, x));
+ 	  emit_insn (gen_sse_shufps_v4sf (target, tmp, tmp,
+ 					  const1_rtx,
+ 					  GEN_INT (one_var == 1 ? 0 : 1),
+ 					  GEN_INT (one_var == 2 ? 0+4 : 1+4),
+ 					  GEN_INT (one_var == 3 ? 0+4 : 1+4)));
+ 	}
+       return true;
+     case E_V4DImode:
+       if (TARGET_AVX2 && (TARGET_64BIT || MEM_P (var)))
+ 	{
+ 	  if (!REG_P (var) && !MEM_P (var))
+ 	    var = force_reg (DImode, var);
+ 	  x = gen_rtx_VEC_DUPLICATE (V4DImode, var);
+ 	  x = gen_rtx_VEC_MERGE (V4DImode, x, CONST0_RTX (V4DImode),
+ 				 const1_rtx);
+ 	  if (one_var)
+ 	    {
+ 	      tmp = gen_reg_rtx (V4DImode);
+ 	      emit_insn (gen_rtx_SET (tmp, x));
+ 	      emit_insn (gen_avx2_permv4di_1 (target, tmp,
+ 					      const1_rtx,
+ 					      GEN_INT (one_var == 1 ? 0 : 1),
+ 					      GEN_INT (one_var == 2 ? 0 : 1),
+ 					      GEN_INT (one_var == 3 ? 0 : 1)));
+ 	    }
+ 	  else
+ 	    emit_insn (gen_rtx_SET (target, x));
+ 	}
+       else
+ 	{
+ 	  tmp = gen_reg_rtx (V2DImode);
+ 	  if (!ix86_expand_vector_init_one_nonzero (mmx_ok, V2DImode, tmp,
+ 						    var, one_var & 1))
+ 	    gcc_unreachable ();
+ 	  rtx zero = CONST0_RTX (V2DImode);
+ 	  if (one_var >= 2)
+ 	    {
+ 	      zero = force_reg (V2DImode, zero);
+ 	      emit_insn (gen_avx_vec_concatv4di (target, zero, tmp));
+ 	    }
+ 	  else
+ 	    emit_insn (gen_avx_vec_concatv4di (target, tmp, zero));
+ 	}
+       return true;
+     case E_V4DFmode:
+       if (TARGET_AVX2)
+ 	{
+ 	  if (!REG_P (var) && !MEM_P (var))
+ 	    var = force_reg (DFmode, var);
+ 	  x = gen_rtx_VEC_DUPLICATE (V4DFmode, var);
+ 	  x = gen_rtx_VEC_MERGE (V4DFmode, x, CONST0_RTX (V4DFmode),
+ 				 const1_rtx);
+ 	  if (one_var)
+ 	    {
+ 	      tmp = gen_reg_rtx (V4DFmode);
+ 	      emit_insn (gen_rtx_SET (tmp, x));
+ 	      emit_insn (gen_avx2_permv4df_1 (target, tmp,
+ 					      const1_rtx,
+ 					      GEN_INT (one_var == 1 ? 0 : 1),
+ 					      GEN_INT (one_var == 2 ? 0 : 1),
+ 					      GEN_INT (one_var == 3 ? 0 : 1)));
+ 	    }
+ 	  else
+ 	    emit_insn (gen_rtx_SET (target, x));
+ 	}
+       else
+ 	{
+ 	  tmp = gen_reg_rtx (V2DFmode);
+ 	  if (!ix86_expand_vector_init_one_nonzero (mmx_ok, V2DFmode, tmp,
+ 						    var, one_var & 1))
+ 	    gcc_unreachable ();
+ 	  rtx zero = CONST0_RTX (V2DFmode);
+ 	  if (one_var >= 2)
+ 	    {
+ 	      zero = force_reg (V2DFmode, zero);
+ 	      emit_insn (gen_avx_vec_concatv4df (target, zero, tmp));
+ 	    }
+ 	  else
+ 	    emit_insn (gen_avx_vec_concatv4df (target, tmp, zero));
+ 	}
+       return true;
+     case E_V16QImode:
        use_vector_set = TARGET_SSE4_1;
        break;
      case E_V8HImode:
*************** ix86_expand_vector_init_one_nonzero (boo
*** 18036,18050 ****
        use_vector_set = TARGET_AVX;
        gen_vec_set_0 = gen_vec_setv8sf_0;
        break;
-     case E_V4DFmode:
-       use_vector_set = TARGET_AVX;
-       gen_vec_set_0 = gen_vec_setv4df_0;
-       break;
-     case E_V4DImode:
-       /* Use ix86_expand_vector_set in 64bit mode only.  */
-       use_vector_set = TARGET_AVX && TARGET_64BIT;
-       gen_vec_set_0 = gen_vec_setv4di_0;
-       break;
      case E_V16SImode:
        use_vector_set = TARGET_AVX512F && one_var == 0;
        gen_vec_set_0 = gen_vec_setv16si_0;
--- 18220,18225 ----
*************** ix86_expand_vector_init_one_nonzero (boo
*** 18111,18119 ****
      {
      case E_V2SFmode:
      case E_V2SImode:
!       if (!mmx_ok)
  	return false;
!       /* FALLTHRU */
  
      case E_V2DFmode:
      case E_V2DImode:
--- 18286,18297 ----
      {
      case E_V2SFmode:
      case E_V2SImode:
!       if (!mmx_ok || one_var != 0)
  	return false;
!       var = force_reg (GET_MODE_INNER (mode), var);
!       x = gen_rtx_VEC_CONCAT (mode, var, CONST0_RTX (GET_MODE_INNER (mode)));
!       emit_insn (gen_rtx_SET (target, x));
!       return true;
  
      case E_V2DFmode:
      case E_V2DImode:
*************** ix86_expand_vector_init_one_nonzero (boo
*** 18124,18205 ****
        emit_insn (gen_rtx_SET (target, x));
        return true;
  
!     case E_V4SFmode:
!     case E_V4SImode:
!       if (!REG_P (target) || REGNO (target) < FIRST_PSEUDO_REGISTER)
! 	new_target = gen_reg_rtx (mode);
        else
! 	new_target = target;
!       var = force_reg (GET_MODE_INNER (mode), var);
!       x = gen_rtx_VEC_DUPLICATE (mode, var);
!       x = gen_rtx_VEC_MERGE (mode, x, CONST0_RTX (mode), const1_rtx);
!       emit_insn (gen_rtx_SET (new_target, x));
!       if (one_var != 0)
  	{
! 	  /* We need to shuffle the value to the correct position, so
! 	     create a new pseudo to store the intermediate result.  */
! 
! 	  /* With SSE2, we can use the integer shuffle insns.  */
! 	  if (mode != V4SFmode && TARGET_SSE2)
! 	    {
! 	      emit_insn (gen_sse2_pshufd_1 (new_target, new_target,
! 					    const1_rtx,
! 					    GEN_INT (one_var == 1 ? 0 : 1),
! 					    GEN_INT (one_var == 2 ? 0 : 1),
! 					    GEN_INT (one_var == 3 ? 0 : 1)));
! 	      if (target != new_target)
! 		emit_move_insn (target, new_target);
! 	      return true;
! 	    }
! 
! 	  /* Otherwise convert the intermediate result to V4SFmode and
! 	     use the SSE1 shuffle instructions.  */
! 	  if (mode != V4SFmode)
! 	    {
! 	      tmp = gen_reg_rtx (V4SFmode);
! 	      emit_move_insn (tmp, gen_lowpart (V4SFmode, new_target));
! 	    }
! 	  else
! 	    tmp = new_target;
! 
! 	  emit_insn (gen_sse_shufps_v4sf (tmp, tmp, tmp,
! 				       const1_rtx,
! 				       GEN_INT (one_var == 1 ? 0 : 1),
! 				       GEN_INT (one_var == 2 ? 0+4 : 1+4),
! 				       GEN_INT (one_var == 3 ? 0+4 : 1+4)));
! 
! 	  if (mode != V4SFmode)
! 	    emit_move_insn (target, gen_lowpart (V4SImode, tmp));
! 	  else if (tmp != target)
! 	    emit_move_insn (target, tmp);
  	}
!       else if (target != new_target)
! 	emit_move_insn (target, new_target);
        return true;
  
-     case E_V8HImode:
      case E_V16QImode:
!       vsimode = V4SImode;
!       goto widen;
!     case E_V4HImode:
!     case E_V8QImode:
!       if (!mmx_ok)
! 	return false;
!       vsimode = V2SImode;
!       goto widen;
!     widen:
!       if (one_var != 0)
  	return false;
- 
        /* Zero extend the variable element to SImode and recurse.  */
!       var = convert_modes (SImode, GET_MODE_INNER (mode), var, true);
  
!       x = gen_reg_rtx (vsimode);
!       if (!ix86_expand_vector_init_one_nonzero (mmx_ok, vsimode, x,
! 						var, one_var))
  	gcc_unreachable ();
  
!       emit_move_insn (target, gen_lowpart (mode, x));
        return true;
  
      default:
--- 18302,18393 ----
        emit_insn (gen_rtx_SET (target, x));
        return true;
  
!     case E_V8HImode:
!       if (one_var > 1 && !TARGET_SSE2)
! 	return false;
!       /* Zero extend the variable element to SImode and recurse.  */
!       var = convert_modes (SImode, HImode, var, true);
!       var = force_reg (SImode, var);
!       if (one_var == 1)
! 	{
! 	  var = simplify_gen_binary (ASHIFT, SImode, var, GEN_INT (16));
! 	  var = force_reg (SImode, var);
! 	  one_var = 0;
! 	}
        else
! 	one_var *= 16;
!       x = gen_reg_rtx (V4SImode);
!       if (!ix86_expand_vector_init_one_nonzero (mmx_ok, V4SImode, x, var, 0))
! 	gcc_unreachable ();
!       if (one_var)
  	{
! 	  tmp = gen_reg_rtx (V4SImode);
! 	  emit_insn (gen_vec_shl_v4si (tmp, x, GEN_INT (one_var)));
! 	  x = tmp;
  	}
!       emit_move_insn (target, gen_lowpart (mode, x));
        return true;
  
      case E_V16QImode:
!       if (one_var > 3 && !TARGET_SSE2)
  	return false;
        /* Zero extend the variable element to SImode and recurse.  */
!       var = convert_modes (SImode, QImode, var, true);
!       var = force_reg (SImode, var);
!       if (one_var < 4)
! 	{
! 	  var = simplify_gen_binary (ASHIFT, SImode, var,
! 				     GEN_INT (one_var * 8));
! 	  var = force_reg (SImode, var);
! 	  one_var = 0;
! 	}
!       else
! 	one_var *= 8;
!       x = gen_reg_rtx (V4SImode);
!       if (!ix86_expand_vector_init_one_nonzero (mmx_ok, V4SImode, x, var, 0))
! 	gcc_unreachable ();
!       if (one_var)
! 	{
! 	  tmp = gen_reg_rtx (V4SImode);
! 	  emit_insn (gen_vec_shl_v4si (tmp, x, GEN_INT (one_var)));
! 	  x = tmp;
! 	}
!       emit_move_insn (target, gen_lowpart (V16QImode, x));
!       return true;
  
!     case E_V4HImode:
!       if (!mmx_ok || one_var > 1)
! 	return false;
!       /* Zero extend the variable element to SImode and recurse.  */
!       var = convert_modes (SImode, HImode, var, true);
!       var = force_reg (SImode, var);
!       if (one_var == 1)
! 	{
! 	  var = simplify_gen_binary (ASHIFT, SImode, var, GEN_INT (16));
! 	  var = force_reg (SImode, var);
! 	}
!       x = gen_reg_rtx (V2SImode);
!       if (!ix86_expand_vector_init_one_nonzero (true, V2SImode, x, var, 0))
  	gcc_unreachable ();
+       emit_move_insn (target, gen_lowpart (V4HImode, x));
+       return true;
  
!     case E_V8QImode:
!       if (!mmx_ok || one_var > 3)
! 	return false;
!       /* Zero extend the variable element to SImode and recurse.  */
!       var = convert_modes (SImode, QImode, var, true);
!       var = force_reg (SImode, var);
!       if (one_var)
! 	{
! 	  var = simplify_gen_binary (ASHIFT, SImode, var,
! 				     GEN_INT (one_var * 8));
! 	  var = force_reg (SImode, var);
! 	}
!       x = gen_reg_rtx (V2SImode);
!       if (!ix86_expand_vector_init_one_nonzero (true, V2SImode, x, var, 0))
! 	gcc_unreachable ();
!       emit_move_insn (target, gen_lowpart (V8QImode, x));
        return true;
  
      default:
*************** ix86_expand_vector_init_interleave (mach
*** 18630,18635 ****
--- 18818,19877 ----
      }
  }
  
+ /* Count number of non-zero integer constants in OPS array of length N.  */
+ 
+ static int
+ nonzero_int_const_count (rtx *ops, int n)
+ {
+   int result = 0;
+   int i;
+   for (i = 0; i < n; i++)
+     if (CONST_INT_P (ops[i]) && ops[i] != const0_rtx)
+       result++;
+   return result;
+ }
+ 
+ /* Count number of non-zero float constants in OPS array of length N.  */
+ 
+ static int
+ nonzero_float_const_count (rtx *ops, int n)
+ {
+   int result = 0;
+   int i;
+   for (i = 0; i < n; i++)
+     if (CONST_DOUBLE_P (ops[i]) && ops[i] != CONST0_RTX (SFmode))
+       result++;
+   return result;
+ }
+ 
+ /* Count number of non-zero double constants in OPS array of length N.  */
+ 
+ static int
+ nonzero_double_const_count (rtx *ops, int n)
+ {
+   int result = 0;
+   int i;
+   for (i = 0; i < n; i++)
+     if (CONST_DOUBLE_P (ops[i]) && ops[i] != CONST0_RTX (DFmode))
+       result++;
+   return result;
+ }
+ 
+ 
+ /* A subroutine of ix86_expand_vector_init_general.  Handle the most
+    general case: all values variable and none identical.  */
+ 
+ static void
+ ix86_expand_vector_init_insert (machine_mode mode, rtx target,
+ 				rtx *ops, int n)
+ {
+   machine_mode inner_mode = GET_MODE_INNER (mode);
+   rtx (*pinsr)(rtx, rtx, rtx, rtx);
+   rtx tmp = gen_reg_rtx (mode);
+   rtx var, x;
+   int i;
+ 
+   var = ops[0];
+ 
+   switch (mode)
+     {
+     case E_V16QImode:
+       if (var != const0_rtx)
+ 	{
+ 	  var = convert_modes (SImode, QImode, var, true);
+ 	  var = force_reg (SImode, var);
+ 	  x = gen_reg_rtx (V4SImode);
+ 	  emit_insn (gen_vec_setv4si_0 (x, CONST0_RTX (V4SImode), var));
+ 	  emit_move_insn (tmp, gen_lowpart (V16QImode, x));
+ 	}
+       else
+ 	emit_move_insn (tmp, CONST0_RTX (mode));
+       pinsr = gen_sse4_1_pinsrb;
+       break;
+     case E_V8HImode:
+       if (var != const0_rtx)
+ 	{
+ 	  var = convert_modes (SImode, HImode, var, true);
+ 	  var = force_reg (SImode, var);
+ 	  x = gen_reg_rtx (V4SImode);
+ 	  emit_insn (gen_vec_setv4si_0 (x, CONST0_RTX (V4SImode), var));
+ 	  emit_move_insn (tmp, gen_lowpart (V8HImode, x));
+ 	}
+       else
+ 	emit_move_insn (tmp, CONST0_RTX (mode));
+       pinsr = gen_sse2_pinsrw;
+       break;
+     case E_V4SImode:
+       if (var != const0_rtx)
+ 	{
+ 	  if (!REG_P (var) && !MEM_P (var))
+ 	    var = force_reg (SImode, var);
+ 	  emit_insn (gen_vec_setv4si_0 (tmp, CONST0_RTX (mode), var));
+ 	}
+       else
+ 	emit_move_insn (tmp, CONST0_RTX (mode));
+       pinsr = gen_sse4_1_pinsrd;
+       break;
+ 
+     default:
+       gcc_unreachable ();
+     }
+ 
+   for (i=1; i<n; i++)
+     if (ops[i] != CONST0_RTX (inner_mode))
+       {
+ 	rtx val = ops[i];
+ 	if (!REG_P (val) && !MEM_P (val))
+ 	  val = force_reg (inner_mode, val);
+ 	emit_insn (pinsr (tmp, tmp, val, GEN_INT (1 << i)));
+       }
+   emit_move_insn (target, tmp);
+ }
+ 
+ /* Helper function.  Determine if the given OPS array of size N
+    contains only zeros and one other value (possible repeated).
+    If TRUE, *VAR returns the value, PERM[i] contains 0 for
+    this value and 1 for a CONST0_RTX.  */
+ 
+ static bool
+ onevar_perm_p (const rtx *ops, int n, int *perm, rtx *var)
+ {
+   bool found = false;
+   int i;
+ 
+   for (i = 0; i < n; i++)
+     if (ops[i] == const0_rtx
+ 	|| ops[i] == CONST0_RTX (SFmode)
+ 	|| ops[i] == CONST0_RTX (DFmode))
+       perm[i] = 1;
+     else if (!found)
+       {
+ 	*var = ops[i];
+ 	found = true;
+ 	perm[i] = 0;
+       }
+     else if (rtx_equal_p (*var, ops[i]))
+       perm[i] = 0;
+     else
+       return false;
+ 
+   return found;
+ }
+ 
+ /* Helper function.  Determine if the given OPS array of size N
+    contains only zeros and two other values (possible repeated).
+    If TRUE, VARS returns the values, PERM[i] contains 0 for
+    the first value, 1 for the second value and 2 for CONST0_RTX.  */
+ 
+ static bool
+ twovar_perm_p (const rtx *ops, int n, int *perm, rtx *vars)
+ {
+   int count = 0;
+   int i;
+ 
+   for (i = 0; i < n; i++)
+     if (ops[i] == const0_rtx
+ 	|| ops[i] == CONST0_RTX (SFmode)
+ 	|| ops[i] == CONST0_RTX (DFmode))
+       perm[i] = 2;
+     else if (count == 0)
+       {
+ 	vars[0] = ops[i];
+ 	perm[i] = 0;
+ 	count = 1;
+       }
+     else if (rtx_equal_p (vars[0], ops[i]))
+       perm[i] = 0;
+     else if (count == 1)
+       {
+ 	vars[1] = ops[i];
+ 	perm[i] = 1;
+ 	count = 2;
+       }
+     else if (rtx_equal_p (vars[1], ops[i]))
+       perm[i] = 1;
+     else
+       return false;
+ 
+   return count == 2;
+ }
+ 
+ /* A subroutine of ix86_expand_vector_init for V2DImode.  */
+ 
+ static void
+ ix86_expand_vector_init_v2di (rtx target, rtx *ops)
+ {
+   if (ops[0] == const0_rtx && ops[1] == const0_rtx)
+     emit_move_insn (target, CONST0_RTX (V2DImode));
+   else if (CONST_INT_P (ops[0]) && CONST_INT_P (ops[1]))
+     {
+       rtx vec = gen_rtx_CONST_VECTOR (V2DImode, gen_rtvec_v (2, ops));
+       emit_move_insn (target, vec);
+     }
+   else if (rtx_equal_p (ops[0], ops[1]))
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (DImode, val);
+       /* TARGET_SSE has *vec_dupv2di.  */
+       emit_move_insn (target, gen_rtx_VEC_DUPLICATE (V2DImode, val));
+     }
+   else
+     {
+       rtx op0 = force_reg (DImode, ops[0]);
+       rtx op1 = force_reg (DImode, ops[1]);
+       emit_insn (gen_vec_concatv2di (target, op0, op1));
+     }
+ }
+ 
+ /* A subroutine of ix86_expand_vector_init for V2DFmode.  */
+ 
+ static void
+ ix86_expand_vector_init_v2df (rtx target, rtx *ops)
+ {
+   if (ops[0] == CONST0_RTX (DFmode)
+       && ops[1] == CONST0_RTX (DFmode))
+     emit_move_insn (target, CONST0_RTX (V2DFmode));
+   else if (CONST_DOUBLE_P (ops[0])
+ 	   && CONST_DOUBLE_P (ops[1]))
+     {
+       rtx vec = gen_rtx_CONST_VECTOR (V2DFmode, gen_rtvec_v (2, ops));
+       emit_move_insn (target, vec);
+     }
+   else if (TARGET_SSE2
+ 	   && rtx_equal_p (ops[0], ops[1]))
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (DFmode, val);
+       emit_move_insn (target, gen_rtx_VEC_DUPLICATE (V2DFmode, val));
+     }
+   else
+     {
+       rtx op0 = force_reg (DFmode, ops[0]);
+       rtx op1 = force_reg (DFmode, ops[1]);
+       emit_insn (gen_vec_concatv2df (target, op0, op1));
+     }
+ }
+ 
+ /* A subroutine of ix86_expand_vector_init for V4SImode.  */
+ 
+ static void
+ ix86_expand_vector_init_v4si (rtx target, rtx *ops)
+ {
+   rtx vars[4];
+   int perm[4];
+ 
+   if (ops[0] == const0_rtx
+       && ops[1] == const0_rtx
+       && ops[2] == const0_rtx
+       && ops[3] == const0_rtx)
+     emit_move_insn (target, CONST0_RTX (V4SImode));
+   else if (ops[1] == const0_rtx
+ 	   && ops[2] == const0_rtx
+ 	   && ops[3] == const0_rtx)
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (SImode, val);
+       emit_insn (gen_vec_setv4si_0 (target, CONST0_RTX (V4SImode), val));
+     }
+   else if (rtx_equal_p (ops[0], ops[1])
+ 	   && rtx_equal_p (ops[0], ops[2])
+ 	   && rtx_equal_p (ops[0], ops[3]))
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (SImode, val);
+       emit_move_insn (target, gen_rtx_VEC_DUPLICATE (V4SImode, val));
+     }
+   else if (CONST_INT_P (ops[0])
+ 	   && CONST_INT_P (ops[1])
+ 	   && CONST_INT_P (ops[2])
+ 	   && CONST_INT_P (ops[3]))
+     {
+       rtx vec = gen_rtx_CONST_VECTOR (V4SImode, gen_rtvec_v (4, ops));
+       emit_move_insn (target, vec);
+     }
+   else if (onevar_perm_p (ops, 4, perm, vars))
+     {
+       rtx tmp = gen_reg_rtx (V4SImode);
+       vars[1] = const0_rtx;
+       vars[2] = const0_rtx;
+       vars[3] = const0_rtx;
+       ix86_expand_vector_init_v4si (tmp, vars);
+       emit_insn (gen_sse_shufps_v4si (target, tmp, tmp,
+ 				      GEN_INT (perm[0]),
+ 				      GEN_INT (perm[1]),
+ 				      GEN_INT (perm[2] + 4),
+ 				      GEN_INT (perm[3] + 4)));
+     }
+   else if (ops[2] == const0_rtx && ops[3] == const0_rtx)
+     {
+       rtx tmp1 = gen_reg_rtx (V4SImode);
+       vars[0] = ops[0];
+       vars[1] = const0_rtx;
+       vars[2] = const0_rtx;
+       vars[3] = const0_rtx;
+       ix86_expand_vector_init_v4si (tmp1, vars);
+ 
+       if (TARGET_SSE4_1)
+ 	{
+ 	  rtx val = ops[1];
+ 	  if (!REG_P (val) && !MEM_P (val))
+ 	    val = force_reg (SImode, val);
+ 	  emit_insn (gen_sse4_1_pinsrd (target, tmp1, val, GEN_INT (2)));
+ 	}
+       else
+ 	{
+ 	  rtx tmp2 = gen_reg_rtx (V4SImode);
+ 	  vars[0] = ops[1];
+ 	  ix86_expand_vector_init_v4si (tmp2, vars);
+ 	  emit_insn (gen_vec_interleave_lowv4si (target, tmp1, tmp2));
+ 	}
+     }
+   else if (TARGET_SSE4_1
+ 	   && ops[1] == const0_rtx
+ 	   && (ops[2] == const0_rtx || ops[3] == const0_rtx))
+     /* { a, 0, b, 0 } and { a, 0, 0, b } become mov; pinsrd.  */
+     ix86_expand_vector_init_insert (V4SImode, target, ops, 4);
+   else if (twovar_perm_p (ops, 4, perm, vars))
+     {
+       rtx tmp = gen_reg_rtx (V4SImode);
+       vars[2] = const0_rtx;
+       vars[3] = const0_rtx;
+       ix86_expand_vector_init_v4si (tmp, vars);
+       emit_insn (gen_sse_shufps_v4si (target, tmp, tmp,
+ 				      GEN_INT (perm[0]),
+ 				      GEN_INT (perm[1]),
+ 				      GEN_INT (perm[2] + 4),
+ 				      GEN_INT (perm[3] + 4)));
+     }
+   else if (nonzero_int_const_count (ops, 4) >= 2)
+     {
+       rtx csts[4];
+       int i;
+       for (i = 0; i < 4; i++)
+ 	if (CONST_INT_P (ops[i]))
+ 	  {
+ 	    csts[i] = ops[i];
+ 	    vars[i] = const0_rtx;
+ 	  }
+ 	else
+ 	  {
+ 	    csts[i] = const0_rtx;
+ 	    vars[i] = ops[i];
+ 	  }
+       rtx tmp1 = gen_reg_rtx (V4SImode);
+       ix86_expand_vector_init_v4si (tmp1, vars);
+       rtx tmp2 = gen_reg_rtx (V4SImode);
+       rtx vec = gen_rtx_CONST_VECTOR (V4SImode, gen_rtvec_v (4, csts));
+       emit_move_insn (tmp2, vec);
+       emit_insn (gen_rtx_SET (target, gen_rtx_IOR (V4SImode, tmp1, tmp2)));
+     }
+   else if (TARGET_SSE4_1)
+     ix86_expand_vector_init_insert (V4SImode, target, ops, 4);
+   else
+     {
+       rtx tmp1 = gen_reg_rtx (V4SImode);
+       rtx tmp2 = gen_reg_rtx (V4SImode);
+       vars[0] = ops[0];
+       vars[1] = ops[1];
+       vars[2] = const0_rtx;
+       vars[3] = const0_rtx;
+       ix86_expand_vector_init_v4si (tmp1, vars);
+       vars[0] = ops[2];
+       vars[1] = ops[3];
+       ix86_expand_vector_init_v4si (tmp2, vars);
+       emit_insn (gen_sse_shufps_v4si (target, tmp1, tmp2,
+ 				      const0_rtx, const1_rtx,
+ 				      GEN_INT (4), GEN_INT (5)));
+     }
+ }
+ 
+ /* A subroutine of ix86_expand_vector_init for V4SFmode.  */
+ 
+ static void
+ ix86_expand_vector_init_v4sf (rtx target, rtx *ops)
+ {
+   rtx vars[4];
+   int perm[4];
+ 
+   if (ops[0] == CONST0_RTX (SFmode) 
+       && ops[1] == CONST0_RTX (SFmode)
+       && ops[2] == CONST0_RTX (SFmode)
+       && ops[3] == CONST0_RTX (SFmode))
+     emit_move_insn (target, CONST0_RTX (V4SFmode));
+   else if (ops[1] == CONST0_RTX (SFmode)
+ 	   && ops[2] == CONST0_RTX (SFmode)
+ 	   && ops[3] == CONST0_RTX (SFmode))
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (SFmode, val);
+       emit_insn (gen_vec_setv4sf_0 (target, CONST0_RTX (V4SFmode), val));
+     }
+   else if (rtx_equal_p (ops[0], ops[1])
+ 	   && rtx_equal_p (ops[0], ops[2])
+ 	   && rtx_equal_p (ops[0], ops[3]))
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (SFmode, val);
+       emit_move_insn (target, gen_rtx_VEC_DUPLICATE (V4SFmode, val));
+     }
+   else if (CONST_DOUBLE_P (ops[0])
+ 	   && CONST_DOUBLE_P (ops[1])
+ 	   && CONST_DOUBLE_P (ops[2])
+ 	   && CONST_DOUBLE_P (ops[3]))
+     {
+       rtx vec = gen_rtx_CONST_VECTOR (V4SFmode, gen_rtvec_v (4, ops));
+       emit_move_insn (target, vec);
+     }
+   else if (onevar_perm_p (ops, 4, perm, vars))
+     {
+       rtx tmp = gen_reg_rtx (V4SFmode);
+       vars[1] = CONST0_RTX (SFmode);
+       vars[2] = CONST0_RTX (SFmode);
+       vars[3] = CONST0_RTX (SFmode);
+       ix86_expand_vector_init_v4sf (tmp, vars);
+       emit_insn (gen_sse_shufps_v4sf (target, tmp, tmp,
+ 				      GEN_INT (perm[0]),
+ 				      GEN_INT (perm[1]),
+ 				      GEN_INT (perm[2] + 4),
+ 				      GEN_INT (perm[3] + 4)));
+     }
+   else if (ops[2] == CONST0_RTX (SFmode)
+ 	   && ops[3] == CONST0_RTX (SFmode))
+     {
+       rtx tmp1 = gen_reg_rtx (V4SFmode);
+       vars[0] = ops[0];
+       vars[1] = CONST0_RTX (SFmode);
+       vars[2] = CONST0_RTX (SFmode);
+       vars[3] = CONST0_RTX (SFmode);
+       ix86_expand_vector_init_v4sf (tmp1, vars);
+ 
+       rtx tmp2 = gen_reg_rtx (V4SFmode);
+       vars[0] = ops[1];
+       ix86_expand_vector_init_v4sf (tmp2, vars);
+       emit_insn (gen_vec_interleave_lowv4sf (target, tmp1, tmp2));
+     }
+   else if (twovar_perm_p (ops, 4, perm, vars))
+     {
+       rtx tmp = gen_reg_rtx (V4SFmode);
+       vars[2] = CONST0_RTX (SFmode);
+       vars[3] = CONST0_RTX (SFmode);
+       ix86_expand_vector_init_v4sf (tmp, vars);
+       emit_insn (gen_sse_shufps_v4sf (target, tmp, tmp,
+ 				      GEN_INT (perm[0]),
+ 				      GEN_INT (perm[1]),
+ 				      GEN_INT (perm[2] + 4),
+ 				      GEN_INT (perm[3] + 4)));
+     }
+   else if (nonzero_float_const_count (ops, 4) >= 2)
+     {
+       rtx csts[4];
+       int i;
+       for (i = 0; i < 4; i++)
+ 	if (CONST_DOUBLE_P (ops[i]))
+ 	  {
+ 	    csts[i] = ops[i];
+ 	    vars[i] = CONST0_RTX (SFmode);
+ 	  }
+ 	else
+ 	  {
+ 	    csts[i] = CONST0_RTX (SFmode);
+ 	    vars[i] = ops[i];
+ 	  }
+       rtx tmp1 = gen_reg_rtx (V4SFmode);
+       ix86_expand_vector_init_v4sf (tmp1, vars);
+       rtx tmp2 = gen_reg_rtx (V4SFmode);
+       rtx vec = gen_rtx_CONST_VECTOR (V4SFmode, gen_rtvec_v (4, csts));
+       emit_move_insn (tmp2, vec);
+       emit_insn (gen_rtx_SET (target, gen_rtx_IOR (V4SFmode, tmp1, tmp2)));
+     }
+   else
+     {
+       rtx tmp1 = gen_reg_rtx (V4SFmode);
+       rtx tmp2 = gen_reg_rtx (V4SFmode);
+       vars[0] = ops[0];
+       vars[1] = ops[1];
+       vars[2] = CONST0_RTX (SFmode);
+       vars[3] = CONST0_RTX (SFmode);
+       ix86_expand_vector_init_v4sf (tmp1, vars);
+       vars[0] = ops[2];
+       vars[1] = ops[3];
+       ix86_expand_vector_init_v4sf (tmp2, vars);
+       emit_insn (gen_sse_shufps_v4sf (target, tmp1, tmp2,
+ 				      const0_rtx, const1_rtx,
+ 				      GEN_INT (4), GEN_INT (5)));
+     }
+ }
+ 
+ /* A subroutine of ix86_expand_vector_init for V8HImode.  */
+ 
+ static bool
+ ix86_expand_vector_init_v8hi (rtx target, rtx *ops)
+ {
+   rtx vars[8];
+   int i;
+ 
+   bool all_zero_p = true;
+   for (i = 0; i < 8; i++)
+     if (ops[i] != const0_rtx)
+       {
+ 	all_zero_p = false;
+ 	break;
+       }
+   if (all_zero_p)
+     {
+       emit_move_insn (target, CONST0_RTX (V8HImode));
+       return true;
+     }
+ 
+   bool all_const_p = true;
+   for (i = 0; i < 8; i++)
+     if (!CONST_INT_P (ops[i]))
+       {
+ 	all_const_p = false;
+ 	break;
+       }
+   if (all_const_p)
+     {
+       rtx vec = gen_rtx_CONST_VECTOR (V8HImode, gen_rtvec_v (8, ops));
+       emit_move_insn (target, vec);
+       return true;
+     }
+ 
+   if (TARGET_SSE2
+       && nonzero_int_const_count (ops, 8) >= 2)
+     {
+       rtx csts[8];
+       for (i = 0; i < 8; i++)
+ 	if (CONST_INT_P (ops[i]))
+ 	  {
+ 	    csts[i] = ops[i];
+ 	    vars[i] = const0_rtx;
+ 	  }
+ 	else
+ 	  {
+ 	    csts[i] = const0_rtx;
+ 	    vars[i] = ops[i];
+ 	  }
+       rtx tmp1 = gen_reg_rtx (V8HImode);
+       if (!ix86_expand_vector_init_v8hi (tmp1, vars))
+         gcc_unreachable ();
+       rtx tmp2 = gen_reg_rtx (V8HImode);
+       rtx vec = gen_rtx_CONST_VECTOR (V8HImode, gen_rtvec_v (8, csts));
+       emit_move_insn (tmp2, vec);
+       emit_insn (gen_rtx_SET (target, gen_rtx_IOR (V8HImode, tmp1, tmp2)));
+       return true;
+     }
+ 
+   if (TARGET_SSE2)
+     {
+       ix86_expand_vector_init_insert (V8HImode, target, ops, 8);
+       return true;
+     }
+   return false;
+ }
+ 
+ /* A subroutine of ix86_expand_vector_init for V16QImode.  */
+ 
+ static bool
+ ix86_expand_vector_init_v16qi (rtx target, rtx *ops)
+ {
+   rtx vars[16];
+   int i;
+ 
+   bool all_zero_p = true;
+   for (i = 0; i < 16; i++)
+     if (ops[i] != const0_rtx)
+       {
+ 	all_zero_p = false;
+ 	break;
+       }
+   if (all_zero_p)
+     {
+       emit_move_insn (target, CONST0_RTX (V16QImode));
+       return true;
+     }
+ 
+   bool all_const_p = true;
+   for (i = 0; i < 16; i++)
+     if (!CONST_INT_P (ops[i]))
+       {
+ 	all_const_p = false;
+ 	break;
+       }
+   if (all_const_p)
+     {
+       rtx vec = gen_rtx_CONST_VECTOR (V16QImode, gen_rtvec_v (16, ops));
+       emit_move_insn (target, vec);
+       return true;
+     }
+ 
+   if (TARGET_SSE4_1
+       && nonzero_int_const_count (ops, 16) >= 2)
+     {
+       rtx csts[16];
+       for (i = 0; i < 16; i++)
+ 	if (CONST_INT_P (ops[i]))
+ 	  {
+ 	    csts[i] = ops[i];
+ 	    vars[i] = const0_rtx;
+ 	  }
+ 	else
+ 	  {
+ 	    csts[i] = const0_rtx;
+ 	    vars[i] = ops[i];
+ 	  }
+       rtx tmp1 = gen_reg_rtx (V16QImode);
+       if (!ix86_expand_vector_init_v16qi (tmp1, vars))
+ 	gcc_unreachable ();
+       rtx tmp2 = gen_reg_rtx (V16QImode);
+       rtx vec = gen_rtx_CONST_VECTOR (V16QImode, gen_rtvec_v (16, csts));
+       emit_move_insn (tmp2, vec);
+       emit_insn (gen_rtx_SET (target, gen_rtx_IOR (V16QImode, tmp1, tmp2)));
+       return true;
+     }
+ 
+   if (TARGET_SSE4_1)
+     {
+       ix86_expand_vector_init_insert (V16QImode, target, ops, 16);
+       return true;
+     }
+   return false;
+ }
+ 
+ /* A subroutine of ix86_expand_vector_init for V4DImode.  */
+ 
+ static void
+ ix86_expand_vector_init_v4di (rtx target, rtx *ops)
+ {
+   rtx vars[4];
+   int perm[4];
+ 
+   if (ops[0] == const0_rtx
+       && ops[1] == const0_rtx
+       && ops[2] == const0_rtx
+       && ops[3] == const0_rtx)
+     emit_move_insn (target, CONST0_RTX (V4DImode));
+   else if (ops[1] == const0_rtx
+ 	   && ops[2] == const0_rtx
+ 	   && ops[3] == const0_rtx)
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (DImode, val);
+       emit_insn (gen_vec_setv4di_0 (target, CONST0_RTX (V4DImode), val));
+     }
+   else if ((TARGET_64BIT || MEM_P (ops[0]))
+ 	   && rtx_equal_p (ops[0], ops[1])
+ 	   && rtx_equal_p (ops[0], ops[2])
+ 	   && rtx_equal_p (ops[0], ops[3]))
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (DImode, val);
+       emit_insn (gen_vec_dupv4di (target, val));
+     }
+   else if (CONST_INT_P (ops[0])
+ 	   && CONST_INT_P (ops[1])
+ 	   && CONST_INT_P (ops[2])
+ 	   && CONST_INT_P (ops[3]))
+     {
+       rtx vec = gen_rtx_CONST_VECTOR (V4DImode, gen_rtvec_v (4, ops));
+       emit_move_insn (target, vec);
+     }
+   else if (TARGET_AVX2 
+ 	   && onevar_perm_p (ops, 4, perm, vars))
+     {
+       rtx tmp = gen_reg_rtx (V4DImode);
+       vars[1] = const0_rtx;
+       vars[2] = const0_rtx;
+       vars[3] = const0_rtx;
+       ix86_expand_vector_init_v4di (tmp, vars);
+       emit_insn (gen_avx2_permv4di_1 (target, tmp,
+ 				      GEN_INT (perm[0]),
+ 				      GEN_INT (perm[1]),
+ 				      GEN_INT (perm[2]),
+ 				      GEN_INT (perm[3])));
+     }
+   else if (rtx_equal_p (ops[0], ops[2])
+ 	   && rtx_equal_p (ops[1], ops[3]))
+     {
+       rtx tmp = gen_reg_rtx (V2DImode);
+       ix86_expand_vector_init_v2di (tmp, ops);
+       emit_insn (gen_avx_vec_concatv4di (target, tmp, tmp));
+     }
+   else if (nonzero_int_const_count (ops, 4) >= 2)
+     {
+       rtx csts[4];
+       int i;
+       for (i = 0; i < 4; i++)
+ 	if (CONST_INT_P (ops[i]))
+ 	  {
+ 	    csts[i] = ops[i];
+ 	    vars[i] = const0_rtx;
+ 	  }
+ 	else
+ 	  {
+ 	    csts[i] = const0_rtx;
+ 	    vars[i] = ops[i];
+ 	  }
+       rtx tmp1 = gen_reg_rtx (V4DImode);
+       ix86_expand_vector_init_v4di (tmp1, vars);
+       rtx tmp2 = gen_reg_rtx (V4DImode);
+       rtx vec = gen_rtx_CONST_VECTOR (V4DImode, gen_rtvec_v (4, csts));
+       emit_move_insn (tmp2, vec);
+       emit_insn (gen_rtx_SET (target, gen_rtx_IOR (V4DImode, tmp1, tmp2)));
+     }
+   else
+     {
+       rtx tmp1 = gen_reg_rtx (V2DImode);
+       ix86_expand_vector_init_v2di (tmp1, ops);
+       rtx tmp2 = gen_reg_rtx (V2DImode);
+       ix86_expand_vector_init_v2di (tmp2, ops + 2);
+       emit_insn (gen_avx_vec_concatv4di (target, tmp1, tmp2));
+     }
+ }
+ 
+ /* A subroutine of ix86_expand_vector_init for V4DFmode.  */
+ 
+ static void
+ ix86_expand_vector_init_v4df (rtx target, rtx *ops)
+ {
+   rtx vars[4];
+   int perm[4];
+ 
+   if (ops[0] == CONST0_RTX (DFmode)
+       && ops[1] == CONST0_RTX (DFmode)
+       && ops[2] == CONST0_RTX (DFmode)
+       && ops[3] == CONST0_RTX (DFmode))
+     emit_move_insn (target, CONST0_RTX (V4DFmode));
+   else if (ops[1] == CONST0_RTX (DFmode)
+ 	   && ops[2] == CONST0_RTX (DFmode)
+ 	   && ops[3] == CONST0_RTX (DFmode))
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (DFmode, val);
+       emit_insn (gen_vec_setv4df_0 (target, CONST0_RTX (V4DFmode), val));
+     }
+   else if (rtx_equal_p (ops[0], ops[1])
+ 	   && rtx_equal_p (ops[0], ops[2])
+ 	   && rtx_equal_p (ops[0], ops[3]))
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (DFmode, val);
+       emit_insn (gen_vec_dupv4df (target, val));
+     }
+   else if (CONST_DOUBLE_P (ops[0])
+ 	   && CONST_DOUBLE_P (ops[1])
+ 	   && CONST_DOUBLE_P (ops[2])
+ 	   && CONST_DOUBLE_P (ops[3]))
+     {
+       rtx vec = gen_rtx_CONST_VECTOR (V4DFmode, gen_rtvec_v (4, ops));
+       emit_move_insn (target, vec);
+     }
+   else if (TARGET_AVX2 
+ 	   && onevar_perm_p (ops, 4, perm, vars))
+     {
+       rtx tmp = gen_reg_rtx (V4DFmode);
+       vars[1] = CONST0_RTX (DFmode);
+       vars[2] = CONST0_RTX (DFmode);
+       vars[3] = CONST0_RTX (DFmode);
+       ix86_expand_vector_init_v4df (tmp, vars);
+       emit_insn (gen_avx2_permv4df_1 (target, tmp,
+ 				      GEN_INT (perm[0]),
+ 				      GEN_INT (perm[1]),
+ 				      GEN_INT (perm[2]),
+ 				      GEN_INT (perm[3])));
+     }
+   else if (rtx_equal_p (ops[0], ops[2])
+ 	   && rtx_equal_p (ops[1], ops[3]))
+     {
+       rtx tmp = gen_reg_rtx (V2DFmode);
+       ix86_expand_vector_init_v2df (tmp, ops);
+       emit_insn (gen_avx_vec_concatv4df (target, tmp, tmp));
+     }
+   else if (nonzero_double_const_count (ops, 4) >= 2)
+     {
+       rtx csts[4];
+       int i;
+       for (i = 0; i < 4; i++)
+ 	if (CONST_DOUBLE_P (ops[i]))
+ 	  {
+ 	    csts[i] = ops[i];
+ 	    vars[i] = CONST0_RTX (DFmode);
+ 	  }
+ 	else
+ 	  {
+ 	    csts[i] = CONST0_RTX (DFmode);
+ 	    vars[i] = ops[i];
+ 	  }
+       rtx tmp1 = gen_reg_rtx (V4DFmode);
+       ix86_expand_vector_init_v4df (tmp1, vars);
+       rtx tmp2 = gen_reg_rtx (V4DFmode);
+       rtx vec = gen_rtx_CONST_VECTOR (V4DFmode, gen_rtvec_v (4, csts));
+       emit_move_insn (tmp2, vec);
+       emit_insn (gen_rtx_SET (target, gen_rtx_IOR (V4DFmode, tmp1, tmp2)));
+     }
+   else
+     {
+       rtx tmp1 = gen_reg_rtx (V2DFmode);
+       ix86_expand_vector_init_v2df (tmp1, ops);
+       rtx tmp2 = gen_reg_rtx (V2DFmode);
+       ix86_expand_vector_init_v2df (tmp2, ops + 2);
+       emit_insn (gen_avx_vec_concatv4df (target, tmp1, tmp2));
+     }
+ }
+ 
+ /* A subroutine of ix86_expand_vector_init for V8SImode.  */
+ 
+ static void
+ ix86_expand_vector_init_v8si (rtx target, rtx *ops)
+ {
+   rtx vars[8];
+ 
+   if (ops[0] == const0_rtx
+       && ops[1] == const0_rtx
+       && ops[2] == const0_rtx
+       && ops[3] == const0_rtx
+       && ops[4] == const0_rtx
+       && ops[5] == const0_rtx
+       && ops[6] == const0_rtx
+       && ops[7] == const0_rtx)
+     emit_move_insn (target, CONST0_RTX (V8SImode));
+   else if (ops[1] == const0_rtx
+ 	   && ops[2] == const0_rtx
+ 	   && ops[3] == const0_rtx
+ 	   && ops[4] == const0_rtx
+ 	   && ops[5] == const0_rtx
+ 	   && ops[6] == const0_rtx
+ 	   && ops[7] == const0_rtx)
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (SImode, val);
+       emit_insn (gen_vec_setv8si_0 (target, CONST0_RTX (V8SImode), val));
+     }
+   else if (rtx_equal_p (ops[0], ops[1])
+ 	   && rtx_equal_p (ops[0], ops[2])
+ 	   && rtx_equal_p (ops[0], ops[3])
+ 	   && rtx_equal_p (ops[0], ops[4])
+ 	   && rtx_equal_p (ops[0], ops[5])
+ 	   && rtx_equal_p (ops[0], ops[6])
+ 	   && rtx_equal_p (ops[0], ops[7]))
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (SImode, val);
+       emit_insn (gen_vec_dupv8si (target, val));
+     }
+   else if (TARGET_AVX2
+ 	   && rtx_equal_p (ops[0], ops[2])
+ 	   && rtx_equal_p (ops[0], ops[4])
+ 	   && rtx_equal_p (ops[0], ops[6])
+ 	   && rtx_equal_p (ops[1], ops[3])
+ 	   && rtx_equal_p (ops[1], ops[5])
+ 	   && rtx_equal_p (ops[1], ops[7]))
+     {
+       rtx tmp_ops[4] = { ops[0], ops[1], const0_rtx, const0_rtx };
+       rtx tmp1 = gen_reg_rtx (V4SImode);
+       ix86_expand_vector_init_v4si (tmp1, tmp_ops);
+       tmp1 = gen_lowpart (V2DImode, tmp1);
+       rtx tmp2 = gen_reg_rtx (V4DImode);
+       emit_insn (gen_avx2_pbroadcastv4di (tmp2, tmp1));
+       emit_move_insn (target, gen_lowpart (V8SImode, tmp2));
+     }
+   else if (ops[4] == const0_rtx
+ 	   && ops[5] == const0_rtx
+ 	   && ops[6] == const0_rtx
+ 	   && ops[7] == const0_rtx)
+     {
+       rtx tmp = gen_reg_rtx (V4SImode);
+       ix86_expand_vector_init_v4si (tmp, ops);
+       emit_insn (gen_avx_vec_concatv8si (target, tmp, CONST0_RTX (V4SImode)));
+     }
+   else if (CONST_INT_P (ops[0])
+ 	   && CONST_INT_P (ops[1])
+ 	   && CONST_INT_P (ops[2])
+ 	   && CONST_INT_P (ops[3])
+ 	   && CONST_INT_P (ops[4])
+ 	   && CONST_INT_P (ops[5])
+ 	   && CONST_INT_P (ops[6])
+ 	   && CONST_INT_P (ops[7]))
+     {
+       rtx vec = gen_rtx_CONST_VECTOR (V8SImode, gen_rtvec_v (8, ops));
+       emit_move_insn (target, vec);
+     }
+   else if (rtx_equal_p (ops[0], ops[4])
+ 	   && rtx_equal_p (ops[1], ops[5])
+ 	   && rtx_equal_p (ops[2], ops[6])
+ 	   && rtx_equal_p (ops[3], ops[7]))
+     {
+       rtx tmp = gen_reg_rtx (V4SImode);
+       ix86_expand_vector_init_v4si (tmp, ops);
+       emit_insn (gen_avx_vec_concatv8si (target, tmp, tmp));
+     }
+   else if (nonzero_int_const_count (ops, 8) >= 2)
+     {
+       rtx csts[8];
+       int i;
+       for (i = 0; i < 8; i++)
+ 	if (CONST_INT_P (ops[i]))
+ 	  {
+ 	    csts[i] = ops[i];
+ 	    vars[i] = const0_rtx;
+ 	  }
+ 	else
+ 	  {
+ 	    csts[i] = const0_rtx;
+ 	    vars[i] = ops[i];
+ 	  }
+       rtx tmp1 = gen_reg_rtx (V8SImode);
+       ix86_expand_vector_init_v8si (tmp1, vars);
+       rtx tmp2 = gen_reg_rtx (V8SImode);
+       rtx vec = gen_rtx_CONST_VECTOR (V8SImode, gen_rtvec_v (8, csts));
+       emit_move_insn (tmp2, vec);
+       emit_insn (gen_rtx_SET (target, gen_rtx_IOR (V8SImode, tmp1, tmp2)));
+     }
+   else
+     {
+       rtx tmp1 = gen_reg_rtx (V4SImode);
+       ix86_expand_vector_init_v4si (tmp1, ops);
+       rtx tmp2 = gen_reg_rtx (V4SImode);
+       ix86_expand_vector_init_v4si (tmp2, ops + 4);
+       emit_insn (gen_avx_vec_concatv8si (target, tmp1, tmp2));
+     }
+ }
+ 
+ /* A subroutine of ix86_expand_vector_init for V8SFmode.  */
+ 
+ static void
+ ix86_expand_vector_init_v8sf (rtx target, rtx *ops)
+ {
+   rtx vars[8];
+ 
+   if (ops[0] == CONST0_RTX (SFmode)
+       && ops[1] == CONST0_RTX (SFmode)
+       && ops[2] == CONST0_RTX (SFmode)
+       && ops[3] == CONST0_RTX (SFmode)
+       && ops[4] == CONST0_RTX (SFmode)
+       && ops[5] == CONST0_RTX (SFmode)
+       && ops[6] == CONST0_RTX (SFmode)
+       && ops[7] == CONST0_RTX (SFmode))
+     emit_move_insn (target, CONST0_RTX (V8SFmode));
+   else if (ops[1] == CONST0_RTX (SFmode)
+ 	   && ops[2] == CONST0_RTX (SFmode)
+ 	   && ops[3] == CONST0_RTX (SFmode)
+ 	   && ops[4] == CONST0_RTX (SFmode)
+ 	   && ops[5] == CONST0_RTX (SFmode)
+ 	   && ops[6] == CONST0_RTX (SFmode)
+ 	   && ops[7] == CONST0_RTX (SFmode))
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (SFmode, val);
+       emit_insn (gen_vec_setv8sf_0 (target, CONST0_RTX (V8SFmode), val));
+     }
+   else if (TARGET_AVX2
+ 	   && rtx_equal_p (ops[0], ops[1])
+ 	   && rtx_equal_p (ops[0], ops[2])
+ 	   && rtx_equal_p (ops[0], ops[3])
+ 	   && rtx_equal_p (ops[0], ops[4])
+ 	   && rtx_equal_p (ops[0], ops[5])
+ 	   && rtx_equal_p (ops[0], ops[6])
+ 	   && rtx_equal_p (ops[0], ops[7]))
+     {
+       rtx val = ops[0];
+       if (!REG_P (val) && !MEM_P (val))
+ 	val = force_reg (SFmode, val);
+       emit_insn (gen_avx2_vec_dupv8sf_1 (target, val));
+     }
+   else if (TARGET_AVX2
+ 	   && rtx_equal_p (ops[0], ops[2])
+ 	   && rtx_equal_p (ops[0], ops[4])
+ 	   && rtx_equal_p (ops[0], ops[6])
+ 	   && rtx_equal_p (ops[1], ops[3])
+ 	   && rtx_equal_p (ops[1], ops[5])
+ 	   && rtx_equal_p (ops[1], ops[7]))
+     {
+       rtx tmp_ops[4] = { ops[0], ops[1], CONST0_RTX (SFmode),
+ 					 CONST0_RTX (SFmode) };
+       rtx tmp1 = gen_reg_rtx (V4SFmode);
+       ix86_expand_vector_init_v4sf (tmp1, tmp_ops);
+       tmp1 = gen_lowpart (V2DImode, tmp1);
+       rtx tmp2 = gen_reg_rtx (V4DImode);
+       emit_insn (gen_avx2_pbroadcastv4di (tmp2, tmp1));
+       emit_move_insn (target, gen_lowpart (V8SFmode, tmp2));
+     }
+   else if (ops[4] == CONST0_RTX (SFmode)
+ 	   && ops[5] == CONST0_RTX (SFmode)
+ 	   && ops[6] == CONST0_RTX (SFmode)
+ 	   && ops[7] == CONST0_RTX (SFmode))
+     {
+       rtx tmp = gen_reg_rtx (V4SFmode);
+       ix86_expand_vector_init_v4sf (tmp, ops);
+       emit_insn (gen_avx_vec_concatv8sf (target, tmp, CONST0_RTX (V4SFmode)));
+     }
+   else if (CONST_DOUBLE_P (ops[0])
+ 	   && CONST_DOUBLE_P (ops[1])
+ 	   && CONST_DOUBLE_P (ops[2])
+ 	   && CONST_DOUBLE_P (ops[3])
+ 	   && CONST_DOUBLE_P (ops[4])
+ 	   && CONST_DOUBLE_P (ops[5])
+ 	   && CONST_DOUBLE_P (ops[6])
+ 	   && CONST_DOUBLE_P (ops[7]))
+     {
+       rtx vec = gen_rtx_CONST_VECTOR (V8SFmode, gen_rtvec_v (8, ops));
+       emit_move_insn (target, vec);
+     }
+   else if (rtx_equal_p (ops[0], ops[4])
+ 	   && rtx_equal_p (ops[1], ops[5])
+ 	   && rtx_equal_p (ops[2], ops[6])
+ 	   && rtx_equal_p (ops[3], ops[7]))
+     {
+       rtx tmp = gen_reg_rtx (V4SFmode);
+       ix86_expand_vector_init_v4sf (tmp, ops);
+       emit_insn (gen_avx_vec_concatv8sf (target, tmp, tmp));
+     }
+   else if (nonzero_float_const_count (ops, 8) >= 2)
+     {
+       rtx csts[8];
+       int i;
+       for (i = 0; i < 8; i++)
+ 	if (CONST_DOUBLE_P (ops[i]))
+ 	  {
+ 	    csts[i] = ops[i];
+ 	    vars[i] = CONST0_RTX (SFmode);
+ 	  }
+ 	else
+ 	  {
+ 	    csts[i] = CONST0_RTX (SFmode);
+ 	    vars[i] = ops[i];
+ 	  }
+       rtx tmp1 = gen_reg_rtx (V8SFmode);
+       ix86_expand_vector_init_v8sf (tmp1, vars);
+       rtx tmp2 = gen_reg_rtx (V8SFmode);
+       rtx vec = gen_rtx_CONST_VECTOR (V8SFmode, gen_rtvec_v (8, csts));
+       emit_move_insn (tmp2, vec);
+       emit_insn (gen_rtx_SET (target, gen_rtx_IOR (V8SFmode, tmp1, tmp2)));
+     }
+   else
+     {
+       rtx tmp1 = gen_reg_rtx (V4SFmode);
+       ix86_expand_vector_init_v4sf (tmp1, ops);
+       rtx tmp2 = gen_reg_rtx (V4SFmode);
+       ix86_expand_vector_init_v4sf (tmp2, ops + 4);
+       emit_insn (gen_avx_vec_concatv8sf (target, tmp1, tmp2));
+     }
+ }
+ 
+ 
  /* A subroutine of ix86_expand_vector_init.  Handle the most general case:
     all values variable, and none identical.  */
  
*************** ix86_expand_vector_init_general (bool mm
*** 18645,18650 ****
--- 19887,19954 ----
  
    switch (mode)
      {
+     case E_V2DImode:
+       ops[0] = XVECEXP (vals, 0, 0);
+       ops[1] = XVECEXP (vals, 0, 1);
+       ix86_expand_vector_init_v2di (target, ops);
+       return;
+ 
+     case E_V2DFmode:
+       ops[0] = XVECEXP (vals, 0, 0);
+       ops[1] = XVECEXP (vals, 0, 1);
+       ix86_expand_vector_init_v2df (target, ops);
+       return;
+ 
+     case E_V4SImode:
+       for (i = 0; i < 4; i++)
+ 	ops[i] = XVECEXP (vals, 0, i);
+       ix86_expand_vector_init_v4si (target, ops);
+       return;
+ 
+     case E_V4SFmode:
+       for (i = 0; i < 4; i++)
+ 	ops[i] = XVECEXP (vals, 0, i);
+       ix86_expand_vector_init_v4sf (target, ops);
+       return;
+ 
+     case E_V8HImode:
+       for (i = 0; i < 8; i++)
+ 	ops[i] = XVECEXP (vals, 0, i);
+       if (ix86_expand_vector_init_v8hi (target, ops))
+ 	return;
+       break;
+ 
+     case E_V16QImode:
+       for (i = 0; i < 16; i++)
+ 	ops[i] = XVECEXP (vals, 0, i);
+       if (ix86_expand_vector_init_v16qi (target, ops))
+ 	return;
+       break;
+ 
+     case E_V4DImode:
+       for (i = 0; i < 4; i++)
+ 	ops[i] = XVECEXP (vals, 0, i);
+       ix86_expand_vector_init_v4di (target,ops);
+       return;
+ 
+     case E_V4DFmode:
+       for (i = 0; i < 4; i++)
+ 	ops[i] = XVECEXP (vals, 0, i);
+       ix86_expand_vector_init_v4df (target,ops);
+       return;
+ 
+     case E_V8SImode:
+       for (i = 0; i < 8; i++)
+ 	ops[i] = XVECEXP (vals, 0, i);
+       ix86_expand_vector_init_v8si (target,ops);
+       return;
+ 
+     case E_V8SFmode:
+       for (i = 0; i < 8; i++)
+ 	ops[i] = XVECEXP (vals, 0, i);
+       ix86_expand_vector_init_v8sf (target,ops);
+       return;
+ 
      case E_V2SFmode:
      case E_V2SImode:
        if (!mmx_ok && !TARGET_SSE)
*************** ix86_expand_vector_init_general (bool mm
*** 18655,18668 ****
      case E_V16SFmode:
      case E_V8DFmode:
      case E_V8DImode:
-     case E_V8SFmode:
-     case E_V8SImode:
-     case E_V4DFmode:
-     case E_V4DImode:
-     case E_V4SFmode:
-     case E_V4SImode:
-     case E_V2DFmode:
-     case E_V2DImode:
        n = GET_MODE_NUNITS (mode);
        for (i = 0; i < n; i++)
  	ops[i] = XVECEXP (vals, 0, i);
--- 19959,19964 ----
*************** quarter:
*** 18761,18784 ****
        emit_insn (gen_rtx_SET (target, gen_rtx_VEC_CONCAT (mode, op4, op5)));
        return;
  
-     case E_V16QImode:
-       if (!TARGET_SSE4_1)
- 	break;
-       /* FALLTHRU */
- 
-     case E_V8HImode:
-       if (!TARGET_SSE2)
- 	break;
- 
-       /* Don't use ix86_expand_vector_init_interleave if we can't
- 	 move from GPR to SSE register directly.  */
-       if (!TARGET_INTER_UNIT_MOVES_TO_VEC)
- 	break;
-       /* FALLTHRU */
- 
      case E_V8HFmode:
      case E_V8BFmode:
- 
        n = GET_MODE_NUNITS (mode);
        for (i = 0; i < n; i++)
  	ops[i] = XVECEXP (vals, 0, i);
--- 20057,20064 ----
*************** ix86_expand_vector_set (bool mmx_ok, rtx
*** 19157,19162 ****
--- 20437,20447 ----
    machine_mode mmode = VOIDmode;
    rtx (*gen_blendm) (rtx, rtx, rtx, rtx);
  
+   if (!IN_RANGE (elt, 0, GET_MODE_NUNITS (mode)))
+     {
+       emit_move_insn (target, target);
+       return;
+     }
    if (TARGET_SSE4_1 && mode == V4SImode && val == const0_rtx)
      {
        emit_insn (gen_sse4_1_insertps_v4si_zero (target, target,
diff -Nrcpad gcc-17-20260727/gcc/config/i386/i386-features.cc gcc-17-20260802/gcc/config/i386/i386-features.cc
*** gcc-17-20260727/gcc/config/i386/i386-features.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/i386/i386-features.cc	Sun Aug  2 22:32:06 2026
*************** ix86_emit_tls_call (rtx tls_set, x86_cse
*** 4357,4362 ****
--- 4357,4373 ----
  		&& !fixed_regs[i]
  		&& bitmap_bit_p (in, i))
  	      bitmap_set_bit (live_caller_saved_regs, i);
+ 	  if (df_live && crtl->drap_reg)
+ 	    {
+ 	      /* DRAP has no reaching definition at this point, so df_live drops
+ 		 it above.  Its hard register can also go dead mid-function once
+ 		 copied elsewhere (e.g. right after the prologue), so query
+ 		 DF_LR_IN per-block rather than treating it as live whenever
+ 		 crtl->drap_reg is set.  */
+ 	      i = REGNO (crtl->drap_reg);
+ 	      if (bitmap_bit_p (DF_LR_IN (bb), i))
+ 		bitmap_set_bit (live_caller_saved_regs, i);
+ 	    }
  	}
  
        if (bitmap_empty_p (live_caller_saved_regs))
diff -Nrcpad gcc-17-20260727/gcc/config/i386/i386.cc gcc-17-20260802/gcc/config/i386/i386.cc
*** gcc-17-20260727/gcc/config/i386/i386.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/i386/i386.cc	Sun Aug  2 22:32:06 2026
*************** ix86_spill_register_argument_p (const_rt
*** 8618,8624 ****
    rtx dest = SET_DEST (set);
    tree reg_expr = REG_EXPR (src);
  
!   return dest == op && reg_expr == base;
  }
  
  /* Return true if OP, found in PAT, is a stack argument set up by the
--- 8618,8628 ----
    rtx dest = SET_DEST (set);
    tree reg_expr = REG_EXPR (src);
  
!   /* If spilling an SSA_NAME into OP, the argument-linked memory is
!      also used to store a local variable.  */
!   return dest == op && (reg_expr == base
! 			|| (reg_expr
! 			    && TREE_CODE (reg_expr) == SSA_NAME));
  }
  
  /* Return true if OP, found in PAT, is a stack argument set up by the
*************** public:
*** 26452,26457 ****
--- 26456,26462 ----
  
  private:
  
+   bool better_fold_left_reduc_than_p (const vector_costs *) const;
    /* Estimate register pressure of the vectorized code.  */
    void ix86_vect_estimate_reg_pressure ();
    /* Number of GENERAL_REGS/SSE_REGS used in the vectorizer, it's used for
*************** private:
*** 26468,26473 ****
--- 26473,26480 ----
    unsigned m_num_reduc[X86_REDUC_LAST];
    /* Don't do unroll if m_prefer_unroll is false, default is true.  */
    bool m_prefer_unroll;
+   /* Scalar lanes in fold-left reductions.  */
+   unsigned int m_num_fold_left_reduc_lanes;
  };
  
  ix86_vector_costs::ix86_vector_costs (vec_info* vinfo, bool costing_for_scalar)
*************** ix86_vector_costs::ix86_vector_costs (ve
*** 26477,26483 ****
      m_num_avx256_vec_perm (),
      m_num_avx512_vec_perm (),
      m_num_reduc (),
!     m_prefer_unroll (true)
  {}
  
  /* Implement targetm.vectorize.create_costs.  */
--- 26484,26491 ----
      m_num_avx256_vec_perm (),
      m_num_avx512_vec_perm (),
      m_num_reduc (),
!     m_prefer_unroll (true),
!     m_num_fold_left_reduc_lanes (0)
  {}
  
  /* Implement targetm.vectorize.create_costs.  */
*************** ix86_vector_costs::finish_cost (const ve
*** 27183,27188 ****
--- 27191,27210 ----
    loop_vec_info loop_vinfo = dyn_cast<loop_vec_info> (m_vinfo);
    if (loop_vinfo && !m_costing_for_scalar)
      {
+       unsigned int vf = vect_vf_for_cost (loop_vinfo);
+       for (auto inst : LOOP_VINFO_SLP_INSTANCES (loop_vinfo))
+ 	if ((SLP_INSTANCE_KIND (inst) == slp_inst_kind_reduc_group
+ 	     || SLP_INSTANCE_KIND (inst) == slp_inst_kind_reduc_chain)
+ 	    && (vect_reduc_type (loop_vinfo, SLP_INSTANCE_TREE (inst))
+ 		== FOLD_LEFT_REDUCTION))
+ 	  m_num_fold_left_reduc_lanes
+ 	    += vf * SLP_TREE_LANES (SLP_INSTANCE_TREE (inst));
+ 
+       if (m_num_fold_left_reduc_lanes && dump_enabled_p ())
+ 	dump_printf_loc (MSG_NOTE, vect_location,
+ 			 "in-order FP reduction lanes: %u\n",
+ 			 m_num_fold_left_reduc_lanes);
+ 
        /* We are currently not asking the vectorizer to compare costs
  	 between different vector mode sizes.  When using predication
  	 that will end up always choosing the preferred mode size even
*************** ix86_vector_costs::finish_cost (const ve
*** 27347,27352 ****
--- 27369,27389 ----
    vector_costs::finish_cost (scalar_costs);
  }
  
+ /* Return true if THIS has a shorter fold-left reduction chain than OTHER.  */
+ 
+ bool
+ ix86_vector_costs::better_fold_left_reduc_than_p
+   (const vector_costs *other) const
+ {
+   auto other_costs = static_cast<const ix86_vector_costs *> (other);
+   if (m_num_fold_left_reduc_lanes >= other_costs->m_num_fold_left_reduc_lanes)
+     return false;
+ 
+   /* Do not let emulated sub-SSE modes win on this alone.  */
+   loop_vec_info loop_vinfo = as_a<loop_vec_info> (m_vinfo);
+   return known_ge (GET_MODE_SIZE (loop_vinfo->vector_mode), 16);
+ }
+ 
  /* Return true if THIS should be preferred over OTHER as main vector loop.  */
  
  bool
*************** ix86_vector_costs::better_main_loop_than
*** 27355,27360 ****
--- 27392,27400 ----
    loop_vec_info this_loop_vinfo = as_a<loop_vec_info> (this->vinfo ());
    loop_vec_info other_loop_vinfo = as_a<loop_vec_info> (other->vinfo ());
  
+   if (better_fold_left_reduc_than_p (other))
+     return true;
+ 
    /* If the other loop is masked it does not need an epilog.  Prefer that
       if the current loop cannot be vectorized fully with a vector
       epilogs with at most one scalar iteration left.  */
*************** ix86_vector_costs::better_epilogue_loop_
*** 27377,27382 ****
--- 27417,27426 ----
  						loop_vec_info main_loop) const
  {
    loop_vec_info this_loop_info = as_a <loop_vec_info> (this->vinfo ());
+ 
+   if (better_fold_left_reduc_than_p (other))
+     return true;
+ 
    /* The x86 target allows for multiple vector epilogues, if THIS is
       the suggested epilog mode of OTHER then keep the latter unless
       THIS has a VF of one which means no further epilog needed.  */
diff -Nrcpad gcc-17-20260727/gcc/config/i386/i386.md gcc-17-20260802/gcc/config/i386/i386.md
*** gcc-17-20260727/gcc/config/i386/i386.md	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/i386/i386.md	Sun Aug  2 22:32:06 2026
***************
*** 7139,7148 ****
      }
  }
    [(set_attr "isa" "*,*,*,*,*,*,apx_ndd,apx_ndd,apx_ndd")
-    (set (attr "preferred_for_speed")
-      (cond [(eq_attr "alternative" "7,8")
- 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
- 	   (symbol_ref "true")))
     (set (attr "type")
       (cond [(eq_attr "alternative" "5")
                (const_string "lea")
--- 7139,7144 ----
***************
*** 7160,7166 ****
     ;; Potential partial reg stall on alternatives 3 and 4.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")]
  	   (symbol_ref "true")))])
  
  ;; Alternative 1 is needed to work around LRA limitation, see PR82524.
--- 7156,7164 ----
     ;; Potential partial reg stall on alternatives 3 and 4.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")
! 	    (eq_attr "alternative" "7,8")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
  	   (symbol_ref "true")))])
  
  ;; Alternative 1 is needed to work around LRA limitation, see PR82524.
***************
*** 13577,13586 ****
     #"
    [(set_attr "type" "alu,alu,alu,alu,alu,alu,msklog")
     (set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd,*")
-    (set (attr "preferred_for_speed")
-      (cond [(eq_attr "alternative" "4,5")
- 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
- 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set (attr "mode")
  	(cond [(eq_attr "alternative" "2")
--- 13575,13580 ----
***************
*** 13593,13599 ****
     ;; Potential partial reg stall on alternative 2.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")]
  	   (symbol_ref "true")))])
  
  ;; Alternative 1 is needed to work around LRA limitation, see PR82524.
--- 13587,13595 ----
     ;; Potential partial reg stall on alternative 2.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")
! 	    (eq_attr "alternative" "4,5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
  	   (symbol_ref "true")))])
  
  ;; Alternative 1 is needed to work around LRA limitation, see PR82524.
***************
*** 13841,13850 ****
  }
    [(set_attr "type" "alu")
     (set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd")
-    (set (attr "preferred_for_speed")
-      (cond [(eq_attr "alternative" "4,5")
- 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
- 	   (symbol_ref "true")))
     (set (attr "mode")
       (cond [(eq_attr "alternative" "3,4,5")
  	      (const_string "QI")
--- 13837,13842 ----
***************
*** 13859,13865 ****
     ;; Potential partial reg stall on alternative 2.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")]
  	   (symbol_ref "true")))])
  
  (define_insn "*and<mode>_2"
--- 13851,13859 ----
     ;; Potential partial reg stall on alternative 2.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")
! 	    (eq_attr "alternative" "4,5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
  	   (symbol_ref "true")))])
  
  (define_insn "*and<mode>_2"
***************
*** 14679,14688 ****
     <nf_prefix><logic>{b}\t{%2, %1, %0|%0, %1, %2}
     #"
    [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd,avx512f")
-    (set (attr "preferred_for_speed")
-      (cond [(eq_attr "alternative" "4,5")
- 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
- 	   (symbol_ref "true")))
     (set_attr "type" "alu,alu,alu,alu,alu,alu,msklog")
     (set_attr "has_nf" "1")
     (set (attr "mode")
--- 14673,14678 ----
***************
*** 14696,14702 ****
     ;; Potential partial reg stall on alternative 2.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")]
  	   (symbol_ref "true")))])
  
  (define_insn_and_split "*notxorqi_1"
--- 14686,14694 ----
     ;; Potential partial reg stall on alternative 2.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")
! 	    (eq_attr "alternative" "4,5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
  	   (symbol_ref "true")))])
  
  (define_insn_and_split "*notxorqi_1"
***************
*** 14722,14731 ****
      }
  }
    [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd,avx512f")
-    (set (attr "preferred_for_speed")
-      (cond [(eq_attr "alternative" "4,5")
- 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
- 	   (symbol_ref "true")))
     (set_attr "type" "alu,alu,alu,alu,alu,alu,msklog")
     (set (attr "mode")
  	(cond [(eq_attr "alternative" "2")
--- 14714,14719 ----
***************
*** 14738,14744 ****
     ;; Potential partial reg stall on alternative 2.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")]
  	   (symbol_ref "true")))])
  
  ;; convert (sign_extend:WIDE (any_logic:NARROW (memory, immediate)))
--- 14726,14734 ----
     ;; Potential partial reg stall on alternative 2.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")
! 	    (eq_attr "alternative" "4,5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
  	   (symbol_ref "true")))])
  
  ;; convert (sign_extend:WIDE (any_logic:NARROW (memory, immediate)))
***************
*** 16047,16056 ****
     not{b}\t{%1, %0|%0, %1}
     #"
    [(set_attr "isa" "*,*,apx_ndd,apx_ndd,avx512f")
-    (set (attr "preferred_for_speed")
-      (cond [(eq_attr "alternative" "3")
- 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
- 	   (symbol_ref "true")))
     (set_attr "type" "negnot,negnot,negnot,negnot,msklog")
     (set (attr "mode")
  	(cond [(eq_attr "alternative" "1")
--- 16037,16042 ----
***************
*** 16063,16069 ****
     ;; Potential partial reg stall on alternative 1.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")]
  	   (symbol_ref "true")))])
  
  ;; Alternative 1 is needed to work around LRA limitation, see PR82524.
--- 16049,16057 ----
     ;; Potential partial reg stall on alternative 1.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")
! 	    (eq_attr "alternative" "3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
  	   (symbol_ref "true")))])
  
  ;; Alternative 1 is needed to work around LRA limitation, see PR82524.
***************
*** 17214,17223 ****
      }
  }
    [(set_attr "isa" "*,*,*,avx512dq,apx_ndd,apx_ndd")
-    (set (attr "preferred_for_speed")
-      (cond [(eq_attr "alternative" "5")
- 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
- 	   (symbol_ref "true")))
     (set (attr "type")
       (cond [(eq_attr "alternative" "2")
  	      (const_string "lea")
--- 17202,17207 ----
***************
*** 17240,17248 ****
         (const_string "*")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI,SI,SI,QI,QI,QI")
!    ;; Potential partial reg stall on alternative 1.
     (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,4,5")
  	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")]
  	   (symbol_ref "true")))])
  
--- 17224,17234 ----
         (const_string "*")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI,SI,SI,QI,QI,QI")
!    ;; Potential partial reg stall on alternatives 1, 4 and 5.
     (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM && !TARGET_PARTIAL_REG_STALL")
! 	    (eq_attr "alternative" "1,4")
  	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")]
  	   (symbol_ref "true")))])
  
***************
*** 23693,23708 ****
     (set_attr "c86_decode" "vector,*,*,*")
     (set_attr "bdver1_decode" "double,*,*,*")
     (set_attr "mode" "QI,HI,HI,HI")
!    (set (attr "preferred_for_size")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "false")
! 	   ]
! 	   (symbol_ref "true")))
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "!TARGET_USE_XCHGB")
  	   ]
! 	   (symbol_ref "true")))])
  
  (define_insn "*bswaphi2"
    [(set (match_operand:HI 0 "register_operand" "=Q,r")
--- 23679,23691 ----
     (set_attr "c86_decode" "vector,*,*,*")
     (set_attr "bdver1_decode" "double,*,*,*")
     (set_attr "mode" "QI,HI,HI,HI")
!    (set (attr "enabled")
!      (cond [(eq_attr "alternative" "0")
!               (symbol_ref "TARGET_USE_XCHGB")
! 	    (eq_attr "alternative" "1")
!               (symbol_ref "!TARGET_USE_XCHGB")
  	   ]
! 	   (const_string "*")))])
  
  (define_insn "*bswaphi2"
    [(set (match_operand:HI 0 "register_operand" "=Q,r")
***************
*** 23719,23734 ****
     (set_attr "c86_decode" "vector,*")
     (set_attr "bdver1_decode" "double,*")
     (set_attr "mode" "QI,HI")
!    (set (attr "preferred_for_size")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "false")
! 	   ]
! 	   (symbol_ref "true")))
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "!TARGET_USE_XCHGB")
  	   ]
! 	   (symbol_ref "true")))])
  
  (define_insn "bswaphisi2_lowpart"
    [(set (match_operand:SI 0 "register_operand" "=Q,r")
--- 23702,23714 ----
     (set_attr "c86_decode" "vector,*")
     (set_attr "bdver1_decode" "double,*")
     (set_attr "mode" "QI,HI")
!    (set (attr "enabled")
!      (cond [(eq_attr "alternative" "0")
!               (symbol_ref "TARGET_USE_XCHGB")
! 	    (eq_attr "alternative" "1")
!               (symbol_ref "!TARGET_USE_XCHGB")
  	   ]
! 	   (const_string "*")))])
  
  (define_insn "bswaphisi2_lowpart"
    [(set (match_operand:SI 0 "register_operand" "=Q,r")
***************
*** 23748,23763 ****
     (set_attr "c86_decode" "vector,*")
     (set_attr "bdver1_decode" "double,*")
     (set_attr "mode" "QI,HI")
!    (set (attr "preferred_for_size")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "false")
! 	   ]
! 	   (symbol_ref "true")))
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "!TARGET_USE_XCHGB")
  	   ]
! 	   (symbol_ref "true")))])
  
  (define_expand "bitreverse<mode>2"
    [(set (match_operand:SWIDWI 0 "register_operand")
--- 23728,23740 ----
     (set_attr "c86_decode" "vector,*")
     (set_attr "bdver1_decode" "double,*")
     (set_attr "mode" "QI,HI")
!    (set (attr "enabled")
!      (cond [(eq_attr "alternative" "0")
!               (symbol_ref "TARGET_USE_XCHGB")
! 	    (eq_attr "alternative" "1")
!               (symbol_ref "!TARGET_USE_XCHGB")
  	   ]
! 	   (const_string "*")))])
  
  (define_expand "bitreverse<mode>2"
    [(set (match_operand:SWIDWI 0 "register_operand")
diff -Nrcpad gcc-17-20260727/gcc/config/i386/sse.md gcc-17-20260802/gcc/config/i386/sse.md
*** gcc-17-20260727/gcc/config/i386/sse.md	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/i386/sse.md	Sun Aug  2 22:32:06 2026
***************
*** 1109,1125 ****
     (V16SF "hi") (V8SF  "qi") (V4SF  "qi")
     (V8DF  "qi") (V4DF  "qi") (V2DF  "qi")])
  
- ;; Mapping of vector modes to corresponding mask half size
- (define_mode_attr avx512fmaskhalfmode
-   [(V64QI "SI") (V32QI "HI") (V16QI "QI")
-    (V32HI "HI") (V16HI "QI") (V8HI  "QI") (V4HI "QI")
-    (V16SI "QI") (V8SI  "QI") (V4SI  "QI")
-    (V8DI  "QI") (V4DI  "QI") (V2DI  "QI")
-    (V32HF "HI") (V16HF "QI") (V8HF  "QI")
-    (V32BF "HI") (V16BF "QI") (V8BF  "QI")
-    (V16SF "QI") (V8SF  "QI") (V4SF  "QI")
-    (V8DF  "QI") (V4DF  "QI") (V2DF  "QI")])
- 
  ;; Mapping of vector float modes to an integer mode of the same size
  (define_mode_attr sseintvecmode
    [(V32HF "V32HI") (V32BF "V32HI") (V16SF "V16SI") (V8DF  "V8DI")
--- 1109,1114 ----
***************
*** 20613,20618 ****
--- 20602,20622 ----
     (set_attr "prefix" "orig,vex")
     (set_attr "mode" "TI")])
  
+ (define_insn "*vec_interleave_lowv4si_sse"
+   [(set (match_operand:V4SI 0 "register_operand" "=x")
+ 	(vec_select:V4SI
+ 	  (vec_concat:V8SI
+ 	    (match_operand:V4SI 1 "register_operand" "0")
+ 	    (match_operand:V4SI 2 "vector_operand" "xBm"))
+ 	  (parallel [(const_int 0) (const_int 4)
+ 		     (const_int 1) (const_int 5)])))]
+   "TARGET_SSE && !TARGET_SSE2"
+   "unpcklps\t{%2, %0|%0, %2}"
+   [(set_attr "isa" "noavx")
+    (set_attr "type" "sselog")
+    (set_attr "prefix" "orig")
+    (set_attr "mode" "V4SF")])
+ 
  (define_expand "vec_interleave_high<mode>"
    [(match_operand:VI_256 0 "register_operand")
     (match_operand:VI_256 1 "register_operand")
***************
*** 32630,32636 ****
     (match_operand:VF1_AVX512VL 1 "register_operand")
     (match_operand:<sf_bf16> 2 "register_operand")
     (match_operand:<sf_bf16> 3 "register_operand")
!    (match_operand:<avx512fmaskhalfmode> 4 "register_operand")]
    "TARGET_AVX512BF16"
  {
    emit_insn (gen_avx512f_dpbf16ps_<mode>_maskz_1(operands[0], operands[1],
--- 32634,32640 ----
     (match_operand:VF1_AVX512VL 1 "register_operand")
     (match_operand:<sf_bf16> 2 "register_operand")
     (match_operand:<sf_bf16> 3 "register_operand")
!    (match_operand:<avx512fmaskmode> 4 "register_operand")]
    "TARGET_AVX512BF16"
  {
    emit_insn (gen_avx512f_dpbf16ps_<mode>_maskz_1(operands[0], operands[1],
***************
*** 32638,32644 ****
    DONE;
  })
  
! (define_insn "avx512f_dpbf16ps_<mode><maskz_half_name>"
    [(set (match_operand:VF1_AVX512VL 0 "register_operand" "=v")
  	(unspec:VF1_AVX512VL
  	  [(match_operand:VF1_AVX512VL 1 "register_operand" "0")
--- 32642,32648 ----
    DONE;
  })
  
! (define_insn "avx512f_dpbf16ps_<mode><sd_maskz_name>"
    [(set (match_operand:VF1_AVX512VL 0 "register_operand" "=v")
  	(unspec:VF1_AVX512VL
  	  [(match_operand:VF1_AVX512VL 1 "register_operand" "0")
***************
*** 32646,32652 ****
  	   (match_operand:<sf_bf16> 3 "nonimmediate_operand" "vm")]
          UNSPEC_VDPBF16PS))]
    "TARGET_AVX512BF16"
!   "vdpbf16ps\t{%3, %2, %0<maskz_half_operand4>|%0<maskz_half_operand4>, %2, %3}")
  
  (define_insn "avx512f_dpbf16ps_<mode>_mask"
    [(set (match_operand:VF1_AVX512VL 0 "register_operand" "=v")
--- 32650,32656 ----
  	   (match_operand:<sf_bf16> 3 "nonimmediate_operand" "vm")]
          UNSPEC_VDPBF16PS))]
    "TARGET_AVX512BF16"
!   "vdpbf16ps\t{%3, %2, %0<sd_mask_op4>|%0<sd_mask_op4>, %2, %3}")
  
  (define_insn "avx512f_dpbf16ps_<mode>_mask"
    [(set (match_operand:VF1_AVX512VL 0 "register_operand" "=v")
***************
*** 32657,32663 ****
  	     (match_operand:<sf_bf16> 3 "nonimmediate_operand" "vm")]
               UNSPEC_VDPBF16PS)
            (match_dup 1)
!           (match_operand:<avx512fmaskhalfmode> 4 "register_operand" "Yk")))]
    "TARGET_AVX512BF16"
    "vdpbf16ps\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}")
  
--- 32661,32667 ----
  	     (match_operand:<sf_bf16> 3 "nonimmediate_operand" "vm")]
               UNSPEC_VDPBF16PS)
            (match_dup 1)
!           (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
    "TARGET_AVX512BF16"
    "vdpbf16ps\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}")
  
diff -Nrcpad gcc-17-20260727/gcc/config/i386/subst.md gcc-17-20260802/gcc/config/i386/subst.md
*** gcc-17-20260727/gcc/config/i386/subst.md	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/i386/subst.md	Sun Aug  2 22:32:06 2026
***************
*** 470,488 ****
  	     (match_operand:SI 3 "const48_operand")]
  		UNSPEC_EMBEDDED_ROUNDING))])
  
- (define_subst_attr "maskz_half_name" "maskz_half" "" "_maskz_1")
- (define_subst_attr "maskz_half_operand4" "maskz_half" "" "%{%5%}%N4")
- 
- (define_subst "maskz_half"
-   [(set (match_operand:SUBST_V 0)
-         (match_operand:SUBST_V 1))]
-   ""
-   [(set (match_dup 0)
-         (vec_merge:SUBST_V
- 	  (match_dup 1)
- 	  (match_operand:SUBST_V 2 "const0_operand")
- 	  (match_operand:<avx512fmaskhalfmode> 3 "register_operand" "Yk")))])
- 
  (define_subst_attr "round_zext_name" "round_zext" "_zext" "_round_zext")
  (define_subst_attr "round_zext_constraint" "round_zext" "vm" "v")
  (define_subst_attr "round_zext_constraint2" "round_zext" "m" "v")
--- 470,475 ----
diff -Nrcpad gcc-17-20260727/gcc/config/loongarch/loongarch.cc gcc-17-20260802/gcc/config/loongarch/loongarch.cc
*** gcc-17-20260727/gcc/config/loongarch/loongarch.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/loongarch/loongarch.cc	Sun Aug  2 22:32:06 2026
*************** loongarch_output_dwarf_dtprel (FILE *fil
*** 7212,7218 ****
        gcc_unreachable ();
      }
    output_addr_const (file, x);
-   fputs ("+0x8000", file);
  }
  
  /* Implement ASM_OUTPUT_ASCII.  */
--- 7212,7217 ----
diff -Nrcpad gcc-17-20260727/gcc/config/riscv/autovec-opt.md gcc-17-20260802/gcc/config/riscv/autovec-opt.md
*** gcc-17-20260727/gcc/config/riscv/autovec-opt.md	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/riscv/autovec-opt.md	Sun Aug  2 22:32:06 2026
***************
*** 685,716 ****
  [(set_attr "type" "viwalu")])
  
  (define_insn_and_split "*vwabda<su><mode>"
!   [(set (match_operand:VWEXTI 0 "register_operand" "+&vr")
! 	(plus:VWEXTI
! 	  (zero_extend:VWEXTI
  	    (unspec:<V_DOUBLE_TRUNC>
  	      [(match_operand:<V_DOUBLE_TRUNC> 1 "register_operand" "vr")
  	       (match_operand:<V_DOUBLE_TRUNC> 2 "register_operand" "vr")]
  	      UNSPEC_VABD))
! 	  (match_operand:VWEXTI 3 "register_operand" "0")))]
    "TARGET_ZVABD && can_create_pseudo_p ()"
    "#"
    "&& 1"
    [(const_int 0)]
  {
!   rtx ops[] = {operands[0], operands[1], operands[2]};
    riscv_vector::emit_vlmax_insn (CODE_FOR_pred_widen_abd_plus<su><mode>,
! 				 riscv_vector::BINARY_OP, ops);
    DONE;
  }
  [(set_attr "type" "viwalu")])
  
  ;; have this since we don't canonicalize the plus in the presence of an unspec.
  (define_insn_and_split "*vwabda_right<su><mode>"
!   [(set (match_operand:VWEXTI 0 "register_operand" "+&vr")
! 	(plus:VWEXTI
! 	  (match_operand:VWEXTI 1 "register_operand" "0")
! 	  (zero_extend:VWEXTI
  	    (unspec:<V_DOUBLE_TRUNC>
  	      [(match_operand:<V_DOUBLE_TRUNC> 2 "register_operand" "vr")
  	       (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "vr")]
--- 685,716 ----
  [(set_attr "type" "viwalu")])
  
  (define_insn_and_split "*vwabda<su><mode>"
!   [(set (match_operand:VWEXTI_HS 0 "register_operand" "+&vr")
! 	(plus:VWEXTI_HS
! 	  (zero_extend:VWEXTI_HS
  	    (unspec:<V_DOUBLE_TRUNC>
  	      [(match_operand:<V_DOUBLE_TRUNC> 1 "register_operand" "vr")
  	       (match_operand:<V_DOUBLE_TRUNC> 2 "register_operand" "vr")]
  	      UNSPEC_VABD))
! 	  (match_operand:VWEXTI_HS 3 "register_operand" "0")))]
    "TARGET_ZVABD && can_create_pseudo_p ()"
    "#"
    "&& 1"
    [(const_int 0)]
  {
!   rtx ops[] = {operands[0], operands[3], operands[1], operands[2]};
    riscv_vector::emit_vlmax_insn (CODE_FOR_pred_widen_abd_plus<su><mode>,
! 				 riscv_vector::WIDEN_TERNARY_OP, ops);
    DONE;
  }
  [(set_attr "type" "viwalu")])
  
  ;; have this since we don't canonicalize the plus in the presence of an unspec.
  (define_insn_and_split "*vwabda_right<su><mode>"
!   [(set (match_operand:VWEXTI_HS 0 "register_operand" "+&vr")
! 	(plus:VWEXTI_HS
! 	  (match_operand:VWEXTI_HS 1 "register_operand" "0")
! 	  (zero_extend:VWEXTI_HS
  	    (unspec:<V_DOUBLE_TRUNC>
  	      [(match_operand:<V_DOUBLE_TRUNC> 2 "register_operand" "vr")
  	       (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "vr")]
***************
*** 720,728 ****
    "&& 1"
    [(const_int 0)]
  {
!   rtx ops[] = {operands[0], operands[2], operands[3]};
    riscv_vector::emit_vlmax_insn (CODE_FOR_pred_widen_abd_plus<su><mode>,
! 				 riscv_vector::BINARY_OP, ops);
    DONE;
  }
  [(set_attr "type" "viwalu")])
--- 720,728 ----
    "&& 1"
    [(const_int 0)]
  {
!   rtx ops[] = {operands[0], operands[1], operands[2], operands[3]};
    riscv_vector::emit_vlmax_insn (CODE_FOR_pred_widen_abd_plus<su><mode>,
! 				 riscv_vector::WIDEN_TERNARY_OP, ops);
    DONE;
  }
  [(set_attr "type" "viwalu")])
diff -Nrcpad gcc-17-20260727/gcc/config/riscv/autovec.md gcc-17-20260802/gcc/config/riscv/autovec.md
*** gcc-17-20260727/gcc/config/riscv/autovec.md	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/riscv/autovec.md	Sun Aug  2 22:32:06 2026
***************
*** 3080,3089 ****
  ; == Absolute difference (not including sum)
  ; ========
  (define_insn_and_split "<su>abd<mode>3"
!   [(set (match_operand:V_VLSI 0 "register_operand" "=vr")
!        (unspec:V_VLSI
! 	 [(match_operand:V_VLSI 1 "register_operand" "vr")
! 	  (match_operand:V_VLSI 2 "register_operand" "vr")]
  	 UNSPEC_VABD))]
    "TARGET_ZVABD && can_create_pseudo_p ()"
    "#"
--- 3080,3089 ----
  ; == Absolute difference (not including sum)
  ; ========
  (define_insn_and_split "<su>abd<mode>3"
!   [(set (match_operand:VI_QH 0 "register_operand" "=vr")
! 	(unspec:VI_QH
! 	 [(match_operand:VI_QH 1 "register_operand" "vr")
! 	  (match_operand:VI_QH 2 "register_operand" "vr")]
  	 UNSPEC_VABD))]
    "TARGET_ZVABD && can_create_pseudo_p ()"
    "#"
diff -Nrcpad gcc-17-20260727/gcc/config/riscv/genrvv-type-indexer.cc gcc-17-20260802/gcc/config/riscv/genrvv-type-indexer.cc
*** gcc-17-20260727/gcc/config/riscv/genrvv-type-indexer.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/riscv/genrvv-type-indexer.cc	Sun Aug  2 22:32:06 2026
*************** main (int argc, const char **argv)
*** 376,382 ****
  		     same_ratio_eew_type (sew, lmul_log2, sew / 2, unsigned_p,
  					  false)
  		       .c_str ());
! 	    fprintf (fp, "  /*DOUBLE_TRUNC_SIGNED*/ INVALID,\n");
  	    fprintf (fp, "  /*DOUBLE_TRUNC_UNSIGNED*/ %s,\n",
  		     same_ratio_eew_type (sew, lmul_log2, sew / 2, true, false)
  		       .c_str ());
--- 376,385 ----
  		     same_ratio_eew_type (sew, lmul_log2, sew / 2, unsigned_p,
  					  false)
  		       .c_str ());
! 	    fprintf (fp, "  /*DOUBLE_TRUNC_SIGNED*/ %s,\n",
! 		     same_ratio_eew_type (sew, lmul_log2, sew / 2, false,
! 					  false)
! 		       .c_str ());
  	    fprintf (fp, "  /*DOUBLE_TRUNC_UNSIGNED*/ %s,\n",
  		     same_ratio_eew_type (sew, lmul_log2, sew / 2, true, false)
  		       .c_str ());
diff -Nrcpad gcc-17-20260727/gcc/config/riscv/riscv-vector-builtins-bases.cc gcc-17-20260802/gcc/config/riscv/riscv-vector-builtins-bases.cc
*** gcc-17-20260727/gcc/config/riscv/riscv-vector-builtins-bases.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/riscv/riscv-vector-builtins-bases.cc	Sun Aug  2 22:32:06 2026
*************** public:
*** 2462,2467 ****
--- 2462,2502 ----
    }
  };
  
+ /* Implements vabd/vabdu.  */
+ template<int UNSPEC>
+ class vabd : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_vabd (UNSPEC, e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vabs.  */
+ class vabs : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_abs (e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vwabda/vwabdau.  */
+ template<int UNSPEC>
+ class vabda : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_widen_ternop_insn (
+       code_for_pred_widen_abd_plus (UNSPEC, e.vector_mode ()));
+   }
+ };
+ 
  static constexpr const vsetvl<false> vsetvl_obj;
  static constexpr const vsetvl<true> vsetvlmax_obj;
  static constexpr const loadstore<false, LST_UNIT_STRIDE, false> vle_obj;
*************** static constexpr const vfwcvtbf16_f vfwc
*** 2787,2792 ****
--- 2822,2834 ----
  static constexpr const vfwmaccbf16<NO_FRM> vfwmaccbf16_obj;
  static constexpr const vfwmaccbf16<HAS_FRM> vfwmaccbf16_frm_obj;
  
+ /* Zvabd */
+ static constexpr const vabs vabs_obj;
+ static constexpr const vabd<UNSPEC_VSABD> vabd_obj;
+ static constexpr const vabd<UNSPEC_VUABD> vabdu_obj;
+ static constexpr const vabda<UNSPEC_VSABDA> vwabda_obj;
+ static constexpr const vabda<UNSPEC_VUABDA> vwabdau_obj;
+ 
  /* Declare the function base NAME, pointing it to an instance
     of class <NAME>_obj.  */
  #define BASE(NAME) \
*************** BASE (vfwcvtbf16_f)
*** 3114,3117 ****
--- 3156,3165 ----
  /* Zvfbfwma */
  BASE (vfwmaccbf16)
  BASE (vfwmaccbf16_frm)
+ /* Zvabd.  */
+ BASE (vabs)
+ BASE (vabd)
+ BASE (vabdu)
+ BASE (vwabda)
+ BASE (vwabdau)
  } // end namespace riscv_vector
diff -Nrcpad gcc-17-20260727/gcc/config/riscv/riscv-vector-builtins-bases.h gcc-17-20260802/gcc/config/riscv/riscv-vector-builtins-bases.h
*** gcc-17-20260727/gcc/config/riscv/riscv-vector-builtins-bases.h	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/riscv/riscv-vector-builtins-bases.h	Sun Aug  2 22:32:06 2026
*************** extern const function_base *const vfwcvt
*** 352,357 ****
--- 352,363 ----
  /* Zvfbfwma */
  extern const function_base *const vfwmaccbf16;
  extern const function_base *const vfwmaccbf16_frm;
+ /* Zvabd */
+ extern const function_base *const vabs;
+ extern const function_base *const vabd;
+ extern const function_base *const vabdu;
+ extern const function_base *const vwabda;
+ extern const function_base *const vwabdau;
  }
  
  } // end namespace riscv_vector
diff -Nrcpad gcc-17-20260727/gcc/config/riscv/riscv-vector-builtins-functions.def gcc-17-20260802/gcc/config/riscv/riscv-vector-builtins-functions.def
*** gcc-17-20260727/gcc/config/riscv/riscv-vector-builtins-functions.def	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/riscv/riscv-vector-builtins-functions.def	Sun Aug  2 22:32:06 2026
*************** DEF_RVV_FUNCTION (vfwmaccbf16, alu, full
*** 776,779 ****
--- 776,788 ----
  DEF_RVV_FUNCTION (vfwmaccbf16_frm, alu_frm, full_preds, f32_wwvv_ops)
  DEF_RVV_FUNCTION (vfwmaccbf16_frm, alu_frm, full_preds, f32_wwfv_ops)
  #undef REQUIRED_EXTENSIONS
+ 
+ /* Zvabd */
+ #define REQUIRED_EXTENSIONS ZVABD_EXT
+ DEF_RVV_FUNCTION (vabs,    alu, full_preds, u_s_ops)
+ DEF_RVV_FUNCTION (vabd,    alu, full_preds, qu_hu_vss_ops)
+ DEF_RVV_FUNCTION (vabdu,   alu, full_preds, qu_hu_vvv_ops)
+ DEF_RVV_FUNCTION (vwabda,  alu, full_preds, hu_su_wwss_ops)
+ DEF_RVV_FUNCTION (vwabdau, alu, full_preds, hu_su_wwvv_ops)
+ #undef REQUIRED_EXTENSIONS
  #undef DEF_RVV_FUNCTION
diff -Nrcpad gcc-17-20260727/gcc/config/riscv/riscv-vector-builtins-types.def gcc-17-20260802/gcc/config/riscv/riscv-vector-builtins-types.def
*** gcc-17-20260727/gcc/config/riscv/riscv-vector-builtins-types.def	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/riscv/riscv-vector-builtins-types.def	Sun Aug  2 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 399,404 ****
--- 399,416 ----
  #define DEF_RVV_F16_OPS(TYPE, REQUIRE)
  #endif
  
+ /* Use "DEF_RVV_QU_HU_OPS" macro include all types for vuint8 and vuint16
+    which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_QU_HU_OPS
+ #define DEF_RVV_QU_HU_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_HU_SU_OPS" macro include all types for vuint16 and vuint32
+    which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_HU_SU_OPS
+ #define DEF_RVV_HU_SU_OPS(TYPE, REQUIRE)
+ #endif
+ 
  DEF_RVV_I_OPS (vint8mf8_t, RVV_REQUIRE_ELEN_64)
  DEF_RVV_I_OPS (vint8mf4_t, 0)
  DEF_RVV_I_OPS (vint8mf2_t, 0)
*************** DEF_RVV_F16_OPS (vfloat16m2_t, RVV_REQUI
*** 1542,1547 ****
--- 1554,1585 ----
  DEF_RVV_F16_OPS (vfloat16m4_t, RVV_REQUIRE_ELEN_FP_16)
  DEF_RVV_F16_OPS (vfloat16m8_t, RVV_REQUIRE_ELEN_FP_16)
  
+ DEF_RVV_QU_HU_OPS (vuint8mf8_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_QU_HU_OPS (vuint8mf4_t, 0)
+ DEF_RVV_QU_HU_OPS (vuint8mf2_t, 0)
+ DEF_RVV_QU_HU_OPS (vuint8m1_t, 0)
+ DEF_RVV_QU_HU_OPS (vuint8m2_t, 0)
+ DEF_RVV_QU_HU_OPS (vuint8m4_t, 0)
+ DEF_RVV_QU_HU_OPS (vuint8m8_t, 0)
+ DEF_RVV_QU_HU_OPS (vuint16mf4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_QU_HU_OPS (vuint16mf2_t, 0)
+ DEF_RVV_QU_HU_OPS (vuint16m1_t, 0)
+ DEF_RVV_QU_HU_OPS (vuint16m2_t, 0)
+ DEF_RVV_QU_HU_OPS (vuint16m4_t, 0)
+ DEF_RVV_QU_HU_OPS (vuint16m8_t, 0)
+ 
+ DEF_RVV_HU_SU_OPS (vuint16mf4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_HU_SU_OPS (vuint16mf2_t, 0)
+ DEF_RVV_HU_SU_OPS (vuint16m1_t, 0)
+ DEF_RVV_HU_SU_OPS (vuint16m2_t, 0)
+ DEF_RVV_HU_SU_OPS (vuint16m4_t, 0)
+ DEF_RVV_HU_SU_OPS (vuint16m8_t, 0)
+ DEF_RVV_HU_SU_OPS (vuint32mf2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_HU_SU_OPS (vuint32m1_t, 0)
+ DEF_RVV_HU_SU_OPS (vuint32m2_t, 0)
+ DEF_RVV_HU_SU_OPS (vuint32m4_t, 0)
+ DEF_RVV_HU_SU_OPS (vuint32m8_t, 0)
+ 
  #undef DEF_RVV_I_OPS
  #undef DEF_RVV_U_OPS
  #undef DEF_RVV_F_OPS
*************** DEF_RVV_F16_OPS (vfloat16m8_t, RVV_REQUI
*** 1603,1605 ****
--- 1641,1645 ----
  #undef DEF_RVV_Q_OPS
  #undef DEF_RVV_QU_OPS
  #undef DEF_RVV_F16_OPS
+ #undef DEF_RVV_QU_HU_OPS
+ #undef DEF_RVV_HU_SU_OPS
diff -Nrcpad gcc-17-20260727/gcc/config/riscv/riscv-vector-builtins.cc gcc-17-20260802/gcc/config/riscv/riscv-vector-builtins.cc
*** gcc-17-20260727/gcc/config/riscv/riscv-vector-builtins.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/riscv/riscv-vector-builtins.cc	Sun Aug  2 22:32:06 2026
*************** static const rvv_type_info f16_ops[] = {
*** 590,595 ****
--- 590,609 ----
  #include "riscv-vector-builtins-types.def"
    {NUM_VECTOR_TYPES, 0}};
  
+ /* A list of all vuint8m_t and vuint16m_t will be registered for intrinsic
+  * functions.  */
+ static const rvv_type_info qu_hu_ops[] = {
+ #define DEF_RVV_QU_HU_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all vuint16m_t and vuint32m_t will be registered for intrinsic
+  * functions.  */
+ static const rvv_type_info hu_su_ops[] = {
+ #define DEF_RVV_HU_SU_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
  static constexpr const rvv_arg_type_info rvv_arg_type_info_end
    = rvv_arg_type_info (NUM_BASE_TYPES);
  
*************** static constexpr const rvv_arg_type_info
*** 1266,1271 ****
--- 1280,1299 ----
    = {rvv_arg_type_info (RVV_BASE_vector),
       rvv_arg_type_info (RVV_BASE_float32), rvv_arg_type_info_end};
  
+ /* A list of args for vector_type func (signed vector_type, signed
+    vector_type) function.  */
+ static constexpr const rvv_arg_type_info ss_args[]
+   = {rvv_arg_type_info (RVV_BASE_signed_vector),
+      rvv_arg_type_info (RVV_BASE_signed_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, signed double demote type,
+    signed double demote type) function.  */
+ static constexpr const rvv_arg_type_info wwss_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_signed_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_signed_vector),
+      rvv_arg_type_info_end};
+ 
  /* A list of none preds that will be registered for intrinsic functions.  */
  static constexpr const predication_type_index none_preds[]
    = {PRED_TYPE_none, NUM_PRED_TYPES};
*************** static constexpr const rvv_op_info sf_vc
*** 3441,3446 ****
--- 3469,3514 ----
       rvv_arg_type_info (RVV_BASE_x2_vector), /* Return type */
       sf_vc_fvw_args /* Args */};
  
+ /* A static operand information for vector_type func (signed vector_type,
+    signed vector_type) function registration.  */
+ static constexpr const rvv_op_info qu_hu_vss_ops
+   = {qu_hu_ops,			/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      ss_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type)
+  * function registration.  */
+ static constexpr const rvv_op_info qu_hu_vvv_ops
+   = {qu_hu_ops,			/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, signed
+    double demote type, signed double demote type) function registration.  */
+ static constexpr const rvv_op_info hu_su_wwss_ops
+   = {hu_su_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwss_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double demote
+  * type, double demote type) function registration.  */
+ static constexpr const rvv_op_info hu_su_wwvv_ops
+   = {hu_su_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwvv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (signed vector_type)
+    function registration.  */
+ static constexpr const rvv_op_info u_s_ops
+   = {u_ops,				/* Types */
+      OP_TYPE_v,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      x_v_args /* Args */};
+ 
  /* A list of all RVV base function types.  */
  static constexpr const function_type_info function_types[] = {
  #define DEF_RVV_TYPE_INDEX(                                                    \
*************** get_builtin_partition (required_ext ext,
*** 3656,3661 ****
--- 3724,3731 ----
        return RVV_PARTITION_ZVFBFWMA;
      case ZVFOFP8MIN_EXT:
        return RVV_PARTITION_ZVFOFP8MIN;
+     case ZVABD_EXT:
+       return RVV_PARTITION_ZVABD;
      case XSFVQMACCQOQ_EXT:
        return RVV_PARTITION_XSFVQMACCQOQ;
      case XSFVQMACCDOD_EXT:
diff -Nrcpad gcc-17-20260727/gcc/config/riscv/riscv-vector-builtins.h gcc-17-20260802/gcc/config/riscv/riscv-vector-builtins.h
*** gcc-17-20260727/gcc/config/riscv/riscv-vector-builtins.h	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/riscv/riscv-vector-builtins.h	Sun Aug  2 22:32:06 2026
*************** enum required_ext
*** 131,136 ****
--- 131,137 ----
    ZVFBFMIN_EXT,		/* Zvfbfmin extension */
    ZVFBFWMA_EXT,		/* Zvfbfwma extension */
    ZVFOFP8MIN_EXT,	/* Zvfofp8min extension */
+   ZVABD_EXT,		/* Zvabd extension */
    XSFVQMACCQOQ_EXT,	/* XSFVQMACCQOQ extension */
    XSFVQMACCDOD_EXT,	/* XSFVQMACCDOD extension */
    XSFVFNRCLIPXFQF_EXT,	/* XSFVFNRCLIPXFQF extension */
*************** enum rvv_builtin_partition
*** 162,167 ****
--- 163,169 ----
    RVV_PARTITION_ZVFHMIN,
    RVV_PARTITION_ZVFH,
    RVV_PARTITION_ZVFOFP8MIN,
+   RVV_PARTITION_ZVABD,
    RVV_PARTITION_XSFVQMACCQOQ,
    RVV_PARTITION_XSFVQMACCDOD,
    RVV_PARTITION_XSFVFNRCLIPXFQF,
*************** static inline const char * required_ext_
*** 216,221 ****
--- 218,225 ----
        return "zvfbfwma";
      case ZVFOFP8MIN_EXT:
        return "zvfofp8min";
+     case ZVABD_EXT:
+       return "zvabd";
      case XSFVQMACCQOQ_EXT:
        return "xsfvqmaccqoq";
      case XSFVQMACCDOD_EXT:
*************** static inline bool required_extensions_s
*** 273,278 ****
--- 277,284 ----
        return TARGET_ZVFBFWMA;
      case ZVFOFP8MIN_EXT:
        return TARGET_ZVFOFP8MIN;
+     case ZVABD_EXT:
+       return TARGET_ZVABD;
      case XSFVQMACCQOQ_EXT:
        return TARGET_XSFVQMACCQOQ;
      case XSFVQMACCDOD_EXT:
diff -Nrcpad gcc-17-20260727/gcc/config/riscv/riscv.cc gcc-17-20260802/gcc/config/riscv/riscv.cc
*** gcc-17-20260727/gcc/config/riscv/riscv.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/riscv/riscv.cc	Sun Aug  2 22:32:06 2026
*************** riscv_legitimize_call_address (rtx addr,
*** 8110,8118 ****
  {
    if (!call_insn_operand (addr, VOIDmode))
      {
!       rtx reg = sibcall_p
! 		? gen_reg_rtx (Pmode)
! 		: RISCV_CALL_ADDRESS_TEMP (Pmode);
        riscv_emit_move (reg, addr);
  
        if (is_zicfilp_p ())
--- 8110,8129 ----
  {
    if (!call_insn_operand (addr, VOIDmode))
      {
!       rtx reg;
!       if (sibcall_p && can_create_pseudo_p ())
! 	reg = gen_reg_rtx (Pmode);
!       else if (sibcall_p)
! 	{
! 	  /* MI thunks are expanded as post-reload code and cannot create
! 	     pseudos.  STATIC_CHAIN_REGNUM is available as a temporary there
! 	     and is suitable for an indirect sibling call.  */
! 	  gcc_assert (riscv_in_thunk_func
! 		      && SIBCALL_REG_P (STATIC_CHAIN_REGNUM));
! 	  reg = gen_rtx_REG (Pmode, STATIC_CHAIN_REGNUM);
! 	}
!       else
! 	reg = RISCV_CALL_ADDRESS_TEMP (Pmode);
        riscv_emit_move (reg, addr);
  
        if (is_zicfilp_p ())
diff -Nrcpad gcc-17-20260727/gcc/config/riscv/riscv_vector.h gcc-17-20260802/gcc/config/riscv/riscv_vector.h
*** gcc-17-20260727/gcc/config/riscv/riscv_vector.h	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/riscv/riscv_vector.h	Sun Aug  2 22:32:06 2026
***************
*** 47,52 ****
--- 47,53 ----
  #define __riscv_intrinsic_zvknhb 1
  #define __riscv_intrinsic_zvksed 1
  #define __riscv_intrinsic_zvksh 1
+ #define __riscv_intrinsic_zvabd 1
  
  #if defined (__riscv_intrinsic_zvkned) \
      && defined (__riscv_intrinsic_zvknhb) \
diff -Nrcpad gcc-17-20260727/gcc/config/riscv/vector-iterators.md gcc-17-20260802/gcc/config/riscv/vector-iterators.md
*** gcc-17-20260727/gcc/config/riscv/vector-iterators.md	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/riscv/vector-iterators.md	Sun Aug  2 22:32:06 2026
***************
*** 1258,1287 ****
    (RVVMF2SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_VECTOR_ELEN_64")
  ])
  
! (define_mode_iterator VWEXTI_D [
!   (RVVM8DI "TARGET_VECTOR_ELEN_64") (RVVM4DI "TARGET_VECTOR_ELEN_64")
!   (RVVM2DI "TARGET_VECTOR_ELEN_64") (RVVM1DI "TARGET_VECTOR_ELEN_64")
! 
!   (V1DI "riscv_vector::vls_mode_valid_p (V1DImode) && TARGET_VECTOR_ELEN_64")
!   (V2DI "riscv_vector::vls_mode_valid_p (V2DImode) && TARGET_VECTOR_ELEN_64")
!   (V4DI "riscv_vector::vls_mode_valid_p (V4DImode) && TARGET_VECTOR_ELEN_64")
!   (V8DI "riscv_vector::vls_mode_valid_p (V8DImode) && TARGET_VECTOR_ELEN_64 && TARGET_MIN_VLEN >= 64")
!   (V16DI "riscv_vector::vls_mode_valid_p (V16DImode) && TARGET_VECTOR_ELEN_64 && TARGET_MIN_VLEN >= 128")
!   (V32DI "riscv_vector::vls_mode_valid_p (V32DImode) && TARGET_VECTOR_ELEN_64 && TARGET_MIN_VLEN >= 256")
!   (V64DI "riscv_vector::vls_mode_valid_p (V64DImode) && TARGET_VECTOR_ELEN_64 && TARGET_MIN_VLEN >= 512")
!   (V128DI "riscv_vector::vls_mode_valid_p (V128DImode) && TARGET_VECTOR_ELEN_64 && TARGET_MIN_VLEN >= 1024")
!   (V256DI "riscv_vector::vls_mode_valid_p (V256DImode) && TARGET_VECTOR_ELEN_64 && TARGET_MIN_VLEN >= 2048")
!   (V512DI "riscv_vector::vls_mode_valid_p (V512DImode) && TARGET_VECTOR_ELEN_64 && TARGET_MIN_VLEN >= 4096")
! ])
! 
! (define_mode_iterator VWEXTI [
    RVVM8HI RVVM4HI RVVM2HI RVVM1HI RVVMF2HI (RVVMF4HI "TARGET_VECTOR_ELEN_64")
  
    RVVM8SI RVVM4SI RVVM2SI RVVM1SI (RVVMF2SI "TARGET_VECTOR_ELEN_64")
  
-   (RVVM8DI "TARGET_VECTOR_ELEN_64") (RVVM4DI "TARGET_VECTOR_ELEN_64")
-   (RVVM2DI "TARGET_VECTOR_ELEN_64") (RVVM1DI "TARGET_VECTOR_ELEN_64")
- 
    (V1HI "riscv_vector::vls_mode_valid_p (V1HImode)")
    (V2HI "riscv_vector::vls_mode_valid_p (V2HImode)")
    (V4HI "riscv_vector::vls_mode_valid_p (V4HImode)")
--- 1258,1268 ----
    (RVVMF2SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_VECTOR_ELEN_64")
  ])
  
! (define_mode_iterator VWEXTI_HS [
    RVVM8HI RVVM4HI RVVM2HI RVVM1HI RVVMF2HI (RVVMF4HI "TARGET_VECTOR_ELEN_64")
  
    RVVM8SI RVVM4SI RVVM2SI RVVM1SI (RVVMF2SI "TARGET_VECTOR_ELEN_64")
  
    (V1HI "riscv_vector::vls_mode_valid_p (V1HImode)")
    (V2HI "riscv_vector::vls_mode_valid_p (V2HImode)")
    (V4HI "riscv_vector::vls_mode_valid_p (V4HImode)")
***************
*** 1305,1310 ****
--- 1286,1297 ----
    (V256SI "riscv_vector::vls_mode_valid_p (V256SImode) && TARGET_MIN_VLEN >= 1024")
    (V512SI "riscv_vector::vls_mode_valid_p (V512SImode) && TARGET_MIN_VLEN >= 2048")
    (V1024SI "riscv_vector::vls_mode_valid_p (V1024SImode) && TARGET_MIN_VLEN >= 4096")
+ ])
+ 
+ (define_mode_iterator VWEXTI_D [
+   (RVVM8DI "TARGET_VECTOR_ELEN_64") (RVVM4DI "TARGET_VECTOR_ELEN_64")
+   (RVVM2DI "TARGET_VECTOR_ELEN_64") (RVVM1DI "TARGET_VECTOR_ELEN_64")
+ 
    (V1DI "riscv_vector::vls_mode_valid_p (V1DImode) && TARGET_VECTOR_ELEN_64")
    (V2DI "riscv_vector::vls_mode_valid_p (V2DImode) && TARGET_VECTOR_ELEN_64")
    (V4DI "riscv_vector::vls_mode_valid_p (V4DImode) && TARGET_VECTOR_ELEN_64")
***************
*** 1317,1322 ****
--- 1304,1311 ----
    (V512DI "riscv_vector::vls_mode_valid_p (V512DImode) && TARGET_VECTOR_ELEN_64 && TARGET_MIN_VLEN >= 4096")
  ])
  
+ (define_mode_iterator VWEXTI [ VWEXTI_HS VWEXTI_D ])
+ 
  ;; Same iterator split reason as VF_ZVFHMIN and VF.
  (define_mode_iterator VWEXTF_ZVFHMIN [
    (RVVM8SF "TARGET_VECTOR_ELEN_FP_16 && TARGET_VECTOR_ELEN_FP_32")
diff -Nrcpad gcc-17-20260727/gcc/config/riscv/vector.md gcc-17-20260802/gcc/config/riscv/vector.md
*** gcc-17-20260727/gcc/config/riscv/vector.md	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/riscv/vector.md	Sun Aug  2 22:32:06 2026
***************
*** 4150,4171 ****
  
  ;; Vector Widening Add/Subtract/Multiply.
  (define_insn "@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>"
!   [(set (match_operand:VWEXTI 0 "register_operand"                  "=&vr,&vr")
  	(if_then_else:VWEXTI
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
! 	     (match_operand 5 "vector_length_operand"              "  rvl,  rvl")
! 	     (match_operand 6 "const_int_operand"                  "    i,    i")
! 	     (match_operand 7 "const_int_operand"                  "    i,    i")
! 	     (match_operand 8 "const_int_operand"                  "    i,    i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
  	  (any_widen_binop:VWEXTI
  	    (any_extend:VWEXTI
! 	      (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr,   vr"))
  	    (any_extend:VWEXTI
! 	      (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr,   vr")))
! 	  (match_operand:VWEXTI 2 "vector_merge_operand"           "   vu,    0")))]
    "TARGET_VECTOR"
    "vw<any_widen_binop:insn><any_extend:u>.vv\t%0,%3,%4%p1"
    [(set_attr "type" "vi<widen_binop_insn_type>")
--- 4150,4171 ----
  
  ;; Vector Widening Add/Subtract/Multiply.
  (define_insn "@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>"
!   [(set (match_operand:VWEXTI 0 "register_operand"                 "=vr, vr, vd, vd")
  	(if_then_else:VWEXTI
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand"           "Wc1,Wc1, vm, vm")
! 	     (match_operand 5 "vector_length_operand"              "rvl,rvl,rvl,rvl")
! 	     (match_operand 6 "const_int_operand"                  "  i,  i,  i,  i")
! 	     (match_operand 7 "const_int_operand"                  "  i,  i,  i,  i")
! 	     (match_operand 8 "const_int_operand"                  "  i,  i,  i,  i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
  	  (any_widen_binop:VWEXTI
  	    (any_extend:VWEXTI
! 	      (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "Wvr,Wvr,Wvr,Wvr"))
  	    (any_extend:VWEXTI
! 	      (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "Wvr,Wvr,Wvr,Wvr")))
! 	  (match_operand:VWEXTI 2 "vector_merge_operand"           " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "vw<any_widen_binop:insn><any_extend:u>.vv\t%0,%3,%4%p1"
    [(set_attr "type" "vi<widen_binop_insn_type>")
***************
*** 4195,4215 ****
     (set_attr "mode" "<V_DOUBLE_TRUNC>")])
  
  (define_insn "@pred_single_widen_sub<any_extend:su><mode>"
!   [(set (match_operand:VWEXTI 0 "register_operand"                  "=&vr,&vr")
  	(if_then_else:VWEXTI
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
! 	     (match_operand 5 "vector_length_operand"              "  rvl,  rvl")
! 	     (match_operand 6 "const_int_operand"                  "    i,    i")
! 	     (match_operand 7 "const_int_operand"                  "    i,    i")
! 	     (match_operand 8 "const_int_operand"                  "    i,    i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
  	  (minus:VWEXTI
! 	    (match_operand:VWEXTI 3 "register_operand"             "   vr,   vr")
  	    (any_extend:VWEXTI
! 	      (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr,   vr")))
! 	  (match_operand:VWEXTI 2 "vector_merge_operand"           "   vu,    0")))]
    "TARGET_VECTOR"
    "vwsub<any_extend:u>.wv\t%0,%3,%4%p1"
    [(set_attr "type" "viwalu")
--- 4195,4215 ----
     (set_attr "mode" "<V_DOUBLE_TRUNC>")])
  
  (define_insn "@pred_single_widen_sub<any_extend:su><mode>"
!   [(set (match_operand:VWEXTI 0 "register_operand"                 "=vr, vr, vd, vd")
  	(if_then_else:VWEXTI
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand"           "Wc1,Wc1, vm, vm")
! 	     (match_operand 5 "vector_length_operand"              "rvl,rvl,rvl,rvl")
! 	     (match_operand 6 "const_int_operand"                  "  i,  i,  i,  i")
! 	     (match_operand 7 "const_int_operand"                  "  i,  i,  i,  i")
! 	     (match_operand 8 "const_int_operand"                  "  i,  i,  i,  i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
  	  (minus:VWEXTI
! 	    (match_operand:VWEXTI 3 "register_operand"             " vr, vr, vr, vr")
  	    (any_extend:VWEXTI
! 	      (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "Wvr,Wvr,Wvr,Wvr")))
! 	  (match_operand:VWEXTI 2 "vector_merge_operand"           " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "vwsub<any_extend:u>.wv\t%0,%3,%4%p1"
    [(set_attr "type" "viwalu")
***************
*** 9264,9271 ****
     (set (attr "avl_type_idx") (const_int 7))])
  
  (define_insn "@pred_vabd<su><mode>"
!   [(set (match_operand:V_VLSI 0 "register_operand"	    "=vd, vd, vr, vr")
! 	(if_then_else:V_VLSI
  	  (unspec:<VM>
  	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm, Wc1, Wc1")
  	     (match_operand 5 "vector_length_operand"	 " rK, rK, rK, rK")
--- 9264,9271 ----
     (set (attr "avl_type_idx") (const_int 7))])
  
  (define_insn "@pred_vabd<su><mode>"
!   [(set (match_operand:VI_QH 0 "register_operand"	    "=vd, vd, vr, vr")
! 	(if_then_else:VI_QH
  	  (unspec:<VM>
  	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm, Wc1, Wc1")
  	     (match_operand 5 "vector_length_operand"	 " rK, rK, rK, rK")
***************
*** 9274,9306 ****
  	     (match_operand 8 "const_int_operand"	 " i, i, i, i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
! 	  (unspec:V_VLSI
! 	    [(match_operand:V_VLSI 3 "register_operand" "vr,vr,vr,vr")
! 	     (match_operand:V_VLSI 4 "register_operand" "vr,vr,vr,vr")]
  	    UNSPEC_VABD)
! 	  (match_operand:V_VLSI 2 "vector_merge_operand" "vu,0,vu,0")))]
    "TARGET_ZVABD"
    "vabd<u>.vv\t%0,%3,%4%p1"
    [(set_attr "type" "vialu")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_widen_abd_plus<su><mode>"
!   [(set (match_operand:VWEXTI 0 "register_operand"      "+&vd,&vd,&vr,&vr")
! 	(if_then_else:VWEXTI
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand" "vm,vm,Wc1,Wc1")
! 	     (match_operand 5 "vector_length_operand"    "rK,rK,rK,rK")
! 	     (match_operand 6 "const_int_operand"      "i,i,i,i")
! 	     (match_operand 7 "const_int_operand"      "i,i,i,i")
! 	     (match_operand 8 "const_int_operand"      "i,i,i,i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
! 	  (unspec:VWEXTI
! 	    [(match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "vr,vr,vr,vr")
! 	     (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "vr,vr,vr,vr")
! 	     (match_dup 0)]
  	    UNSPEC_VABDA)
! 	  (match_operand:VWEXTI 2 "vector_merge_operand" "vu,0,vu,0")))]
    "TARGET_ZVABD"
    "vwabda<u>.vv\t%0,%3,%4%p1"
    [(set_attr "type" "viwalu")
--- 9274,9306 ----
  	     (match_operand 8 "const_int_operand"	 " i, i, i, i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
! 	  (unspec:VI_QH
! 	    [(match_operand:VI_QH 3 "register_operand" "vr,vr,vr,vr")
! 	     (match_operand:VI_QH 4 "register_operand" "vr,vr,vr,vr")]
  	    UNSPEC_VABD)
! 	  (match_operand:VI_QH 2 "vector_merge_operand" "vu,0,vu,0")))]
    "TARGET_ZVABD"
    "vabd<u>.vv\t%0,%3,%4%p1"
    [(set_attr "type" "vialu")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_widen_abd_plus<su><mode>"
!   [(set (match_operand:VWEXTI_HS 0 "register_operand"    "=vd,  vr")
! 	(if_then_else:VWEXTI_HS
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, Wc1")
! 	     (match_operand 5 "vector_length_operand"    "rvl, rvl")
! 	     (match_operand 6 "const_int_operand"	 " i,    i")
! 	     (match_operand 7 "const_int_operand"	 " i,    i")
! 	     (match_operand 8 "const_int_operand"	 " i,    i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
! 	  (unspec:VWEXTI_HS
! 	    [(match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "Wvr, Wvr")
! 	     (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "Wvr, Wvr")
! 	     (match_operand:VWEXTI_HS 2 "register_operand"	  "  0,   0")]
  	    UNSPEC_VABDA)
! 	  (match_dup 2)))]
    "TARGET_ZVABD"
    "vwabda<u>.vv\t%0,%3,%4%p1"
    [(set_attr "type" "viwalu")
diff -Nrcpad gcc-17-20260727/gcc/config/rs6000/darwin.h gcc-17-20260802/gcc/config/rs6000/darwin.h
*** gcc-17-20260727/gcc/config/rs6000/darwin.h	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/rs6000/darwin.h	Sun Aug  2 22:32:06 2026
***************
*** 295,301 ****
    /* cr0..cr7 */							\
      "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7",		\
    /* vrsave vscr sfp */							\
!     "vrsave", "vscr", "sfp"						\
  }
  
  /* This outputs NAME to FILE.  */
--- 295,303 ----
    /* cr0..cr7 */							\
      "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7",		\
    /* vrsave vscr sfp */							\
!     "vrsave", "vscr", "sfp",						\
!   /* DMRs */								\
!       "dm0", "dm1", "dm2", "dm3", "dm4", "dm5", "dm6", "dm7"	\
  }
  
  /* This outputs NAME to FILE.  */
diff -Nrcpad gcc-17-20260727/gcc/config/rs6000/rs6000.cc gcc-17-20260802/gcc/config/rs6000/rs6000.cc
*** gcc-17-20260727/gcc/config/rs6000/rs6000.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/rs6000/rs6000.cc	Sun Aug  2 22:32:06 2026
*************** rs6000_cost_data::density_test (loop_vec
*** 5301,5307 ****
        basic_block bb = bbs[i];
        gimple_stmt_iterator gsi;
  
!       for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
  	{
  	  gimple *stmt = gsi_stmt (gsi);
  	  if (is_gimple_debug (stmt))
--- 5301,5307 ----
        basic_block bb = bbs[i];
        gimple_stmt_iterator gsi;
  
!       for (gsi = gsi_after_labels (bb); !gsi_end_p (gsi); gsi_next (&gsi))
  	{
  	  gimple *stmt = gsi_stmt (gsi);
  	  if (is_gimple_debug (stmt))
diff -Nrcpad gcc-17-20260727/gcc/config/s390/s390.cc gcc-17-20260802/gcc/config/s390/s390.cc
*** gcc-17-20260727/gcc/config/s390/s390.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/config/s390/s390.cc	Sun Aug  2 22:32:06 2026
*************** s390_canonicalize_comparison (int *code,
*** 1796,1802 ****
        && XINT (*op0, 1) == UNSPEC_STRCMPCC_TO_INT
        && XVECLEN (*op0, 0) == 1
        && GET_MODE (XVECEXP (*op0, 0, 0)) == CCUmode
!       && GET_CODE (XVECEXP (*op0, 0, 0)) == REG
        && REGNO (XVECEXP (*op0, 0, 0)) == CC_REGNUM
        && *op1 == const0_rtx)
      {
--- 1796,1802 ----
        && XINT (*op0, 1) == UNSPEC_STRCMPCC_TO_INT
        && XVECLEN (*op0, 0) == 1
        && GET_MODE (XVECEXP (*op0, 0, 0)) == CCUmode
!       && REG_P (XVECEXP (*op0, 0, 0))
        && REGNO (XVECEXP (*op0, 0, 0)) == CC_REGNUM
        && *op1 == const0_rtx)
      {
*************** s390_canonicalize_comparison (int *code,
*** 1823,1829 ****
    if (GET_CODE (*op0) == UNSPEC
        && XINT (*op0, 1) == UNSPEC_CC_TO_INT
        && XVECLEN (*op0, 0) == 1
!       && GET_CODE (XVECEXP (*op0, 0, 0)) == REG
        && REGNO (XVECEXP (*op0, 0, 0)) == CC_REGNUM
        && CONST_INT_P (*op1))
      {
--- 1823,1829 ----
    if (GET_CODE (*op0) == UNSPEC
        && XINT (*op0, 1) == UNSPEC_CC_TO_INT
        && XVECLEN (*op0, 0) == 1
!       && REG_P (XVECEXP (*op0, 0, 0))
        && REGNO (XVECEXP (*op0, 0, 0)) == CC_REGNUM
        && CONST_INT_P (*op1))
      {
*************** s390_canonicalize_comparison (int *code,
*** 1859,1864 ****
--- 1859,1865 ----
        && GET_CODE (XEXP (*op0, 0)) == UNSPEC
        && XINT (XEXP (*op0, 0), 1) == UNSPEC_CC_TO_INT
        && XVECLEN (XEXP (*op0, 0), 0) == 1
+       && REG_P (XVECEXP (XEXP (*op0, 0), 0, 0))
        && REGNO (XVECEXP (XEXP (*op0, 0), 0, 0)) == CC_REGNUM
        && CONST_INT_P (XEXP (*op0, 1))
        && CONST_INT_P (*op1)
*************** s390_canonicalize_comparison (int *code,
*** 1882,1887 ****
--- 1883,1889 ----
        && GET_CODE (XEXP (*op0, 0)) == UNSPEC
        && XINT (XEXP (*op0, 0), 1) == UNSPEC_CC_TO_INT
        && XVECLEN (XEXP (*op0, 0), 0) == 1
+       && REG_P (XVECEXP (XEXP (*op0, 0), 0, 0))
        && REGNO (XVECEXP (XEXP (*op0, 0), 0, 0)) == CC_REGNUM
        && CONST_INT_P (XEXP (*op0, 1))
        && CONST_INT_P (*op1)
*************** s390_canonicalize_comparison (int *code,
*** 1918,1923 ****
--- 1920,1926 ----
        if (GET_CODE (*op0) == UNSPEC
  	  && XINT (*op0, 1) == UNSPEC_CC_TO_INT
  	  && XVECLEN (*op0, 0) == 1
+ 	  && REG_P (XVECEXP (*op0, 0, 0))
  	  && REGNO (XVECEXP (*op0, 0, 0)) == CC_REGNUM
  	  && CONST_INT_P (*op1))
  	{
diff -Nrcpad gcc-17-20260727/gcc/configure gcc-17-20260802/gcc/configure
*** gcc-17-20260727/gcc/configure	Mon Jul 27 02:16:22 2026
--- gcc-17-20260802/gcc/configure	Sun Aug  2 22:32:21 2026
*************** else
*** 27244,27249 ****
--- 27244,27257 ----
    test $ac_status = 0; }; }
      then
  	case "$target" in
+   hppa*-*-hpux*)
+     # The HP dynamic linker relocates text and data separately, so
+     # differences between text and data don't work.  As a result,
+     # gas defines CFI_DIFF_EXPR_OK to 0.  We want to use difference
+     # expressions for symbols in the data segment, so we need to
+     # make sure CFI directives aren't emitted.
+     gcc_cv_as_cfi_directive=no
+     ;;
    *-*-solaris*)
      # If the linker used on Solaris (like Sun ld) isn't capable of merging
      # read-only and read-write sections, we need to make sure that the
*************** $as_echo_n "checking AArch64 build suppo
*** 35223,35229 ****
  	if test ! -n "$($PERF record -j any,u -o /dev/null /bin/true 2>&1 | grep "PMU Hardware or event type doesn't support branch stack sampling.")"; then
  	  AFDO_PROFILER=perf
  	  aarch64_spe_support="using BRBE instead"
! 	elif test -n "$($PERF list | grep arm_spe)"; then
  	  AFDO_PROFILER=perf_spe
  	  aarch64_spe_support=yes
  	fi
--- 35231,35237 ----
  	if test ! -n "$($PERF record -j any,u -o /dev/null /bin/true 2>&1 | grep "PMU Hardware or event type doesn't support branch stack sampling.")"; then
  	  AFDO_PROFILER=perf
  	  aarch64_spe_support="using BRBE instead"
! 	elif test -n "$($PERF list pmu | grep arm_spe)"; then
  	  AFDO_PROFILER=perf_spe
  	  aarch64_spe_support=yes
  	fi
diff -Nrcpad gcc-17-20260727/gcc/configure.ac gcc-17-20260802/gcc/configure.ac
*** gcc-17-20260727/gcc/configure.ac	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/configure.ac	Sun Aug  2 22:32:06 2026
*************** gcc_GAS_CHECK_FEATURE([cfi directives],
*** 3549,3554 ****
--- 3549,3562 ----
  	.cfi_escape 1, 2, 3, 4, 5
  	.cfi_endproc],
  [case "$target" in
+   hppa*-*-hpux*)
+     # The HP dynamic linker relocates text and data separately, so
+     # differences between text and data don't work.  As a result,
+     # gas defines CFI_DIFF_EXPR_OK to 0.  We want to use difference
+     # expressions for symbols in the data segment, so we need to
+     # make sure CFI directives aren't emitted.
+     gcc_cv_as_cfi_directive=no
+     ;;
    *-*-solaris*)
      # If the linker used on Solaris (like Sun ld) isn't capable of merging
      # read-only and read-write sections, we need to make sure that the
*************** if test x$PERF != xno; then
*** 7884,7890 ****
  	if test ! -n "$($PERF record -j any,u -o /dev/null /bin/true 2>&1 | grep "PMU Hardware or event type doesn't support branch stack sampling.")"; then
  	  AFDO_PROFILER=perf
  	  aarch64_spe_support="using BRBE instead"
! 	elif test -n "$($PERF list | grep arm_spe)"; then
  	  AFDO_PROFILER=perf_spe
  	  aarch64_spe_support=yes
  	fi
--- 7892,7898 ----
  	if test ! -n "$($PERF record -j any,u -o /dev/null /bin/true 2>&1 | grep "PMU Hardware or event type doesn't support branch stack sampling.")"; then
  	  AFDO_PROFILER=perf
  	  aarch64_spe_support="using BRBE instead"
! 	elif test -n "$($PERF list pmu | grep arm_spe)"; then
  	  AFDO_PROFILER=perf_spe
  	  aarch64_spe_support=yes
  	fi
diff -Nrcpad gcc-17-20260727/gcc/cp/ChangeLog gcc-17-20260802/gcc/cp/ChangeLog
*** gcc-17-20260727/gcc/cp/ChangeLog	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/cp/ChangeLog	Sun Aug  2 22:32:06 2026
***************
*** 1,3 ****
--- 1,75 ----
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* constexpr.cc (class constexpr_global_ctx): Rename metafns_called
+ 	to state_dependent, expand comment about constexpr EH.
+ 	(constexpr_global_ctx::constexpr_global_ctx ()): Rename
+ 	metafns_called to state_dependent.
+ 	(cxx_eval_cxa_builtin_fn): Likewise.
+ 	(cxx_eval_call_expression): Likewise.
+ 
+ 2026-07-31  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/126481
+ 	* parser.cc (cp_parser_early_parsing_nsdmi): Also defer {}.
+ 
+ 2026-07-31  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	PR c++/124806
+ 	* module.cc (elf_out::began): New data member.
+ 	(elf_out::begin): Set it after successful initialization.
+ 	(elf_out::end): Do not finalize output that never began.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126508
+ 	* constexpr.cc (cxx_eval_cxa_builtin_fn): Avoid caching
+ 	calls which rethrow or call __builtin_uncaught_exceptions
+ 	or __builtin_current_exception.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126420
+ 	PR c++/126423
+ 	* typeck.cc (check_return_expr): If in_expansion_stmt, goto
+ 	dependent before even setting current_function_returns_value.
+ 	* pt.cc (tsubst_stmt): Temporarily set in_expansion_stmt around
+ 	partial instantiation of expansion statement body.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126343
+ 	* error.cc (dump_type) <case NULLPTR_TYPE>: Call
+ 	pp_c_type_qualifier_list.
+ 	(dump_type) <case META_TYPE>: Likewise.
+ 	(dump_expr) <case REFLECT_EXPR>: For REFLECT_EXPR on
+ 	non-typedef META_TYPE or NULLPTR_TYPE print
+ 	decltype(^^int) or decltype(nullptr).
+ 
+ 2026-07-31  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/126406
+ 	PR c++/119343
+ 	* pt.cc (resolve_nondeduced_context): Revert r16-5967 change.
+ 
+ 2026-07-30  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/126335
+ 	* typeck2.cc (split_nonconstant_init): Assert that DECL_INITIAL
+ 	is initially null.  Don't clear DECL_INITIAL if build_vec_init
+ 	set it.  Only clear TREE_READONLY if CODE has side-effects.
+ 
+ 2026-07-30  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/126209
+ 	* module.cc (depset::hash::add_namespace_entities): Don't
+ 	force out anonymous namespaces.
+ 
+ 2026-07-27  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/126310
+ 	* call.cc (standard_conversion): Don't build a mixed METHOD_TYPE if
+ 	it isn't needed.
+ 
  2026-07-26  Jason Merrill  <jason@redhat.com>
  
  	PR c++/96645
diff -Nrcpad gcc-17-20260727/gcc/cp/call.cc gcc-17-20260802/gcc/cp/call.cc
*** gcc-17-20260727/gcc/cp/call.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/cp/call.cc	Sun Aug  2 22:32:07 2026
*************** standard_conversion (tree to, tree from,
*** 1546,1557 ****
  
        if (!same_type_p (fbase, tbase))
  	{
! 	  from = build_memfn_type (fstat,
! 				   tbase,
! 				   cp_type_quals (tbase),
! 				   type_memfn_rqual (tofn));
! 	  from = build_ptrmemfunc_type (build_pointer_type (from));
! 	  conv = build_conv (ck_pmem, from, conv);
  	  conv->base_p = true;
  	}
        if (fnptr_conv_p (tstat, fstat))
--- 1546,1561 ----
  
        if (!same_type_p (fbase, tbase))
  	{
! 	  tree first = to;
! 	  if (!same_type_p (tstat, fstat))
! 	    {
! 	      first = build_memfn_type (fstat,
! 					tbase,
! 					cp_type_quals (tbase),
! 					type_memfn_rqual (tofn));
! 	      first = build_ptrmemfunc_type (build_pointer_type (first));
! 	    }
! 	  conv = build_conv (ck_pmem, first, conv);
  	  conv->base_p = true;
  	}
        if (fnptr_conv_p (tstat, fstat))
diff -Nrcpad gcc-17-20260727/gcc/cp/constexpr.cc gcc-17-20260802/gcc/cp/constexpr.cc
*** gcc-17-20260727/gcc/cp/constexpr.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/cp/constexpr.cc	Sun Aug  2 22:32:07 2026
*************** public:
*** 1221,1235 ****
       class types, etc.  Thus, we need to arrange for calls which call
       at least some metafunctions to be non-cacheable, because their behavior
       might not be the same.  Until we figure out which exact metafunctions
!      need this and which don't, do it for all of them.  */
!   bool metafns_called;
  
    /* Constructor.  */
    constexpr_global_ctx ()
      : constexpr_ops_count (0), cleanups (NULL), modifiable (nullptr),
        consteval_block (NULL_TREE), heap_dealloc_count (0),
        uncaught_exceptions (0), contract_statement (NULL_TREE),
!       contract_condition_non_const (false), metafns_called (false) {}
  
    bool is_outside_lifetime (tree t)
    {
--- 1221,1239 ----
       class types, etc.  Thus, we need to arrange for calls which call
       at least some metafunctions to be non-cacheable, because their behavior
       might not be the same.  Until we figure out which exact metafunctions
!      need this and which don't, do it for all of them.
!      Also used for some cases in constexpr EH, e.g. __cxa_rethrow,
!      __builtin_uncaught_exceptions and __builtin_current_exception, which can
!      be also dependent on some state (pending uncaught or caught exceptions)
!      not tracked in the constexpr call caching.  */
!   bool state_dependent;
  
    /* Constructor.  */
    constexpr_global_ctx ()
      : constexpr_ops_count (0), cleanups (NULL), modifiable (nullptr),
        consteval_block (NULL_TREE), heap_dealloc_count (0),
        uncaught_exceptions (0), contract_statement (NULL_TREE),
!       contract_condition_non_const (false), state_dependent (false) {}
  
    bool is_outside_lifetime (tree t)
    {
*************** cxx_eval_cxa_builtin_fn (const constexpr
*** 2118,2123 ****
--- 2122,2130 ----
        DECL_EXCEPTION_REFCOUNT (arg)
  	= size_binop (PLUS_EXPR, DECL_EXCEPTION_REFCOUNT (arg), size_one_node);
        ++ctx->global->uncaught_exceptions;
+       /* Don't cache calls which rethrow, they depend on the current
+ 	 exception which might be caught in the caller.  */
+       ctx->global->state_dependent = true;
        *jump_target = arg;
        return void_node;
      case CXA_BAD_CAST:
*************** cxx_eval_cxa_builtin_fn (const constexpr
*** 2196,2201 ****
--- 2203,2212 ----
  	  *non_constant_p = true;
  	  return call;
  	}
+       /* Don't cache calls which call __builtin_uncaught_exceptions (),
+ 	 they depend on the current uncaught exceptions which might
+ 	 be the state from their caller.  */
+       ctx->global->state_dependent = true;
        return build_int_cst (integer_type_node,
  			    ctx->global->uncaught_exceptions);
      case BUILTIN_CURRENT_EXCEPTION:
*************** cxx_eval_cxa_builtin_fn (const constexpr
*** 2247,2252 ****
--- 2258,2267 ----
  			      size_one_node);
  	      arg = fold_convert (ptr_type_node, build_address (arg));
  	    }
+ 	  /* Don't cache calls which call __builtin_current_exception (),
+ 	     they depend on the current exception which might be caught
+ 	     in the caller.  */
+ 	  ctx->global->state_dependent = true;
  	  return build_constructor_single (TREE_TYPE (decl), fld, arg);
  	}
      case STD_RETHROW_EXCEPTION:
*************** cxx_eval_call_expression (const constexp
*** 4058,4064 ****
  	  *non_constant_p = true;
  	  return t;
  	}
!       ctx->global->metafns_called = true;
        tree e = process_metafunction (ctx, fun, t, non_constant_p, overflow_p,
  				     jump_target);
        if (*jump_target)
--- 4073,4079 ----
  	  *non_constant_p = true;
  	  return t;
  	}
!       ctx->global->state_dependent = true;
        tree e = process_metafunction (ctx, fun, t, non_constant_p, overflow_p,
  				     jump_target);
        if (*jump_target)
*************** cxx_eval_call_expression (const constexp
*** 4527,4533 ****
  	  call_ctx.call = &new_call;
  	  unsigned save_heap_alloc_count = ctx->global->heap_vars.length ();
  	  unsigned save_heap_dealloc_count = ctx->global->heap_dealloc_count;
! 	  bool save_metafns_called = ctx->global->metafns_called;
  
  	  /* Make sure we fold std::is_constant_evaluated to true in an
  	     immediate function.  */
--- 4542,4548 ----
  	  call_ctx.call = &new_call;
  	  unsigned save_heap_alloc_count = ctx->global->heap_vars.length ();
  	  unsigned save_heap_dealloc_count = ctx->global->heap_dealloc_count;
! 	  bool save_state_dependent = ctx->global->state_dependent;
  
  	  /* Make sure we fold std::is_constant_evaluated to true in an
  	     immediate function.  */
*************** cxx_eval_call_expression (const constexp
*** 4559,4565 ****
  		return NULL_TREE;
  	    }
  
! 	  ctx->global->metafns_called = false;
  
  	  tree jmp_target = NULL_TREE;
  	  cxx_eval_constant_expression (&call_ctx, body,
--- 4574,4580 ----
  		return NULL_TREE;
  	    }
  
! 	  ctx->global->state_dependent = false;
  
  	  tree jmp_target = NULL_TREE;
  	  cxx_eval_constant_expression (&call_ctx, body,
*************** cxx_eval_call_expression (const constexp
*** 4601,4609 ****
  		}
  	    }
  
! 	  if (ctx->global->metafns_called)
  	    cacheable = false;
! 	  ctx->global->metafns_called |= save_metafns_called;
  
  	  /* At this point, the object's constructor will have run, so
  	     the object is no longer under construction, and its possible
--- 4616,4624 ----
  		}
  	    }
  
! 	  if (ctx->global->state_dependent)
  	    cacheable = false;
! 	  ctx->global->state_dependent |= save_state_dependent;
  
  	  /* At this point, the object's constructor will have run, so
  	     the object is no longer under construction, and its possible
diff -Nrcpad gcc-17-20260727/gcc/cp/error.cc gcc-17-20260802/gcc/cp/error.cc
*** gcc-17-20260727/gcc/cp/error.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/cp/error.cc	Sun Aug  2 22:32:07 2026
*************** dump_type (cxx_pretty_printer *pp, tree
*** 876,885 ****
--- 876,887 ----
  
      case NULLPTR_TYPE:
        pp_cxx_ws_string (pp, "std::nullptr_t");
+       pp_c_type_qualifier_list (pp, t);
        break;
  
      case META_TYPE:
        pp_cxx_ws_string (pp, "std::meta::info");
+       pp_c_type_qualifier_list (pp, t);
        break;
  
      case SPLICE_SCOPE:
*************** dump_expr (cxx_pretty_printer *pp, tree
*** 3481,3487 ****
  	    if (DECL_P (h))
  	      dump_decl (pp, h, flags);
  	    else if (TYPE_P (h))
! 	      dump_type (pp, h, flags);
  	    else
  	      dump_expr (pp, h, flags);
  	    break;
--- 3483,3506 ----
  	    if (DECL_P (h))
  	      dump_decl (pp, h, flags);
  	    else if (TYPE_P (h))
! 	      {
! 		/* For reflection we care about the difference
! 		   between std::meta::info/std::nullptr_t and
! 		   decltype(^^int)/decltype(nullptr).  */
! 		if (TREE_CODE (h) == META_TYPE && !typedef_variant_p (h))
! 		  {
! 		    pp_cxx_ws_string (pp, "decltype(^^int)");
! 		    pp_c_type_qualifier_list (pp, h);
! 		  }
! 		else if (TREE_CODE (h) == NULLPTR_TYPE
! 			 && !typedef_variant_p (h))
! 		  {
! 		    pp_cxx_ws_string (pp, "decltype(nullptr)");
! 		    pp_c_type_qualifier_list (pp, h);
! 		  }
! 		else
! 		  dump_type (pp, h, flags);
! 	      }
  	    else
  	      dump_expr (pp, h, flags);
  	    break;
diff -Nrcpad gcc-17-20260727/gcc/cp/module.cc gcc-17-20260802/gcc/cp/module.cc
*** gcc-17-20260727/gcc/cp/module.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/cp/module.cc	Sun Aug  2 22:32:07 2026
*************** class elf_out : public elf, public data:
*** 1511,1516 ****
--- 1511,1517 ----
  private:
    ptr_int_hash_map identtab;	/* Map of IDENTIFIERS to strtab offsets. */
    unsigned pos;			/* Write position in file.  */
+   bool began;			/* True if begin initialized output state.  */
  #if MAPPED_WRITING
    unsigned offset;		/* Offset of the mapping.  */
    unsigned extent;		/* Length of mapping.  */
*************** private:
*** 1519,1525 ****
  
  public:
    elf_out (int fd, int e)
!     :parent (fd, e), identtab (500), pos (0)
    {
  #if MAPPED_WRITING
      offset = extent = 0;
--- 1520,1526 ----
  
  public:
    elf_out (int fd, int e)
!     :parent (fd, e), identtab (500), pos (0), began (false)
    {
  #if MAPPED_WRITING
      offset = extent = 0;
*************** elf_out::begin ()
*** 2231,2237 ****
    memset (h, 0, sizeof (header));
    hdr.pos = hdr.size;
    write (hdr);
!   return !get_error ();
  }
  
  /* Finish writing the file.  Write out the string & section tables.
--- 2232,2241 ----
    memset (h, 0, sizeof (header));
    hdr.pos = hdr.size;
    write (hdr);
!   if (get_error ())
!     return false;
!   began = true;
!   return true;
  }
  
  /* Finish writing the file.  Write out the string & section tables.
*************** elf_out::begin ()
*** 2240,2246 ****
  bool
  elf_out::end ()
  {
!   if (fd >= 0)
      {
        /* Write the string table.  */
        unsigned strnam = name (".strtab");
--- 2244,2250 ----
  bool
  elf_out::end ()
  {
!   if (fd >= 0 && began)
      {
        /* Write the string table.  */
        unsigned strnam = name (".strtab");
*************** depset::hash::add_namespace_entities (tr
*** 15202,15207 ****
--- 15206,15217 ----
    for (tree udir : NAMESPACE_LEVEL (ns)->using_directives)
      if (TREE_CODE (udir) == USING_DECL && DECL_MODULE_PURVIEW_P (udir))
        {
+ 	/* Unless it's a (TU-local) anonymous namespace.
+ 
+ 	   FIXME instead of checking here, they should be
+ 	   is_tu_local_entity.  */
+ 	if (!TREE_PUBLIC (USING_DECL_DECLS (udir)))
+ 	  continue;
  	make_dependency (USING_DECL_DECLS (udir), depset::EK_NAMESPACE);
  	if (DECL_MODULE_EXPORT_P (udir))
  	  count++;
diff -Nrcpad gcc-17-20260727/gcc/cp/parser.cc gcc-17-20260802/gcc/cp/parser.cc
*** gcc-17-20260727/gcc/cp/parser.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/cp/parser.cc	Sun Aug  2 22:32:07 2026
*************** cp_parser_early_parsing_nsdmi (cp_parser
*** 37312,37317 ****
--- 37312,37319 ----
    cp_token_cache *tokens = DEFPARSE_TOKENS (init);
    for (cp_token *p = tokens->first; p != tokens->last; ++p)
      if (p->type == CPP_NAME
+ 	/* = {} might depend on other DMI that haven't been parsed.  */
+ 	|| p->type == CPP_OPEN_BRACE
  	|| p->keyword == RID_THIS
  	|| p->keyword == RID_OPERATOR)
        /* There's a name to look up or 'this', give up.  */
diff -Nrcpad gcc-17-20260727/gcc/cp/pt.cc gcc-17-20260802/gcc/cp/pt.cc
*** gcc-17-20260727/gcc/cp/pt.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/cp/pt.cc	Sun Aug  2 22:32:07 2026
*************** tsubst_stmt (tree t, tree args, tsubst_f
*** 20151,20159 ****
--- 20151,20162 ----
  	    TEMPLATE_FOR_INIT_STMT (stmt) = pop_stmt_list (init);
  	    add_stmt (stmt);
  	    TEMPLATE_FOR_BODY (stmt) = do_pushlevel (sk_block);
+ 	    auto save_in_expansion_stmt = in_expansion_stmt;
+ 	    in_expansion_stmt = true;
  	    bool prev = note_iteration_stmt_body_start ();
  	    RECUR (TEMPLATE_FOR_BODY (t));
  	    note_iteration_stmt_body_end (prev);
+ 	    in_expansion_stmt = save_in_expansion_stmt;
  	    TEMPLATE_FOR_BODY (stmt)
  	      = do_poplevel (TEMPLATE_FOR_BODY (stmt));
  	  }
*************** resolve_nondeduced_context (tree orig_ex
*** 25653,25658 ****
--- 25656,25663 ----
  	}
        if (good == 1)
  	{
+ 	  if (!mark_used (goodfn, complain) && !(complain & tf_error))
+ 	    return error_mark_node;
  	  expr = goodfn;
  	  if (baselink)
  	    expr = build_baselink (BASELINK_BINFO (baselink),
diff -Nrcpad gcc-17-20260727/gcc/cp/typeck.cc gcc-17-20260802/gcc/cp/typeck.cc
*** gcc-17-20260727/gcc/cp/typeck.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/cp/typeck.cc	Sun Aug  2 22:32:07 2026
*************** check_return_expr (tree retval, bool *no
*** 11581,11586 ****
--- 11581,11591 ----
  
    if (processing_template_decl)
      {
+       /* If in expansion statement body, we don't know if the body
+ 	 will be instantiated at all.  */
+       if (in_expansion_stmt)
+ 	goto dependent;
+ 
        current_function_returns_value = 1;
  
        if (check_for_bare_parameter_packs (retval))
diff -Nrcpad gcc-17-20260727/gcc/cp/typeck2.cc gcc-17-20260802/gcc/cp/typeck2.cc
*** gcc-17-20260727/gcc/cp/typeck2.cc	Mon Jul 27 02:16:05 2026
--- gcc-17-20260802/gcc/cp/typeck2.cc	Sun Aug  2 22:32:07 2026
*************** build_disable_temp_cleanup (tree f)
*** 671,677 ****
  /* The recursive part of split_nonconstant_init.  DEST is an lvalue
     expression to which INIT should be assigned.  INIT is a CONSTRUCTOR.
     Return true if the whole of the value was initialized by the
!    generated statements.  */
  
  static bool
  split_nonconstant_init_1 (tree dest, tree init, bool last,
--- 671,677 ----
  /* The recursive part of split_nonconstant_init.  DEST is an lvalue
     expression to which INIT should be assigned.  INIT is a CONSTRUCTOR.
     Return true if the whole of the value was initialized by the
!    generated statements or modifying DECL_INITIAL.  */
  
  static bool
  split_nonconstant_init_1 (tree dest, tree init, bool last,
*************** split_nonconstant_init (tree dest, tree
*** 940,945 ****
--- 940,952 ----
        if (TREE_CODE (TREE_TYPE (dest)) != ARRAY_TYPE)
  	flags = make_tree_vector ();
  
+       /* We are about to call split_nonconstant_init_1 which might
+ 	 set DECL_INITIAL, so make sure we aren't overwriting an
+ 	 existing initializer.  Also, if we split out everything,
+ 	 we clear INIT so won't set DECL_INITIAL below.  Make
+ 	 sure it's null so that we're not forgetting to clear it.  */
+       gcc_assert (!(VAR_P (dest) && DECL_INITIAL (dest)));
+ 
        if (split_nonconstant_init_1 (dest, init, true, &flags))
  	init = NULL_TREE;
  
*************** split_nonconstant_init (tree dest, tree
*** 950,957 ****
        code = pop_stmt_list (code);
        if (VAR_P (dest) && !is_local_temp (dest))
  	{
! 	  DECL_INITIAL (dest) = init;
! 	  TREE_READONLY (dest) = 0;
  	}
        else if (init)
  	{
--- 957,972 ----
        code = pop_stmt_list (code);
        if (VAR_P (dest) && !is_local_temp (dest))
  	{
! 	  /* If we are initializing an array, split_nonconstant_init_1
! 	     might've delegated to build_vec_init in which case it always
! 	     returns true so we clear INIT.  But if we're initializing
! 	     a static array, build_vec_init can put constant initializers
! 	     into DECL_INITIAL.  Clearing it would mean losing some of the
! 	     initializers as in c++/126335.  */
! 	  if (init)
! 	    DECL_INITIAL (dest) = init;
! 	  if (TREE_SIDE_EFFECTS (code))
! 	    TREE_READONLY (dest) = 0;
  	}
        else if (init)
  	{
diff -Nrcpad gcc-17-20260727/gcc/doc/invoke.texi gcc-17-20260802/gcc/doc/invoke.texi
*** gcc-17-20260727/gcc/doc/invoke.texi	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/doc/invoke.texi	Sun Aug  2 22:32:07 2026
*************** This option requires binutils 2.26 or ne
*** 21539,21545 ****
  Enable or disable the workaround for the ARM Cortex-A53 erratum number 835769.
  This involves inserting a NOP instruction between memory instructions and
  64-bit integer multiply-accumulate instructions.  This flag will be ignored if
! an architecture or cpu is specified on the command line which does not need the
  workaround.
  
  @opindex mfix-cortex-a53-843419
--- 21539,21545 ----
  Enable or disable the workaround for the ARM Cortex-A53 erratum number 835769.
  This involves inserting a NOP instruction between memory instructions and
  64-bit integer multiply-accumulate instructions.  This flag will be ignored if
! an architecture or CPU is specified on the command line which does not need the
  workaround.
  
  @opindex mfix-cortex-a53-843419
*************** workaround.
*** 21549,21555 ****
  Enable or disable the workaround for the ARM Cortex-A53 erratum number 843419.
  This erratum workaround is made at link time and this will only pass the
  corresponding flag to the linker.  This flag will be ignored if
! an architecture or cpu is specified on the command line which does not need the
  workaround.
  
  
--- 21549,21555 ----
  Enable or disable the workaround for the ARM Cortex-A53 erratum number 843419.
  This erratum workaround is made at link time and this will only pass the
  corresponding flag to the linker.  This flag will be ignored if
! an architecture or CPU is specified on the command line which does not need the
  workaround.
  
  
*************** This option is only applicable when comp
*** 21607,21613 ****
  instruction set.  If using a later revision, e.g. @option{-march=armv8.1-a}
  or @option{-march=armv8-a+lse}, the ARMv8.1-Atomics instructions will be
  used directly.  The same applies when using @option{-mcpu=} when the
! selected cpu supports the @samp{lse} feature.
  This option is on by default.
  
  @opindex mmax-vectorization
--- 21607,21613 ----
  instruction set.  If using a later revision, e.g. @option{-march=armv8.1-a}
  or @option{-march=armv8-a+lse}, the ARMv8.1-Atomics instructions will be
  used directly.  The same applies when using @option{-mcpu=} when the
! selected CPU supports the @samp{lse} feature.
  This option is on by default.
  
  @opindex mmax-vectorization
*************** Enable SVE2 sha3 instructions.  This als
*** 21997,22002 ****
--- 21997,22005 ----
  Enable SVE2.1 instructions.  This also enables SVE2 instructions.
  @item sve2p2
  Enable SVE2.2 instructions.  This also enables SVE2 and SVE2.1 instructions.
+ @item sve2p3
+ Enable SVE2.3 instructions.  This also enables SVE2 and SVE2.1 and
+ SVE2.2 instructions.
  @item i8mm
  Enable 8-bit Integer Matrix Multiply instructions.  This also enables
  Advanced SIMD and floating-point instructions.  This option is enabled by
*************** instructions.
*** 22060,22065 ****
--- 22063,22071 ----
  @item sme2p2
  Enable the Scalable Matrix Extension version 2.2.  This also enables SME2
  and SME2.1 instructions.
+ @item sme2p3
+ Enable the Scalable Matrix Extension version 2.3.  This also enables SME2,
+ SME2.1 and SME2.2 instructions.
  @item fcma
  Enable the complex number SIMD extensions.
  @item jscvt
*************** extension.
*** 22103,22108 ****
--- 22109,22116 ----
  @item ssve-fp8dot2
  Enable the fp8 (8-bit floating point) to half-precision 2-way dot product
  extension in streaming mode.
+ @item f16f32dot
+ Enable the Half-precision to single-precision dot product extension.
  @item faminmax
  Enable the Floating Point Absolute Maximum/Minimum extension.
  @item lut
*************** endian), 64-bit big endian PowerPC and 6
*** 31794,31800 ****
  architecture machine types, with an appropriate, generic processor
  model assumed for scheduling purposes.
  
! Specifying @samp{native} as cpu type detects and selects the
  architecture option that corresponds to the host processor of the
  system performing the compilation.
  @option{-mcpu=native} has no effect if GCC does not recognize the
--- 31802,31808 ----
  architecture machine types, with an appropriate, generic processor
  model assumed for scheduling purposes.
  
! Specifying @samp{native} as CPU type detects and selects the
  architecture option that corresponds to the host processor of the
  system performing the compilation.
  @option{-mcpu=native} has no effect if GCC does not recognize the
*************** system representing a certain processor
*** 33363,33369 ****
  
  The default is @option{-march=z900}.
  
! Specifying @samp{native} as cpu type can be used to select the best
  architecture option for the host processor.
  @option{-march=native} has no effect if GCC does not recognize the
  processor.
--- 33371,33377 ----
  
  The default is @option{-march=z900}.
  
! Specifying @samp{native} as CPU type can be used to select the best
  architecture option for the host processor.
  @option{-march=native} has no effect if GCC does not recognize the
  processor.
*************** Visual Instruction Set extensions.  The
*** 34325,34331 ****
  @itemx -mno-vis2
  With @option{-mvis2}, GCC generates code that takes advantage of
  version 2.0 of the UltraSPARC Visual Instruction Set extensions.  The
! default is @option{-mvis2} when targeting a cpu that supports such
  instructions, such as UltraSPARC-III and later.  Setting @option{-mvis2}
  also sets @option{-mvis}.
  
--- 34333,34339 ----
  @itemx -mno-vis2
  With @option{-mvis2}, GCC generates code that takes advantage of
  version 2.0 of the UltraSPARC Visual Instruction Set extensions.  The
! default is @option{-mvis2} when targeting a CPU that supports such
  instructions, such as UltraSPARC-III and later.  Setting @option{-mvis2}
  also sets @option{-mvis}.
  
*************** also sets @option{-mvis}.
*** 34335,34341 ****
  @itemx -mno-vis3
  With @option{-mvis3}, GCC generates code that takes advantage of
  version 3.0 of the UltraSPARC Visual Instruction Set extensions.  The
! default is @option{-mvis3} when targeting a cpu that supports such
  instructions, such as niagara-3 and later.  Setting @option{-mvis3}
  also sets @option{-mvis2} and @option{-mvis}.
  
--- 34343,34349 ----
  @itemx -mno-vis3
  With @option{-mvis3}, GCC generates code that takes advantage of
  version 3.0 of the UltraSPARC Visual Instruction Set extensions.  The
! default is @option{-mvis3} when targeting a CPU that supports such
  instructions, such as niagara-3 and later.  Setting @option{-mvis3}
  also sets @option{-mvis2} and @option{-mvis}.
  
*************** With @option{-mvis3b}, GCC generates cod
*** 34347,34353 ****
  version 3.0 of the UltraSPARC Visual Instruction Set extensions, plus
  the additional VIS instructions introduced in the Oracle SPARC
  Architecture 2011. The default is @option{-mvis3b} when targeting
! a cpu that supports such instructions, such as niagara-7 and later.
  Setting @option{-mvis3b} also sets @option{-mvis3}, @option{-mvis2}
  and @option{-mvis}.
  
--- 34355,34361 ----
  version 3.0 of the UltraSPARC Visual Instruction Set extensions, plus
  the additional VIS instructions introduced in the Oracle SPARC
  Architecture 2011. The default is @option{-mvis3b} when targeting
! a CPU that supports such instructions, such as niagara-7 and later.
  Setting @option{-mvis3b} also sets @option{-mvis3}, @option{-mvis2}
  and @option{-mvis}.
  
*************** and @option{-mvis}.
*** 34357,34363 ****
  @itemx -mno-vis4
  With @option{-mvis4}, GCC generates code that takes advantage of
  version 4.0 of the UltraSPARC Visual Instruction Set extensions.  The
! default is @option{-mvis4} when targeting a cpu that supports such
  instructions, such as niagara-7 and later.  Setting @option{-mvis4}
  also sets @option{-mvis3b}, @option{-mvis3}, @option{-mvis2} and
  @option{-mvis}.
--- 34365,34371 ----
  @itemx -mno-vis4
  With @option{-mvis4}, GCC generates code that takes advantage of
  version 4.0 of the UltraSPARC Visual Instruction Set extensions.  The
! default is @option{-mvis4} when targeting a CPU that supports such
  instructions, such as niagara-7 and later.  Setting @option{-mvis4}
  also sets @option{-mvis3b}, @option{-mvis3}, @option{-mvis2} and
  @option{-mvis}.
*************** With @option{-mvis4b}, GCC generates cod
*** 34370,34376 ****
  version 4.0 of the UltraSPARC Visual Instruction Set extensions, plus
  the additional VIS instructions introduced in the Oracle SPARC
  Architecture 2017.  The default is @option{-mvis4b} when targeting a
! cpu that supports such instructions, such as m8 and later.  Setting
  @option{-mvis4b} also sets @option{-mvis4}, @option{-mvis3b},
  @option{-mvis3}, @option{-mvis2} and @option{-mvis}.
  
--- 34378,34384 ----
  version 4.0 of the UltraSPARC Visual Instruction Set extensions, plus
  the additional VIS instructions introduced in the Oracle SPARC
  Architecture 2017.  The default is @option{-mvis4b} when targeting a
! CPU that supports such instructions, such as m8 and later.  Setting
  @option{-mvis4b} also sets @option{-mvis4}, @option{-mvis3b},
  @option{-mvis3}, @option{-mvis2} and @option{-mvis}.
  
diff -Nrcpad gcc-17-20260727/gcc/doc/sourcebuild.texi gcc-17-20260802/gcc/doc/sourcebuild.texi
*** gcc-17-20260727/gcc/doc/sourcebuild.texi	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/doc/sourcebuild.texi	Sun Aug  2 22:32:07 2026
*************** options, including @code{-mfp16-format=i
*** 2119,2130 ****
  
  @item arm_neon_fp16_hw
  Test system supports executing Neon half-precision float instructions.
! (Implies previous.)
  
  @item arm_fp16_alternative_ok
  ARM target supports the ARM FP16 alternative format.  Some multilibs
  may be incompatible with the options needed.
  
  @item arm_fp16_none_ok
  ARM target supports specifying none as the ARM FP16 format.
  
--- 2119,2135 ----
  
  @item arm_neon_fp16_hw
  Test system supports executing Neon half-precision float instructions.
! (Implies @code{arm_neon_fp16_ok}.)
  
  @item arm_fp16_alternative_ok
  ARM target supports the ARM FP16 alternative format.  Some multilibs
  may be incompatible with the options needed.
  
+ @item arm_fp16_alternative_hw
+ Test system supports executing VFP half-precision floating-point
+ instructions in the ARM FP16 alternative format.  (Implies
+ @code{arm_fp16_alternative_ok}.)
+ 
  @item arm_fp16_none_ok
  ARM target supports specifying none as the ARM FP16 format.
  
diff -Nrcpad gcc-17-20260727/gcc/fortran/ChangeLog gcc-17-20260802/gcc/fortran/ChangeLog
*** gcc-17-20260727/gcc/fortran/ChangeLog	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/ChangeLog	Sun Aug  2 22:32:07 2026
***************
*** 1,3 ****
--- 1,126 ----
+ 2026-08-01  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/126558
+ 	* gfortran.h (gfc_resolve): Add optional argument for
+ 	an association list.
+ 	* resolve.cc (mark_assoc_used): New function.
+ 	(gfc_resolve): Use it.
+ 
+ 2026-08-01  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	* frontend-passes.cc (enum matrix_case): Add case A2TB1.
+ 	(matmul_lhs_realloc): Add condition for reallocation and
+ 	size checks.
+ 	(inline_matmul_assign): Handle A2TB1.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* expr.cc (gfc_check_init_expr): Remove useless "? true : false".
+ 	(gfc_expr_check_typed): Replace "? false : true" with negation of the
+ 	condition.
+ 	* parse.cc (gfc_find_state): Likewise.
+ 	* resolve.cc (impure_stmt_fcn): Likewise.
+ 	* arith.cc (gfc_check_character_range): Remove useless
+ 	"? true : false".
+ 	* array.cc (is_constant_element): Likewise.
+ 	* decl.cc (gfc_verify_c_interop): Likewise.
+ 	* interface.cc (gfc_check_dummy_characteristics): Likewise.
+ 	* io.cc (check_open_constraints): Likewise.
+ 	(check_close_constraints): Likewise.
+ 	(check_io_constraints): Likewise.
+ 
+ 2026-07-31  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/126205
+ 	* gfortran.h: Add prototype for deallocate_allocated_coarrays.
+ 	hash_map team_allocated_coarrays, vector team_context_stack and
+ 	prototype for get_current_team_context.
+ 	* match.cc (gfc_match_allocate): Capture allocate expressions
+ 	of allocatable coarrays and stash in team_allocated_coarrays.
+ 	* parse.cc (parse_change_team): Push team context. When end is
+ 	seen, create the code to deallocate allocated coarrays in this
+ 	context, using deallocate_allocated_coarrays.
+ 	* st.cc (get_guarded_dealloc): Generate code to produce
+ 	IF (ALLOCATED (expr)) DEALLOCATE (expr).
+ 	(deallocate_allocated_coarrays): Modify the final array ref of
+ 	the allocate expressions and call get_guarded_dealloc.
+ 
+ 2026-07-30  Sebastian Galindo  <sebastian.galindo143@gmail.com>
+ 	    Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* dump-parse-tree.cc (show_omp_clauses): Dump OpenACC DEVICE_TYPE
+ 	and DEVICE_NUM clauses.
+ 	(show_omp_node): Handle INIT, SHUTDOWN, and SET directives.
+ 	(show_code_node): Likewise.
+ 	* frontend-passes.cc (gfc_code_walker): Walk device_num_expr for
+ 	INIT, SHUTDOWN, and SET directives.
+ 	* gfortran.h (enum gfc_statement): Add ST_OACC_INIT,
+ 	ST_OACC_SHUTDOWN, and ST_OACC_SET.
+ 	(gfc_omp_clauses): Add device_num_expr and oacc_device_type
+ 	fields.
+ 	(enum gfc_exec_op): Add EXEC_OACC_INIT, EXEC_OACC_SHUTDOWN, and
+ 	EXEC_OACC_SET.
+ 	* match.h (gfc_match_oacc_init): Declare.
+ 	(gfc_match_oacc_shutdown): Likewise.
+ 	(gfc_match_oacc_set): Likewise.
+ 	* openmp.cc (gfc_free_omp_clauses): Free device_num_expr.
+ 	(match_oacc_device_type_kind): New helper to parse OpenACC
+ 	device_type arguments.
+ 	(match_oacc_device_type): New helper to match the OpenACC
+ 	DEVICE_TYPE clause.
+ 	(enum omp_mask2): Add OMP_CLAUSE_DEVICE_NUM.
+ 	(gfc_match_omp_clauses): Match OpenACC DEVICE_TYPE and
+ 	DEVICE_NUM clauses.
+ 	(OACC_INIT_CLAUSES): New clause mask.
+ 	(OACC_SHUTDOWN_CLAUSES): Likewise.
+ 	(OACC_SET_CLAUSES): Likewise.
+ 	(gfc_match_oacc_init): New matcher.
+ 	(gfc_match_oacc_shutdown): Likewise.
+ 	(gfc_match_oacc_set): Likewise.
+ 	(resolve_omp_clauses): Resolve DEVICE_NUM; require at least one
+ 	of DEVICE_TYPE and DEVICE_NUM on SET.
+ 	(oacc_code_to_statement): Map new exec ops to statement codes.
+ 	(gfc_resolve_oacc_directive): Resolve INIT, SET, and SHUTDOWN
+ 	directives.
+ 	* parse.cc (decode_oacc_directive): Recognize init, set, and
+ 	shutdown directives.
+ 	(next_statement): Treat INIT, SET, and SHUTDOWN as executable
+ 	statements.
+ 	(gfc_ascii_statement): Add ASCII names for new directives.
+ 	(is_oacc): Recognize new exec ops.
+ 	* resolve.cc (gfc_resolve_blocks): Resolve INIT, SET, and
+ 	SHUTDOWN directives.
+ 	* st.cc (gfc_free_statement): Free clauses for new directives.
+ 	* trans-openmp.cc (gfc_trans_omp_clauses): Assert that
+ 	DEVICE_NUM and DEVICE_TYPE do not appear on construct clauses.
+ 	(gfc_trans_oacc_executable_directive): Lower INIT, SHUTDOWN, and
+ 	SET to GOACC builtins.
+ 	(gfc_trans_oacc_directive): Dispatch new directives.
+ 	* trans.cc (trans_code): Dispatch new directives.
+ 	* types.def (BT_FN_VOID_INT_INT): New definition.
+ 
+ 2026-07-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125866
+ 	* expr.cc (is_CFI_desc): Add check for proc_name.
+ 
+ 2026-07-27  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* dump-parse-tree.cc (show_omp_clauses): Fix 'message' clause name.
+ 	* openmp.cc (gfc_match_omp_clauses): Improve num_team's error
+ 	diagnostic.
+ 	(OMP_PARALLEL_CLAUSES, OMP_TARGET_CLAUSES, OMP_TEAMS_CLAUSES): Add
+ 	OMP_CLAUSE_MESSAGE and OMP_CLAUSE_SEVERITY.
+ 	* trans-openmp.cc (gfc_split_omp_clauses): Handle message/severity.
+ 	(gfc_trans_omp_clauses): Likewise; replace 'sorry' by updated tree
+ 	generation for num_teams, num_threads, thread_num clauses.
+ 
+ 2026-07-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/126303
+ 	* frontend-passes.cc (inner_loop_may_be_skipped): If inner loop iterator
+ 	is not integral, return true.
+ 
  2026-07-26  Thomas Koenig  <tkoenig@gcc.gnu.org>
  
  	PR fortran/126386
diff -Nrcpad gcc-17-20260727/gcc/fortran/arith.cc gcc-17-20260802/gcc/fortran/arith.cc
*** gcc-17-20260727/gcc/fortran/arith.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/arith.cc	Sun Aug  2 22:32:07 2026
*************** gfc_check_character_range (gfc_char_t c,
*** 354,360 ****
      return true;
  
    if (kind == 1)
!     return c <= 255 ? true : false;
  
    gcc_unreachable ();
  }
--- 354,360 ----
      return true;
  
    if (kind == 1)
!     return c <= 255;
  
    gcc_unreachable ();
  }
diff -Nrcpad gcc-17-20260727/gcc/fortran/array.cc gcc-17-20260802/gcc/fortran/array.cc
*** gcc-17-20260727/gcc/fortran/array.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/array.cc	Sun Aug  2 22:32:07 2026
*************** is_constant_element (gfc_expr *e)
*** 2118,2124 ****
    rv = gfc_is_constant_expr (e);
    gfc_free_expr (e);
  
!   return rv ? true : false;
  }
  
  
--- 2118,2124 ----
    rv = gfc_is_constant_expr (e);
    gfc_free_expr (e);
  
!   return rv;
  }
  
  
diff -Nrcpad gcc-17-20260727/gcc/fortran/decl.cc gcc-17-20260802/gcc/fortran/decl.cc
*** gcc-17-20260727/gcc/fortran/decl.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/decl.cc	Sun Aug  2 22:32:07 2026
*************** bool
*** 6592,6599 ****
  gfc_verify_c_interop (gfc_typespec *ts)
  {
    if (ts->type == BT_DERIVED && ts->u.derived != NULL)
!     return (ts->u.derived->ts.is_c_interop || ts->u.derived->attr.is_bind_c)
! 	   ? true : false;
    else if (ts->type == BT_CLASS)
      return false;
    else if (ts->is_c_interop != 1 && ts->type != BT_ASSUMED)
--- 6592,6598 ----
  gfc_verify_c_interop (gfc_typespec *ts)
  {
    if (ts->type == BT_DERIVED && ts->u.derived != NULL)
!     return ts->u.derived->ts.is_c_interop || ts->u.derived->attr.is_bind_c;
    else if (ts->type == BT_CLASS)
      return false;
    else if (ts->is_c_interop != 1 && ts->type != BT_ASSUMED)
diff -Nrcpad gcc-17-20260727/gcc/fortran/dump-parse-tree.cc gcc-17-20260802/gcc/fortran/dump-parse-tree.cc
*** gcc-17-20260727/gcc/fortran/dump-parse-tree.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/dump-parse-tree.cc	Sun Aug  2 22:32:07 2026
*************** show_omp_clauses (gfc_omp_clauses *omp_c
*** 2456,2462 ****
      }
    if (omp_clauses->message)
      {
!       fputs (" ERROR (", dumpfile);
        show_expr (omp_clauses->message);
        fputc (')', dumpfile);
      }
--- 2456,2462 ----
      }
    if (omp_clauses->message)
      {
!       fputs (" MESSAGE (", dumpfile);
        show_expr (omp_clauses->message);
        fputc (')', dumpfile);
      }
*************** show_omp_clauses (gfc_omp_clauses *omp_c
*** 2494,2499 ****
--- 2494,2521 ----
        show_expr (omp_clauses->nocontext);
        fputc (')', dumpfile);
      }
+   if (omp_clauses->oacc_device_type_present)
+     {
+       const char *s;
+       switch (omp_clauses->oacc_device_type)
+ 	{
+ 	case GOMP_DEVICE_NONE: s = "all"; break;
+ 	case GOMP_DEVICE_HOST: s = "host"; break;
+ 	case GOMP_DEVICE_NVIDIA_PTX: s = "nvidia"; break;
+ 	case GOMP_DEVICE_GCN: s = "radeon"; break;
+ 	default:
+ 	  gcc_unreachable ();
+ 	}
+       fputs (" DEVICE_TYPE(", dumpfile);
+       fputs (s, dumpfile);
+       fputc (')', dumpfile);
+     }
+   if (omp_clauses->device_num_expr)
+     {
+       fputs (" DEVICE_NUM(", dumpfile);
+       show_expr (omp_clauses->device_num_expr);
+       fputc (')', dumpfile);
+     }
  }
  
  /* Show a single OpenMP or OpenACC directive node and everything underneath it
*************** show_omp_node (int level, gfc_code *c)
*** 2523,2528 ****
--- 2545,2553 ----
      case EXEC_OACC_CACHE: name = "CACHE"; is_oacc = true; break;
      case EXEC_OACC_ENTER_DATA: name = "ENTER DATA"; is_oacc = true; break;
      case EXEC_OACC_EXIT_DATA: name = "EXIT DATA"; is_oacc = true; break;
+     case EXEC_OACC_INIT: name = "INIT"; is_oacc = true; break;
+     case EXEC_OACC_SHUTDOWN: name = "SHUTDOWN"; is_oacc = true; break;
+     case EXEC_OACC_SET: name = "SET"; is_oacc = true; break;
      case EXEC_OMP_ALLOCATE: name = "ALLOCATE"; break;
      case EXEC_OMP_ALLOCATORS: name = "ALLOCATORS"; break;
      case EXEC_OMP_ASSUME: name = "ASSUME"; break;
*************** show_omp_node (int level, gfc_code *c)
*** 2634,2639 ****
--- 2659,2667 ----
      case EXEC_OACC_CACHE:
      case EXEC_OACC_ENTER_DATA:
      case EXEC_OACC_EXIT_DATA:
+     case EXEC_OACC_INIT:
+     case EXEC_OACC_SHUTDOWN:
+     case EXEC_OACC_SET:
      case EXEC_OMP_ALLOCATE:
      case EXEC_OMP_ALLOCATORS:
      case EXEC_OMP_ASSUME:
*************** show_code_node (int level, gfc_code *c)
*** 4031,4036 ****
--- 4059,4067 ----
      case EXEC_OACC_CACHE:
      case EXEC_OACC_ENTER_DATA:
      case EXEC_OACC_EXIT_DATA:
+     case EXEC_OACC_INIT:
+     case EXEC_OACC_SHUTDOWN:
+     case EXEC_OACC_SET:
      case EXEC_OMP_ALLOCATE:
      case EXEC_OMP_ALLOCATORS:
      case EXEC_OMP_ASSUME:
diff -Nrcpad gcc-17-20260727/gcc/fortran/expr.cc gcc-17-20260802/gcc/fortran/expr.cc
*** gcc-17-20260727/gcc/fortran/expr.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/expr.cc	Sun Aug  2 22:32:07 2026
*************** is_CFI_desc (gfc_symbol *sym, gfc_expr *
*** 1193,1199 ****
        && e && e->expr_type == EXPR_VARIABLE)
      sym = e->symtree->n.sym;
  
!   if (sym && sym->attr.dummy
        && sym->ns->proc_name->attr.is_bind_c
        && (sym->attr.pointer
  	  || sym->attr.allocatable
--- 1193,1199 ----
        && e && e->expr_type == EXPR_VARIABLE)
      sym = e->symtree->n.sym;
  
!   if (sym && sym->attr.dummy && sym->ns && sym->ns->proc_name
        && sym->ns->proc_name->attr.is_bind_c
        && (sym->attr.pointer
  	  || sym->attr.allocatable
*************** gfc_check_init_expr (gfc_expr *e)
*** 3413,3419 ****
        break;
  
      case EXPR_STRUCTURE:
!       t = e->ts.is_iso_c ? true : false;
        if (t)
  	break;
  
--- 3413,3419 ----
        break;
  
      case EXPR_STRUCTURE:
!       t = e->ts.is_iso_c;
        if (t)
  	break;
  
*************** gfc_expr_check_typed (gfc_expr* e, gfc_n
*** 6112,6118 ****
    check_typed_ns = ns;
    error_found = gfc_traverse_expr (e, NULL, &expr_check_typed_help, 0);
  
!   return error_found ? false : true;
  }
  
  
--- 6112,6118 ----
    check_typed_ns = ns;
    error_found = gfc_traverse_expr (e, NULL, &expr_check_typed_help, 0);
  
!   return !error_found;
  }
  
  
diff -Nrcpad gcc-17-20260727/gcc/fortran/frontend-passes.cc gcc-17-20260802/gcc/fortran/frontend-passes.cc
*** gcc-17-20260727/gcc/fortran/frontend-passes.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/frontend-passes.cc	Sun Aug  2 22:32:07 2026
*************** static int var_num = 1;
*** 133,139 ****
  
  /* What sort of matrix we are dealing with when inlining MATMUL.  */
  
! enum matrix_case { none=0, A2B2, A2B1, A1B2, A2B2T, A2TB2, A2TB2T };
  
  /* Keep track of the number of expressions we have inserted so far
     using create_var.  */
--- 133,139 ----
  
  /* What sort of matrix we are dealing with when inlining MATMUL.  */
  
! enum matrix_case { none=0, A2B2, A2B1, A1B2, A2B2T, A2TB2, A2TB2T, A2TB1 };
  
  /* Keep track of the number of expressions we have inserted so far
     using create_var.  */
*************** inner_loop_may_be_skipped (int loop_inde
*** 2778,2783 ****
--- 2778,2786 ----
        if (loop == NULL || loop->ext.iterator == NULL || loop->ext.iterator->var == NULL)
  	return true;
  
+       if (loop->ext.iterator->var->symtree->n.sym->ts.type != BT_INTEGER)
+ 	return true;
+ 
        if (!evaluate_loop_bound (loop->ext.iterator->step, outer_sym, outer_val, do_step))
  	return true;
  
*************** matmul_lhs_realloc (gfc_expr *c, gfc_exp
*** 3569,3574 ****
--- 3572,3584 ----
  				 get_array_inq_function (GFC_ISYM_SIZE, a, 1));
        break;
  
+     case A2TB1:
+       ar->start[0] = get_array_inq_function (GFC_ISYM_SIZE, a, 2);
+       cond = build_logical_expr (INTRINSIC_NE,
+ 				 get_array_inq_function (GFC_ISYM_SIZE, c, 1),
+ 				 get_array_inq_function (GFC_ISYM_SIZE, a, 2));
+       break;
+ 
      case A1B2:
        ar->start[0] = get_array_inq_function (GFC_ISYM_SIZE, b, 2);
        cond = build_logical_expr (INTRINSIC_NE,
*************** inline_matmul_assign (gfc_code **c, int
*** 4219,4224 ****
--- 4229,4236 ----
  	{
  	  if (matrix_b->rank == 2 && !transpose_b)
  	    m_case = A2TB2;
+ 	  else if (matrix_b->rank == 1)
+ 	    m_case = A2TB1;
  	}
        else
  	{
*************** inline_matmul_assign (gfc_code **c, int
*** 4373,4378 ****
--- 4385,4407 ----
  	    }
  	  break;
  
+ 	case A2TB1:
+ 	  b1 = get_array_inq_function (GFC_ISYM_SIZE, matrix_b, 1);
+ 	  a1 = get_array_inq_function (GFC_ISYM_SIZE, matrix_a, 1);
+ 	  test = runtime_error_ne (b1, a1, B_ERROR_1);
+ 	  *next_code_point = test;
+ 	  next_code_point = &test->next;
+ 
+ 	  if (!realloc_c)
+ 	    {
+ 	      c1 = get_array_inq_function (GFC_ISYM_SIZE, expr1, 1);
+ 	      a2 = get_array_inq_function (GFC_ISYM_SIZE, matrix_a, 2);
+ 	      test = runtime_error_ne (c1, a2, C_ERROR_1);
+ 	      *next_code_point = test;
+ 	      next_code_point = &test->next;
+ 	    }
+ 	  break;
+ 
  	case A1B2:
  
  	  b1 = get_array_inq_function (GFC_ISYM_SIZE, matrix_b, 1);
*************** inline_matmul_assign (gfc_code **c, int
*** 4616,4621 ****
--- 4645,4684 ----
  
        break;
  
+     case A2TB1:
+ 
+       /* Ordering here is
+ 	   do i=1,size(a,2)
+ 	     do j=1,size(b,1)
+ 	       c(i) = c(i) + a(j,i) * b(j)
+ 	     end do
+ 	   end do
+       where i is var_1 and j is var_2.  */
+ 
+       u1 = get_size_m1 (matrix_a, 2);
+       u2 = get_size_m1 (matrix_b, 1);
+ 
+       do_1 = create_do_loop (gfc_copy_expr (zero), u1, NULL, &co->loc, ns);
+       do_2 = create_do_loop (gfc_copy_expr (zero), u2, NULL, &co->loc, ns);
+ 
+       do_1->block->next = do_2;
+       do_2->block->next = assign_matmul;
+ 
+       var_1 = do_1->ext.iterator->var;
+       var_2 = do_2->ext.iterator->var;
+ 
+       list[0] = var_1;
+       cscalar = scalarized_expr (co->expr1, list, 1);
+ 
+       list[0] = var_2;
+       list[1] = var_1;
+       ascalar = scalarized_expr (matrix_a, list, 2);
+ 
+       list[0] = var_2;
+       bscalar = scalarized_expr (matrix_b, list, 1);
+ 
+       break;
+ 
      case A1B2:
        u1 = get_size_m1 (matrix_b, 2);
        u2 = get_size_m1 (matrix_a, 1);
*************** gfc_code_walker (gfc_code **c, walk_code
*** 5737,5742 ****
--- 5800,5813 ----
  		      WALK_SUBEXPR (n->expr);
  		}
  	      break;
+ 
+ 	    case EXEC_OACC_INIT:
+ 	    case EXEC_OACC_SHUTDOWN:
+ 	    case EXEC_OACC_SET:
+ 	      if (co->ext.omp_clauses)
+ 		WALK_SUBEXPR (co->ext.omp_clauses->device_num_expr);
+ 	      break;
+ 
  	    default:
  	      break;
  	    }
diff -Nrcpad gcc-17-20260727/gcc/fortran/gfortran.h gcc-17-20260802/gcc/fortran/gfortran.h
*** gcc-17-20260727/gcc/fortran/gfortran.h	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/gfortran.h	Sun Aug  2 22:32:07 2026
*************** enum gfc_statement
*** 273,278 ****
--- 273,279 ----
    ST_OACC_SERIAL_LOOP, ST_OACC_END_SERIAL_LOOP, ST_OACC_SERIAL,
    ST_OACC_END_SERIAL, ST_OACC_ENTER_DATA, ST_OACC_EXIT_DATA, ST_OACC_ROUTINE,
    ST_OACC_ATOMIC, ST_OACC_END_ATOMIC,
+   ST_OACC_INIT, ST_OACC_SHUTDOWN, ST_OACC_SET,
    ST_OMP_ATOMIC, ST_OMP_BARRIER, ST_OMP_CRITICAL, ST_OMP_END_ATOMIC,
    ST_OMP_END_CRITICAL, ST_OMP_END_DO, ST_OMP_END_MASTER, ST_OMP_END_ORDERED,
    ST_OMP_END_PARALLEL, ST_OMP_END_PARALLEL_DO, ST_OMP_END_PARALLEL_SECTIONS,
*************** typedef struct gfc_omp_clauses
*** 1770,1781 ****
--- 1771,1784 ----
    struct gfc_expr *num_gangs_expr;
    struct gfc_expr *num_workers_expr;
    struct gfc_expr *vector_length_expr;
+   struct gfc_expr *device_num_expr;
    gfc_expr_list *wait_list;
    gfc_expr_list *tile_list;
    unsigned async:1, gang:1, worker:1, vector:1, seq:1, independent:1;
    unsigned par_auto:1, gang_static:1;
    unsigned if_present:1, finalize:1;
    unsigned nohost:1;
+   unsigned oacc_device_type:4, oacc_device_type_present:1;
    locus loc;
  }
  gfc_omp_clauses;
*************** enum gfc_exec_op
*** 3286,3291 ****
--- 3289,3295 ----
    EXEC_OACC_DATA, EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP, EXEC_OACC_UPDATE,
    EXEC_OACC_WAIT, EXEC_OACC_CACHE, EXEC_OACC_ENTER_DATA, EXEC_OACC_EXIT_DATA,
    EXEC_OACC_ATOMIC, EXEC_OACC_DECLARE,
+   EXEC_OACC_INIT, EXEC_OACC_SHUTDOWN, EXEC_OACC_SET,
    EXEC_OMP_CRITICAL, EXEC_OMP_FIRST_OPENMP_EXEC = EXEC_OMP_CRITICAL,
    EXEC_OMP_DO, EXEC_OMP_FLUSH, EXEC_OMP_MASTER,
    EXEC_OMP_ORDERED, EXEC_OMP_PARALLEL, EXEC_OMP_PARALLEL_DO,
*************** bool has_parameterized_comps (gfc_symbol
*** 4175,4187 ****
  
  /* st.cc */
  extern gfc_code new_st;
- 
  void gfc_clear_new_st (void);
  gfc_code *gfc_get_code (gfc_exec_op);
  gfc_code *gfc_append_code (gfc_code *, gfc_code *);
  void gfc_free_statement (gfc_code *);
  void gfc_free_statements (gfc_code *);
  void gfc_free_association_list (gfc_association_list *);
  
  /* resolve.cc */
  void gfc_resolve_symbol (gfc_symbol *);
--- 4179,4191 ----
  
  /* st.cc */
  extern gfc_code new_st;
  void gfc_clear_new_st (void);
  gfc_code *gfc_get_code (gfc_exec_op);
  gfc_code *gfc_append_code (gfc_code *, gfc_code *);
  void gfc_free_statement (gfc_code *);
  void gfc_free_statements (gfc_code *);
  void gfc_free_association_list (gfc_association_list *);
+ void deallocate_allocated_coarrays (vec<gfc_expr *> *);
  
  /* resolve.cc */
  void gfc_resolve_symbol (gfc_symbol *);
*************** bool gfc_op_rank_conformable (gfc_expr *
*** 4190,4196 ****
  bool gfc_resolve_ref (gfc_expr *);
  void gfc_fixup_inferred_type_refs (gfc_expr *);
  bool gfc_resolve_expr (gfc_expr *);
! void gfc_resolve (gfc_namespace *);
  void gfc_resolve_code (gfc_code *, gfc_namespace *);
  void gfc_resolve_blocks (gfc_code *, gfc_namespace *);
  void gfc_resolve_formal_arglist (gfc_symbol *);
--- 4194,4200 ----
  bool gfc_resolve_ref (gfc_expr *);
  void gfc_fixup_inferred_type_refs (gfc_expr *);
  bool gfc_resolve_expr (gfc_expr *);
! void gfc_resolve (gfc_namespace *, gfc_association_list *a = NULL);
  void gfc_resolve_code (gfc_code *, gfc_namespace *);
  void gfc_resolve_blocks (gfc_code *, gfc_namespace *);
  void gfc_resolve_formal_arglist (gfc_symbol *);
*************** void gfc_global_used (gfc_gsymbol *, loc
*** 4358,4363 ****
--- 4362,4370 ----
  gfc_namespace* gfc_build_block_ns (gfc_namespace *);
  gfc_statement match_omp_directive (void);
  bool is_omp_declarative_stmt (gfc_statement);
+ extern hash_map<gfc_namespace *, vec<gfc_expr *>> team_allocated_coarrays;
+ extern vec<gfc_namespace *> team_context_stack;
+ gfc_namespace *get_current_team_context (void);
  
  /* dependency.cc */
  int gfc_dep_compare_functions (gfc_expr *, gfc_expr *, bool);
diff -Nrcpad gcc-17-20260727/gcc/fortran/interface.cc gcc-17-20260802/gcc/fortran/interface.cc
*** gcc-17-20260727/gcc/fortran/interface.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/interface.cc	Sun Aug  2 22:32:07 2026
*************** gfc_check_dummy_characteristics (gfc_sym
*** 1398,1404 ****
  				 int err_len)
  {
    if (s1 == NULL || s2 == NULL)
!     return s1 == s2 ? true : false;
  
    if (s1->attr.proc == PROC_ST_FUNCTION || s2->attr.proc == PROC_ST_FUNCTION)
      {
--- 1398,1404 ----
  				 int err_len)
  {
    if (s1 == NULL || s2 == NULL)
!     return s1 == s2;
  
    if (s1->attr.proc == PROC_ST_FUNCTION || s2->attr.proc == PROC_ST_FUNCTION)
      {
diff -Nrcpad gcc-17-20260727/gcc/fortran/io.cc gcc-17-20260802/gcc/fortran/io.cc
*** gcc-17-20260727/gcc/fortran/io.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/io.cc	Sun Aug  2 22:32:07 2026
*************** check_open_constraints (gfc_open *open,
*** 2223,2229 ****
      } \
  }
  
!   bool warn = (open->err || open->iostat) ? true : false;
  
    /* Checks on the ACCESS specifier.  */
    if (open->access && open->access->expr_type == EXPR_CONSTANT)
--- 2223,2229 ----
      } \
  }
  
!   bool warn = open->err || open->iostat;
  
    /* Checks on the ACCESS specifier.  */
    if (open->access && open->access->expr_type == EXPR_CONSTANT)
*************** cleanup:
*** 2750,2756 ****
  static bool
  check_close_constraints (gfc_close *close, locus *where)
  {
!   bool warn = (close->iostat || close->err) ? true : false;
  
    if (close->unit == NULL)
      {
--- 2750,2756 ----
  static bool
  check_close_constraints (gfc_close *close, locus *where)
  {
!   bool warn = close->iostat || close->err;
  
    if (close->unit == NULL)
      {
*************** if (condition) \
*** 3842,3848 ****
    gfc_symbol *sym = NULL;
    bool warn, unformatted;
  
!   warn = (dt->err || dt->iostat) ? true : false;
    unformatted = dt->format_expr == NULL && dt->format_label == NULL
  		&& dt->namelist == NULL;
  
--- 3842,3848 ----
    gfc_symbol *sym = NULL;
    bool warn, unformatted;
  
!   warn = dt->err || dt->iostat;
    unformatted = dt->format_expr == NULL && dt->format_label == NULL
  		&& dt->namelist == NULL;
  
diff -Nrcpad gcc-17-20260727/gcc/fortran/match.cc gcc-17-20260802/gcc/fortran/match.cc
*** gcc-17-20260727/gcc/fortran/match.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/match.cc	Sun Aug  2 22:32:07 2026
*************** gfc_match_allocate (void)
*** 5443,5448 ****
--- 5443,5465 ----
  	  goto cleanup;
  	}
  
+       /* F2018(11.1.5.2): Track coarrays allocated in team blocks.  */
+       gfc_namespace *team_ns = get_current_team_context ();
+       bool codim = tail->expr->symtree->n.sym->attr.codimension
+ 		   || (tail->expr->symtree->n.sym->as
+ 		       && tail->expr->symtree->n.sym->as->corank);
+       for (gfc_ref *r = tail->expr->ref; r; r = r->next)
+ 	if (r->type == REF_COMPONENT && r->u.c.component)
+ 	  codim = r->u.c.component->attr.codimension
+ 		  || (r->u.c.component->as && r->u.c.component->as->corank);
+ 
+       if (flag_coarray == GFC_FCOARRAY_LIB && team_ns && codim)
+ 	{
+ 	  gfc_expr *e = gfc_copy_expr (tail->expr);
+ 	  vec<gfc_expr *> &allocated = team_allocated_coarrays.get_or_insert (team_ns);
+ 	  allocated.safe_push (e);
+ 	}
+ 
        if (gfc_match_char (',') != MATCH_YES)
  	break;
  
diff -Nrcpad gcc-17-20260727/gcc/fortran/match.h gcc-17-20260802/gcc/fortran/match.h
*** gcc-17-20260727/gcc/fortran/match.h	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/match.h	Sun Aug  2 22:32:07 2026
*************** gfc_common_head *gfc_get_common (const c
*** 131,136 ****
--- 131,139 ----
  /* OpenACC directive matchers.  */
  match gfc_match_oacc_atomic (void);
  match gfc_match_oacc_cache (void);
+ match gfc_match_oacc_init (void);
+ match gfc_match_oacc_shutdown (void);
+ match gfc_match_oacc_set (void);
  match gfc_match_oacc_wait (void);
  match gfc_match_oacc_update (void);
  match gfc_match_oacc_declare (void);
diff -Nrcpad gcc-17-20260727/gcc/fortran/openmp.cc gcc-17-20260802/gcc/fortran/openmp.cc
*** gcc-17-20260727/gcc/fortran/openmp.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/openmp.cc	Sun Aug  2 22:32:07 2026
*************** gfc_free_omp_clauses (gfc_omp_clauses *c
*** 209,214 ****
--- 209,215 ----
    gfc_free_expr (c->num_gangs_expr);
    gfc_free_expr (c->num_workers_expr);
    gfc_free_expr (c->vector_length_expr);
+   gfc_free_expr (c->device_num_expr);
    for (enum gfc_omp_list_type t = OMP_LIST_FIRST; t < OMP_LIST_NUM;
         t = gfc_omp_list_type (t + 1))
      gfc_free_omp_namelist (c->lists[t], t);
*************** cleanup:
*** 832,837 ****
--- 833,905 ----
    return MATCH_ERROR;
  }
  
+ static int
+ match_oacc_device_type_kind (void)
+ {
+   char name[GFC_MAX_SYMBOL_LEN + 1];
+ 
+   /* Since device_type arg accept * as all,
+      we need to check first the case when
+      the user inputs * as the parameter.  */
+   gfc_gobble_whitespace ();
+   name[0] = (char) gfc_next_char ();
+ 
+   if (name[0] == '*')
+     return GOMP_DEVICE_NONE;
+ 
+   /* If is not *, we try to match the
+      pre-defined names.  */
+ 
+   match m = gfc_match (" %n ", name + 1);
+ 
+   if (m != MATCH_YES)
+     return -1;
+ 
+   if (strcmp (name ,"host") == 0)
+     return GOMP_DEVICE_HOST;
+   if (strcmp (name, "nvidia") == 0)
+     return GOMP_DEVICE_NVIDIA_PTX;
+   if (strcmp (name, "radeon") == 0)
+     return GOMP_DEVICE_GCN;
+ 
+   return -1;
+ }
+ 
+ static match
+ match_oacc_device_type (gfc_omp_clauses *c)
+ {
+   locus old_loc = gfc_current_locus;
+ 
+   int result = match_oacc_device_type_kind ();
+   match m;
+ 
+   if (result == -1)
+     goto syntax;
+ 
+   m = gfc_match_char (')', true);
+ 
+   if (m != MATCH_YES)
+     goto single_argument;
+ 
+   c->oacc_device_type = (unsigned) result;
+   c->oacc_device_type_present = 1;
+ 
+   return MATCH_YES;
+ 
+ single_argument:
+   gfc_error ("OpenACC %<DEVICE_TYPE%> clause only accepts one argument, "
+ 	     "unexpected char at %C");
+   goto cleanup;
+ 
+ syntax:
+   gfc_error ("Syntax error in OpenACC %<DEVICE_TYPE%> argument at %C.  Expected "
+ 	     "host, radeon, nvidia or * as argument.");
+ 
+ cleanup:
+   gfc_current_locus = old_loc;
+   return MATCH_ERROR;
+ }
+ 
  static match
  match_omp_oacc_expr_list (const char *str, gfc_expr_list **list,
  			  bool allow_asterisk, bool is_omp)
*************** enum omp_mask2
*** 1182,1187 ****
--- 1250,1256 ----
    OMP_CLAUSE_INTEROP, /* OpenMP 5.1  */
    OMP_CLAUSE_LOCAL, /* OpenMP 6.0 */
    OMP_CLAUSE_DYN_GROUPPRIVATE, /* OpenMP 6.1 */
+   OMP_CLAUSE_DEVICE_NUM,
    /* This must come last.  */
    OMP_MASK2_LAST
  };
*************** gfc_match_omp_clauses (gfc_omp_clauses *
*** 3156,3162 ****
  					   OMP_MAP_FORCE_DEVICEPTR, false,
  					   allow_derived))
  	    continue;
! 	  if ((mask & OMP_CLAUSE_DEVICE_TYPE)
  	      && gfc_match_dupl_check (c->device_type == OMP_DEVICE_TYPE_UNSET,
  				       "device_type", true) == MATCH_YES)
  	    {
--- 3225,3236 ----
  					   OMP_MAP_FORCE_DEVICEPTR, false,
  					   allow_derived))
  	    continue;
! 	  if ((mask & OMP_CLAUSE_DEVICE_TYPE) && openacc
! 	      && gfc_match_dupl_check (!c->oacc_device_type_present,
! 				       "device_type", true) == MATCH_YES
! 	      && match_oacc_device_type (c) == MATCH_YES)
! 	    continue;
! 	  if ((mask & OMP_CLAUSE_DEVICE_TYPE) && !openacc
  	      && gfc_match_dupl_check (c->device_type == OMP_DEVICE_TYPE_UNSET,
  				       "device_type", true) == MATCH_YES)
  	    {
*************** gfc_match_omp_clauses (gfc_omp_clauses *
*** 3175,3180 ****
--- 3249,3264 ----
  		break;
  	      continue;
  	    }
+ 	  if ((mask & OMP_CLAUSE_DEVICE_NUM)
+ 	      && (m = gfc_match_dupl_check (!c->device_num_expr,
+ 					    "device_num")) != MATCH_NO)
+ 	    {
+ 	      if (m == MATCH_ERROR)
+ 		goto error;
+ 	      if (gfc_match ("( %e )", &c->device_num_expr) != MATCH_YES)
+ 		goto error;
+ 	      continue;
+ 	    }
  	  if ((mask & OMP_CLAUSE_DEVICE_RESIDENT)
  	      && gfc_match_omp_variable_list
  		   ("device_resident (",
*************** gfc_match_omp_clauses (gfc_omp_clauses *
*** 4135,4140 ****
--- 4219,4225 ----
  		      goto error;
  		    }
  		  c->num_teams_dims = true;
+ 		  continue;
  		}
  	      else if (gfc_match ("%e ", &expr) == MATCH_YES)
  		{
*************** gfc_match_omp_clauses (gfc_omp_clauses *
*** 4143,4163 ****
  		  if (gfc_peek_ascii_char () == ':')
  		    {
  		      expr = NULL;
! 		      if (gfc_match (": %e ", &expr) != MATCH_YES)
! 			goto error;
! 		      c->num_teams_list->next = gfc_get_expr_list();
! 		      c->num_teams_list->next->expr = expr;
  		    }
! 		  if (gfc_match (") ") != MATCH_YES)
! 		    goto error;
  		}
! 	      else
! 		{
! 		  gfc_error ("Expected either %<[lower-expr : ] upper-expr%> or "
  			     "%<dims(N): expr-list%> at %C");
! 		  goto error;
! 		}
! 	      continue;
  	    }
  	  if ((mask & OMP_CLAUSE_NUM_THREADS)
  	      && (m = gfc_match_dupl_check (!c->num_threads_list,
--- 4228,4247 ----
  		  if (gfc_peek_ascii_char () == ':')
  		    {
  		      expr = NULL;
! 		      if (gfc_match (": %e ", &expr) == MATCH_YES)
! 			{
! 			  c->num_teams_list->next = gfc_get_expr_list();
! 			  c->num_teams_list->next->expr = expr;
! 			  if (gfc_match (") ") == MATCH_YES)
! 			    continue;
! 			}
  		    }
! 		  else if (gfc_match (") ") == MATCH_YES)
! 		    continue;
  		}
! 	      gfc_error ("Expected either %<[lower-expr : ] upper-expr%> or "
  			     "%<dims(N): expr-list%> at %C");
! 	      goto error;
  	    }
  	  if ((mask & OMP_CLAUSE_NUM_THREADS)
  	      && (m = gfc_match_dupl_check (!c->num_threads_list,
*************** error:
*** 5007,5012 ****
--- 5091,5102 ----
    (omp_mask (OMP_CLAUSE_GANG) | OMP_CLAUSE_WORKER | OMP_CLAUSE_VECTOR	      \
     | OMP_CLAUSE_SEQ							      \
     | OMP_CLAUSE_NOHOST)
+ #define OACC_INIT_CLAUSES                                                      \
+   (omp_mask (OMP_CLAUSE_IF) | OMP_CLAUSE_DEVICE_NUM | OMP_CLAUSE_DEVICE_TYPE)
+ #define OACC_SHUTDOWN_CLAUSES                                                  \
+   (omp_mask (OMP_CLAUSE_IF) | OMP_CLAUSE_DEVICE_NUM | OMP_CLAUSE_DEVICE_TYPE)
+ #define OACC_SET_CLAUSES                                                       \
+   (omp_mask (OMP_CLAUSE_IF) | OMP_CLAUSE_DEVICE_NUM | OMP_CLAUSE_DEVICE_TYPE)
  
  
  static match
*************** gfc_match_oacc_cache (void)
*** 5301,5306 ****
--- 5391,5414 ----
    return MATCH_YES;
  }
  
+ match
+ gfc_match_oacc_init (void)
+ {
+   return match_acc (EXEC_OACC_INIT, OACC_INIT_CLAUSES);
+ }
+ 
+ match
+ gfc_match_oacc_shutdown (void)
+ {
+   return match_acc (EXEC_OACC_SHUTDOWN, OACC_SHUTDOWN_CLAUSES);
+ }
+ 
+ match
+ gfc_match_oacc_set (void)
+ {
+   return match_acc (EXEC_OACC_SET, OACC_SET_CLAUSES);
+ }
+ 
  /* Determine the OpenACC 'routine' directive's level of parallelism.  */
  
  static oacc_routine_lop
*************** cleanup:
*** 5534,5540 ****
    (omp_mask (OMP_CLAUSE_PRIVATE) | OMP_CLAUSE_FIRSTPRIVATE		\
     | OMP_CLAUSE_SHARED | OMP_CLAUSE_COPYIN | OMP_CLAUSE_REDUCTION	\
     | OMP_CLAUSE_IF | OMP_CLAUSE_NUM_THREADS | OMP_CLAUSE_DEFAULT	\
!    | OMP_CLAUSE_PROC_BIND | OMP_CLAUSE_ALLOCATE)
  #define OMP_DECLARE_SIMD_CLAUSES \
    (omp_mask (OMP_CLAUSE_SIMDLEN) | OMP_CLAUSE_LINEAR			\
     | OMP_CLAUSE_UNIFORM	| OMP_CLAUSE_ALIGNED | OMP_CLAUSE_INBRANCH	\
--- 5642,5649 ----
    (omp_mask (OMP_CLAUSE_PRIVATE) | OMP_CLAUSE_FIRSTPRIVATE		\
     | OMP_CLAUSE_SHARED | OMP_CLAUSE_COPYIN | OMP_CLAUSE_REDUCTION	\
     | OMP_CLAUSE_IF | OMP_CLAUSE_NUM_THREADS | OMP_CLAUSE_DEFAULT	\
!    | OMP_CLAUSE_PROC_BIND | OMP_CLAUSE_ALLOCATE | OMP_CLAUSE_MESSAGE	\
!    | OMP_CLAUSE_SEVERITY)
  #define OMP_DECLARE_SIMD_CLAUSES \
    (omp_mask (OMP_CLAUSE_SIMDLEN) | OMP_CLAUSE_LINEAR			\
     | OMP_CLAUSE_UNIFORM	| OMP_CLAUSE_ALIGNED | OMP_CLAUSE_INBRANCH	\
*************** cleanup:
*** 5583,5589 ****
     | OMP_CLAUSE_IS_DEVICE_PTR | OMP_CLAUSE_IN_REDUCTION			\
     | OMP_CLAUSE_THREAD_LIMIT | OMP_CLAUSE_ALLOCATE			\
     | OMP_CLAUSE_HAS_DEVICE_ADDR | OMP_CLAUSE_USES_ALLOCATORS		\
!    | OMP_CLAUSE_DYN_GROUPPRIVATE | OMP_CLAUSE_DEVICE_TYPE)
  #define OMP_TARGET_DATA_CLAUSES \
    (omp_mask (OMP_CLAUSE_DEVICE) | OMP_CLAUSE_MAP | OMP_CLAUSE_IF	\
     | OMP_CLAUSE_USE_DEVICE_PTR | OMP_CLAUSE_USE_DEVICE_ADDR)
--- 5692,5699 ----
     | OMP_CLAUSE_IS_DEVICE_PTR | OMP_CLAUSE_IN_REDUCTION			\
     | OMP_CLAUSE_THREAD_LIMIT | OMP_CLAUSE_ALLOCATE			\
     | OMP_CLAUSE_HAS_DEVICE_ADDR | OMP_CLAUSE_USES_ALLOCATORS		\
!    | OMP_CLAUSE_DYN_GROUPPRIVATE | OMP_CLAUSE_DEVICE_TYPE		\
!    | OMP_CLAUSE_MESSAGE | OMP_CLAUSE_SEVERITY)
  #define OMP_TARGET_DATA_CLAUSES \
    (omp_mask (OMP_CLAUSE_DEVICE) | OMP_CLAUSE_MAP | OMP_CLAUSE_IF	\
     | OMP_CLAUSE_USE_DEVICE_PTR | OMP_CLAUSE_USE_DEVICE_ADDR)
*************** cleanup:
*** 5599,5605 ****
  #define OMP_TEAMS_CLAUSES \
    (omp_mask (OMP_CLAUSE_NUM_TEAMS) | OMP_CLAUSE_THREAD_LIMIT		\
     | OMP_CLAUSE_DEFAULT | OMP_CLAUSE_PRIVATE | OMP_CLAUSE_FIRSTPRIVATE	\
!    | OMP_CLAUSE_SHARED | OMP_CLAUSE_REDUCTION | OMP_CLAUSE_ALLOCATE)
  #define OMP_DISTRIBUTE_CLAUSES \
    (omp_mask (OMP_CLAUSE_PRIVATE) | OMP_CLAUSE_FIRSTPRIVATE		\
     | OMP_CLAUSE_LASTPRIVATE | OMP_CLAUSE_COLLAPSE | OMP_CLAUSE_DIST_SCHEDULE \
--- 5709,5716 ----
  #define OMP_TEAMS_CLAUSES \
    (omp_mask (OMP_CLAUSE_NUM_TEAMS) | OMP_CLAUSE_THREAD_LIMIT		\
     | OMP_CLAUSE_DEFAULT | OMP_CLAUSE_PRIVATE | OMP_CLAUSE_FIRSTPRIVATE	\
!    | OMP_CLAUSE_SHARED | OMP_CLAUSE_REDUCTION | OMP_CLAUSE_ALLOCATE	\
!    | OMP_CLAUSE_MESSAGE | OMP_CLAUSE_SEVERITY)
  #define OMP_DISTRIBUTE_CLAUSES \
    (omp_mask (OMP_CLAUSE_PRIVATE) | OMP_CLAUSE_FIRSTPRIVATE		\
     | OMP_CLAUSE_LASTPRIVATE | OMP_CLAUSE_COLLAPSE | OMP_CLAUSE_DIST_SCHEDULE \
*************** resolve_omp_clauses (gfc_code *code, gfc
*** 11383,11388 ****
--- 11494,11506 ----
    if (omp_clauses->async)
      if (omp_clauses->async_expr)
        resolve_scalar_int_expr (omp_clauses->async_expr, "ASYNC");
+   if (omp_clauses->device_num_expr)
+     resolve_scalar_int_expr (omp_clauses->device_num_expr, "DEVICE_NUM");
+   if (code && code->op == EXEC_OACC_SET
+       && !omp_clauses->device_num_expr
+       && !omp_clauses->oacc_device_type_present)
+     gfc_error ("At least one of the clauses %<DEVICE_TYPE%> and %<DEVICE_NUM%> "
+ 	       "should be present in %<SET%> directive at %L", &code->loc);
    if (omp_clauses->num_gangs_expr)
      resolve_positive_int_expr (omp_clauses->num_gangs_expr, "NUM_GANGS");
    if (omp_clauses->num_workers_expr)
*************** oacc_code_to_statement (gfc_code *code)
*** 13635,13640 ****
--- 13753,13764 ----
        return ST_OACC_EXIT_DATA;
      case EXEC_OACC_DECLARE:
        return ST_OACC_DECLARE;
+     case EXEC_OACC_INIT:
+       return ST_OACC_INIT;
+     case EXEC_OACC_SHUTDOWN:
+       return ST_OACC_SHUTDOWN;
+     case EXEC_OACC_SET:
+       return ST_OACC_SET;
      default:
        gcc_unreachable ();
      }
*************** gfc_resolve_oacc_directive (gfc_code *co
*** 13968,13973 ****
--- 14092,14100 ----
      case EXEC_OACC_EXIT_DATA:
      case EXEC_OACC_WAIT:
      case EXEC_OACC_CACHE:
+     case EXEC_OACC_INIT:
+     case EXEC_OACC_SHUTDOWN:
+     case EXEC_OACC_SET:
        resolve_omp_clauses (code, code->ext.omp_clauses, NULL, true);
        break;
      case EXEC_OACC_PARALLEL_LOOP:
diff -Nrcpad gcc-17-20260727/gcc/fortran/parse.cc gcc-17-20260802/gcc/fortran/parse.cc
*** gcc-17-20260727/gcc/fortran/parse.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/parse.cc	Sun Aug  2 22:32:07 2026
*************** decode_oacc_directive (void)
*** 790,795 ****
--- 790,798 ----
      case 'h':
        matcha ("host_data", gfc_match_oacc_host_data, ST_OACC_HOST_DATA);
        break;
+     case 'i':
+       matcha ("init", gfc_match_oacc_init, ST_OACC_INIT);
+       break;
      case 'p':
        matcha ("parallel loop", gfc_match_oacc_parallel_loop,
  	      ST_OACC_PARALLEL_LOOP);
*************** decode_oacc_directive (void)
*** 806,811 ****
--- 809,816 ----
      case 's':
        matcha ("serial loop", gfc_match_oacc_serial_loop, ST_OACC_SERIAL_LOOP);
        matcha ("serial", gfc_match_oacc_serial, ST_OACC_SERIAL);
+       matcha ("set", gfc_match_oacc_set, ST_OACC_SET);
+       matcha ("shutdown", gfc_match_oacc_shutdown, ST_OACC_SHUTDOWN);
        break;
      case 'u':
        matcha ("update", gfc_match_oacc_update, ST_OACC_UPDATE);
*************** next_statement (void)
*** 1975,1981 ****
    case ST_FORM_TEAM: case ST_SYNC_TEAM: \
    case ST_EVENT_POST: case ST_EVENT_WAIT: case ST_FAIL_IMAGE: \
    case ST_OACC_UPDATE: case ST_OACC_WAIT: case ST_OACC_CACHE: \
!   case ST_OACC_ENTER_DATA: case ST_OACC_EXIT_DATA
  
  /* Statements that mark other executable statements.  */
  
--- 1980,1987 ----
    case ST_FORM_TEAM: case ST_SYNC_TEAM: \
    case ST_EVENT_POST: case ST_EVENT_WAIT: case ST_FAIL_IMAGE: \
    case ST_OACC_UPDATE: case ST_OACC_WAIT: case ST_OACC_CACHE: \
!   case ST_OACC_ENTER_DATA: case ST_OACC_EXIT_DATA: \
!   case ST_OACC_INIT: case ST_OACC_SHUTDOWN: case ST_OACC_SET
  
  /* Statements that mark other executable statements.  */
  
*************** gfc_find_state (gfc_compile_state state)
*** 2123,2129 ****
      if (p->state == state)
        break;
  
!   return (p == NULL) ? false : true;
  }
  
  
--- 2129,2135 ----
      if (p->state == state)
        break;
  
!   return p != NULL;
  }
  
  
*************** gfc_ascii_statement (gfc_statement st, b
*** 2692,2697 ****
--- 2698,2712 ----
      case ST_OACC_END_ATOMIC:
        p = "!$ACC END ATOMIC";
        break;
+     case ST_OACC_INIT:
+       p = "!ACC INIT";
+       break;
+     case ST_OACC_SHUTDOWN:
+       p = "!ACC SHUTDOWN";
+       break;
+     case ST_OACC_SET:
+       p = "!ACC SET";
+       break;
      case ST_OMP_ALLOCATE:
      case ST_OMP_ALLOCATE_EXEC:
        p = "!$OMP ALLOCATE";
*************** loop:
*** 5567,5578 ****
--- 5582,5609 ----
    pop_state ();
  }
  
+ 
+ /* F2018(11.1.5.2): Track coarrays allocated within CHANGE TEAM blocks.
+    Map from team namespace to vector of allocated coarray symbols.  */
+ hash_map<gfc_namespace *, vec<gfc_expr *>> team_allocated_coarrays;
+ 
+ /* Stack to track current CHANGE TEAM context.  */
+ vec<gfc_namespace *> team_context_stack;
+ 
+ gfc_namespace *
+ get_current_team_context (void)
+ {
+   return team_context_stack.is_empty () ? NULL : team_context_stack.last ();
+ }
+ 
+ 
  static void
  parse_change_team (void)
  {
    gfc_namespace *my_ns;
    gfc_state_data s;
    gfc_statement st;
+   vec<gfc_expr *> *team_allocs;
  
    gfc_notify_std (GFC_STD_F2018, "CHANGE TEAM construct at %C");
  
*************** parse_change_team (void)
*** 5590,5595 ****
--- 5621,5629 ----
    accept_statement (ST_CHANGE_TEAM);
    push_state (&s, COMP_CHANGE_TEAM, my_ns->proc_name);
  
+   /* Push team context for tracking coarrays allocated in a team block.  */
+   team_context_stack.safe_push (gfc_current_ns);
+ 
  loop:
    st = parse_executable (ST_NONE);
    switch (st)
*************** loop:
*** 5600,5605 ****
--- 5634,5646 ----
      case_end:
        accept_statement (st);
        my_ns->code = gfc_state_stack->head;
+       /* F2018(11.1.5.2): Deallocate coarray expressions allocated in this
+ 	 team block,  */
+       team_allocs = team_allocated_coarrays.get (gfc_current_ns);
+       if (team_allocs)
+ 	deallocate_allocated_coarrays (team_allocs);
+       /* Pop team context.  */
+       team_context_stack.pop ();
        break;
  
      default:
*************** is_oacc (gfc_state_data *sd)
*** 8039,8044 ****
--- 8080,8088 ----
      case EXEC_OACC_EXIT_DATA:
      case EXEC_OACC_ATOMIC:
      case EXEC_OACC_ROUTINE:
+     case EXEC_OACC_INIT:
+     case EXEC_OACC_SHUTDOWN:
+     case EXEC_OACC_SET:
        return true;
  
      default:
diff -Nrcpad gcc-17-20260727/gcc/fortran/resolve.cc gcc-17-20260802/gcc/fortran/resolve.cc
*** gcc-17-20260727/gcc/fortran/resolve.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/resolve.cc	Sun Aug  2 22:32:07 2026
*************** impure_stmt_fcn (gfc_expr *e, gfc_symbol
*** 3292,3298 ****
  	|| e->symtree->n.sym->attr.proc == PROC_ST_FUNCTION)
      return false;
  
!   return gfc_pure_function (e, &name) ? false : true;
  }
  
  
--- 3292,3298 ----
  	|| e->symtree->n.sym->attr.proc == PROC_ST_FUNCTION)
      return false;
  
!   return !gfc_pure_function (e, &name);
  }
  
  
*************** resolve_block_construct (gfc_code* code)
*** 12970,12979 ****
  
    /* For an ASSOCIATE block, the associations (and their targets) will be
       resolved by gfc_resolve_symbol, during resolution of the BLOCK's
!      namespace.  */
!   gfc_resolve (ns);
  }
  
  
  /* Resolve lists of blocks found in IF, SELECT CASE, WHERE, FORALL, GOTO and
     DO code nodes.  */
--- 12970,12998 ----
  
    /* For an ASSOCIATE block, the associations (and their targets) will be
       resolved by gfc_resolve_symbol, during resolution of the BLOCK's
!      namespace.  However, marking variables as used ans defined requires
!      passing ext.block.assoc.  */
!   gfc_resolve (ns, code->ext.block.assoc);
  }
  
+ /* Mark everything in an association list as used and set if applicable,
+    respectively.  */
+ 
+ static void
+ mark_assoc_used (gfc_association_list *a)
+ {
+   while (a != NULL)
+     {
+       gfc_symbol *n_sym = a->st->n.sym;
+       if (n_sym->attr.value_used != VALUE_UNUSED)
+ 	gfc_value_used_expr (a->target, n_sym->attr.value_used);
+ 
+       if (a->variable && n_sym->attr.value_set != VALUE_UNSET)
+ 	gfc_expr_set_at (a->target, &n_sym->other_loc, n_sym->attr.value_set);
+ 
+       a = a->next;
+     }
+ }
  
  /* Resolve lists of blocks found in IF, SELECT CASE, WHERE, FORALL, GOTO and
     DO code nodes.  */
*************** gfc_resolve_blocks (gfc_code *b, gfc_nam
*** 13053,13058 ****
--- 13072,13080 ----
  	case EXEC_OACC_ENTER_DATA:
  	case EXEC_OACC_EXIT_DATA:
  	case EXEC_OACC_ROUTINE:
+ 	case EXEC_OACC_INIT:
+ 	case EXEC_OACC_SHUTDOWN:
+ 	case EXEC_OACC_SET:
  	case EXEC_OMP_ALLOCATE:
  	case EXEC_OMP_ALLOCATORS:
  	case EXEC_OMP_ASSUME:
*************** start:
*** 14839,14844 ****
--- 14861,14869 ----
  	case EXEC_OACC_EXIT_DATA:
  	case EXEC_OACC_ATOMIC:
  	case EXEC_OACC_DECLARE:
+ 	case EXEC_OACC_INIT:
+ 	case EXEC_OACC_SHUTDOWN:
+ 	case EXEC_OACC_SET:
  	  gfc_resolve_oacc_directive (code, ns);
  	  break;
  
*************** warn_unused_vs_set (gfc_namespace *ns)
*** 21031,21037 ****
     which functions or subroutines.  */
  
  void
! gfc_resolve (gfc_namespace *ns)
  {
    gfc_namespace *old_ns;
    code_stack *old_cs_base;
--- 21056,21062 ----
     which functions or subroutines.  */
  
  void
! gfc_resolve (gfc_namespace *ns, gfc_association_list *a)
  {
    gfc_namespace *old_ns;
    code_stack *old_cs_base;
*************** gfc_resolve (gfc_namespace *ns)
*** 21053,21058 ****
--- 21078,21084 ----
    resolve_types (ns);
    component_assignment_level = 0;
    resolve_codes (ns);
+   mark_assoc_used (a);
  
    if (warn_unused_but_set_variable || warn_unused_intent_out
        || warn_unused_read || warn_undefined_vars)
diff -Nrcpad gcc-17-20260727/gcc/fortran/st.cc gcc-17-20260802/gcc/fortran/st.cc
*** gcc-17-20260727/gcc/fortran/st.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/st.cc	Sun Aug  2 22:32:07 2026
*************** gfc_free_statement (gfc_code *p)
*** 221,226 ****
--- 221,229 ----
      case EXEC_OACC_ENTER_DATA:
      case EXEC_OACC_EXIT_DATA:
      case EXEC_OACC_ROUTINE:
+     case EXEC_OACC_INIT:
+     case EXEC_OACC_SHUTDOWN:
+     case EXEC_OACC_SET:
      case EXEC_OMP_ALLOCATE:
      case EXEC_OMP_ALLOCATORS:
      case EXEC_OMP_ASSUME:
*************** gfc_free_association_list (gfc_associati
*** 366,368 ****
--- 369,468 ----
    gfc_free_association_list (assoc->next);
    free (assoc);
  }
+ 
+ 
+ /* Function to generate IF (ALLOCATED(expr)) DEALLOCATE(expr)  */
+ 
+ static gfc_code *
+ get_guarded_dealloc (gfc_namespace *ns, gfc_expr *expr)
+ {
+   gfc_code *dealloc = gfc_get_code (EXEC_IF);
+   dealloc->block = gfc_get_code (EXEC_IF);
+ #define ALLOCATED dealloc->block->expr1
+   ALLOCATED = gfc_get_expr ();
+   ALLOCATED->expr_type = EXPR_FUNCTION;
+   ALLOCATED->where = gfc_current_locus;
+   gfc_find_sym_tree ("allocated", ns, 1, &ALLOCATED->symtree);
+   if (!ALLOCATED->symtree)
+     {
+       gfc_get_sym_tree ("allocated", ns, &ALLOCATED->symtree, false);
+       gfc_commit_symbol (ALLOCATED->symtree->n.sym);
+     }
+   ALLOCATED->symtree->n.sym->attr.flavor = FL_PROCEDURE;
+   ALLOCATED->symtree->n.sym->attr.intrinsic = 1;
+   ALLOCATED->symtree->n.sym->result = ALLOCATED->symtree->n.sym;
+   ALLOCATED->ts.type = BT_LOGICAL;
+   ALLOCATED->ts.kind = gfc_default_logical_kind;
+   ALLOCATED->value.function.isym
+ 			= gfc_intrinsic_function_by_id (GFC_ISYM_ALLOCATED);
+   ALLOCATED->value.function.actual = gfc_get_actual_arglist ();
+   ALLOCATED->value.function.actual->expr = gfc_copy_expr (expr);
+ #undef ALLOCATED
+   dealloc->block->next = gfc_get_code (EXEC_DEALLOCATE);
+   dealloc->block->next->ext.alloc.list = gfc_get_alloc ();
+   dealloc->block->next->ext.alloc.list->expr = gfc_copy_expr (expr);
+   return dealloc;
+ }
+ 
+ 
+ /* F2018(11.1.5.2): Insert code to deallocate coarrays, allocated within a team
+    block. This uses the previous function to effect a guarded deallocation of
+    allocated coarray expressions. These are gathered in gfc_match_allocate and
+    stashed in team_allocs.  */
+ 
+ void
+ deallocate_allocated_coarrays (vec<gfc_expr *> *team_allocs)
+ {
+   gfc_code *dealloc, *last_stmt;
+   gfc_ref *ref, *aref = NULL;
+   int i;
+ 
+   for (gfc_expr *e : *team_allocs)
+     {
+       if (!e)
+ 	continue;
+ 
+       /* Get the last array_ref right.  */
+       for (ref = e->ref; ref; ref = ref->next)
+ 	if (ref->type == REF_ARRAY)
+ 	  aref = ref;
+ 
+       if (aref->u.ar.as->rank)
+ 	{
+ 	  aref->u.ar.type = AR_FULL;
+ 	  aref->u.ar.dimen = aref->u.ar.as->rank;
+ 	  for (i = 0; i < aref->u.ar.dimen; i++)
+ 	    {
+ 	      aref->u.ar.dimen_type[i] = DIMEN_RANGE;
+ 
+ 	      if (aref->u.ar.start[i]) gfc_free_expr (aref->u.ar.start[i]);
+ 	      if (aref->u.ar.end[i]) gfc_free_expr (aref->u.ar.end[i]);
+ 	      if (aref->u.ar.stride[i]) gfc_free_expr (aref->u.ar.stride[i]);
+ 	      aref->u.ar.start[i] = aref->u.ar.end[i] = aref->u.ar.stride[i] = NULL;
+ 	    }
+ 	}
+ 
+       for (i = aref->u.ar.as->rank;
+ 	   i < aref->u.ar.as->rank + aref->u.ar.as->corank; i++)
+ 	 aref->u.ar.dimen_type[i] = DIMEN_THIS_IMAGE;
+ 
+       /* Insert the deallocation code before the END TEAM statement.  */
+       last_stmt = gfc_current_ns->code;
+       while (last_stmt)
+ 	{
+ 	  last_stmt = last_stmt->next;
+ 	  if (last_stmt->next->op == EXEC_END_TEAM || !last_stmt->next)
+ 	    {
+ 	      dealloc = get_guarded_dealloc (gfc_current_ns, e);
+ 	      if (dealloc)
+ 		{
+ 		  dealloc->next = last_stmt->next;
+ 		  last_stmt->next = dealloc;
+ 		  break;
+ 		}
+ 	    }
+ 	}
+       gfc_free_expr (e);
+       e = NULL;
+     }
+ }
diff -Nrcpad gcc-17-20260727/gcc/fortran/trans-openmp.cc gcc-17-20260802/gcc/fortran/trans-openmp.cc
*** gcc-17-20260727/gcc/fortran/trans-openmp.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/trans-openmp.cc	Sun Aug  2 22:32:07 2026
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5640,5645 ****
--- 5640,5674 ----
        omp_clauses = gfc_trans_add_clause (c, omp_clauses);
      }
  
+   if (clauses->message || clauses->severity != OMP_SEVERITY_UNSET)
+     {
+       tree message = NULL_TREE;
+       tree len = NULL_TREE;
+ 
+       if (clauses->message)
+ 	{
+ 	  gfc_init_se (&se, NULL);
+ 	  gfc_conv_expr (&se, clauses->message);
+ 	  gfc_add_block_to_block (block, &se.pre);
+ 	  message = se.expr;
+ 	  len = se.string_length;
+ 	  if (!DECL_P (se.expr))
+ 	    message = gfc_evaluate_now (message, block);
+ 	  gfc_add_block_to_block (block, &se.post);
+ 
+ 	  if (!POINTER_TYPE_P (TREE_TYPE (message)))
+ 	    /* To ensure an ARRAY_TYPE is not passed as such.  */
+ 	    message = gfc_build_addr_expr (NULL, message);
+ 	}
+ 
+       c = build_omp_clause (gfc_get_location (&where), OMP_CLAUSE_MESSAGE);
+       OMP_CLAUSE_MESSAGE_EXPR (c) = message;
+       OMP_CLAUSE_MESSAGE_LEN (c) = len;
+       if (clauses->severity == OMP_SEVERITY_WARNING)
+ 	OMP_CLAUSE_MESSAGE_SEVERITY_WARN (c) = 1;
+       omp_clauses = gfc_trans_add_clause (c, omp_clauses);
+     }
+ 
    if (clauses->novariants)
      {
        tree novariants_var;
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5672,5700 ****
  
    if (clauses->num_threads_list)
      {
!       tree num_threads;
! 
!       if (clauses->num_threads_dims)
! 	sorry_at (gfc_get_location (&clauses->num_threads_list->expr->where),
! 		  "%<num_threads%> with %<dims%> modifier");
!       else if (clauses->num_threads_strict)
! 	sorry_at (gfc_get_location (&clauses->num_threads_list->expr->where),
! 		  "%<num_threads%> with %<strict%> modifier");
!       else if (clauses->num_threads_list->next)
! 	{
! 	  gfc_expr *expr = clauses->num_threads_list->next->expr;
! 	  sorry_at (gfc_get_location (&expr->where),
! 		    "%<num_threads%> with more than one argument");
! 	}
! 
!       gfc_init_se (&se, NULL);
!       gfc_conv_expr (&se, clauses->num_threads_list->expr);
!       gfc_add_block_to_block (block, &se.pre);
!       num_threads = gfc_evaluate_now (se.expr, block);
!       gfc_add_block_to_block (block, &se.post);
! 
        c = build_omp_clause (gfc_get_location (&where), OMP_CLAUSE_NUM_THREADS);
!       OMP_CLAUSE_NUM_THREADS_EXPR (c) = num_threads;
        omp_clauses = gfc_trans_add_clause (c, omp_clauses);
      }
  
--- 5701,5715 ----
  
    if (clauses->num_threads_list)
      {
!       tree num_threads = NULL_TREE;
!       for (gfc_expr_list *el = clauses->num_threads_list; el; el = el->next)
! 	num_threads = tree_cons (NULL_TREE,
! 				 gfc_convert_expr_to_tree (block, el->expr),
! 				 num_threads);
        c = build_omp_clause (gfc_get_location (&where), OMP_CLAUSE_NUM_THREADS);
!       OMP_CLAUSE_NUM_THREADS_EXPR (c) = nreverse (num_threads);
!       OMP_CLAUSE_NUM_THREADS_STRICT (c) = clauses->num_threads_strict;
!       OMP_CLAUSE_NUM_THREADS_DIMS (c) = clauses->num_threads_dims;
        omp_clauses = gfc_trans_add_clause (c, omp_clauses);
      }
  
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5995,6026 ****
  
    if (clauses->num_teams_list)
      {
!       tree num_teams_lower = NULL_TREE, num_teams_upper;
! 
!       if (clauses->num_teams_dims)
! 	sorry_at (gfc_get_location (&clauses->num_teams_list->expr->where),
! 		    "%<num_teams%> with %<dims%> modifier");
! 
!       gfc_expr_list *el = clauses->num_teams_list;
!       if (el->next)
! 	{
! 	  gfc_init_se (&se, NULL);
! 	  gfc_conv_expr (&se, el->expr);
! 	  gfc_add_block_to_block (block, &se.pre);
! 	  num_teams_lower = gfc_evaluate_now (se.expr, block);
! 	  gfc_add_block_to_block (block, &se.post);
! 	  el = el->next;
! 	}
! 
!       gfc_init_se (&se, NULL);
!       gfc_conv_expr (&se, el->expr);
!       gfc_add_block_to_block (block, &se.pre);
!       num_teams_upper = gfc_evaluate_now (se.expr, block);
!       gfc_add_block_to_block (block, &se.post);
! 
        c = build_omp_clause (gfc_get_location (&where), OMP_CLAUSE_NUM_TEAMS);
!       OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR (c) = num_teams_lower;
!       OMP_CLAUSE_NUM_TEAMS_UPPER_EXPR (c) = num_teams_upper;
        omp_clauses = gfc_trans_add_clause (c, omp_clauses);
      }
  
--- 6010,6024 ----
  
    if (clauses->num_teams_list)
      {
!       tree num_teams = NULL_TREE;
!       for (gfc_expr_list *el = clauses->num_teams_list; el; el = el->next)
! 	num_teams = tree_cons (NULL_TREE,
! 			       gfc_convert_expr_to_tree (block, el->expr),
! 			       num_teams);
        c = build_omp_clause (gfc_get_location (&where), OMP_CLAUSE_NUM_TEAMS);
!       OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR (c) = NULL_TREE;
!       OMP_CLAUSE_NUM_TEAMS_UPPER_EXPR (c) = nreverse (num_teams);
!       OMP_CLAUSE_NUM_TEAMS_DIMS (c) = clauses->num_teams_dims;
        omp_clauses = gfc_trans_add_clause (c, omp_clauses);
      }
  
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 6045,6066 ****
  
    if (clauses->thread_limit_list)
      {
!       tree thread_limit;
! 
!       if (clauses->thread_limit_dims)
! 	sorry_at (gfc_get_location (&clauses->thread_limit_list->expr->where),
! 		    "%<thread_limit%> with %<dims%> modifier");
!       else if (clauses->thread_limit_strict)
! 	sorry_at (gfc_get_location (&clauses->thread_limit_list->expr->where),
! 		    "%<thread_limit%> with %<strict%> modifier");
!       gfc_init_se (&se, NULL);
!       gfc_conv_expr (&se, clauses->thread_limit_list->expr);
!       gfc_add_block_to_block (block, &se.pre);
!       thread_limit = gfc_evaluate_now (se.expr, block);
!       gfc_add_block_to_block (block, &se.post);
! 
        c = build_omp_clause (gfc_get_location (&where), OMP_CLAUSE_THREAD_LIMIT);
!       OMP_CLAUSE_THREAD_LIMIT_EXPR (c) = thread_limit;
        omp_clauses = gfc_trans_add_clause (c, omp_clauses);
      }
  
--- 6043,6057 ----
  
    if (clauses->thread_limit_list)
      {
!       tree thread_limit = NULL_TREE;
!       for (gfc_expr_list *el = clauses->thread_limit_list; el; el = el->next)
! 	thread_limit = tree_cons (NULL_TREE,
! 				  gfc_convert_expr_to_tree (block, el->expr),
! 				  thread_limit);
        c = build_omp_clause (gfc_get_location (&where), OMP_CLAUSE_THREAD_LIMIT);
!       OMP_CLAUSE_THREAD_LIMIT_EXPR (c) = nreverse (thread_limit);
!       OMP_CLAUSE_THREAD_LIMIT_STRICT (c) = clauses->thread_limit_strict;
!       OMP_CLAUSE_THREAD_LIMIT_DIMS (c) = clauses->thread_limit_dims;
        omp_clauses = gfc_trans_add_clause (c, omp_clauses);
      }
  
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 6421,6426 ****
--- 6412,6421 ----
    /* OpenACC 'nohost' clauses cannot appear here.  */
    gcc_checking_assert (!clauses->nohost);
  
+   /* OpenACC 'device_num' and 'device_type' clauses cannot appear here.  */
+   gcc_checking_assert (!clauses->device_num_expr
+ 		       && !clauses->oacc_device_type_present);
+ 
    return nreverse (omp_clauses);
  }
  
*************** gfc_trans_oacc_construct (gfc_code *code
*** 6491,6497 ****
    return gfc_finish_block (&block);
  }
  
! /* update, enter_data, exit_data, cache. */
  static tree
  gfc_trans_oacc_executable_directive (gfc_code *code)
  {
--- 6486,6492 ----
    return gfc_finish_block (&block);
  }
  
! /* update, enter_data, exit_data, cache, init, set, shutdown.  */
  static tree
  gfc_trans_oacc_executable_directive (gfc_code *code)
  {
*************** gfc_trans_oacc_executable_directive (gfc
*** 6513,6518 ****
--- 6508,6517 ----
        case EXEC_OACC_CACHE:
  	construct_code = OACC_CACHE;
  	break;
+       case EXEC_OACC_INIT:
+       case EXEC_OACC_SHUTDOWN:
+       case EXEC_OACC_SET:
+ 	goto builtin_oacc_exec_directive;
        default:
  	gcc_unreachable ();
      }
*************** gfc_trans_oacc_executable_directive (gfc
*** 6524,6529 ****
--- 6523,6589 ----
  		     oacc_clauses);
    gfc_add_expr_to_block (&block, stmt);
    return gfc_finish_block (&block);
+ 
+ builtin_oacc_exec_directive:
+ 
+   enum built_in_function builtin_code;
+ 
+   switch (code->op)
+   {
+     case EXEC_OACC_INIT:
+       builtin_code = BUILT_IN_GOACC_INIT;
+       break;
+     case EXEC_OACC_SHUTDOWN:
+       builtin_code = BUILT_IN_GOACC_SHUTDOWN;
+       break;
+     case EXEC_OACC_SET:
+       builtin_code = BUILT_IN_GOACC_SET_DEVICE;
+       break;
+     default:
+       gcc_unreachable ();
+   }
+ 
+   location_t loc = input_location;
+   gfc_omp_clauses *clauses = code->ext.omp_clauses;
+ 
+   gfc_start_block (&block);
+ 
+   tree n_device;
+   if (clauses->device_num_expr)
+     n_device = gfc_convert_expr_to_tree (&block, clauses->device_num_expr);
+   else
+     /* no 'device_num' clause specified by
+        the user, we don't modify the value of ICV
+        'acc-current-device-num-var' or we do not
+        take any action in init and shutdown directive
+        using -1 value.  */
+     n_device = build_int_cst (integer_type_node, -1);
+ 
+   /* GOMP_DEVICE_NONE is used to make the operation
+      in all the devices.
+ 
+      GOMP_DEVICE_DEFAULT is used in set directive
+      to do nothing if the clause do not appear.  */
+   int device_type = code->op == EXEC_OACC_SET ?
+ 		    GOMP_DEVICE_DEFAULT	      :
+ 		    GOMP_DEVICE_NONE;
+   if (clauses->oacc_device_type_present)
+     device_type = clauses->oacc_device_type;
+ 
+   tree d_type = build_int_cst (integer_type_node, device_type);
+ 
+   stmt = builtin_decl_explicit (builtin_code);
+ 
+   stmt = build_call_expr_loc (loc, stmt, 2, n_device, d_type);
+ 
+   if (clauses->if_expr)
+     stmt = build3_loc (input_location, COND_EXPR, void_type_node,
+ 		       gfc_convert_expr_to_tree (&block, clauses->if_expr),
+ 		       stmt, NULL_TREE);
+ 
+   gfc_add_expr_to_block (&block, stmt);
+ 
+   return gfc_finish_block (&block);
  }
  
  static tree
*************** gfc_split_omp_clauses (gfc_code *code,
*** 8527,8532 ****
--- 8587,8596 ----
  	    = code->ext.omp_clauses->nowait;
  	  clausesa[GFC_OMP_SPLIT_TARGET].device_type
  	    = code->ext.omp_clauses->device_type;
+ 	  clausesa[GFC_OMP_SPLIT_TARGET].message
+ 	    = code->ext.omp_clauses->message;
+ 	  clausesa[GFC_OMP_SPLIT_TARGET].severity
+ 	    = code->ext.omp_clauses->severity;
  	}
        if (mask & GFC_OMP_MASK_TEAMS)
  	{
*************** gfc_split_omp_clauses (gfc_code *code,
*** 8547,8552 ****
--- 8611,8621 ----
  	    = code->ext.omp_clauses->lists[OMP_LIST_SHARED];
  	  clausesa[GFC_OMP_SPLIT_TEAMS].default_sharing
  	    = code->ext.omp_clauses->default_sharing;
+ 	  /* Message is used on target, teams, and parallel.  */
+ 	  clausesa[GFC_OMP_SPLIT_TEAMS].message
+ 	    = code->ext.omp_clauses->message;
+ 	  clausesa[GFC_OMP_SPLIT_TEAMS].severity
+ 	    = code->ext.omp_clauses->severity;
  	}
        if (mask & GFC_OMP_MASK_DISTRIBUTE)
  	{
*************** gfc_split_omp_clauses (gfc_code *code,
*** 8589,8594 ****
--- 8658,8667 ----
  	  /* And this is copied to all.  */
  	  clausesa[GFC_OMP_SPLIT_PARALLEL].if_expr
  	    = code->ext.omp_clauses->if_expr;
+ 	  clausesa[GFC_OMP_SPLIT_PARALLEL].message
+ 	    = code->ext.omp_clauses->message;
+ 	  clausesa[GFC_OMP_SPLIT_PARALLEL].severity
+ 	    = code->ext.omp_clauses->severity;
  	}
        if (mask & GFC_OMP_MASK_MASKED)
  	clausesa[GFC_OMP_SPLIT_MASKED].filter = code->ext.omp_clauses->filter;
*************** gfc_trans_oacc_directive (gfc_code *code
*** 9889,9894 ****
--- 9962,9970 ----
      case EXEC_OACC_CACHE:
      case EXEC_OACC_ENTER_DATA:
      case EXEC_OACC_EXIT_DATA:
+     case EXEC_OACC_INIT:
+     case EXEC_OACC_SHUTDOWN:
+     case EXEC_OACC_SET:
        return gfc_trans_oacc_executable_directive (code);
      case EXEC_OACC_WAIT:
        return gfc_trans_oacc_wait_directive (code);
diff -Nrcpad gcc-17-20260727/gcc/fortran/trans.cc gcc-17-20260802/gcc/fortran/trans.cc
*** gcc-17-20260727/gcc/fortran/trans.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/trans.cc	Sun Aug  2 22:32:07 2026
*************** trans_code (gfc_code * code, tree cond)
*** 2685,2690 ****
--- 2685,2693 ----
  	case EXEC_OACC_EXIT_DATA:
  	case EXEC_OACC_ATOMIC:
  	case EXEC_OACC_DECLARE:
+ 	case EXEC_OACC_INIT:
+ 	case EXEC_OACC_SHUTDOWN:
+ 	case EXEC_OACC_SET:
  	  res = gfc_trans_oacc_directive (code);
  	  break;
  
diff -Nrcpad gcc-17-20260727/gcc/fortran/types.def gcc-17-20260802/gcc/fortran/types.def
*** gcc-17-20260727/gcc/fortran/types.def	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/fortran/types.def	Sun Aug  2 22:32:07 2026
*************** DEF_FUNCTION_TYPE_2 (BT_FN_VOID_CONST_PT
*** 125,130 ****
--- 125,131 ----
  DEF_FUNCTION_TYPE_2 (BT_FN_PTR_CONST_PTR_INT, BT_PTR, BT_CONST_PTR, BT_INT)
  DEF_FUNCTION_TYPE_2 (BT_FN_VOID_ULONGLONG_ULONGLONG,
  		     BT_VOID, BT_ULONGLONG, BT_ULONGLONG)
+ DEF_FUNCTION_TYPE_2 (BT_FN_VOID_INT_INT, BT_VOID, BT_INT, BT_INT)
  
  DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR)
  
diff -Nrcpad gcc-17-20260727/gcc/gcc.cc gcc-17-20260802/gcc/gcc.cc
*** gcc-17-20260727/gcc/gcc.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/gcc.cc	Sun Aug  2 22:32:07 2026
*************** execute (void)
*** 3563,3571 ****
  		 thinking there's a compiler bug.  Much more likely is
  		 the user or OOM killer nuked it.  */
  	      fatal_error (input_location,
! 			   "%s signal terminated program %s",
! 			   strsignal (WTERMSIG (status)),
! 			   commands[i].prog);
  	      break;
  
  #ifdef SIGPIPE
--- 3563,3572 ----
  		 thinking there's a compiler bug.  Much more likely is
  		 the user or OOM killer nuked it.  */
  	      fatal_error (input_location,
! 			   "%s terminated by signal %d (%s)",
! 			   commands[i].prog,
! 			   WTERMSIG (status),
! 			   strsignal (WTERMSIG (status)));
  	      break;
  
  #ifdef SIGPIPE
diff -Nrcpad gcc-17-20260727/gcc/gimple-fold.cc gcc-17-20260802/gcc/gimple-fold.cc
*** gcc-17-20260727/gcc/gimple-fold.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/gimple-fold.cc	Sun Aug  2 22:32:07 2026
*************** follow_outer_ssa_edges (tree val)
*** 7677,7693 ****
  	      && (def_bb == fosa_bb
  		  || dominated_by_p (CDI_DOMINATORS, fosa_bb, def_bb))))
  	return val;
-       /* We cannot temporarily rewrite stmts with undefined overflow
- 	 behavior, so avoid expanding them.  */
-       if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (val))
- 	   || POINTER_TYPE_P (TREE_TYPE (val)))
- 	  && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (val)))
- 	return NULL_TREE;
        flow_sensitive_info_storage storage;
        storage.save_and_clear (val);
        /* If the definition does not dominate fosa_bb temporarily reset
  	 flow-sensitive info.  */
        fosa_unwind->safe_push (std::make_pair (val, storage));
        return val;
      }
    return val;
--- 7677,7694 ----
  	      && (def_bb == fosa_bb
  		  || dominated_by_p (CDI_DOMINATORS, fosa_bb, def_bb))))
  	return val;
        flow_sensitive_info_storage storage;
        storage.save_and_clear (val);
        /* If the definition does not dominate fosa_bb temporarily reset
  	 flow-sensitive info.  */
        fosa_unwind->safe_push (std::make_pair (val, storage));
+       /* We cannot temporarily rewrite stmts with undefined overflow
+ 	 behavior, so avoid expanding them. But still save off the
+ 	 flow-sensitive info as we might be using the ssa name as the leaf.  */
+       if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (val))
+ 	   || POINTER_TYPE_P (TREE_TYPE (val)))
+ 	  && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (val)))
+ 	return NULL_TREE;
        return val;
      }
    return val;
diff -Nrcpad gcc-17-20260727/gcc/gimple-isel.cc gcc-17-20260802/gcc/gimple-isel.cc
*** gcc-17-20260727/gcc/gimple-isel.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/gimple-isel.cc	Sun Aug  2 22:32:07 2026
*************** gimple_expand_vec_set_extract_expr (stru
*** 96,105 ****
      return false;
  
    tree op0 = TREE_OPERAND (ref, 0);
!   if (TREE_CODE (op0) == VIEW_CONVERT_EXPR && DECL_P (TREE_OPERAND (op0, 0))
        && VECTOR_TYPE_P (TREE_TYPE (TREE_OPERAND (op0, 0)))
!       && TYPE_MODE (TREE_TYPE (ref))
! 	   == TYPE_MODE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (op0, 0)))))
      {
        tree pos = TREE_OPERAND (ref, 1);
  
--- 96,106 ----
      return false;
  
    tree op0 = TREE_OPERAND (ref, 0);
!   if (TREE_CODE (op0) == VIEW_CONVERT_EXPR
!       && DECL_P (TREE_OPERAND (op0, 0))
        && VECTOR_TYPE_P (TREE_TYPE (TREE_OPERAND (op0, 0)))
!       && (TYPE_MODE (TREE_TYPE (ref))
! 	  == TYPE_MODE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (op0, 0))))))
      {
        tree pos = TREE_OPERAND (ref, 1);
  
*************** gimple_expand_vec_set_extract_expr (stru
*** 111,119 ****
        if (poly_int_tree_p (idx, &idx_poly))
  	{
  	  poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (TREE_TYPE (view_op0));
! 	  if (known_gt (idx_poly, nelts))
  	    return false;
  	}
        machine_mode outermode = TYPE_MODE (TREE_TYPE (view_op0));
        machine_mode extract_mode = TYPE_MODE (TREE_TYPE (ref));
  
--- 112,124 ----
        if (poly_int_tree_p (idx, &idx_poly))
  	{
  	  poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (TREE_TYPE (view_op0));
! 	  if (known_ge (idx_poly, nelts))
  	    return false;
  	}
+       else if (poly_int_tree_p (idx))
+ 	// if idx doesn't fit into poly_uint64, but is constant, it
+ 	// must be out of bounds
+ 	return false;
        machine_mode outermode = TYPE_MODE (TREE_TYPE (view_op0));
        machine_mode extract_mode = TYPE_MODE (TREE_TYPE (ref));
  
diff -Nrcpad gcc-17-20260727/gcc/gimple-lower-bitint.cc gcc-17-20260802/gcc/gimple-lower-bitint.cc
*** gcc-17-20260727/gcc/gimple-lower-bitint.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/gimple-lower-bitint.cc	Sun Aug  2 22:32:07 2026
*************** bitint_large_huge::handle_plus_minus (tr
*** 1287,1302 ****
      }
    else
      {
!       tree in = add_cast (rhs1_type, data_in);
!       lhs = make_ssa_name (rhs1_type);
        g = gimple_build_assign (lhs, code, rhs1, rhs2);
        insert_before (g);
!       rhs1 = make_ssa_name (rhs1_type);
        g = gimple_build_assign (rhs1, code, lhs, in);
        insert_before (g);
        m_data[m_data_cnt] = NULL_TREE;
        m_data_cnt += 2;
!       return rhs1;
      }
    rhs1 = make_ssa_name (m_limb_type);
    g = gimple_build_assign (rhs1, REALPART_EXPR,
--- 1287,1313 ----
      }
    else
      {
!       /* Always perform the two additions or subtractions in
! 	 unsigned type, avoid introducing a temporary UB.  While
! 	 the end result of the 2 additions or 2 subtractions in
! 	 a valid program should not overflow, temporarily it can.
! 	 See PR126503.  */
!       tree utype = unsigned_type_for (rhs1_type);
!       tree in = add_cast (utype, data_in);
!       lhs = make_ssa_name (utype);
!       if (utype != rhs1_type)
! 	{
! 	  rhs1 = add_cast (utype, rhs1);
! 	  rhs2 = add_cast (utype, rhs2);
! 	}
        g = gimple_build_assign (lhs, code, rhs1, rhs2);
        insert_before (g);
!       rhs1 = make_ssa_name (utype);
        g = gimple_build_assign (rhs1, code, lhs, in);
        insert_before (g);
        m_data[m_data_cnt] = NULL_TREE;
        m_data_cnt += 2;
!       return utype != rhs1_type ? add_cast (rhs1_type, rhs1) : rhs1;
      }
    rhs1 = make_ssa_name (m_limb_type);
    g = gimple_build_assign (rhs1, REALPART_EXPR,
*************** gimple_lower_bitint (void)
*** 7577,7582 ****
--- 7588,7633 ----
  		add_phi_arg (phi, rhs2, e3, UNKNOWN_LOCATION);
  		break;
  	      }
+ 	  else if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (s)
+ 		   && is_gimple_call (stmt)
+ 		   && gimple_call_internal_p (stmt))
+ 	    switch (gimple_call_internal_fn (stmt))
+ 	      {
+ 	      case IFN_UBSAN_CHECK_ADD:
+ 	      case IFN_UBSAN_CHECK_SUB:
+ 		if (!bitint_big_endian)
+ 		  break;
+ 		/* FALLTHRU */
+ 	      case IFN_UBSAN_CHECK_MUL:
+ 	      case IFN_BSWAP:
+ 	      case IFN_BITREVERSE:
+ 		for (unsigned i = 0; i < gimple_call_num_args (stmt); ++i)
+ 		  {
+ 		    location_t loc = gimple_location (stmt);
+ 		    gsi = gsi_for_stmt (stmt);
+ 		    /* Similar case to multiplication/division with (ab)
+ 		       above for internal functions which set muldiv_p.  */
+ 		    tree arg = gimple_call_arg (stmt, i);
+ 		    if (TREE_CODE (arg) == SSA_NAME
+ 			&& SSA_NAME_OCCURS_IN_ABNORMAL_PHI (arg))
+ 		      {
+ 			first_large_huge = 0;
+ 			tree t = make_ssa_name (TREE_TYPE (arg));
+ 			g = gimple_build_assign (t, SSA_NAME, arg);
+ 			gsi_insert_before (&gsi, g, GSI_SAME_STMT);
+ 			gimple_set_location (g, loc);
+ 			gimple_call_set_arg (stmt, i, t);
+ 			if (i == 0
+ 			    && gimple_call_num_args (stmt) >= 2
+ 			    && gimple_call_arg (stmt, 1) == arg)
+ 			  gimple_call_set_arg (stmt, 1, t);
+ 			update_stmt (stmt);
+ 		      }
+ 		  }
+ 		break;
+ 	      default:
+ 		break;
+ 	      }
  	}
        /* We need to also rewrite stores of large/huge _BitInt INTEGER_CSTs
  	 into memory.  Such functions could have no large/huge SSA_NAMEs.  */
diff -Nrcpad gcc-17-20260727/gcc/gimple-pretty-print.cc gcc-17-20260802/gcc/gimple-pretty-print.cc
*** gcc-17-20260727/gcc/gimple-pretty-print.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/gimple-pretty-print.cc	Sun Aug  2 22:32:07 2026
*************** dump_phi_nodes (pretty_printer *pp, basi
*** 3023,3030 ****
        if (!virtual_operand_p (gimple_phi_result (phi)) || (flags & TDF_VOPS))
          {
            INDENT (indent);
! 	  dump_gimple_phi (pp, phi, indent,
! 			   (flags & TDF_GIMPLE) ? false : true, flags);
            pp_newline (pp);
          }
      }
--- 3023,3029 ----
        if (!virtual_operand_p (gimple_phi_result (phi)) || (flags & TDF_VOPS))
          {
            INDENT (indent);
! 	  dump_gimple_phi (pp, phi, indent, !(flags & TDF_GIMPLE), flags);
            pp_newline (pp);
          }
      }
diff -Nrcpad gcc-17-20260727/gcc/gimplify.cc gcc-17-20260802/gcc/gimplify.cc
*** gcc-17-20260727/gcc/gimplify.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/gimplify.cc	Sun Aug  2 22:32:07 2026
*************** recalculate_side_effects (tree t)
*** 3361,3366 ****
--- 3361,3373 ----
        /* No side-effects.  */
        return;
  
+     case tcc_declaration:
+       /* These can have side-effects if TREE_THIS_VOLATILE,
+ 	 but those should be set elsewhere, not in
+ 	 recalculate_side_effects.  Can be triggered e.g. if
+ 	 a comparison is folded into one of its operands.  */
+       return;
+ 
      default:
        if (code == SSA_NAME)
  	/* No side-effects.  */
*************** gimplify_scan_omp_clauses (tree *list_p,
*** 14829,14835 ****
  	case OMP_CLAUSE_WORKER:
  	case OMP_CLAUSE_VECTOR:
  	  if (OMP_CLAUSE_OPERAND (c, 0)
! 	      && !is_gimple_min_invariant (OMP_CLAUSE_OPERAND (c, 0)))
  	    {
  	      if (error_operand_p (OMP_CLAUSE_OPERAND (c, 0)))
  		{
--- 14836,14858 ----
  	case OMP_CLAUSE_WORKER:
  	case OMP_CLAUSE_VECTOR:
  	  if (OMP_CLAUSE_OPERAND (c, 0)
! 	      && TREE_CODE (OMP_CLAUSE_OPERAND (c, 0)) == TREE_LIST)
! 	    {
! 	      for (tree t = OMP_CLAUSE_OPERAND (c, 0); t; t = TREE_CHAIN (t))
! 		if (!is_gimple_min_invariant (TREE_VALUE (t)))
! 		  {
! 		    if (error_operand_p (TREE_VALUE (t)))
! 		      {
! 			remove = true;
! 			break;
! 		      }
! 		    TREE_VALUE (t)
! 		      = get_initialized_tmp_var (TREE_VALUE (t), pre_p,
! 						 NULL, true);
! 		  }
! 	    }
! 	  else if (OMP_CLAUSE_OPERAND (c, 0)
! 		   && !is_gimple_min_invariant (OMP_CLAUSE_OPERAND (c, 0)))
  	    {
  	      if (error_operand_p (OMP_CLAUSE_OPERAND (c, 0)))
  		{
*************** gimplify_scan_omp_clauses (tree *list_p,
*** 14877,14882 ****
--- 14900,14906 ----
  	case OMP_CLAUSE_SEQ:
  	case OMP_CLAUSE_INDEPENDENT:
  	case OMP_CLAUSE_MERGEABLE:
+ 	case OMP_CLAUSE_MESSAGE:
  	case OMP_CLAUSE_PROC_BIND:
  	case OMP_CLAUSE_SAFELEN:
  	case OMP_CLAUSE_SIMDLEN:
*************** end_adjust_omp_map_clause:
*** 16432,16437 ****
--- 16456,16462 ----
  	case OMP_CLAUSE_EXCLUSIVE:
  	case OMP_CLAUSE_USES_ALLOCATORS:
  	case OMP_CLAUSE_DEVICE_TYPE:
+ 	case OMP_CLAUSE_MESSAGE:
  	  break;
  
  	case OMP_CLAUSE_NOHOST:
*************** gimplify_omp_workshare (tree *expr_p, gi
*** 19000,19014 ****
  	    tree err = builtin_decl_explicit (BUILT_IN_GOMP_ERROR);
  	    const char *str = "Executing device-type 'nohost' target region "
  			      "on the host";
! 	    const int len = strlen (str) + 1;
! 	    tree msg = build_string (len, str);
! 	    TREE_TYPE (msg) = build_array_type_nelts (char_type_node, len);
! 	    TREE_READONLY (msg) = 1;
! 	    TREE_STATIC (msg) = 1;
! 	    msg = build_fold_addr_expr (msg);
! 	    tree msglen = fold_build2 (MINUS_EXPR, size_type_node,
! 				       build_all_ones_cst (size_type_node),
! 				       size_one_node);
  	    err = build_call_expr_loc (loc, err, 2, msg, msglen);
  	    tree l1 = create_artificial_label (UNKNOWN_LOCATION);
  	    tree l2 = create_artificial_label (UNKNOWN_LOCATION);
--- 19025,19032 ----
  	    tree err = builtin_decl_explicit (BUILT_IN_GOMP_ERROR);
  	    const char *str = "Executing device-type 'nohost' target region "
  			      "on the host";
! 	    tree msg = build_string_literal (strlen (str) + 1, str);
! 	    tree msglen = build_int_cst (size_type_node, -2);
  	    err = build_call_expr_loc (loc, err, 2, msg, msglen);
  	    tree l1 = create_artificial_label (UNKNOWN_LOCATION);
  	    tree l2 = create_artificial_label (UNKNOWN_LOCATION);
diff -Nrcpad gcc-17-20260727/gcc/ipa-polymorphic-call.cc gcc-17-20260802/gcc/ipa-polymorphic-call.cc
*** gcc-17-20260727/gcc/ipa-polymorphic-call.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/ipa-polymorphic-call.cc	Sun Aug  2 22:32:07 2026
*************** static inline bool
*** 1405,1411 ****
  csftc_abort_walking_p (unsigned speculative)
  {
    unsigned max = param_max_speculative_devirt_maydefs;
!   return speculative > max ? true : false;
  }
  
  /* Callback of walk_aliased_vdefs and a helper function for
--- 1405,1411 ----
  csftc_abort_walking_p (unsigned speculative)
  {
    unsigned max = param_max_speculative_devirt_maydefs;
!   return speculative > max;
  }
  
  /* Callback of walk_aliased_vdefs and a helper function for
diff -Nrcpad gcc-17-20260727/gcc/jit/ChangeLog gcc-17-20260802/gcc/jit/ChangeLog
*** gcc-17-20260727/gcc/jit/ChangeLog	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/jit/ChangeLog	Sun Aug  2 22:32:07 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* jit-recording.cc (recording::context::set_bool_option): Remove
+ 	useless "? true : false".
+ 
  2026-06-17  Antoni Boucher  <bouanto@zoho.com>
  	    Robert Zakrzewski  <robert.zakrzewski1@stellantis.com>
  
diff -Nrcpad gcc-17-20260727/gcc/jit/jit-recording.cc gcc-17-20260802/gcc/jit/jit-recording.cc
*** gcc-17-20260727/gcc/jit/jit-recording.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/jit/jit-recording.cc	Sun Aug  2 22:32:07 2026
*************** recording::context::set_bool_option (enu
*** 1546,1552 ****
  		 "unrecognized (enum gcc_jit_bool_option) value: %i", opt);
        return;
      }
!   m_bool_options[opt] = value ? true : false;
    log_bool_option (opt);
  }
  
--- 1546,1552 ----
  		 "unrecognized (enum gcc_jit_bool_option) value: %i", opt);
        return;
      }
!   m_bool_options[opt] = value;
    log_bool_option (opt);
  }
  
*************** recording::context::set_inner_bool_optio
*** 1555,1561 ****
  					   int value)
  {
    gcc_assert (inner_opt >= 0 && inner_opt < NUM_INNER_BOOL_OPTIONS);
!   m_inner_bool_options[inner_opt] = value ? true : false;
    log_inner_bool_option (inner_opt);
  }
  
--- 1555,1561 ----
  					   int value)
  {
    gcc_assert (inner_opt >= 0 && inner_opt < NUM_INNER_BOOL_OPTIONS);
!   m_inner_bool_options[inner_opt] = value;
    log_inner_bool_option (inner_opt);
  }
  
diff -Nrcpad gcc-17-20260727/gcc/match.pd gcc-17-20260802/gcc/match.pd
*** gcc-17-20260727/gcc/match.pd	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/match.pd	Sun Aug  2 22:32:07 2026
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 1488,1493 ****
--- 1488,1508 ----
         && bitwise_inverted_equal_p (@0, @1, wascmp))
     { wascmp ? constant_boolean_node (false, type) : build_zero_cst (type); })))
  
+ /* zero_extend (X) & sign_extend (X) -> zero_extend (X) and
+    zero_extend (X) | sign_extend (X) -> sign_extend (X)  */
+ (for bitop (bit_and bit_ior)
+  (simplify
+   (bitop:c (convert @0) (convert (nop_convert@1 @0)))
+   (if (INTEGRAL_TYPE_P (type)
+        && INTEGRAL_TYPE_P (TREE_TYPE (@0))
+        && INTEGRAL_TYPE_P (TREE_TYPE (@1))
+        && TYPE_UNSIGNED (TREE_TYPE (@0)) != TYPE_UNSIGNED (TREE_TYPE (@1))
+        && TYPE_PRECISION (TREE_TYPE (@0)) == TYPE_PRECISION (TREE_TYPE (@1))
+        && TYPE_PRECISION (TREE_TYPE (@0)) <= TYPE_PRECISION (type))
+    (if ((bitop == BIT_AND_EXPR) == TYPE_UNSIGNED (TREE_TYPE (@0)))
+     (convert @0)
+     (convert @1)))))
+ 
  /* PR71636: Transform x & ((1U << b) - 1) -> x & ~(~0U << b);  */
  (simplify
    (bit_and:c @0 (plus:s (lshift:s integer_onep @1) integer_minus_onep))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 1655,1669 ****
         && (!wascmp || element_precision (type) == 1))
     @0)))
  
! /* ~(~a & b)  -->  a | ~b  */
! (simplify
!  (bit_not (bit_and:cs (bit_not @0) @1))
!  (bit_ior @0 (bit_not @1)))
! 
! /* ~(~a | b) --> a & ~b */
! (simplify
!  (bit_not (bit_ior:cs (bit_not @0) @1))
!  (bit_and @0 (bit_not @1)))
  
  /* (a ^ b) & ((b ^ c) ^ a) --> (a ^ b) & ~c */
  (simplify
--- 1670,1682 ----
         && (!wascmp || element_precision (type) == 1))
     @0)))
  
! /* ~(~a & b) --> a | ~b
!    ~(~a | b) --> a & ~b  */
! (for iop (bit_and bit_ior)
!      res (bit_ior bit_and)
!  (simplify
!   (bit_not (iop:cs (bit_not @0) @1))
!   (res @0 (bit_not @1))))
  
  /* (a ^ b) & ((b ^ c) ^ a) --> (a ^ b) & ~c */
  (simplify
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 1928,1957 ****
   (bit_xor:c (bit_ior:c @0 @1) (bit_ior:c @0 (bit_not @1)))
   (bit_not @0))
  
! /* (x & y) | ~(x | y) -> ~(x ^ y) */
! (simplify
!  (bit_ior:c (bit_and:s @0 @1) (bit_not:s (bit_ior:s @0 @1)))
!  (bit_not (bit_xor @0 @1)))
  
  /* (~x | y) ^ (x ^ y) -> x | ~y */
  (simplify
   (bit_xor:c (bit_ior:cs (bit_not @0) @1) (bit_xor:s @0 @1))
   (bit_ior @0 (bit_not @1)))
  
! /* (x ^ y) | ~(x | y) -> ~(x & y) */
! (simplify
!  (bit_ior:c (bit_xor:s @0 @1) (bit_not:s (bit_ior:s @0 @1)))
!  (bit_not (bit_and @0 @1)))
! 
! /* (x & y) ^ (x | y) -> x ^ y */
! (simplify
!  (bit_xor:c (bit_and @0 @1) (bit_ior @0 @1))
!  (bit_xor @0 @1))
! 
! /* (x ^ y) ^ (x | y) -> x & y */
! (simplify
!  (bit_xor:c (bit_xor @0 @1) (bit_ior @0 @1))
!  (bit_and @0 @1))
  
  /* (x & y) + (x ^ y) -> x | y */
  /* (x & y) | (x ^ y) -> x | y */
--- 1941,1966 ----
   (bit_xor:c (bit_ior:c @0 @1) (bit_ior:c @0 (bit_not @1)))
   (bit_not @0))
  
! /* (x & y) | ~(x | y) -> ~(x ^ y)
!    (x ^ y) | ~(x | y) -> ~(x & y)  */
! (for lop (bit_and bit_xor)
!      res (bit_xor bit_and)
!  (simplify
!   (bit_ior:c (lop:s @0 @1) (bit_not:s (bit_ior:s @0 @1)))
!   (bit_not (res @0 @1))))
  
  /* (~x | y) ^ (x ^ y) -> x | ~y */
  (simplify
   (bit_xor:c (bit_ior:cs (bit_not @0) @1) (bit_xor:s @0 @1))
   (bit_ior @0 (bit_not @1)))
  
! /* (x & y) ^ (x | y) -> x ^ y
!    (x ^ y) ^ (x | y) -> x & y  */
! (for lop (bit_and bit_xor)
!      res (bit_xor bit_and)
!  (simplify
!   (bit_xor:c (lop @0 @1) (bit_ior @0 @1))
!   (res @0 @1)))
  
  /* (x & y) + (x ^ y) -> x | y */
  /* (x & y) | (x ^ y) -> x | y */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 1966,1999 ****
   (plus:c (bit_and @0 @1) (bit_ior @0 @1))
   (plus @0 @1))
  
! /* (x + y) - (x | y) -> x & y */
! (simplify
!  (minus (plus @0 @1) (bit_ior @0 @1))
!  (if (!TYPE_OVERFLOW_SANITIZED (type) && !TYPE_OVERFLOW_TRAPS (type)
!       && !TYPE_SATURATING (type))
!   (bit_and @0 @1)))
! 
! /* (x + y) - (x & y) -> x | y */
! (simplify
!  (minus (plus @0 @1) (bit_and @0 @1))
!  (if (!TYPE_OVERFLOW_SANITIZED (type) && !TYPE_OVERFLOW_TRAPS (type)
!       && !TYPE_SATURATING (type))
!   (bit_ior @0 @1)))
  
  /* (x | y) - y -> (x & ~y) */
  (simplify
   (minus (bit_ior:cs @0 @1) @1)
   (bit_and @0 (bit_not @1)))
  
! /* (x | y) - (x ^ y) -> x & y */
! (simplify
!  (minus (bit_ior @0 @1) (bit_xor @0 @1))
!  (bit_and @0 @1))
! 
! /* (x | y) - (x & y) -> x ^ y */
! (simplify
!  (minus (bit_ior @0 @1) (bit_and @0 @1))
!  (bit_xor @0 @1))
  
  /* (x | y) & ~(x & y) -> x ^ y */
  (simplify
--- 1975,2002 ----
   (plus:c (bit_and @0 @1) (bit_ior @0 @1))
   (plus @0 @1))
  
! /* (x + y) - (x | y) -> x & y
!    (x + y) - (x & y) -> x | y  */
! (for rop (bit_ior bit_and)
!      res (bit_and bit_ior)
!  (simplify
!   (minus (plus @0 @1) (rop @0 @1))
!   (if (!TYPE_OVERFLOW_SANITIZED (type) && !TYPE_OVERFLOW_TRAPS (type)
!        && !TYPE_SATURATING (type))
!    (res @0 @1))))
  
  /* (x | y) - y -> (x & ~y) */
  (simplify
   (minus (bit_ior:cs @0 @1) @1)
   (bit_and @0 (bit_not @1)))
  
! /* (x | y) - (x ^ y) -> x & y
!    (x | y) - (x & y) -> x ^ y  */
! (for rop (bit_xor bit_and)
!      res (bit_and bit_xor)
!  (simplify
!   (minus (bit_ior @0 @1) (rop @0 @1))
!   (res @0 @1)))
  
  /* (x | y) & ~(x & y) -> x ^ y */
  (simplify
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 2514,2529 ****
  (simplify
   (bit_and:c @0 (logical_inverted_value @0))
   { build_zero_cst (type); })
! /* X | !X and X ^ !X -> 1, , if X is truth-valued.  */
! (for op (bit_ior bit_xor)
!  (simplify
!   (op:c truth_valued_p@0 (logical_inverted_value @0))
!   { constant_boolean_node (true, type); }))
! /* X ==/!= !X is false/true.  */
! (for op (eq ne)
   (simplify
    (op:c truth_valued_p@0 (logical_inverted_value @0))
!   { constant_boolean_node (op == NE_EXPR ? true : false, type); }))
  
  /* ~~x -> x */
  (simplify
--- 2517,2528 ----
  (simplify
   (bit_and:c @0 (logical_inverted_value @0))
   { build_zero_cst (type); })
! /* X | !X and X ^ !X -> 1, , if X is truth-valued.
!    X ==/!= !X is false/true.  */
! (for op (bit_ior bit_xor eq ne)
   (simplify
    (op:c truth_valued_p@0 (logical_inverted_value @0))
!   { constant_boolean_node (op != EQ_EXPR, type); }))
  
  /* ~~x -> x */
  (simplify
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 2736,2742 ****
       second_op (eq bit_xor)
   (simplify
    (first_op:c (bit_and:c truth_valued_p@0 truth_valued_p@1) (second_op @0 @1))
!     (bit_not (bit_ior @0 @1))))
  
  /* Convert ~ (A - 1) or ~ (A + -1) to -A.  */
  (simplify
--- 2735,2744 ----
       second_op (eq bit_xor)
   (simplify
    (first_op:c (bit_and:c truth_valued_p@0 truth_valued_p@1) (second_op @0 @1))
!    (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
! 	&& TYPE_PRECISION (TREE_TYPE (@0)) == 1)
!     (convert:type (bit_not (bit_ior @0 @1)))
!     (convert:type (bit_xor (bit_ior @0 @1) { build_one_cst (TREE_TYPE (@0)); })))))
  
  /* Convert ~ (A - 1) or ~ (A + -1) to -A.  */
  (simplify
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 3501,3507 ****
     (if ((TREE_CODE (@1) == INTEGER_CST
  	 && TREE_CODE (@2) == INTEGER_CST)
  	|| ((INTEGRAL_TYPE_P (TREE_TYPE (@1))
!    || (VECTOR_TYPE_P (TREE_TYPE (@1))
     && expand_vec_cmp_expr_p (TREE_TYPE (@1), type, code2))
  	     || POINTER_TYPE_P (TREE_TYPE (@1)))
  	    && bitwise_equal_p (@1, @2)))
--- 3503,3510 ----
     (if ((TREE_CODE (@1) == INTEGER_CST
  	 && TREE_CODE (@2) == INTEGER_CST)
  	|| ((INTEGRAL_TYPE_P (TREE_TYPE (@1))
!    || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (@1))
! 	|| VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (@1)))
     && expand_vec_cmp_expr_p (TREE_TYPE (@1), type, code2))
  	     || POINTER_TYPE_P (TREE_TYPE (@1)))
  	    && bitwise_equal_p (@1, @2)))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 3592,3598 ****
    (if ((TREE_CODE (@1) == INTEGER_CST
  	&& TREE_CODE (@2) == INTEGER_CST)
         || ((INTEGRAL_TYPE_P (TREE_TYPE (@1))
!        || (VECTOR_TYPE_P (TREE_TYPE (@1))
         && expand_vec_cmp_expr_p (TREE_TYPE (@1), type, code2))
  	    || POINTER_TYPE_P (TREE_TYPE (@1)))
  	   && operand_equal_p (@1, @2)))
--- 3595,3602 ----
    (if ((TREE_CODE (@1) == INTEGER_CST
  	&& TREE_CODE (@2) == INTEGER_CST)
         || ((INTEGRAL_TYPE_P (TREE_TYPE (@1))
!        || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (@1))
! 	    || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (@1)))
         && expand_vec_cmp_expr_p (TREE_TYPE (@1), type, code2))
  	    || POINTER_TYPE_P (TREE_TYPE (@1)))
  	   && operand_equal_p (@1, @2)))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 3782,3788 ****
     (op:c (cmp1:c @0 @1) (cmp2 @0 @1))
     (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
        || POINTER_TYPE_P (TREE_TYPE (@0))
!       || (VECTOR_TYPE_P (TREE_TYPE (@1))
        && expand_vec_cmp_expr_p (TREE_TYPE (@0), type, rcmp)))
      (rcmp @0 @1)))))
  
--- 3786,3793 ----
     (op:c (cmp1:c @0 @1) (cmp2 @0 @1))
     (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
        || POINTER_TYPE_P (TREE_TYPE (@0))
!       || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (@1))
! 	   || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (@1)))
        && expand_vec_cmp_expr_p (TREE_TYPE (@0), type, rcmp)))
      (rcmp @0 @1)))))
  
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 3794,3800 ****
    (eq:c (cmp1:c @0 @1) (cmp2 @0 @1))
    (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
  		|| POINTER_TYPE_P (TREE_TYPE (@0))
!       || (VECTOR_TYPE_P (TREE_TYPE (@0))
        && expand_vec_cmp_expr_p (TREE_TYPE (@0), type,  rcmp)))
      (rcmp @0 @1))))
  
--- 3799,3806 ----
    (eq:c (cmp1:c @0 @1) (cmp2 @0 @1))
    (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
  		|| POINTER_TYPE_P (TREE_TYPE (@0))
!       || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (@1))
! 	   || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (@1)))
        && expand_vec_cmp_expr_p (TREE_TYPE (@0), type,  rcmp)))
      (rcmp @0 @1))))
  
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 4103,4140 ****
         (plus (convert @0) (op @2 (convert @1))))))
  #endif
  
- /* Inverse of the above: (T)(A) +- CST -> (T)(A +- CST') when T is a
-    widening conversion from a type with undefined overflow and the outer
-    type wraps.  This allows VN to discover that (T)A + (T)C == (T)(A + C)
-    regardless of which form appears first in program order.  PR124545.
-    The rewrite is unsound for unsigned inner types: the narrow op wraps
-    mod 2^prec (defined) while the widened op does not, changing the
-    observed value.  Cover the unsigned case separately once ranger can
-    prove no wrap.  */
- #if GIMPLE
-   (for op (plus minus)
-    (simplify
-     (op (convert @0) INTEGER_CST@1)
-      (if (TREE_CODE (TREE_TYPE (@0)) == INTEGER_TYPE
- 	  && TREE_CODE (type) == INTEGER_TYPE
- 	  && TYPE_PRECISION (type) > TYPE_PRECISION (TREE_TYPE (@0))
- 	  && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (@0))
- 	  && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (@0))
- 	  && TYPE_OVERFLOW_WRAPS (type)
- 	  /* CST must be the sign-extension of its low inner-precision bits,
- 	     otherwise narrowing changes the value.  Use min_precision (..,
- 	     SIGNED) rather than int_fits_type_p so that small negative offsets
- 	     encoded as large unsigned constants (e.g. -1 as sizetype) still
- 	     qualify.  */
- 	  && wi::min_precision (wi::to_wide (@1), SIGNED)
- 	     <= TYPE_PRECISION (TREE_TYPE (@0)))
-        (with {
- 	  wide_int c1 = wi::to_wide (@1);
- 	  tree inner_cst = wide_int_to_tree (TREE_TYPE (@0),
- 			     wi::sext (c1, TYPE_PRECISION (TREE_TYPE (@0)))); }
- 	(convert (op! @0 { inner_cst; }))))))
- #endif
- 
  /* (T)(A) +- (T)(B) -> (T)(A +- B) only when (A +- B) could be simplified
     to a simple value.  */
    (for op (plus minus)
--- 4109,4114 ----
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 4536,4562 ****
  /* Simplifications of MIN_EXPR, MAX_EXPR, fmin() and fmax().  */
  
  (for minmax (min max)
   (simplify
    (minmax @0 @0)
    @0)
  /* max(max(x,y),x) -> max(x,y)  */
   (simplify
    (minmax:c (minmax:c@2 @0 @1) @0)
!   @2))
  /* For fmin() and fmax(), skip folding when both are sNaN.  */
  (for minmax (FMIN_ALL FMAX_ALL)
   (simplify
    (minmax @0 @0)
    (if (!tree_expr_maybe_signaling_nan_p (@0))
      @0)))
- /* min(max(x,y),y) -> y.  */
- (simplify
-  (min:c (max:c @0 @1) @1)
-  @1)
- /* max(min(x,y),y) -> y.  */
- (simplify
-  (max:c (min:c @0 @1) @1)
-  @1)
  /* max(a,-a) -> abs(a).  */
  (simplify
   (max:c @0 (negate @0))
--- 4510,4536 ----
  /* Simplifications of MIN_EXPR, MAX_EXPR, fmin() and fmax().  */
  
  (for minmax (min max)
+      maxmin (max min)
   (simplify
    (minmax @0 @0)
    @0)
  /* max(max(x,y),x) -> max(x,y)  */
   (simplify
    (minmax:c (minmax:c@2 @0 @1) @0)
!   @2)
! 
! /* min(max(x,y),y) -> y.
!    max(min(x,y),y) -> y.  */
!  (simplify
!   (minmax:c (maxmin:c @0 @1) @1)
!   @1))
! 
  /* For fmin() and fmax(), skip folding when both are sNaN.  */
  (for minmax (FMIN_ALL FMAX_ALL)
   (simplify
    (minmax @0 @0)
    (if (!tree_expr_maybe_signaling_nan_p (@0))
      @0)))
  /* max(a,-a) -> abs(a).  */
  (simplify
   (max:c @0 (negate @0))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 4956,4962 ****
          && tree_expr_nonzero_p (@1)
  	/* Cannot make a expression with side effects
  	   unconditional. */
! 	&& expr_no_side_effects_p (@3))
      @2)))
  
  /* Note we prefer the != case here
--- 4930,4936 ----
          && tree_expr_nonzero_p (@1)
  	/* Cannot make a expression with side effects
  	   unconditional. */
! 	&& expr_no_side_effects_p (@1))
      @2)))
  
  /* Note we prefer the != case here
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 5309,5324 ****
    (cmp (bit_and (lshift integer_pow2p@1 @0) integer_pow2p@2) integer_zerop)
     (with { int c1 = wi::clz (wi::to_wide (@1));
  	   int c2 = wi::clz (wi::to_wide (@2)); }
!     (if (c1 < c2)
!      { constant_boolean_node (cmp == NE_EXPR ? false : true, type); }
       (icmp @0 { build_int_cst (TREE_TYPE (@0), c1 - c2); }))))
   (simplify
    (cmp (bit_and (rshift integer_pow2p@1 @0) integer_pow2p@2) integer_zerop)
     (if (tree_int_cst_sgn (@1) > 0)
      (with { int c1 = wi::clz (wi::to_wide (@1));
  	    int c2 = wi::clz (wi::to_wide (@2)); }
!      (if (c1 > c2)
!       { constant_boolean_node (cmp == NE_EXPR ? false : true, type); }
        (icmp @0 { build_int_cst (TREE_TYPE (@0), c2 - c1); }))))))
  
  /* (CST1 << A) == CST2 -> A == ctz (CST2) - ctz (CST1)
--- 5283,5305 ----
    (cmp (bit_and (lshift integer_pow2p@1 @0) integer_pow2p@2) integer_zerop)
     (with { int c1 = wi::clz (wi::to_wide (@1));
  	   int c2 = wi::clz (wi::to_wide (@2)); }
!     (if (c1 < c2
! 	 /* If c1 - c2 isn't representable in TREE_TYPE (@0), it is also
! 	    never true, because for any valid x C << x will be smaller
! 	    than D.  See PR126476.  */
! 	 || !wi::fits_to_tree_p (wi::shwi (c1 - c2, HOST_BITS_PER_INT),
! 				 TREE_TYPE (@0)))
!      { constant_boolean_node (cmp != NE_EXPR, type); }
       (icmp @0 { build_int_cst (TREE_TYPE (@0), c1 - c2); }))))
   (simplify
    (cmp (bit_and (rshift integer_pow2p@1 @0) integer_pow2p@2) integer_zerop)
     (if (tree_int_cst_sgn (@1) > 0)
      (with { int c1 = wi::clz (wi::to_wide (@1));
  	    int c2 = wi::clz (wi::to_wide (@2)); }
!      (if (c1 > c2
! 	  || !wi::fits_to_tree_p (wi::shwi (c2 - c1, HOST_BITS_PER_INT),
! 				  TREE_TYPE (@0)))
!       { constant_boolean_node (cmp != NE_EXPR, type); }
        (icmp @0 { build_int_cst (TREE_TYPE (@0), c2 - c1); }))))))
  
  /* (CST1 << A) == CST2 -> A == ctz (CST2) - ctz (CST1)
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 5330,5336 ****
    (with { int cand = wi::ctz (wi::to_wide (@2)) - wi::ctz (wi::to_wide (@0)); }
     (if (cand < 0
  	|| (!integer_zerop (@2)
! 	    && wi::lshift (wi::to_wide (@0), cand) != wi::to_wide (@2)))
      { constant_boolean_node (cmp == NE_EXPR, type); }
      (if (!integer_zerop (@2)
  	 && wi::lshift (wi::to_wide (@0), cand) == wi::to_wide (@2))
--- 5311,5319 ----
    (with { int cand = wi::ctz (wi::to_wide (@2)) - wi::ctz (wi::to_wide (@0)); }
     (if (cand < 0
  	|| (!integer_zerop (@2)
! 	    && wi::lshift (wi::to_wide (@0), cand) != wi::to_wide (@2))
! 	|| !wi::fits_to_tree_p (wi::shwi (cand, HOST_BITS_PER_INT),
! 				TREE_TYPE (@1)))
      { constant_boolean_node (cmp == NE_EXPR, type); }
      (if (!integer_zerop (@2)
  	 && wi::lshift (wi::to_wide (@0), cand) == wi::to_wide (@2))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 5478,5485 ****
     (bit_and
      (nop_convert? (lshift integer_onep @0)) integer_pow2p@1) integer_zerop)
    (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)))
!    (icmp @0 { wide_int_to_tree (TREE_TYPE (@0),
! 				wi::exact_log2 (wi::to_wide (@1))); }))))
  
  /* Fold (X {&,^,|} C2) << C1 into (X << C1) {&,^,|} (C2 << C1)
     (X {&,^,|} C2) >> C1 into (X >> C1) & (C2 >> C1).  */
--- 5461,5469 ----
     (bit_and
      (nop_convert? (lshift integer_onep @0)) integer_pow2p@1) integer_zerop)
    (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)))
!    (with { int c = wi::exact_log2 (wi::to_wide (@1)); }
!     (if (wi::fits_to_tree_p (wi::shwi (c, HOST_BITS_PER_INT), TREE_TYPE (@0)))
!      (icmp @0 { wide_int_to_tree (TREE_TYPE (@0), c); }))))))
  
  /* Fold (X {&,^,|} C2) << C1 into (X << C1) {&,^,|} (C2 << C1)
     (X {&,^,|} C2) >> C1 into (X >> C1) & (C2 >> C1).  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6625,6631 ****
  		     || TYPE_SIGN (c2_type) == TYPE_SIGN (from_type)))))
  	{
  	  tree_code ncmp = cmp == GE_EXPR ? LE_EXPR : GT_EXPR;
! 	  widest_int c1 = wi::mask<widest_int>(TYPE_PRECISION (type) - 1, 0);
  	  code = minmax_from_comparison (ncmp, @1, c1, wi::to_widest (@2));
  	}
  
--- 6609,6615 ----
  		     || TYPE_SIGN (c2_type) == TYPE_SIGN (from_type)))))
  	{
  	  tree_code ncmp = cmp == GE_EXPR ? LE_EXPR : GT_EXPR;
! 	  widest_int c1 = wi::mask<widest_int>(TYPE_PRECISION (c1_type) - 1, 0);
  	  code = minmax_from_comparison (ncmp, @1, c1, wi::to_widest (@2));
  	}
  
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6861,6873 ****
  
  (for cnd (cond vec_cond)
   /* (a != b) ? (a - b) : 0 -> (a - b) */
-  (simplify
-   (cnd (ne:c @0 @1) (minus@2 @0 @1) integer_zerop)
-   @2)
   /* (a != b) ? (a ^ b) : 0 -> (a ^ b) */
!  (simplify
!   (cnd (ne:c @0 @1) (bit_xor@2 @0 @1) integer_zerop)
!   @2)
   /* (a != b) ? (a & b) : a -> (a & b) */
   /* (a != b) ? (a | b) : a -> (a | b) */
   /* (a != b) ? min(a,b) : a -> min(a,b) */
--- 6845,6855 ----
  
  (for cnd (cond vec_cond)
   /* (a != b) ? (a - b) : 0 -> (a - b) */
   /* (a != b) ? (a ^ b) : 0 -> (a ^ b) */
!  (for op (minus bit_xor)
!   (simplify
!    (cnd (ne:c @0 @1) (op@2 @0 @1) integer_zerop)
!    @2))
   /* (a != b) ? (a & b) : a -> (a & b) */
   /* (a != b) ? (a | b) : a -> (a | b) */
   /* (a != b) ? min(a,b) : a -> min(a,b) */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6899,6928 ****
     (a != b) | ((a|b) != 0) -> ((a|b) != 0)
  
     (a != b) & ((a|b) == 0) -> false
!    (a == b) | ((a|b) != 0) -> true  */
  (for bitop (bit_and bit_ior)
       neeq  (ne      eq)
   (simplify
    (bitop:c (neeq @0 @1) (neeq (bit_ior @0 @1) integer_zerop))
!   (neeq @0 @1)))
! (for bitop (bit_and bit_ior)
!      neeq  (eq      ne)
   (simplify
!   (bitop:c (neeq @0 @1) (neeq (bit_ior@2 @0 @1) integer_zerop@3))
!   (neeq @2 @3)))
! (for bitop (bit_and bit_ior)
!      neeql (ne      eq)
!      neeqr (eq      ne)
   (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
--- 6881,6903 ----
     (a != b) | ((a|b) != 0) -> ((a|b) != 0)
  
     (a != b) & ((a|b) == 0) -> false
!    (a == b) | ((a|b) != 0) -> true
! 
!    (a == 0) | ((a | b) == 0) -> (a == 0)
!    (a != 0) & ((a | b) != 0) -> (a != 0)  */
  (for bitop (bit_and bit_ior)
       neeq  (ne      eq)
+      eqne  (eq      ne)
   (simplify
    (bitop:c (neeq @0 @1) (neeq (bit_ior @0 @1) integer_zerop))
!   (neeq @0 @1))
   (simplify
!   (bitop:c (eqne @0 @1) (eqne (bit_ior@2 @0 @1) integer_zerop@3))
!   (neeq @2 @3))
!  (simplify
!   (bitop (neeq @0 @1) (eqne (bit_ior @0 @1) integer_zerop))
!   { constant_boolean_node (bitop == BIT_IOR_EXPR, type); })
   (simplify
    (bitop:c (neeq@2 @0 integer_zerop) (neeq (bit_ior:c @0 @1) integer_zerop))
    @2))
  #endif
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6936,6942 ****
     (cond (cmp:c @1 @3) (minmax:c @1 @4) (minmax:c @2 @4))
     (with
      {
!       tree_code code = minmax_from_comparison (cmp, @1, @2, @1, @3);
      }
      (if (code == MIN_EXPR)
       (minmax (min @1 @2) @4)
--- 6911,6917 ----
     (cond (cmp:c @1 @3) (minmax:c @1 @4) (minmax:c @2 @4))
     (with
      {
!       tree_code code = minmax_from_comparison (cmp, @1, @3, @1, @2);
      }
      (if (code == MIN_EXPR)
       (minmax (min @1 @2) @4)
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 8120,8130 ****
  	}
  	(if (above || below)
  	 (if (cmp == EQ_EXPR || cmp == NE_EXPR)
! 	  { constant_boolean_node (cmp == EQ_EXPR ? false : true, type); }
  	  (if (cmp == LT_EXPR || cmp == LE_EXPR)
! 	   { constant_boolean_node (above ? true : false, type); }
  	   (if (cmp == GT_EXPR || cmp == GE_EXPR)
! 	    { constant_boolean_node (above ? false : true, type); })))))))
  
      /* For eq/ne with narrowing conversion:
         (T)(X) == (T)(Y) -> (T)(X ^ Y) == 0  */
--- 8095,8105 ----
  	}
  	(if (above || below)
  	 (if (cmp == EQ_EXPR || cmp == NE_EXPR)
! 	  { constant_boolean_node (cmp != EQ_EXPR, type); }
  	  (if (cmp == LT_EXPR || cmp == LE_EXPR)
! 	   { constant_boolean_node (above, type); }
  	   (if (cmp == GT_EXPR || cmp == GE_EXPR)
! 	    { constant_boolean_node (!above, type); })))))))
  
      /* For eq/ne with narrowing conversion:
         (T)(X) == (T)(Y) -> (T)(X ^ Y) == 0  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 8600,8607 ****
    (cmp @0 REAL_CST@1)
    (if (REAL_VALUE_ISNAN (TREE_REAL_CST (@1))
         && (cmp != LTGT_EXPR || ! flag_trapping_math))
!    { constant_boolean_node (cmp == ORDERED_EXPR || cmp == LTGT_EXPR
! 			    ? false : true, type); })))
  
  /* Fold UNORDERED if either operand must be NaN, or neither can be.  */
  (simplify
--- 8575,8582 ----
    (cmp @0 REAL_CST@1)
    (if (REAL_VALUE_ISNAN (TREE_REAL_CST (@1))
         && (cmp != LTGT_EXPR || ! flag_trapping_math))
!    { constant_boolean_node (cmp != ORDERED_EXPR && cmp != LTGT_EXPR,
! 			    type); })))
  
  /* Fold UNORDERED if either operand must be NaN, or neither can be.  */
  (simplify
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 9890,9895 ****
--- 9865,9890 ----
       (abs @0)
       (negate (abs @0))))))
  
+ /* (signbit (x) cmp1 0) cmp (signbit (y) cmp2 0) ? y : -y
+    -> copysign (y, +-x).  */
+ #if GIMPLE
+ (for cmp (eq ne)
+  (for icmp1 (eq ne)
+   (for icmp2 (eq ne)
+    (for sign (SIGNBIT)
+     (simplify
+      (cond (cmp:c (icmp1 (sign @0) integer_zerop)
+ 		  (icmp2 (sign @1) integer_zerop))
+ 	   @1 (negate @1))
+      (if (SCALAR_FLOAT_TYPE_P (type)
+ 	  && types_match (type, TREE_TYPE (@0))
+ 	  && direct_internal_fn_supported_p (IFN_COPYSIGN, type,
+ 					     OPTIMIZE_FOR_BOTH))
+       (if ((cmp == EQ_EXPR) == (icmp1 == icmp2))
+        (IFN_COPYSIGN @1 @0)
+        (IFN_COPYSIGN @1 (negate @0)))))))))
+ #endif
+ 
  (simplify
   /* signbit(x) -> 0 if x is nonnegative.  */
   (SIGNBIT tree_expr_nonnegative_p@0)
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10382,10395 ****
     (IFN_COND_FNMA @3 @0 @1 @2 @4))
    (simplify
     (fmas @3 @0 @1 (negate @2) @4)
!    (IFN_COND_FMS @0 @1 @2 @4))
    (simplify
     (fmas:c @3 (negate @0) @1 (negate @2) @4)
     (IFN_COND_FNMS @3 @0 @1 @2 @4))
    (simplify
     (negate (fmas@3 @4 @0 @1 @2 @5))
     (if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (@3))
!     (IFN_COND_FNMS @4 @0 @1 @2 @5))))
  
   (simplify
    (IFN_COND_FMS:c @3 (negate @0) @1 @2 @4)
--- 10377,10390 ----
     (IFN_COND_FNMA @3 @0 @1 @2 @4))
    (simplify
     (fmas @3 @0 @1 (negate @2) @4)
!    (IFN_COND_FMS @3 @0 @1 @2 @4))
    (simplify
     (fmas:c @3 (negate @0) @1 (negate @2) @4)
     (IFN_COND_FNMS @3 @0 @1 @2 @4))
    (simplify
     (negate (fmas@3 @4 @0 @1 @2 @5))
     (if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (@3))
!     (IFN_COND_FNMS @4 @0 @1 @2 (negate @5)))))
  
   (simplify
    (IFN_COND_FMS:c @3 (negate @0) @1 @2 @4)
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10401,10409 ****
    (IFN_COND_FMS:c @3 (negate @0) @1 (negate @2) @4)
    (IFN_COND_FNMA @3 @0 @1 @2 @4))
   (simplify
!   (negate (IFN_FMS@3 @4 @0 @1 @2 @5))
     (if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (@3))
!     (IFN_COND_FNMA @4 @0 @1 @2 @5)))
  
   (simplify
    (IFN_COND_FNMA:c @3 (negate @0) @1 @2 @4)
--- 10396,10404 ----
    (IFN_COND_FMS:c @3 (negate @0) @1 (negate @2) @4)
    (IFN_COND_FNMA @3 @0 @1 @2 @4))
   (simplify
!   (negate (IFN_COND_FMS@3 @4 @0 @1 @2 @5))
     (if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (@3))
!     (IFN_COND_FNMA @4 @0 @1 @2 (negate @5))))
  
   (simplify
    (IFN_COND_FNMA:c @3 (negate @0) @1 @2 @4)
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10417,10423 ****
   (simplify
    (negate (IFN_COND_FNMA@3 @4 @0 @1 @2 @5))
    (if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (@3))
!    (IFN_COND_FMS @4 @0 @1 @2 @5)))
  
   (simplify
    (IFN_COND_FNMS:c @3 (negate @0) @1 @2 @4)
--- 10412,10418 ----
   (simplify
    (negate (IFN_COND_FNMA@3 @4 @0 @1 @2 @5))
    (if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (@3))
!    (IFN_COND_FMS @4 @0 @1 @2 (negate @5))))
  
   (simplify
    (IFN_COND_FNMS:c @3 (negate @0) @1 @2 @4)
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10431,10437 ****
   (simplify
    (negate (IFN_COND_FNMS@3 @4 @0 @1 @2 @5))
    (if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (@3))
!    (IFN_COND_FMA @4 @0 @1 @2 @5))))
  
  /* CLZ simplifications.  */
  (for clz (CLZ)
--- 10426,10449 ----
   (simplify
    (negate (IFN_COND_FNMS@3 @4 @0 @1 @2 @5))
    (if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (@3))
!    (IFN_COND_FMA @4 @0 @1 @2 (negate @5)))))
! 
! /* min (clz (x), clz (y)) -> clz (x | y) and
!    min (ctz (x), ctz (y)) -> ctz (x | y).  */
! (for func (CLZ CTZ)
!  (simplify
!   (min (func:s @0) (func:s @1))
!   (if (types_match (@0, @1)
!        && (!sanitize_flags_p (SANITIZE_BUILTIN)
! 	   || (cfun && (cfun->curr_properties & PROP_ssa) != 0)))
!    (func (bit_ior @0 @1)))))
! (for func (IFN_CLZ IFN_CTZ)
!  (simplify
!   (min (func:s @0 INTEGER_CST@2) (func:s @1 @2))
!   (if (types_match (@0, @1)
!        && wi::geu_p (wi::to_wide (@2),
! 		     TYPE_PRECISION (TREE_TYPE (@0))))
!    (func (bit_ior @0 @1) @2))))
  
  /* CLZ simplifications.  */
  (for clz (CLZ)
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10514,10522 ****
  	  }
       (if (ok && prec <= MAX_FIXED_MODE_SIZE)
        (if (val <= 0)
!        { constant_boolean_node (cmp == EQ_EXPR ? true : false, type); }
         (if (val >= prec)
! 	{ constant_boolean_node (cmp == EQ_EXPR ? false : true, type); }
  	(cmp (bit_and @0 { wide_int_to_tree (type0,
  					     wi::mask (val, false, prec)); })
  	     { build_zero_cst (type0); })))))))
--- 10526,10534 ----
  	  }
       (if (ok && prec <= MAX_FIXED_MODE_SIZE)
        (if (val <= 0)
!        { constant_boolean_node (cmp == EQ_EXPR, type); }
         (if (val >= prec)
! 	{ constant_boolean_node (cmp != EQ_EXPR, type); }
  	(cmp (bit_and @0 { wide_int_to_tree (type0,
  					     wi::mask (val, false, prec)); })
  	     { build_zero_cst (type0); })))))))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10536,10542 ****
  	  }
       (if (ok && prec <= MAX_FIXED_MODE_SIZE)
        (if (tree_int_cst_sgn (@1) < 0 || wi::to_widest (@1) >= prec)
!        { constant_boolean_node (op == EQ_EXPR ? false : true, type); }
         (op (bit_and @0 { wide_int_to_tree (type0,
  					   wi::mask (tree_to_uhwi (@1) + 1,
  						     false, prec)); })
--- 10548,10554 ----
  	  }
       (if (ok && prec <= MAX_FIXED_MODE_SIZE)
        (if (tree_int_cst_sgn (@1) < 0 || wi::to_widest (@1) >= prec)
!        { constant_boolean_node (op != EQ_EXPR, type); }
         (op (bit_and @0 { wide_int_to_tree (type0,
  					   wi::mask (tree_to_uhwi (@1) + 1,
  						     false, prec)); })
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10572,10581 ****
  	  }
       (if (val <= 0)
        (if (ok && zero_val >= val)
!        { constant_boolean_node (cmp == EQ_EXPR ? true : false, type); })
        (if (val >= prec)
         (if (ok && zero_val < val)
! 	{ constant_boolean_node (cmp == EQ_EXPR ? false : true, type); })
         (if (ok && (zero_val < 0 || zero_val >= prec))
  	(cmp (bit_and @0 { wide_int_to_tree (type0,
  					     wi::mask (val, false, prec)); })
--- 10584,10593 ----
  	  }
       (if (val <= 0)
        (if (ok && zero_val >= val)
!        { constant_boolean_node (cmp == EQ_EXPR, type); })
        (if (val >= prec)
         (if (ok && zero_val < val)
! 	{ constant_boolean_node (cmp != EQ_EXPR, type); })
         (if (ok && (zero_val < 0 || zero_val >= prec))
  	(cmp (bit_and @0 { wide_int_to_tree (type0,
  					     wi::mask (val, false, prec)); })
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10591,10597 ****
      (if (prec <= MAX_FIXED_MODE_SIZE)
       (if (tree_int_cst_sgn (@1) < 0 || wi::to_widest (@1) >= prec)
        (if (zero_val != wi::to_widest (@1))
!        { constant_boolean_node (op == EQ_EXPR ? false : true, type); })
        (if (zero_val < 0 || zero_val >= prec)
         (op (bit_and @0 { wide_int_to_tree (type0,
  					   wi::mask (tree_to_uhwi (@1) + 1,
--- 10603,10609 ----
      (if (prec <= MAX_FIXED_MODE_SIZE)
       (if (tree_int_cst_sgn (@1) < 0 || wi::to_widest (@1) >= prec)
        (if (zero_val != wi::to_widest (@1))
!        { constant_boolean_node (op != EQ_EXPR, type); })
        (if (zero_val < 0 || zero_val >= prec)
         (op (bit_and @0 { wide_int_to_tree (type0,
  					   wi::mask (tree_to_uhwi (@1) + 1,
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10793,10807 ****
  #endif
  
  /* PARITY simplifications.  */
! /* parity(~X) is parity(X).  */
  (simplify
    (PARITY (bit_not @0))
!   (PARITY @0))
  
  /* parity(bswap(x)) is parity(x).  */
  (for parity (PARITY)
!   (for bswap (BUILT_IN_BSWAP16 BUILT_IN_BSWAP32
! 	      BUILT_IN_BSWAP64 BUILT_IN_BSWAP128)
      (simplify
        (parity (convert?@0 (bswap:s@1 @2)))
        (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
--- 10805,10820 ----
  #endif
  
  /* PARITY simplifications.  */
! /* parity(~X) is parity(X) for even precision and parity(X) ^ 1 otherwise.  */
  (simplify
    (PARITY (bit_not @0))
!   (if ((element_precision (TREE_TYPE (@0)) & 1) == 0)
!    (PARITY @0)
!    (bit_xor (PARITY:type @0) { build_one_cst (type); })))
  
  /* parity(bswap(x)) is parity(x).  */
  (for parity (PARITY)
!   (for bswap (BSWAP BITREVERSE)
      (simplify
        (parity (convert?@0 (bswap:s@1 @2)))
        (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 11262,11268 ****
        (if (integer_zerop (@1))
         (cmp @0 { build_zero_cst (TREE_TYPE (@0)); }))
        (if (tree_int_cst_sgn (@1) < 0 || wi::to_widest (@1) > prec)
!        { constant_boolean_node (cmp == NE_EXPR ? true : false, type); })
        (if (single_use (@2))
         (cmp (bit_and @0 { wide_int_to_tree (TREE_TYPE (@0),
  					    wi::mask (tree_to_uhwi (@1),
--- 11275,11281 ----
        (if (integer_zerop (@1))
         (cmp @0 { build_zero_cst (TREE_TYPE (@0)); }))
        (if (tree_int_cst_sgn (@1) < 0 || wi::to_widest (@1) > prec)
!        { constant_boolean_node (cmp == NE_EXPR, type); })
        (if (single_use (@2))
         (cmp (bit_and @0 { wide_int_to_tree (TREE_TYPE (@0),
  					    wi::mask (tree_to_uhwi (@1),
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 11283,11291 ****
        (if (integer_zerop (@1))
         (cmp2 @0 { build_zero_cst (TREE_TYPE (@0)); }))
        (if (tree_int_cst_sgn (@1) < 0)
!        { constant_boolean_node (cmp == GT_EXPR ? true : false, type); })
        (if (wi::to_widest (@1) >= prec)
!        { constant_boolean_node (cmp == GT_EXPR ? false : true, type); })
        (if (wi::to_widest (@1) == prec - 1)
         (cmp3 @0 { wide_int_to_tree (TREE_TYPE (@0),
  				    wi::shifted_mask (prec - 1, 1,
--- 11296,11304 ----
        (if (integer_zerop (@1))
         (cmp2 @0 { build_zero_cst (TREE_TYPE (@0)); }))
        (if (tree_int_cst_sgn (@1) < 0)
!        { constant_boolean_node (cmp == GT_EXPR, type); })
        (if (wi::to_widest (@1) >= prec)
!        { constant_boolean_node (cmp != GT_EXPR, type); })
        (if (wi::to_widest (@1) == prec - 1)
         (cmp3 @0 { wide_int_to_tree (TREE_TYPE (@0),
  				    wi::shifted_mask (prec - 1, 1,
diff -Nrcpad gcc-17-20260727/gcc/omp-builtins.def gcc-17-20260802/gcc/omp-builtins.def
*** gcc-17-20260727/gcc/omp-builtins.def	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/omp-builtins.def	Sun Aug  2 22:32:07 2026
*************** DEF_GOACC_BUILTIN (BUILT_IN_GOACC_WAIT,
*** 51,56 ****
--- 51,62 ----
  		   ATTR_NOTHROW_LIST)
  DEF_GOACC_BUILTIN (BUILT_IN_GOACC_DECLARE, "GOACC_declare",
  		   BT_FN_VOID_INT_SIZE_PTR_PTR_PTR, ATTR_NOTHROW_LIST)
+ DEF_GOACC_BUILTIN (BUILT_IN_GOACC_INIT, "GOACC_init",
+ 		   BT_FN_VOID_INT_INT, ATTR_NOTHROW_LIST)
+ DEF_GOACC_BUILTIN (BUILT_IN_GOACC_SHUTDOWN, "GOACC_shutdown",
+ 		   BT_FN_VOID_INT_INT, ATTR_NOTHROW_LIST)
+ DEF_GOACC_BUILTIN (BUILT_IN_GOACC_SET_DEVICE, "GOACC_set_device",
+ 		   BT_FN_VOID_INT_INT, ATTR_NOTHROW_LIST)
  
  DEF_GOACC_BUILTIN_COMPILER (BUILT_IN_ACC_ON_DEVICE, "acc_on_device",
  			    BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST)
diff -Nrcpad gcc-17-20260727/gcc/omp-expand.cc gcc-17-20260802/gcc/omp-expand.cc
*** gcc-17-20260727/gcc/omp-expand.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/omp-expand.cc	Sun Aug  2 22:32:07 2026
*************** expand_parallel_call (struct omp_region
*** 661,666 ****
--- 661,685 ----
      {
        val = OMP_CLAUSE_NUM_THREADS_EXPR (c);
        clause_loc = OMP_CLAUSE_LOCATION (c);
+       if (TREE_CODE (val) == TREE_LIST)
+ 	{
+ 	  if (OMP_CLAUSE_NUM_THREADS_DIMS (c)
+ 	      && (TREE_CHAIN (val) || OMP_CLAUSE_NUM_THREADS_STRICT (c)))
+ 	    /* Accept 'dim(1),relaxed'. */
+ 	    sorry_at (clause_loc,
+ 		      "%<num_threads%> clause with %<dims%> modifier");
+ 	  else if (TREE_CHAIN (val))
+ 	    sorry_at (clause_loc,
+ 		      "%<num_threads%> clause with more than one argument");
+ 	  else if (OMP_CLAUSE_NUM_THREADS_STRICT (c))
+ 	    sorry_at (clause_loc,
+ 		      "%<num_threads%> clause with %<strict%> modifier");
+ 	  val = TREE_VALUE (val);
+ 	}
+       else if (OMP_CLAUSE_NUM_THREADS_STRICT (c))
+ 	sorry_at (clause_loc,
+ 		  "%<num_threads%> clause with %<strict%> modifier");
+       /* FIXME: Handle OMP_CLAUSE_MESSAGE (only relevant with 'strict').  */
      }
    else
      clause_loc = gimple_location (entry_stmt);
*************** expand_teams_call (basic_block bb, gomp_
*** 969,988 ****
  {
    tree clauses = gimple_omp_teams_clauses (entry_stmt);
    tree num_teams = omp_find_clause (clauses, OMP_CLAUSE_NUM_TEAMS);
    if (num_teams == NULL_TREE)
      num_teams = build_int_cst (unsigned_type_node, 0);
    else
      {
!       num_teams = OMP_CLAUSE_NUM_TEAMS_UPPER_EXPR (num_teams);
!       num_teams = fold_convert (unsigned_type_node, num_teams);
      }
-   tree thread_limit = omp_find_clause (clauses, OMP_CLAUSE_THREAD_LIMIT);
    if (thread_limit == NULL_TREE)
      thread_limit = build_int_cst (unsigned_type_node, 0);
    else
      {
!       thread_limit = OMP_CLAUSE_THREAD_LIMIT_EXPR (thread_limit);
!       thread_limit = fold_convert (unsigned_type_node, thread_limit);
      }
  
    gimple_stmt_iterator gsi = gsi_last_nondebug_bb (bb);
--- 988,1041 ----
  {
    tree clauses = gimple_omp_teams_clauses (entry_stmt);
    tree num_teams = omp_find_clause (clauses, OMP_CLAUSE_NUM_TEAMS);
+   tree thread_limit = omp_find_clause (clauses, OMP_CLAUSE_THREAD_LIMIT);
+   tree message = omp_find_clause (clauses, OMP_CLAUSE_MESSAGE);
+   if (message
+       && ((thread_limit && OMP_CLAUSE_THREAD_LIMIT_STRICT (thread_limit))
+ 	  || (num_teams && (TREE_CODE (num_teams) != INTEGER_CST
+ 			    || tree_int_cst_sgn (num_teams) < 0))))
+     sorry_at (OMP_CLAUSE_LOCATION (message), "%<message%> clause");
    if (num_teams == NULL_TREE)
      num_teams = build_int_cst (unsigned_type_node, 0);
    else
      {
!       tree expr = OMP_CLAUSE_NUM_TEAMS_UPPER_EXPR (num_teams);
!       /* FIXME: Implement lower-bound handling as well; however, currently,
! 	 on the host the use-specified value is always used.  */
!       if (TREE_CODE (expr) == TREE_LIST
! 	  && OMP_CLAUSE_NUM_TEAMS_DIMS (num_teams)
! 	  && TREE_CHAIN (expr))
! 	{
! 	  sorry_at (OMP_CLAUSE_LOCATION (num_teams),
! 		    "%<num_teams%> clause with %<dims%> modifier");
! 	  expr = TREE_VALUE (expr);
! 	}
!       else if (TREE_CODE (expr) == TREE_LIST)
! 	expr = (TREE_CHAIN (expr)
! 		? TREE_VALUE (TREE_CHAIN (expr)) : TREE_VALUE (expr));
!       num_teams = fold_convert (unsigned_type_node, expr);
      }
    if (thread_limit == NULL_TREE)
      thread_limit = build_int_cst (unsigned_type_node, 0);
    else
      {
!       tree expr = OMP_CLAUSE_THREAD_LIMIT_EXPR (thread_limit);
!       if (TREE_CODE (expr) == TREE_LIST)
! 	{
! 	  if (OMP_CLAUSE_THREAD_LIMIT_DIMS (thread_limit)
! 	      && (TREE_CHAIN (expr)
! 		  || OMP_CLAUSE_THREAD_LIMIT_STRICT (thread_limit)))
! 	    sorry_at (OMP_CLAUSE_LOCATION (thread_limit),
! 		      "%<thread_limit%> clause with %<dims%> modifier");
! 	  else if (OMP_CLAUSE_THREAD_LIMIT_STRICT (thread_limit))
! 	    sorry_at (OMP_CLAUSE_LOCATION (thread_limit),
! 		      "%<thread_limit%> clause with %<strict%> modifier");
! 	  expr = TREE_VALUE (expr);
! 	}
!       else if (OMP_CLAUSE_THREAD_LIMIT_STRICT (thread_limit))
! 	sorry_at (OMP_CLAUSE_LOCATION (thread_limit),
! 		  "%<thread_limit%> clause with %<strict%> modifier");
!       thread_limit = fold_convert (unsigned_type_node, expr);
      }
  
    gimple_stmt_iterator gsi = gsi_last_nondebug_bb (bb);
*************** expand_teams_call (basic_block bb, gomp_
*** 1000,1006 ****
    args->quick_push (t1);
    args->quick_push (num_teams);
    args->quick_push (thread_limit);
!   /* For future extensibility.  */
    args->quick_push (build_zero_cst (unsigned_type_node));
  
    t = build_call_expr_loc_vec (UNKNOWN_LOCATION,
--- 1053,1059 ----
    args->quick_push (t1);
    args->quick_push (num_teams);
    args->quick_push (thread_limit);
!   /* For future extensibility: flags.  */
    args->quick_push (build_zero_cst (unsigned_type_node));
  
    t = build_call_expr_loc_vec (UNKNOWN_LOCATION,
*************** get_target_arguments (gimple_stmt_iterat
*** 9935,9956 ****
  {
    auto_vec <tree, 6> args;
    tree clauses = gimple_omp_target_clauses (tgt_stmt);
!   tree t, c = omp_find_clause (clauses, OMP_CLAUSE_NUM_TEAMS);
!   if (c)
!     t = OMP_CLAUSE_NUM_TEAMS_UPPER_EXPR (c);
    else
!     t = integer_minus_one_node;
    push_target_argument_according_to_value (gsi, GOMP_TARGET_ARG_DEVICE_ALL,
! 					   GOMP_TARGET_ARG_NUM_TEAMS, t, &args);
! 
!   c = omp_find_clause (clauses, OMP_CLAUSE_THREAD_LIMIT);
!   if (c)
!     t = OMP_CLAUSE_THREAD_LIMIT_EXPR (c);
    else
!     t = integer_minus_one_node;
    push_target_argument_according_to_value (gsi, GOMP_TARGET_ARG_DEVICE_ALL,
! 					   GOMP_TARGET_ARG_THREAD_LIMIT, t,
! 					   &args);
  
    /* Produce more, perhaps device specific, arguments here.  */
  
--- 9988,10051 ----
  {
    auto_vec <tree, 6> args;
    tree clauses = gimple_omp_target_clauses (tgt_stmt);
!   tree num_teams = omp_find_clause (clauses, OMP_CLAUSE_NUM_TEAMS);
!   tree thread_limit = omp_find_clause (clauses, OMP_CLAUSE_THREAD_LIMIT);
!   tree message = omp_find_clause (clauses, OMP_CLAUSE_MESSAGE);
!   if (message)
!     /* FIXME: error termination checking also requires to check
!        OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR not only UPPER, i.e. it
!        needs to be passed to the runtime! Note that both target and
!        a nested teams can have a 'message' clause - and both take a
!        thread_limit clause.  */
!     sorry_at (OMP_CLAUSE_LOCATION (message), "%<message%> clause");
!   if (num_teams)
!     {
!       tree expr = OMP_CLAUSE_NUM_TEAMS_UPPER_EXPR (num_teams);
!       /* FIXME: Update omp-low.cc's lower_omp_teams when implementing.  */
!       if (TREE_CODE (expr) == TREE_LIST
! 	  && OMP_CLAUSE_NUM_TEAMS_DIMS (num_teams)
! 	  && TREE_CHAIN (expr))
! 	{
! 	  sorry_at (OMP_CLAUSE_LOCATION (num_teams),
! 		    "%<num_teams%> clause with %<dims%> modifier");
! 	  num_teams = TREE_VALUE (expr);
! 	}
!       else if (TREE_CODE (expr) == TREE_LIST)
! 	num_teams = (TREE_CHAIN (expr)
! 		     ? TREE_VALUE (TREE_CHAIN (expr)) : TREE_VALUE (expr));
!       else
! 	num_teams = expr;
!     }
    else
!     num_teams = integer_minus_one_node;
    push_target_argument_according_to_value (gsi, GOMP_TARGET_ARG_DEVICE_ALL,
! 					   GOMP_TARGET_ARG_NUM_TEAMS,
! 					   num_teams, &args);
!   if (thread_limit)
!     {
!       tree expr = OMP_CLAUSE_THREAD_LIMIT_EXPR (thread_limit);
!       if (TREE_CODE (expr) == TREE_LIST)
! 	{
! 	  if (OMP_CLAUSE_THREAD_LIMIT_DIMS (thread_limit)
! 	      && (TREE_CHAIN (expr)
! 		  || OMP_CLAUSE_THREAD_LIMIT_STRICT (thread_limit)))
! 	    sorry_at (OMP_CLAUSE_LOCATION (thread_limit),
! 		      "%<thread_limit%> clause with %<dims%> modifier");
! 	  else if (OMP_CLAUSE_THREAD_LIMIT_STRICT (thread_limit))
! 	    sorry_at (OMP_CLAUSE_LOCATION (thread_limit),
! 		      "%<thread_limit%> clause with %<strict%> modifier");
! 	  expr = TREE_VALUE (expr);
! 	}
!       else if (OMP_CLAUSE_THREAD_LIMIT_STRICT (thread_limit))
! 	sorry_at (OMP_CLAUSE_LOCATION (thread_limit),
! 		  "%<thread_limit%> clause with %<strict%> modifier");
!       thread_limit = expr;
!     }
    else
!     thread_limit = integer_minus_one_node;
    push_target_argument_according_to_value (gsi, GOMP_TARGET_ARG_DEVICE_ALL,
! 					   GOMP_TARGET_ARG_THREAD_LIMIT,
! 					   thread_limit, &args);
  
    /* Produce more, perhaps device specific, arguments here.  */
  
diff -Nrcpad gcc-17-20260727/gcc/omp-low.cc gcc-17-20260802/gcc/omp-low.cc
*** gcc-17-20260727/gcc/omp-low.cc	Mon Jul 27 02:16:06 2026
--- gcc-17-20260802/gcc/omp-low.cc	Sun Aug  2 22:32:07 2026
*************** scan_sharing_clauses (tree clauses, omp_
*** 1858,1863 ****
--- 1858,1864 ----
  	case OMP_CLAUSE_INIT:
  	case OMP_CLAUSE_USE:
  	case OMP_CLAUSE_DESTROY:
+ 	case OMP_CLAUSE_MESSAGE:
  	  break;
  
  	case OMP_CLAUSE__CACHE_:
*************** scan_sharing_clauses (tree clauses, omp_
*** 2061,2066 ****
--- 2062,2068 ----
  	case OMP_CLAUSE_DESTROY:
  	case OMP_CLAUSE_DEVICE_TYPE:
  	case OMP_CLAUSE_USES_ALLOCATORS:
+ 	case OMP_CLAUSE_MESSAGE:
  	  break;
  
  	case OMP_CLAUSE__CACHE_:
*************** lower_omp_teams (gimple_stmt_iterator *g
*** 15051,15056 ****
--- 15053,15066 ----
  			 fb_rvalue);
  	}
        num_teams = OMP_CLAUSE_NUM_TEAMS_UPPER_EXPR (num_teams);
+       // FIXME: Handle dim(x), cf. omp-expand.cc's get_target_arguments.  */
+       if (TREE_CODE (num_teams) == TREE_LIST && TREE_CHAIN (num_teams))
+ 	{
+ 	  num_teams_lower = TREE_VALUE (num_teams);
+ 	  num_teams = TREE_VALUE (TREE_CHAIN (num_teams));
+ 	}
+       else if (TREE_CODE (num_teams) == TREE_LIST)
+ 	num_teams = TREE_VALUE (num_teams);
        num_teams = fold_convert (unsigned_type_node, num_teams);
        gimplify_expr (&num_teams, &bind_body, NULL, is_gimple_val, fb_rvalue);
      }
*************** lower_omp_teams (gimple_stmt_iterator *g
*** 15063,15068 ****
--- 15073,15081 ----
    else
      {
        thread_limit = OMP_CLAUSE_THREAD_LIMIT_EXPR (thread_limit);
+       // FIXME: Handle dim(x), cf. omp-expand.cc's get_target_arguments.  */
+       if (TREE_CODE (thread_limit) == TREE_LIST)
+ 	thread_limit = TREE_VALUE (thread_limit);
        thread_limit = fold_convert (unsigned_type_node, thread_limit);
        gimplify_expr (&thread_limit, &bind_body, NULL, is_gimple_val,
  		     fb_rvalue);
diff -Nrcpad gcc-17-20260727/gcc/range-op-float.cc gcc-17-20260802/gcc/range-op-float.cc
*** gcc-17-20260727/gcc/range-op-float.cc	Mon Jul 27 02:16:08 2026
--- gcc-17-20260802/gcc/range-op-float.cc	Sun Aug  2 22:32:09 2026
*************** float_widen_lhs_range (tree type, const
*** 2381,2387 ****
      return ret;
    REAL_VALUE_TYPE lb = lhs.lower_bound ();
    REAL_VALUE_TYPE ub = lhs.upper_bound ();
!   if (real_isfinite (&lb))
      {
        frange_nextafter (TYPE_MODE (type), lb, dconstninf);
        if (real_isinf (&lb))
--- 2381,2387 ----
      return ret;
    REAL_VALUE_TYPE lb = lhs.lower_bound ();
    REAL_VALUE_TYPE ub = lhs.upper_bound ();
!   if (real_isfinite (&lb) || !real_isneg (&lb))
      {
        frange_nextafter (TYPE_MODE (type), lb, dconstninf);
        if (real_isinf (&lb))
*************** float_widen_lhs_range (tree type, const
*** 2395,2401 ****
  	  lb = dconstm1;
  	  SET_REAL_EXP (&lb, FLOAT_MODE_FORMAT (TYPE_MODE (type))->emax + 1);
  	}
!       if (!flag_rounding_math && !MODE_COMPOSITE_P (TYPE_MODE (type)))
  	{
  	  /* If not -frounding-math nor IBM double double, actually widen
  	     just by 0.5ulp rather than 1ulp.  */
--- 2395,2403 ----
  	  lb = dconstm1;
  	  SET_REAL_EXP (&lb, FLOAT_MODE_FORMAT (TYPE_MODE (type))->emax + 1);
  	}
!       if (!flag_rounding_math
! 	  && !MODE_COMPOSITE_P (TYPE_MODE (type))
! 	  && real_isfinite (&lhs.lower_bound ()))
  	{
  	  /* If not -frounding-math nor IBM double double, actually widen
  	     just by 0.5ulp rather than 1ulp.  */
*************** float_widen_lhs_range (tree type, const
*** 2404,2410 ****
  	  real_arithmetic (&lb, RDIV_EXPR, &tem, &dconst2);
  	}
      }
!   if (real_isfinite (&ub))
      {
        frange_nextafter (TYPE_MODE (type), ub, dconstinf);
        if (real_isinf (&ub))
--- 2406,2412 ----
  	  real_arithmetic (&lb, RDIV_EXPR, &tem, &dconst2);
  	}
      }
!   if (real_isfinite (&ub) || real_isneg (&ub))
      {
        frange_nextafter (TYPE_MODE (type), ub, dconstinf);
        if (real_isinf (&ub))
*************** float_widen_lhs_range (tree type, const
*** 2413,2419 ****
  	  ub = dconst1;
  	  SET_REAL_EXP (&ub, FLOAT_MODE_FORMAT (TYPE_MODE (type))->emax + 1);
  	}
!       if (!flag_rounding_math && !MODE_COMPOSITE_P (TYPE_MODE (type)))
  	{
  	  /* If not -frounding-math nor IBM double double, actually widen
  	     just by 0.5ulp rather than 1ulp.  */
--- 2415,2423 ----
  	  ub = dconst1;
  	  SET_REAL_EXP (&ub, FLOAT_MODE_FORMAT (TYPE_MODE (type))->emax + 1);
  	}
!       if (!flag_rounding_math
! 	  && !MODE_COMPOSITE_P (TYPE_MODE (type))
! 	  && real_isfinite (&lhs.upper_bound ()))
  	{
  	  /* If not -frounding-math nor IBM double double, actually widen
  	     just by 0.5ulp rather than 1ulp.  */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/ChangeLog gcc-17-20260802/gcc/testsuite/ChangeLog
*** gcc-17-20260727/gcc/testsuite/ChangeLog	Mon Jul 27 02:16:09 2026
--- gcc-17-20260802/gcc/testsuite/ChangeLog	Sun Aug  2 22:32:09 2026
***************
*** 1,3 ****
--- 1,605 ----
+ 2026-08-01  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/126558
+ 	* gfortran.dg/warn_undefined_vars_10.f90: New test.
+ 
+ 2026-08-01  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	* gfortran.dg/inline_matmul_29.f90: New test.
+ 
+ 2026-08-01  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/avx512vl-concatv4si-1.c: Tweak exisiting test.
+ 	* gcc.target/i386/avx-init-v16qi-1.c: New test case.
+ 	* gcc.target/i386/avx-init-v2df-1.c: Likewise.
+ 	* gcc.target/i386/avx-init-v2df-2.c: Likewise.
+ 	* gcc.target/i386/avx-init-v2di-1.c: Likewise.
+ 	* gcc.target/i386/avx-init-v2di-2.c: Likewise.
+ 	* gcc.target/i386/avx-init-v4sf-1.c: Likewise.
+ 	* gcc.target/i386/avx-init-v4sf-2.c: Likewise.
+ 	* gcc.target/i386/avx-init-v4si-1.c: Likewise.
+ 	* gcc.target/i386/avx-init-v8hi-1.c: Likewise.
+ 	* gcc.target/i386/avx2-init-v4sf-1.c: Likewise.
+ 	* gcc.target/i386/avx2-init-v4si-1.c: Likewise.
+ 	* gcc.target/i386/avx2-init-v4si-2.c: Likewise.
+ 	* gcc.target/i386/avx512vl-init-v2di-1.c: Likewise.
+ 	* gcc.target/i386/avx512vl-init-v2di-2.c: Likewise.
+ 	* gcc.target/i386/avx512vl-init-v4si-1.c: Likewise.
+ 	* gcc.target/i386/sse-init-v16qi-1.c: Likewise.
+ 	* gcc.target/i386/sse-init-v2df-1.c: Likewise.
+ 	* gcc.target/i386/sse-init-v2df-2.c: Likewise.
+ 	* gcc.target/i386/sse-init-v2di-1.c: Likewise.
+ 	* gcc.target/i386/sse-init-v2di-2.c: Likewise.
+ 	* gcc.target/i386/sse-init-v4sf-2.c: Likewise.
+ 	* gcc.target/i386/sse-init-v4sf-3.c: Likewise.
+ 	* gcc.target/i386/sse-init-v4si-1.c: Likewise.
+ 	* gcc.target/i386/sse-init-v8hi-1.c: Likewise.
+ 	* gcc.target/i386/sse2-init-v16qi-2.c: Likewise.
+ 	* gcc.target/i386/sse2-init-v16qi-3.c: Likewise.
+ 	* gcc.target/i386/sse2-init-v2df-1.c: Likewise.
+ 	* gcc.target/i386/sse2-init-v2df-2.c: Likewise.
+ 	* gcc.target/i386/sse2-init-v2di-3.c: Likewise.
+ 	* gcc.target/i386/sse2-init-v2di-4.c: Likewise.
+ 	* gcc.target/i386/sse2-init-v4sf-1.c: Likewise.
+ 	* gcc.target/i386/sse2-init-v4sf-2.c: Likewise.
+ 	* gcc.target/i386/sse2-init-v4si-2.c: Likewise.
+ 	* gcc.target/i386/sse2-init-v8hi-2.c: Likewise.
+ 	* gcc.target/i386/sse4_1-init-v16qi-2.c: Likewise.
+ 	* gcc.target/i386/sse4_1-init-v2df-1.c: Likewise.
+ 	* gcc.target/i386/sse4_1-init-v2df-2.c: Likewise.
+ 	* gcc.target/i386/sse4_1-init-v2di-2.c: Likewise.
+ 	* gcc.target/i386/sse4_1-init-v2di-3.c: Likewise.
+ 	* gcc.target/i386/sse4_1-init-v4sf-2.c: Likewise.
+ 	* gcc.target/i386/sse4_1-init-v4sf-3.c: Likewise.
+ 	* gcc.target/i386/sse4_1-init-v4si-2.c: Likewise.
+ 
+ 2026-08-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/unchecked_union5.adb: New test.
+ 
+ 2026-08-01  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/base/pr112431-43.c: New test.
+ 
+ 2026-08-01  Pan Li  <pan2.li@intel.com>
+ 	    Claude Opus 5 (1M context)  <noreply@anthropic.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf8.c: New test.
+ 
+ 2026-08-01  Pan Li  <pan2.li@intel.com>
+ 	    Claude Opus 5 (1M context)  <noreply@anthropic.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h:
+ 	Add test helper macros.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf8.c: New test.
+ 
+ 2026-08-01  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* g++.dg/coroutines/pr105475-3.C: Add -Wno-invalid-specialization
+ 	option.
+ 	* g++.dg/coroutines/pr105475-broken-spec.C: Likewise.
+ 
+ 2026-08-01  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126313
+ 	* gcc.dg/torture/pr126313.c: New test.
+ 
+ 2026-07-31  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/126481
+ 	* g++.dg/cpp0x/nsdmi-defer8.C: New test.
+ 
+ 2026-07-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/validity_check3.adb: New test.
+ 
+ 2026-07-31  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/126205
+ 	* gfortran.dg/coarray/team_allocated_coarrays.f90: New test.
+ 
+ 2026-07-31  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126458
+ 	* gcc.dg/torture/pr126458-1.c: New test.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126504
+ 	* gcc.dg/torture/bitint-105.c: New test.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126503
+ 	* gcc.dg/torture/bitint-106.c: New test.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/126497
+ 	* gcc.dg/bitint-141.c: New test.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126490
+ 	* gcc.dg/torture/bitint-104.c: New test.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126508
+ 	* g++.dg/cpp26/constexpr-eh20.C: New test.
+ 	* g++.dg/cpp26/constexpr-eh21.C: New test.
+ 	* g++.dg/cpp26/constexpr-eh22.C: New test.
+ 	* g++.dg/cpp26/constexpr-eh23.C: New test.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126464
+ 	* gcc.dg/torture/pr126464.c: New test.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126476
+ 	* gcc.dg/torture/bitint-103.c: New test.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126420
+ 	PR c++/126423
+ 	* g++.dg/cpp26/expansion-stmt43.C: New test.
+ 	* g++.dg/cpp26/expansion-stmt44.C: New test.
+ 
+ 2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126343
+ 	* g++.dg/reflect/pr126343.C: New test.
+ 	* g++.dg/reflect/diag6.C: Adjust expected diagnostic wording.
+ 	* g++.dg/reflect/init2.C: Likewise.
+ 	* g++.dg/cpp0x/pr124489.C: Likewise.
+ 
+ 2026-07-31  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/126406
+ 	PR c++/119343
+ 	* g++.dg/cpp0x/cond2a.C: New test.
+ 	* g++.dg/cpp1y/auto-fn67.C: New test.
+ 	* g++.dg/cpp1z/noexcept-type29.C: New test.
+ 
+ 2026-07-30  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/126335
+ 	* g++.dg/init/array68.C: New test.
+ 
+ 2026-07-30  Christopher Bazley  <chris.bazley@arm.com>
+ 
+ 	* gcc.target/aarch64/ffs.c: Relax test expectations.
+ 	* gcc.target/aarch64/frecpe_1.c: As above.
+ 	* gcc.target/aarch64/frecpe_2.c: As above.
+ 
+ 2026-07-30  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/126209
+ 	* g++.dg/modules/anon-5_a.C: New test.
+ 	* g++.dg/modules/anon-5_b.C: New test.
+ 	* g++.dg/modules/anon-5_c.C: New test.
+ 	* g++.dg/modules/anon-5_d.C: New test.
+ 
+ 2026-07-30  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122848
+ 	* gcc.dg/tree-ssa/pr122848.c: New test.
+ 
+ 2026-07-30  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/109843
+ 	* gcc.dg/tree-ssa/pr109843.c: New test.
+ 
+ 2026-07-30  Bohan Lei  <garthlei@linux.alibaba.com>
+ 
+ 	* gcc.target/riscv/rvv/base/intrinsic-detection.c: Add Zvabd.
+ 	* gcc.target/riscv/rvv/base/zvabd-intrinsic.c: New test.
+ 
+ 2026-07-30  Bohan Lei  <garthlei@linux.alibaba.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/zvabd-1.c: Add test functions
+ 	for cases where vabd/vwabda cannot be used.
+ 
+ 2026-07-30  Christopher Bazley  <chris.bazley@arm.com>
+ 
+ 	* gcc.target/aarch64/pr126480.c: New test.
+ 
+ 2026-07-30  Sebastian Galindo  <sebastian.galindo143@gmail.com>
+ 	    Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* gfortran.dg/goacc/acc-init-1.f90: New test.
+ 	* gfortran.dg/goacc/acc-init-clauses-1.f90: New test.
+ 	* gfortran.dg/goacc/acc-set-1.f90: New test.
+ 	* gfortran.dg/goacc/acc-set-clauses-1.f90: New test.
+ 	* gfortran.dg/goacc/acc-shutdown-1.f90: New test.
+ 	* gfortran.dg/goacc/acc-shutdown-clauses-1.f90: New test.
+ 	* gfortran.dg/goacc/uninit-if-clause.f95: Test INIT with
+ 	uninitialized IF clause.
+ 	* gfortran.dg/goacc/update-if_present-2.f90: Update expected
+ 	errors now that INIT and SHUTDOWN are recognized.
+ 
+ 2026-07-30  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/123311
+ 	* gcc.dg/tree-ssa/pr123311-1.c: New test.
+ 	* gcc.dg/tree-ssa/pr123311-2.c: New test.
+ 
+ 2026-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126464
+ 	* gcc.dg/pr126464.c: New test.
+ 
+ 2026-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc.dg/bitint-140.c: New test.
+ 
+ 2026-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126471
+ 	* gcc.dg/bitint-139.c: New test.
+ 
+ 2026-07-30  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* gcc.target/riscv/extract-sign-no-scratch.c: New test.
+ 	* gcc.target/riscv/extract-zero-no-scratch.c: New test.
+ 
+ 2026-07-30  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	PR target/126449
+ 	* g++.target/riscv/pr126449.C: New test.
+ 
+ 2026-07-30  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR tree-optimization/126194
+ 	* g++.dg/lto/pr126194_2.C (main): Tolerate argc == 0.
+ 
+ 2026-07-30  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126470
+ 	* gcc.dg/torture/pr126470-1.c: New test.
+ 
+ 2026-07-30  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126456
+ 	* gcc.dg/torture/minmax-1.c: New test.
+ 	* gcc.dg/tree-ssa/minmax-29.c: New test.
+ 	* gcc.dg/tree-ssa/minmax-30.c: New test.
+ 	* gcc.dg/tree-ssa/minmax-31.c: New test.
+ 	* gcc.dg/tree-ssa/minmax-32.c: New test.
+ 
+ 2026-07-30  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-15.c: New test.
+ 
+ 2026-07-30  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf8.c: New test.
+ 
+ 2026-07-30  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf8.c: New test.
+ 
+ 2026-07-29  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR rtl-optimization/126434
+ 	* gcc.dg/pr126434.c: New test.
+ 
+ 2026-07-29  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/126465
+ 	* gcc.target/aarch64/sve/cond_fma.c: New test.
+ 	* gcc.target/aarch64/sve/cond_fma_neg_addend.c: New test.
+ 	* gcc.target/aarch64/sve/cond_fms.c: New test.
+ 	* gcc.target/aarch64/sve/cond_fnma.c: New test.
+ 	* gcc.target/aarch64/sve/cond_fnms.c: New test.
+ 
+ 2026-07-29  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	PR tree-optimization/126415
+ 	PR tree-optimization/124545
+ 	* gcc.dg/torture/pr126415.c: New testcase.
+ 	* gcc.dg/tree-ssa/ssa-fre-113.c: New testcase.
+ 	* gcc.dg/tree-ssa/ssa-fre-114.c: New testcase.
+ 	* gcc.dg/pr124545.c: Remove the ilp32 xfail.
+ 
+ 2026-07-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126457
+ 	* gcc.dg/vect/vect-pr126457.c: New testcase.
+ 
+ 2026-07-29  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* gfortran.dg/gomp/spatial-dimensions-5.f90: Scan 'gimple' dumps.
+ 	'message("fourth")' has 'len:6'.
+ 
+ 2026-07-29  zhaozhou  <zhaozhou@loongson.cn>
+ 
+ 	* gcc.target/loongarch/vector/lasx/lasx-vec-construct-opt.c:
+ 	Adjust testcase.
+ 
+ 2026-07-29  mengqinggang  <mengqinggang@loongson.cn>
+ 
+ 	* gcc.target/loongarch/dtprel.c: New test.
+ 
+ 2026-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/126446
+ 	* gcc.target/i386/avx2-pr126446.c: New test.
+ 
+ 2026-07-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/126450
+ 	* gcc.target/i386/pr126450-1.c: New test.
+ 	* gcc.target/i386/pr126450-2.c: Likewise.
+ 
+ 2026-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/126447
+ 	* gcc.dg/ubsan/bitint-5.c: New test.
+ 	* gcc.dg/bitint-138.c: New test.
+ 
+ 2026-07-29  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* gfortran.target/aarch64/pr122408_1.f90: Update the fcmla
+ 	rotation counts.
+ 
+ 2026-07-29  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* lib/profopt.exp: Likewise.
+ 
+ 2026-07-29  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* gcc.target/i386/apx-ndd-mem-tune.c: New test.
+ 
+ 2026-07-28  Reshma Roy  <Reshma.Roy@amd.com>
+ 
+ 	* gcc.target/i386/pr126382.c: New test.
+ 
+ 2026-07-28  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/116274
+ 	* gcc.target/i386/pr116274-2.c: Add check-function-bodies.
+ 
+ 2026-07-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125866
+ 	* gfortran.dg/pr125866.f90: New test.
+ 
+ 2026-07-28  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 
+ 	PR analyzer/97114
+ 	* g++.dg/analyzer/devirt-1.C: New test.
+ 	* g++.dg/analyzer/devirt-multiple-inheritance-1.C: New test.
+ 	* g++.dg/analyzer/devirt-noexcept-1.C: New test.
+ 	* g++.dg/analyzer/devirt-unknown-1.C: New test.
+ 
+ 2026-07-28  Richard Ball  <Richard.Ball@arm.com>
+ 
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtb_f16_s8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtb_f16_u8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtb_f32_s16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtb_f32_u16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtb_f64_s32.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtb_f64_u32.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtn_s16_f32_x2.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtn_s32_f64_x2.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtn_s8_f16_x2.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtn_u16_f32_x2.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtn_u32_f64_x2.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtn_u8_f16_x2.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtt_f16_s8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtt_f16_u8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtt_f32_s16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtt_f32_u16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtt_f64_s32.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/cvtt_f64_u32.c: New test.
+ 
+ 2026-07-28  Richard Ball  <Richard.Ball@arm.com>
+ 
+ 	* lib/target-supports.exp: New check_effective_target.
+ 	* gcc.target/aarch64/advsimd-intrinsics/fdot-1.c: New test.
+ 	* gcc.target/aarch64/advsimd-intrinsics/fdot-2.c: New test.
+ 	* gcc.target/aarch64/advsimd-intrinsics/fdot-3.c: New test.
+ 
+ 2026-07-28  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* gcc.target/avr/fx64-div-1.c: New test.
+ 	* gcc.target/avr/fx64-div-2.c: New test.
+ 	* gcc.target/avr/fx64-div-3.c: New test.
+ 	* gcc.target/avr/fx64-mul.h: Rename to...
+ 	* gcc.target/avr/fx64.h: ...this.
+ 	* gcc.target/avr/fx64-mul-1.c: Same.
+ 	* gcc.target/avr/fx64-mul-2.c: Same.
+ 
+ 2026-07-28  Richard Ball  <Richard.Ball@arm.com>
+ 
+ 	* lib/target-supports.exp: New check_effective_targets.
+ 	* gcc.target/aarch64/sme2/acle-asm/dot_lane_s16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/dot_lane_u16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/dot_s16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/dot_u16.c: New test.
+ 	* gcc.target/aarch64/sve2/dotproduct_intrinsicless.c: New test.
+ 
+ 2026-07-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126404
+ 	* gcc.dg/vect/vect-pr126404.c: Adjust.
+ 
+ 2026-07-28  H.J. Lu  <hjl.tools@gmail.com>
+ 	    Richard Biener   <rguenther@suse.de>
+ 
+ 	PR middle-end/126410
+ 	* gcc.target/i386/pr126410-1a.c: New test.
+ 	* gcc.target/i386/pr126410-1b.c: Likewise.
+ 	* gcc.target/i386/pr126410-1c.c: Likewise.
+ 	* gcc.target/i386/pr126410-2a.c: Likewise.
+ 	* gcc.target/i386/pr126410-2b.c: Likewise.
+ 	* gcc.target/i386/pr126410-2c.c: Likewise.
+ 	* gcc.target/i386/preserve-none-35a.c: Adjust.
+ 	* gcc.target/i386/preserve-none-35b.c: Likewise.
+ 	* gcc.target/i386/preserve-none-35c.c: Likewise.
+ 	* gcc.target/i386/preserve-none-35d.c: Likewise.
+ 	* gcc.target/i386/preserve-none-35e.c: Likewise.
+ 	* gcc.target/i386/preserve-none-35f.c: Likewise.
+ 	* gcc.target/i386/preserve-none-35g.c: Likewise.
+ 
+ 2026-07-28  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	PR target/126429
+ 	* gcc.target/i386/pr126429-1.c: New test.
+ 
+ 2026-07-28  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR middle-end/126405
+ 	* gcc.c-torture/execute/pr126405-3.c: New test.
+ 
+ 2026-07-28  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR middle-end/126405
+ 	* gcc.c-torture/execute/pr126405.c: New test.
+ 	* gcc.c-torture/execute/pr126405-2.c: New test.
+ 	* gcc.dg/pr126405-1.c: New test.
+ 	* gcc.dg/pr126405-2.c: New test.
+ 	* gcc.dg/pr126405-3.c: New test.
+ 
+ 2026-07-28  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/126433
+ 	* gcc.target/i386/xchg-1.c: Scan for ROL instead of XCHG.
+ 	* gcc.target/i386/xchg-2.c: Use -O2 -march=pentium4 to emit XCHG.
+ 
+ 2026-07-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126404
+ 	* gcc.dg/vect/vect-pr126404.c: New testcase.
+ 
+ 2026-07-27  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126296
+ 	* g++.dg/tree-ssa/pr126296-1.C: New test.
+ 	* g++.dg/tree-ssa/pr126296-2.C: New test.
+ 
+ 2026-07-27  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* gfortran.dg/gomp/spatial-dimensions-1.f90: Move to gimple dumps
+ 	and extend tree-dump checking.
+ 	* gfortran.dg/gomp/spatial-dimensions-2.f90: Remove sorry and
+ 	check omplower and ompexp tree dumps.
+ 	* gfortran.dg/gomp/spatial-dimensions-3.f90: Update dg-error.
+ 	* gfortran.dg/gomp/spatial-dimensions-4.f90: New test.
+ 	* gfortran.dg/gomp/spatial-dimensions-5.f90: New test.
+ 
+ 2026-07-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/126303
+ 	* gfortran.dg/pr126303.f: New test.
+ 
+ 2026-07-27  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* gcc.target/aarch64/vect-vaddv.c (EQUALF, EQUALD): Compare
+ 	relative to the reference value.
+ 
+ 2026-07-27  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* gcc.target/aarch64/simd/mf8_data_2.c: Restore the dg-error for
+ 	the second out-of-range lane index of vcopy_lane_mf8.
+ 
+ 2026-07-27  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* gcc.target/aarch64/sve/pcs/struct_3_128.c (test_nonpst8): Accept
+ 	a ubfx of either width.
+ 	* gcc.target/aarch64/sve/pcs/struct_3_256.c (test_nonpst8):
+ 	Likewise for little endian.
+ 
+ 2026-07-27  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* gcc.target/aarch64/fuse_cmp_csel-1.c: Accept csel with either
+ 	le or gt.
+ 	* gcc.target/aarch64/fuse_cmp_csel.c: Likewise.
+ 
+ 2026-07-27  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* g++.dg/ext/arm-fp16/arm-fp16-ops-3.C: Require effective target
+ 	arm_fp16_alternative_hw instead of arm_fp16_alternative_ok.
+ 	* g++.dg/ext/arm-fp16/arm-fp16-ops-4.C: Likewise.
+ 	* gcc.dg/torture/arm-fp16-int-convert-alt.c: Likewise.
+ 	* gcc.dg/torture/arm-fp16-ops-3.c: Likewise.
+ 	* gcc.dg/torture/arm-fp16-ops-4.c: Likewise.
+ 	* lib/target-supports.exp (arm_fp16_alternative_hw): New proc.
+ 
+ 2026-07-27  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/fold-left-reduc-cost.c: New test.
+ 	* gcc.target/i386/fold-left-reduc-chain-cost.c: New test.
+ 	* gcc.target/i386/vect-epilogues-6.c: Update expected vector size.
+ 	* gcc.target/i386/vect-epilogues-7.c: Likewise.
+ 	* gcc.dg/vect/costmodel/x86_64/costmodel-vect-epil-1.c: Likewise.
+ 
+ 2026-07-27  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/126310
+ 	* g++.dg/opt/pmf2.C: New test.
+ 
  2026-07-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
  
  	* gfortran.dg/reduce_5.f90: Verify the previously dead
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/analyzer/devirt-1.C gcc-17-20260802/gcc/testsuite/g++.dg/analyzer/devirt-1.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/analyzer/devirt-1.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/analyzer/devirt-1.C	Sun Aug  2 22:32:10 2026
***************
*** 0 ****
--- 1,23 ----
+ #include "../../gcc.dg/analyzer/analyzer-decls.h"
+ struct Base
+ {
+   virtual int not_overridden () { return 0; }
+   virtual int overridden () { return 0; }
+ };
+ struct Derived : public Base
+ {
+   int overridden () { return 60; }
+ };
+ __attribute__ ((noipa)) Base *
+ make_derived ()
+ {
+   return new Derived ();
+ }
+ void
+ test ()
+ {
+   Base *f = make_derived ();
+   __analyzer_eval (f->not_overridden () == 0); // { dg-warning "TRUE" }
+   __analyzer_eval (f->overridden () == 60);    // { dg-warning "TRUE" }
+   delete f;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/analyzer/devirt-multiple-inheritance-1.C gcc-17-20260802/gcc/testsuite/g++.dg/analyzer/devirt-multiple-inheritance-1.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/analyzer/devirt-multiple-inheritance-1.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/analyzer/devirt-multiple-inheritance-1.C	Sun Aug  2 22:32:10 2026
***************
*** 0 ****
--- 1,31 ----
+ #include "../../gcc.dg/analyzer/analyzer-decls.h"
+ 
+ struct A
+ {
+   virtual void f () {}
+ };
+ struct B
+ {
+   virtual void g () { throw 1; }
+ };
+ 
+ struct C : public A, public B
+ {
+   void f () {}
+   void g () {}
+ };
+ 
+ __attribute__ ((noipa)) C *
+ make_c ()
+ {
+   return new C ();
+ }
+ 
+ void
+ test ()
+ {
+   C *c = make_c ();
+   B *b = c;
+   b->g (); // { dg-bogus "leak" }
+   delete c;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/analyzer/devirt-noexcept-1.C gcc-17-20260802/gcc/testsuite/g++.dg/analyzer/devirt-noexcept-1.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/analyzer/devirt-noexcept-1.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/analyzer/devirt-noexcept-1.C	Sun Aug  2 22:32:10 2026
***************
*** 0 ****
--- 1,26 ----
+ #include "../../gcc.dg/analyzer/analyzer-decls.h"
+ // { dg-additional-options "-std=c++11" }
+ 
+ struct Base
+ {
+   virtual void __analyzer_foo () = 0;
+ };
+ 
+ struct Derived : public Base
+ {
+   void __analyzer_foo () noexcept override {}
+ };
+ 
+ __attribute__ ((noipa)) Base *
+ make_derived ()
+ {
+   return new Derived ();
+ }
+ 
+ void
+ test ()
+ {
+   Base *f = make_derived ();
+   f->__analyzer_foo (); // { dg-bogus "leak" }
+   delete f;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/analyzer/devirt-unknown-1.C gcc-17-20260802/gcc/testsuite/g++.dg/analyzer/devirt-unknown-1.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/analyzer/devirt-unknown-1.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/analyzer/devirt-unknown-1.C	Sun Aug  2 22:32:10 2026
***************
*** 0 ****
--- 1,16 ----
+ #include "../../gcc.dg/analyzer/analyzer-decls.h"
+ 
+ struct Base
+ {
+   virtual void __analyzer_foo () { throw 1; }
+ };
+ 
+ extern Base *get_base (void); // unknown dynamic type
+ 
+ void
+ test ()
+ {
+   Base *f = get_base ();
+   // vptr unknown (won't devirt)
+   f->__analyzer_foo (); // { dg-bogus "leak" }
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/coroutines/pr105475-3.C gcc-17-20260802/gcc/testsuite/g++.dg/coroutines/pr105475-3.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/coroutines/pr105475-3.C	Mon Jul 27 02:16:10 2026
--- gcc-17-20260802/gcc/testsuite/g++.dg/coroutines/pr105475-3.C	Sun Aug  2 22:32:10 2026
***************
*** 1,3 ****
--- 1,4 ----
+ // { dg-additional-options "-Wno-invalid-specialization" }
  // https://gcc.gnu.org/PR105475
  // Test the case where we create a non-static from_address.
  #include <coroutine>
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/coroutines/pr105475-broken-spec.C gcc-17-20260802/gcc/testsuite/g++.dg/coroutines/pr105475-broken-spec.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/coroutines/pr105475-broken-spec.C	Mon Jul 27 02:16:10 2026
--- gcc-17-20260802/gcc/testsuite/g++.dg/coroutines/pr105475-broken-spec.C	Sun Aug  2 22:32:10 2026
***************
*** 1,3 ****
--- 1,4 ----
+ // { dg-additional-options "-Wno-invalid-specialization" }
  // https://gcc.gnu.org/PR105475
  // Test the case where we specialize coroutine_handle and break it.
  #include <coroutine>
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/cpp0x/cond2a.C gcc-17-20260802/gcc/testsuite/g++.dg/cpp0x/cond2a.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/cpp0x/cond2a.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/cpp0x/cond2a.C	Sun Aug  2 22:32:10 2026
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/126406
+ // { dg-do compile { target c++14 } }
+ // A version of cond2.C where f has a deduced return type
+ // and g is instantiated.
+ 
+ bool b;
+ 
+ template < class T > auto f ()
+ {
+ }
+ 
+ template < class T > auto g () -> decltype (b ? f < int > : throw 0)
+ {
+   return b ? f<int> : throw 0;
+ }
+ 
+ using type = decltype(g<int>());
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/cpp0x/nsdmi-defer8.C gcc-17-20260802/gcc/testsuite/g++.dg/cpp0x/nsdmi-defer8.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/cpp0x/nsdmi-defer8.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/cpp0x/nsdmi-defer8.C	Sun Aug  2 22:32:10 2026
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/126481
+ // { dg-do compile { target c++11 } }
+ 
+ struct QPluginMetaData
+ {
+   static constexpr int CurrentMetaDataVersion = 1;
+ 
+   struct Header {
+     int version = CurrentMetaDataVersion;
+   };
+ 
+   struct MagicHeader {
+     Header header = {};
+   };
+ };
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/cpp0x/pr124489.C gcc-17-20260802/gcc/testsuite/g++.dg/cpp0x/pr124489.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/cpp0x/pr124489.C	Mon Jul 27 02:16:10 2026
--- gcc-17-20260802/gcc/testsuite/g++.dg/cpp0x/pr124489.C	Sun Aug  2 22:32:10 2026
***************
*** 4,9 ****
  void
  g ()
  {
!   constexpr decltype(nullptr) dm = nullptr; // { dg-message ".constexpr std::nullptr_t dm. previously declared here" }
!   constexpr decltype(nullptr) dm = nullptr; // { dg-error "redeclaration of .constexpr std::nullptr_t dm." }
  }
--- 4,9 ----
  void
  g ()
  {
!   constexpr decltype(nullptr) dm = nullptr; // { dg-message ".constexpr std::nullptr_t const dm. previously declared here" }
!   constexpr decltype(nullptr) dm = nullptr; // { dg-error "redeclaration of .constexpr std::nullptr_t const dm." }
  }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/cpp1y/auto-fn67.C gcc-17-20260802/gcc/testsuite/g++.dg/cpp1y/auto-fn67.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/cpp1y/auto-fn67.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/cpp1y/auto-fn67.C	Sun Aug  2 22:32:10 2026
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/126406
+ // { dg-do compile { target c++14 } }
+ 
+ template<class T> auto g(T) { }
+ static_assert(g<int>, "");
+ 
+ template<class T>
+ struct B {
+   static auto g(T) { }
+ };
+ static_assert(B<int>::g, "");
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/cpp1z/noexcept-type29.C gcc-17-20260802/gcc/testsuite/g++.dg/cpp1z/noexcept-type29.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/cpp1z/noexcept-type29.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/cpp1z/noexcept-type29.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/126406
+ // { dg-do compile { target c++11 } }
+ 
+ template<class T> void f(T) noexcept(noexcept(T())) { }
+ static_assert(f<int>, "");
+ 
+ template<class T>
+ struct A {
+   static void f(T) noexcept(noexcept(T())) { }
+ };
+ static_assert(A<int>::f, "");
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/cpp26/constexpr-eh20.C gcc-17-20260802/gcc/testsuite/g++.dg/cpp26/constexpr-eh20.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/cpp26/constexpr-eh20.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/cpp26/constexpr-eh20.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,31 ----
+ // PR c++/126508
+ // { dg-do compile { target c++26 } }
+ 
+ constexpr int
+ foo ()
+ {
+   try
+     {
+       throw;
+     }
+   catch (const int x)
+     {
+       return x;
+     }
+ }
+ 
+ constexpr int
+ bar (int x)
+ {
+   try
+     {
+       throw x;
+     }
+   catch (...)
+     {
+       return foo ();
+     }
+ }
+ 
+ static_assert (bar (42) == 42);
+ static_assert (bar (43) == 43);
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/cpp26/constexpr-eh21.C gcc-17-20260802/gcc/testsuite/g++.dg/cpp26/constexpr-eh21.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/cpp26/constexpr-eh21.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/cpp26/constexpr-eh21.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,43 ----
+ // PR c++/126508
+ // { dg-do compile { target c++26 } }
+ 
+ constexpr int
+ foo ()
+ {
+   return __builtin_uncaught_exceptions ();
+ }
+ 
+ constexpr int
+ bar ()
+ {
+   return __builtin_uncaught_exceptions ();
+ }
+ 
+ struct A { constexpr A () : a (0) {} constexpr ~A () { if (foo () != a) asm (""); } int a; };
+ struct B { constexpr B () : b (0) {} constexpr ~B () { if (bar () != b) asm (""); } int b; };
+ 
+ constexpr bool
+ baz ()
+ {
+   {
+     A a;
+   }
+   try
+     {
+       A a;
+       B b;
+       a.a = 1;
+       b.b = 1;
+       throw 42;
+     }
+   catch (...)
+     {
+     }
+   {
+     A a;
+     B b;
+   }
+   return true;
+ }
+ 
+ static_assert (baz ());
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/cpp26/constexpr-eh22.C gcc-17-20260802/gcc/testsuite/g++.dg/cpp26/constexpr-eh22.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/cpp26/constexpr-eh22.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/cpp26/constexpr-eh22.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,41 ----
+ // PR c++/126508
+ // { dg-do compile { target c++26 } }
+ 
+ #include <exception>
+ 
+ constexpr bool
+ foo ()
+ {
+   return __builtin_current_exception () != nullptr;
+ }
+ 
+ constexpr int
+ bar ()
+ {
+   return __builtin_current_exception () != nullptr;
+ }
+ 
+ constexpr bool
+ baz ()
+ {
+   if (foo ())
+     return false;
+   try
+     {
+       throw 42;
+     }
+   catch (...)
+     {
+       if (!foo ())
+ 	return false;
+       if (!bar ())
+ 	return false;
+     }
+   if (foo ())
+     return false;
+   if (bar ())
+     return false;
+   return true;
+ }
+ 
+ static_assert (baz ());
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/cpp26/constexpr-eh23.C gcc-17-20260802/gcc/testsuite/g++.dg/cpp26/constexpr-eh23.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/cpp26/constexpr-eh23.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/cpp26/constexpr-eh23.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,22 ----
+ // PR c++/126508
+ // { dg-do compile { target c++26 } }
+ 
+ #include <exception>
+ 
+ constexpr std::exception_ptr
+ foo (const std::exception_ptr &x)
+ {
+   return x;
+ }
+ 
+ constexpr bool
+ baz ()
+ {
+   std::exception_ptr a = std::make_exception_ptr (42);
+   auto b = foo (a);
+   auto c = foo (a);
+   auto d = foo (a);
+   return true;
+ }
+ 
+ static_assert (baz ());
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/cpp26/expansion-stmt43.C gcc-17-20260802/gcc/testsuite/g++.dg/cpp26/expansion-stmt43.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/cpp26/expansion-stmt43.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/cpp26/expansion-stmt43.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/126420
+ // { dg-do compile { target c++14 } }
+ // { dg-options "" }
+ 
+ auto
+ foo ()
+ {
+   template for (auto x : {})	// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     return 42;
+   return 42L;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/cpp26/expansion-stmt44.C gcc-17-20260802/gcc/testsuite/g++.dg/cpp26/expansion-stmt44.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/cpp26/expansion-stmt44.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/cpp26/expansion-stmt44.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/126423
+ // { dg-do compile { target c++14 } }
+ // { dg-options "" }
+ 
+ auto
+ foo ()
+ {
+   template for (auto x : {})	// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     return x;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C gcc-17-20260802/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C	Mon Jul 27 02:16:10 2026
--- gcc-17-20260802/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C	Sun Aug  2 22:32:11 2026
***************
*** 1,6 ****
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_ok } */
  /* { dg-add-options arm_fp16_alternative } */
  
  #include "arm-fp16-ops.h"
--- 1,6 ----
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_hw } */
  /* { dg-add-options arm_fp16_alternative } */
  
  #include "arm-fp16-ops.h"
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C gcc-17-20260802/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C	Mon Jul 27 02:16:10 2026
--- gcc-17-20260802/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C	Sun Aug  2 22:32:11 2026
***************
*** 1,6 ****
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_ok } */
  /* { dg-options "-ffast-math" } */
  /* { dg-add-options arm_fp16_alternative } */
  
--- 1,6 ----
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_hw } */
  /* { dg-options "-ffast-math" } */
  /* { dg-add-options arm_fp16_alternative } */
  
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/init/array68.C gcc-17-20260802/gcc/testsuite/g++.dg/init/array68.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/init/array68.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/init/array68.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/126335
+ // { dg-do run { target c++20 } }
+ 
+ struct D {};
+ struct Lit {
+   constexpr Lit(char const *) {}
+   D str;
+ };
+ auto empty = Lit("");
+ struct S {
+   D * p;
+   constexpr S() { p = &empty.str; }
+   S(Lit) {}
+   ~S() {}
+ };
+ template<Lit L> S operator ""_s() { return L; }
+ struct M { S a, b; };
+ static M m[2]{{""_s, ""_s}, {}};
+ int main() { return m[1].a.p == nullptr; }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/lto/pr126194_2.C gcc-17-20260802/gcc/testsuite/g++.dg/lto/pr126194_2.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/lto/pr126194_2.C	Mon Jul 27 02:16:11 2026
--- gcc-17-20260802/gcc/testsuite/g++.dg/lto/pr126194_2.C	Sun Aug  2 22:32:11 2026
*************** extern "C" int run_repro(int argc);
*** 4,8 ****
  
  int main(int argc, char**)
  {
!     return run_repro(argc);
  }
--- 4,8 ----
  
  int main(int argc, char**)
  {
!     return run_repro(argc >= 0);
  }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/modules/anon-5_a.C gcc-17-20260802/gcc/testsuite/g++.dg/modules/anon-5_a.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/modules/anon-5_a.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/modules/anon-5_a.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/126209
+ // { dg-additional-options -fmodules }
+ // { dg-module-cmi }
+ export module kernel:event;
+ namespace { int anchor = 0; }
+ inline int i = anchor;
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/modules/anon-5_b.C gcc-17-20260802/gcc/testsuite/g++.dg/modules/anon-5_b.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/modules/anon-5_b.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/modules/anon-5_b.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,3 ----
+ // { dg-additional-options -fmodules }
+ export module kernel:memories;
+ import :event;
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/modules/anon-5_c.C gcc-17-20260802/gcc/testsuite/g++.dg/modules/anon-5_c.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/modules/anon-5_c.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/modules/anon-5_c.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,4 ----
+ // { dg-additional-options -fmodules }
+ export module kernel;
+ export import :event;
+ export import :memories;
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/modules/anon-5_d.C gcc-17-20260802/gcc/testsuite/g++.dg/modules/anon-5_d.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/modules/anon-5_d.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/modules/anon-5_d.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,3 ----
+ // { dg-additional-options -fmodules }
+ import kernel;
+ int main() { return 0; }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/opt/pmf2.C gcc-17-20260802/gcc/testsuite/g++.dg/opt/pmf2.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/opt/pmf2.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/opt/pmf2.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,37 ----
+ // PR c++/126310
+ // { dg-do run { target c++11 } }
+ // { dg-additional-options -O }
+ 
+ typedef int ValuePart;
+ struct base0  {
+   int t;
+ };
+ struct base1 {
+   void gg(ValuePart&&) {symbols = 1; }
+   int symbols;
+ };
+ struct sub : base0, base1 {};
+ 
+ using EncodeFnTy = void (sub::*)(int&&);
+ static const EncodeFnTy encode_fns[]
+ {
+     &sub::gg,
+     &sub::gg
+ };
+ 
+ [[gnu::noinline,gnu::noclone]]
+ void f(sub &m, bool i)
+ {
+  (&m->*encode_fns[i])(0);
+ }
+ int main()
+ {
+     sub a;
+     a.t = 0;
+     a.symbols = 0;
+     f(a, 0);
+     if (a.t != 0)
+       __builtin_abort ();
+     if (a.symbols != 1)
+       __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/reflect/diag6.C gcc-17-20260802/gcc/testsuite/g++.dg/reflect/diag6.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/reflect/diag6.C	Mon Jul 27 02:16:11 2026
--- gcc-17-20260802/gcc/testsuite/g++.dg/reflect/diag6.C	Sun Aug  2 22:32:11 2026
***************
*** 5,10 ****
  void
  g ()
  {
!   constexpr decltype(^^::) dm = ^^int; // { dg-message ".constexpr std::meta::info dm. previously declared here" }
!   constexpr decltype(^^::) dm = ^^int; // { dg-error "redeclaration of .constexpr std::meta::info dm." }
  }
--- 5,10 ----
  void
  g ()
  {
!   constexpr decltype(^^::) dm = ^^int; // { dg-message ".constexpr std::meta::info const dm. previously declared here" }
!   constexpr decltype(^^::) dm = ^^int; // { dg-error "redeclaration of .constexpr std::meta::info const dm." }
  }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/reflect/init2.C gcc-17-20260802/gcc/testsuite/g++.dg/reflect/init2.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/reflect/init2.C	Mon Jul 27 02:16:11 2026
--- gcc-17-20260802/gcc/testsuite/g++.dg/reflect/init2.C	Sun Aug  2 22:32:11 2026
*************** f ()
*** 8,14 ****
    constexpr static auto srefl = ^^int;
    constexpr auto *p = &srefl;
    constexpr auto **q = &p;  // { dg-error "unable to deduce" }
!   // { dg-message "types .auto\\*. and .std::meta::info\\* const." "" { target *-*-* } .-1 }
  }
  
  void
--- 8,14 ----
    constexpr static auto srefl = ^^int;
    constexpr auto *p = &srefl;
    constexpr auto **q = &p;  // { dg-error "unable to deduce" }
!   // { dg-message "types .auto\\*. and .std::meta::info const\\* const." "" { target *-*-* } .-1 }
  }
  
  void
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/reflect/pr126343.C gcc-17-20260802/gcc/testsuite/g++.dg/reflect/pr126343.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/reflect/pr126343.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/reflect/pr126343.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,43 ----
+ // PR c++/126343
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ namespace std {
+   namespace meta {
+     using info = decltype (^^::);
+   }
+   using nullptr_t = decltype (nullptr);
+ }
+ namespace my {
+   using info = decltype (^^::) const;
+   using nullptr_t = volatile decltype (nullptr);
+ }
+ constexpr auto a = ^^decltype (^^int);
+ constexpr auto b = ^^decltype (nullptr);
+ constexpr auto c = ^^const decltype (^^int);
+ constexpr auto d = ^^const decltype (nullptr);
+ constexpr auto e = ^^decltype (^^int) const volatile;
+ constexpr auto f = ^^decltype (nullptr) volatile;
+ constexpr auto g = ^^std::meta::info;
+ constexpr auto h = ^^std::nullptr_t;
+ constexpr auto i = ^^my::info;
+ constexpr auto j = ^^my::nullptr_t;
+ static_assert (a == ^^char);		// { dg-error "static assertion " }
+ 					// { dg-message "note: the comparison reduces to '\\\(\\\^\\\^decltype\\\(\\\^\\\^int\\\) == \\\^\\\^char\\\)'" "" { target *-*-* } .-1 }
+ static_assert (b == ^^short);		// { dg-error "static assertion " }
+ 					// { dg-message "note: the comparison reduces to '\\\(\\\^\\\^decltype\\\(nullptr\\\) == \\\^\\\^short int\\\)'" "" { target *-*-* } .-1 }
+ static_assert (c == ^^int);		// { dg-error "static assertion " }
+ 					// { dg-message "note: the comparison reduces to '\\\(\\\^\\\^decltype\\\(\\\^\\\^int\\\) const == \\\^\\\^int\\\)'" "" { target *-*-* } .-1 }
+ static_assert (d == ^^long);		// { dg-error "static assertion " }
+ 					// { dg-message "note: the comparison reduces to '\\\(\\\^\\\^decltype\\\(nullptr\\\) const == \\\^\\\^long int\\\)'" "" { target *-*-* } .-1 }
+ static_assert (e == ^^long long);	// { dg-error "static assertion " }
+ 					// { dg-message "note: the comparison reduces to '\\\(\\\^\\\^decltype\\\(\\\^\\\^int\\\) const volatile == \\\^\\\^long long int\\\)'" "" { target *-*-* } .-1 }
+ static_assert (f == ^^unsigned char);	// { dg-error "static assertion " }
+ 					// { dg-message "note: the comparison reduces to '\\\(\\\^\\\^decltype\\\(nullptr\\\) volatile == \\\^\\\^unsigned char\\\)'" "" { target *-*-* } .-1 }
+ static_assert (g == ^^unsigned short);	// { dg-error "static assertion " }
+ 					// { dg-message "note: the comparison reduces to '\\\(\\\^\\\^std::meta::info == \\\^\\\^short unsigned int\\\)'" "" { target *-*-* } .-1 }
+ static_assert (h == ^^unsigned int);	// { dg-error "static assertion " }
+ 					// { dg-message "note: the comparison reduces to '\\\(\\\^\\\^std::nullptr_t == \\\^\\\^unsigned int\\\)'" "" { target *-*-* } .-1 }
+ static_assert (i == ^^unsigned long);	// { dg-error "static assertion " }
+ 					// { dg-message "note: the comparison reduces to '\\\(\\\^\\\^my::info == \\\^\\\^long unsigned int\\\)'" "" { target *-*-* } .-1 }
+ static_assert (j == ^^unsigned long long);// { dg-error "static assertion " }
+ 					// { dg-message "note: the comparison reduces to '\\\(\\\^\\\^my::nullptr_t == \\\^\\\^long long unsigned int\\\)'" "" { target *-*-* } .-1 }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/tree-ssa/pr126296-1.C gcc-17-20260802/gcc/testsuite/g++.dg/tree-ssa/pr126296-1.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/tree-ssa/pr126296-1.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/tree-ssa/pr126296-1.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,20 ----
+ // PR tree-optimization/126296
+ // { dg-do compile { target c++20 } }
+ // { dg-options "-O2 -g0 -ftrapping-math -fdump-tree-optimized" }
+ // { dg-final { scan-tree-dump-times "\[ij]_\[0-9]+\\(D\\) <> \[ij]_\[0-9]+\\(D\\)" 1 "optimized" } }
+ // { dg-final { scan-tree-dump-times "i_\[0-9]+\\(D\\) <> 5\\.0" 1 "optimized" } }
+ // { dg-final { scan-tree-dump-not "if " "optimized" } }
+ 
+ #include <compare>
+ 
+ #define A __attribute__((noipa))
+ A bool f1 (double i, double j)
+ {
+   auto c = i <=> j;
+   return (c < 0) | (c > 0);
+ }
+ A bool f2 (double i)
+ {
+   auto c = i <=> 5.0;
+   return (c < 0) | (c > 0);
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.dg/tree-ssa/pr126296-2.C gcc-17-20260802/gcc/testsuite/g++.dg/tree-ssa/pr126296-2.C
*** gcc-17-20260727/gcc/testsuite/g++.dg/tree-ssa/pr126296-2.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.dg/tree-ssa/pr126296-2.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,20 ----
+ // PR tree-optimization/126296
+ // { dg-do compile { target c++20 } }
+ // { dg-options "-O2 -g0 -fno-trapping-math -fdump-tree-optimized" }
+ // { dg-final { scan-tree-dump-times "\[ij]_\[0-9]+\\(D\\) <> \[ij]_\[0-9]+\\(D\\)" 1 "optimized" } }
+ // { dg-final { scan-tree-dump-times "i_\[0-9]+\\(D\\) <> 5\\.0" 1 "optimized" } }
+ // { dg-final { scan-tree-dump-not "if " "optimized" } }
+ 
+ #include <compare>
+ 
+ #define A __attribute__((noipa))
+ A bool f1 (double i, double j)
+ {
+   auto c = i <=> j;
+   return (c < 0) | (c > 0);
+ }
+ A bool f2 (double i)
+ {
+   auto c = i <=> 5.0;
+   return (c < 0) | (c > 0);
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/g++.target/riscv/pr126449.C gcc-17-20260802/gcc/testsuite/g++.target/riscv/pr126449.C
*** gcc-17-20260727/gcc/testsuite/g++.target/riscv/pr126449.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/g++.target/riscv/pr126449.C	Sun Aug  2 22:32:11 2026
***************
*** 0 ****
--- 1,23 ----
+ /* PR target/126449 */
+ /* { dg-do compile { target { rv64 } } } */
+ /* { dg-options "-mcmodel=large -fno-pie" } */
+ 
+ struct AddIn
+ {
+   virtual ~AddIn ();
+ };
+ 
+ struct Base
+ {
+   virtual ~Base ();
+ };
+ 
+ struct Deriv : Base, AddIn
+ {
+ };
+ 
+ int
+ main ()
+ {
+   Deriv deriv;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.c-torture/execute/pr126405-2.c gcc-17-20260802/gcc/testsuite/gcc.c-torture/execute/pr126405-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.c-torture/execute/pr126405-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.c-torture/execute/pr126405-2.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,54 ----
+ /* The same out-of-SSA defect as pr126405.c, with a narrower companion vector.
+    That changes the register pressure around the copy of the oversized vector
+    and so the pair the fusion pass picks, but the cause is the same: two stack
+    slots of one variable sharing a MEM_EXPR.  Self-checking: aborts if the
+    result is wrong.  */
+ 
+ typedef long __attribute__((vector_size (16 * sizeof (long)))) v16di;
+ typedef int __attribute__((vector_size (8 * sizeof (int)))) v8si;
+ 
+ long g2, g12;
+ v16di g18;
+ v8si g3;
+ void *g27;
+ 
+ /* The wrong value is read from an uninitialised stack slot, so make sure the
+    stack the callee reuses does not happen to be zero.  */
+ __attribute__((noipa)) static void
+ dirty_stack (void)
+ {
+   volatile char buf[1024];
+   for (unsigned i = 0; i < sizeof (buf); i++)
+     buf[i] = 0xa5;
+ }
+ 
+ void
+ f31 (void)
+ {
+ lbl_br1:
+   g18 = ~g18;
+   g3 = ~g3;
+   if (g2)
+     goto lbl_br1;
+ lbl_b5:
+   switch (g12)
+     case 4:
+     case 0:
+       goto lbl_sw8;
+   __builtin_abort ();
+ lbl_sw8:
+   if (g27)
+     goto lbl_b5;
+   g18 = ~g18;
+ }
+ 
+ int
+ main (void)
+ {
+   dirty_stack ();
+   f31 ();
+   for (int i = 0; i < 16; i++)
+     if (g18[i] != 0)
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.c-torture/execute/pr126405-3.c gcc-17-20260802/gcc/testsuite/gcc.c-torture/execute/pr126405-3.c
*** gcc-17-20260727/gcc/testsuite/gcc.c-torture/execute/pr126405-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.c-torture/execute/pr126405-3.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,48 ----
+ /* A parameter that stays live across a redefinition of itself needs two
+    partitions, and an oversized vector parameter (V16DI, 128 bytes, no register
+    mode) puts both of them in memory.  Every name of both partitions has the
+    PARM_DECL as its base, so without a split the incoming argument slot and the
+    local slot both claim to be the parameter, and the load/store pair-fusion
+    pass fuses accesses across them.  Self-checking: aborts if the result is
+    wrong.  */
+ 
+ typedef long __attribute__((vector_size (16 * sizeof (long)))) v16di;
+ 
+ v16di g0, g1;
+ 
+ /* The wrong value is read from an uninitialised stack slot, so make sure the
+    stack the callee reuses does not happen to be zero.  */
+ __attribute__((noipa)) static void
+ dirty_stack (void)
+ {
+   volatile char buf[1024];
+   for (unsigned i = 0; i < sizeof (buf); i++)
+     buf[i] = 0xa5;
+ }
+ 
+ __attribute__((noipa)) static v16di
+ f (v16di p)
+ {
+   v16di old = p;
+   p = g0;
+   g1 = p;
+   return old + p;
+ }
+ 
+ int
+ main (void)
+ {
+   v16di a, r;
+ 
+   for (int i = 0; i < 16; i++)
+     {
+       a[i] = i + 1;
+       g0[i] = 100;
+     }
+   dirty_stack ();
+   r = f (a);
+   for (int i = 0; i < 16; i++)
+     if (r[i] != i + 101 || g1[i] != 100)
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.c-torture/execute/pr126405.c gcc-17-20260802/gcc/testsuite/gcc.c-torture/execute/pr126405.c
*** gcc-17-20260727/gcc/testsuite/gcc.c-torture/execute/pr126405.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.c-torture/execute/pr126405.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,56 ----
+ /* AArch64 wrong code at -O2.  Store motion creates several SSA versions of an
+    oversized vector temporary (V16DI, 128 bytes, no register mode).  The
+    partition holding the loop-carried versions has an anonymous representative,
+    so out-of-SSA left it and the partition of the copy taken for the use after
+    the loop sharing one MEM_EXPR.  The load/store pair-fusion pass then treated
+    two stores 144 bytes apart as adjacent, fused them, and left the tail of one
+    slot uninitialised.  Self-checking: aborts if the result is wrong.  */
+ 
+ typedef long __attribute__((vector_size (16 * sizeof (long)))) v16di;
+ typedef int __attribute__((vector_size (16 * sizeof (int)))) v16si;
+ 
+ long g2, g12;
+ v16di g18;
+ v16si g3;
+ void *g27;
+ 
+ /* The wrong value is read from an uninitialised stack slot, so make sure the
+    stack the callee reuses does not happen to be zero.  */
+ __attribute__((noipa)) static void
+ dirty_stack (void)
+ {
+   volatile char buf[1024];
+   for (unsigned i = 0; i < sizeof (buf); i++)
+     buf[i] = 0xa5;
+ }
+ 
+ void
+ f31 (void)
+ {
+ lbl_br1:
+   g18 = ~g18;
+   g3 = ~g3;
+   if (g2)
+     goto lbl_br1;
+ lbl_b5:
+   switch (g12)
+     case 4:
+     case 0:
+       goto lbl_sw8;
+   __builtin_abort ();
+ lbl_sw8:
+   if (g27)
+     goto lbl_b5;
+   g18 = ~g18;
+ }
+ 
+ int
+ main (void)
+ {
+   dirty_stack ();
+   f31 ();
+   for (int i = 0; i < 16; i++)
+     if (g18[i] != 0)
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/bitint-138.c gcc-17-20260802/gcc/testsuite/gcc.dg/bitint-138.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/bitint-138.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/bitint-138.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,26 ----
+ /* PR target/126447 */
+ /* { dg-do compile { target bitint575 } } */
+ /* { dg-options "-O0" } */
+ 
+ void foo (int);
+ [[gnu::returns_twice]] void bar ();
+ 
+ unsigned _BitInt(575)
+ baz ()
+ {
+   unsigned _BitInt(575) w = 1;
+   bar ();
+   w = __builtin_bitreverseg (w);
+   foo (3);
+   return w;
+ }
+ 
+ unsigned _BitInt(512)
+ qux ()
+ {
+   unsigned _BitInt(512) w = 1;
+   bar ();
+   w = __builtin_bswapg (w);
+   foo (3);
+   return w;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/bitint-139.c gcc-17-20260802/gcc/testsuite/gcc.dg/bitint-139.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/bitint-139.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/bitint-139.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,36 ----
+ /* PR tree-optimization/126471 */
+ /* { dg-do run { target bitint575 } } */
+ /* { dg-options "-O2" } */
+ 
+ [[gnu::noipa]] int
+ foo (unsigned _BitInt(129) x)
+ {
+   return __builtin_parityg (~x);
+ }
+ 
+ [[gnu::noipa]] int
+ bar (unsigned _BitInt(7) x)
+ {
+   return __builtin_parityg (~x);
+ }
+ 
+ [[gnu::noipa]] int
+ baz (unsigned _BitInt(256) x)
+ {
+   return __builtin_parityg (~x);
+ }
+ 
+ int
+ main ()
+ {
+   if (foo (0) != 1
+       || foo (~(unsigned _BitInt(129)) 0) != 0
+       || foo (1) != 0
+       || bar (0) != 1
+       || bar (~(unsigned _BitInt(7)) 0) != 0
+       || bar (1) != 0
+       || baz (0) != 0
+       || baz (~(unsigned _BitInt(256)) 0) != 0
+       || baz (1) != 1)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/bitint-140.c gcc-17-20260802/gcc/testsuite/gcc.dg/bitint-140.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/bitint-140.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/bitint-140.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile { target bitint575 } } */
+ /* { dg-options "-O2 -fdump-tree-cplxlower1" } */
+ /* { dg-final { scan-tree-dump-not "\.BSWAP \\\(" "cplxlower1" } } */
+ /* { dg-final { scan-tree-dump-not "\.BITREVERSE \\\(" "cplxlower1" } } */
+ /* { dg-final { scan-tree-dump-times "\.PARITY \\\(x_" 2 "cplxlower1" } } */
+ 
+ int
+ foo (unsigned _BitInt(512) x)
+ {
+   return __builtin_parityg (__builtin_bswapg (x));
+ }
+ 
+ int
+ bar (unsigned _BitInt(575) x)
+ {
+   return __builtin_parityg (__builtin_bitreverseg (x));
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/bitint-141.c gcc-17-20260802/gcc/testsuite/gcc.dg/bitint-141.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/bitint-141.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/bitint-141.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,19 ----
+ /* PR middle-end/126497 */
+ /* { dg-do compile { target bitint } } */
+ /* { dg-options "-std=c23" } */
+ 
+ typedef unsigned _BitInt (1) U;
+ 
+ U
+ foo (U a)
+ {
+   U t = a >= 1uwb;
+   return t;
+ }
+ 
+ U
+ bar (U a)
+ {
+   U t = a == 1uwb;
+   return t;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/pr124545.c gcc-17-20260802/gcc/testsuite/gcc.dg/pr124545.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/pr124545.c	Mon Jul 27 02:16:12 2026
--- gcc-17-20260802/gcc/testsuite/gcc.dg/pr124545.c	Sun Aug  2 22:32:12 2026
*************** int func4(int *a, int j) {
*** 25,29 ****
  }
  
  /* All four functions should fold to return 1 after FRE.  */
! /* The pattern is not applied on ilp32 targets (PR116845).  */
! /* { dg-final { scan-tree-dump-times "return 1;" 4 "fre1" { xfail { ilp32 } } } } */
--- 25,28 ----
  }
  
  /* All four functions should fold to return 1 after FRE.  */
! /* { dg-final { scan-tree-dump-times "return 1;" 4 "fre1" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/pr126405-1.c gcc-17-20260802/gcc/testsuite/gcc.dg/pr126405-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/pr126405-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/pr126405-1.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fgimple -ffloat-store -ftree-coalesce-vars -fdump-rtl-expand" } */
+ 
+ /* The partition holding v_2 has an anonymous representative, _1, so the
+    variable that expansion attaches to its stack slot comes from a name other
+    than the representative.  -ffloat-store puts both partitions of v in memory,
+    and they must not end up sharing a MEM_EXPR.  */
+ 
+ double in1, in2, out1, out2, out3, out4;
+ 
+ void __GIMPLE (ssa, startwith ("expand"))
+ f (void)
+ {
+   double v;
+   double _1;
+ 
+ __BB(2):
+   _1 = in1;
+   v_2 = _1;
+   v_3 = in2;
+   out1 = v_2;
+   out2 = v_3;
+   out3 = v_2;
+   out4 = v_3;
+   return;
+ }
+ 
+ /* { dg-final { scan-rtl-dump {\[[0-9]+ v\+0} "expand" } } */
+ /* { dg-final { scan-rtl-dump {\[[0-9]+ D\.[0-9]+\+0} "expand" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/pr126405-2.c gcc-17-20260802/gcc/testsuite/gcc.dg/pr126405-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/pr126405-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/pr126405-2.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,35 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fgimple -ffloat-store -ftree-coalesce-vars -fdump-rtl-expand" } */
+ 
+ /* Three partitions of v, each with an anonymous representative.  One keeps v
+    and the other two need their own decls, so that no two of the three stack
+    slots share a MEM_EXPR.  */
+ 
+ double in1, in2, in3, out1, out2, out3, out4, out5, out6;
+ 
+ void __GIMPLE (ssa, startwith ("expand"))
+ f (void)
+ {
+   double v;
+   double _1;
+   double _3;
+   double _5;
+ 
+ __BB(2):
+   _1 = in1;
+   v_2 = _1;
+   _3 = in2;
+   v_4 = _3;
+   _5 = in3;
+   v_6 = _5;
+   out1 = v_2;
+   out2 = v_4;
+   out3 = v_6;
+   out4 = v_2;
+   out5 = v_4;
+   out6 = v_6;
+   return;
+ }
+ 
+ /* { dg-final { scan-rtl-dump {\[[0-9]+ v\+0} "expand" } } */
+ /* { dg-final { scan-rtl-dump {\[[0-9]+ D\.[0-9]+\+0} "expand" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/pr126405-3.c gcc-17-20260802/gcc/testsuite/gcc.dg/pr126405-3.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/pr126405-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/pr126405-3.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -ffloat-store -ftree-coalesce-vars -fdump-rtl-expand" } */
+ 
+ /* Coalescing puts names of u and of v in one partition, and its representative
+    is a name of v rather than the lowest numbered member.  The variable that
+    expansion attaches to that partition is therefore the one of the
+    representative, and keying the split on any other member of the partition
+    leaves it and the second partition of v sharing a MEM_EXPR.  */
+ 
+ double g1, g2, g3, g4, g5;
+ 
+ void
+ f (int n)
+ {
+   double u = g1;
+   double v = u;
+   for (int i = 0; i < n; i++)
+     v = v + g3;
+   double t = v;
+   v = g2;
+   g4 = t;
+   g5 = v;
+ }
+ 
+ /* { dg-final { scan-rtl-dump {\[[0-9]+ v\+0} "expand" } } */
+ /* { dg-final { scan-rtl-dump {\[[0-9]+ D\.[0-9]+\+0} "expand" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/pr126434.c gcc-17-20260802/gcc/testsuite/gcc.dg/pr126434.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/pr126434.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/pr126434.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,18 ----
+ /* PR rtl-optimization/126434 */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target int128 } */
+ /* { dg-options "-O1 -favoid-store-forwarding --param=store-forwarding-max-distance=146" } */
+ 
+ /* The store partially covers the load, so the load is kept and its
+    zero-extension is re-applied over a SUBREG destination.  */
+ 
+ unsigned x;
+ __int128 y;
+ 
+ void
+ foo ()
+ {
+   __builtin_memset (&x, 0, 2);
+   y &= x;
+ }
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/pr126464.c gcc-17-20260802/gcc/testsuite/gcc.dg/pr126464.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/pr126464.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/pr126464.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,61 ----
+ /* PR tree-optimization/126464 */
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+ /* { dg-add-options ieee } */
+ /* { dg-skip-if "not IEEE float" { "pdp11-*-*" } } */
+ 
+ [[gnu::noipa]] double
+ foo (double x)
+ {
+   float y = (float) x;
+ 
+   if (y == -__builtin_inff ())
+     return x * 0.5;
+   return y;
+ }
+ 
+ [[gnu::noipa]] long double
+ bar (long double x)
+ {
+   double y = (double) x;
+ 
+   if (y == __builtin_inf ())
+     return x * 0.5L;
+   return y;
+ }
+ 
+ [[gnu::noipa]] double
+ baz (double x)
+ {
+   float y = (float) x;
+ 
+   if (y == __builtin_inff ())
+     return x * 0.5;
+   return y;
+ }
+ 
+ [[gnu::noipa]] long double
+ qux (long double x)
+ {
+   double y = (double) x;
+ 
+   if (y == -__builtin_inf ())
+     return x * 0.5L;
+   return y;
+ }
+ 
+ int
+ main ()
+ {
+   if (!__builtin_isinf ((double) 1e300)
+       && __builtin_isinf ((float) 1e300)
+       && (foo (-1e300) != -5e299
+ 	  || baz (1e300) != 5e299))
+     __builtin_abort ();
+ 
+   if (!__builtin_isinf ((long double) 1e4000L)
+       && __builtin_isinf ((double) 1e4000L)
+       && (bar (1e4000L) != 5e3999L
+ 	  || qux (-1e4000L) != -5e3999L))
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/pr126569-1.c gcc-17-20260802/gcc/testsuite/gcc.dg/pr126569-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/pr126569-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/pr126569-1.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2  -fno-tree-dce -fno-tree-dse" } */
+ /* PR tree-optimization/126569 */
+ 
+ int wx, qi, gw, ak;
+ 
+ void
+ f (void)
+ {
+   while (wx)
+     {
+       int k2 = ak;
+     ja:
+       *(int **) &k2 = &gw;
+       while (qi)
+         ++qi;
+     }
+   gw = 1;
+   goto ja;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c	Mon Jul 27 02:16:12 2026
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c	Sun Aug  2 22:32:12 2026
***************
*** 1,6 ****
  /* Test floating-point conversions.  Standard types and __fp16.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_ok }
  /* { dg-add-options arm_fp16_alternative } */
  
  #include "fp-int-convert.h"
--- 1,6 ----
  /* Test floating-point conversions.  Standard types and __fp16.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_hw } */
  /* { dg-add-options arm_fp16_alternative } */
  
  #include "fp-int-convert.h"
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c	Mon Jul 27 02:16:12 2026
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c	Sun Aug  2 22:32:12 2026
***************
*** 1,6 ****
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_ok }
  /* { dg-add-options arm_fp16_alternative } */
  
  #include "arm-fp16-ops.h"
--- 1,6 ----
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_hw } */
  /* { dg-add-options arm_fp16_alternative } */
  
  #include "arm-fp16-ops.h"
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c	Mon Jul 27 02:16:12 2026
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c	Sun Aug  2 22:32:12 2026
***************
*** 1,6 ****
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_ok }
  /* { dg-options "-ffast-math" } */
  /* { dg-add-options arm_fp16_alternative } */
  
--- 1,6 ----
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_hw } */
  /* { dg-options "-ffast-math" } */
  /* { dg-add-options arm_fp16_alternative } */
  
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/bitint-103.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/bitint-103.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/bitint-103.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/bitint-103.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,22 ----
+ /* PR tree-optimization/126476 */
+ /* { dg-do run { target bitint } } */
+ 
+ [[gnu::noipa]] int
+ foo (unsigned _BitInt(4) n)
+ {
+   return ((1ULL << n) & (1ULL << 20)) != 0;
+ }
+ 
+ [[gnu::noipa]] int
+ bar (unsigned _BitInt(4) n)
+ {
+   return (((1ULL << 40) >> n) & (1ULL << 20)) != 0;
+ }
+ 
+ int
+ main ()
+ {
+   for (unsigned i = 0; i < 16; i++)
+     if (foo (i) != 0 || bar (i) != 0)
+         __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/bitint-104.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/bitint-104.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/bitint-104.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/bitint-104.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,78 ----
+ /* PR tree-optimization/126490 */
+ /* { dg-do run { target bitint } } */
+ 
+ typedef unsigned _BitInt(1) T;
+ 
+ [[gnu::noipa]] int
+ foo (T a, T b)
+ {
+   return ((a & b) == (a ^ b)) + 1;
+ }
+ 
+ [[gnu::noipa]] int
+ bar (T a, T b)
+ {
+   return ((a & b) == (a ^ b)) != 0;
+ }
+ 
+ [[gnu::noipa]] int
+ baz (T a, T b)
+ {
+   return ((a & b) == (a ^ b)) == 0;
+ }
+ 
+ [[gnu::noipa]] int
+ qux (T a, T b)
+ {
+   return ((a & b) == (a ^ b)) < 1;
+ }
+ 
+ [[gnu::noipa]] int
+ corge (int a, int b)
+ {
+   return (a & b) == (a ^ b);
+ }
+ 
+ [[gnu::noipa]] int
+ garply (T a, T b)
+ {
+   return ((a & b) ^ (a == b)) + 1;
+ }
+ 
+ [[gnu::noipa]] int
+ fred (T a, T b)
+ {
+   return ((a & b) ^ (a == b)) != 0;
+ }
+ 
+ [[gnu::noipa]] int
+ xyzzy (T a, T b)
+ {
+   return ((a & b) ^ (a == b)) == 0;
+ }
+ 
+ [[gnu::noipa]] int
+ waldo (T a, T b)
+ {
+   return ((a & b) ^ (a == b)) < 1;
+ }
+ 
+ int
+ main ()
+ {
+   for (int i = 0; i < 4; ++i)
+     {
+       int a = i & 1;
+       int b = i >> 1;
+       int c = corge (a, b);
+       if (foo (a, b) != c + 1
+           || bar (a, b) != (c != 0)
+           || baz (a, b) != (c == 0)
+           || qux (a, b) != (c < 1)
+ 	  || garply (a, b) != c + 1
+           || fred (a, b) != (c != 0)
+           || xyzzy (a, b) != (c == 0)
+           || waldo (a, b) != (c < 1))
+ 	__builtin_abort ();
+     }
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/bitint-105.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/bitint-105.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/bitint-105.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/bitint-105.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,24 ----
+ /* PR tree-optimization/126504 */
+ /* { dg-do run { target bitint } } */
+ 
+ typedef unsigned _BitInt(4) U;
+ 
+ [[gnu::noipa]] int
+ foo (U n)
+ {
+   return ((1 << n) & (1 << 20)) != 0;
+ }
+ 
+ [[gnu::noipa]] int
+ bar (U n)
+ {
+   return ((unsigned) (1 << n) & (1u << 20)) != 0;
+ }
+ 
+ int
+ main ()
+ {
+   for (unsigned i = 0; i < 16; i++)
+     if (foo (i) || bar (i))
+       __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/bitint-106.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/bitint-106.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/bitint-106.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/bitint-106.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,38 ----
+ /* PR tree-optimization/126503 */
+ /* { dg-do run { target bitint575 } } */
+ 
+ [[gnu::noipa]] unsigned _BitInt(400)
+ foo (_BitInt(257) a)
+ {
+   return (unsigned _BitInt(400)) (-a);
+ }
+ 
+ [[gnu::noipa]] unsigned _BitInt(300)
+ bar (_BitInt(7) a, unsigned _BitInt(17) b)
+ {
+   _BitInt(257) x = (_BitInt(257)) a + -1;
+   return ~((unsigned _BitInt(300)) x ^ (unsigned _BitInt(300)) b);
+ }
+ 
+ [[gnu::noipa]] _BitInt(129)
+ baz (_BitInt(129) x)
+ {
+   return x - 24;
+ }
+ 
+ [[gnu::noipa]] int
+ qux (_BitInt(129) x, _BitInt(129) y)
+ {
+   return x == y;
+ }
+ 
+ int
+ main ()
+ {
+   if (foo (-1wb) != 1uwb)
+     __builtin_abort ();
+   if (bar (1wb, 3uwb) != (unsigned _BitInt(300)) -4wb)
+     __builtin_abort ();
+   if (!qux (baz (100), 76))
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/minmax-1.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/minmax-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/minmax-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/minmax-1.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do run } */
+ /* PR tree-optimization/126456 */
+ 
+ /* These should not produce min/max for
+    the outer conditional.  */
+ 
+ __attribute__((noipa)) int
+ min_le (int a, int c)
+ {
+   return (a <= 6) ? (a < c ? a : c) : (5 < c ? 5 : c);
+ }
+ 
+ __attribute__((noipa)) int
+ max_ge (int a, int c)
+ {
+   return (a >= 4) ? (a > c ? a : c) : (5 > c ? 5 : c);
+ }
+ 
+ int
+ main (void)
+ {
+   if (min_le (6, 10) != 6)
+     __builtin_abort ();
+   if (max_ge (4, 0) != 4)
+     __builtin_abort ();
+   return 0;
+ }
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/pr126313.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/pr126313.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/pr126313.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/pr126313.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do run } */
+ /* PR tree-optimization/126313 */
+ unsigned char a = 3;
+ short b, c, d;
+ int e;
+ static inline
+ char(f)(signed char g, signed char p2) {
+   return p2 == 0 || g && p2 == 1 ? 0 : g % p2; 
+ }
+ static inline
+ unsigned i(short g) {
+   d = g;
+   return c;
+ }
+ static inline
+ void fn3(signed char g, int p2) {
+   if (!(1 >= p2 && p2 <= g))
+     e = b | i(f(1, p2) > 0xE151060F);
+   else {
+     { d = p2; }
+   }
+ }
+ int main() {
+   fn3(a, a);
+   if (d != 0)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/pr126415.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/pr126415.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/pr126415.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/pr126415.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,61 ----
+ /* PR tree-optimization/126415 */
+ /* Wrong code from the inverse widening rewrite (T)A +- CST -> (T)(A +- CST'):
+    the introduced narrow signed operation may overflow even though the
+    original widened operation is fully defined.  The narrow op then collapses
+    through defined-wrap identities (mod 2^narrow-prec), changing the value.  */
+ /* { dg-do run } */
+ 
+ int printf(const char *, ...);
+ 
+ long d(short p1, unsigned e, char f) {
+   if (246 >= 149u - f)
+     return 0;
+   return f;
+ }
+ int g(char p1) { return d(0, 0, p1); }
+ int fn3(char p1) {
+   long i = g(p1 + 159);
+   return i;
+ }
+ 
+ /* Minimal variants: signed char/short/int inner, PLUS and MINUS, and a
+    negative CST encoded as a large unsigned constant.  Use signed char
+    explicitly: the checks encode sign-extension results and plain char
+    is unsigned on some targets.  */
+ volatile signed char vc1 = -84;
+ volatile signed char vc2 = 50;
+ volatile short vs = -21000;
+ volatile int vi = -2000000000;
+ volatile signed char vc3 = 100;
+ 
+ int main() {
+   if (fn3(-84) != 0)
+     __builtin_abort ();
+ 
+   signed char p1 = vc1;
+   signed char f1 = (signed char)((unsigned char)p1 + 159);
+   if ((unsigned)f1 + 97 != 172u)
+     __builtin_abort ();
+ 
+   signed char p2 = vc2;
+   signed char f2 = (signed char)((unsigned char)p2 + 97);
+   if ((unsigned)f2 - 97 != 4294967090u)
+     __builtin_abort ();
+ 
+   short p3 = vs;
+   short f3 = (short)((unsigned short)p3 + 40000);
+   if ((unsigned)f3 + 25536 != 44536u)
+     __builtin_abort ();
+ 
+   int p4 = vi;
+   int f4 = (int)((unsigned)p4 + 3000000000u);
+   if ((unsigned long long)f4 + 1294967296ull != 2294967296ull)
+     __builtin_abort ();
+ 
+   signed char p5 = vc3;
+   signed char f5 = (signed char)((unsigned char)p5 + 97);
+   if ((unsigned)f5 + 0xFFFFFF9Fu != 4294967140u)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/pr126458-1.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/pr126458-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/pr126458-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/pr126458-1.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do run { target bitint } } */
+ /* PR tree-optimization/126458 */
+ 
+ typedef unsigned _BitInt(17) u17;
+ typedef unsigned _BitInt(16) u16;
+ typedef unsigned _BitInt(15) u15;
+ typedef signed _BitInt(16) s16;
+ 
+ __attribute__((noipa)) int
+ neg (u16 a)
+ {
+   return ((s16) a) < 0;
+ }
+ 
+ __attribute__((noipa)) u17
+ fref (u16 a)
+ {
+   return neg (a) ? (u17) a : (u17)(u16) -1u;
+ }
+ 
+ __attribute__((noipa)) u17
+ f (u16 a)
+ {
+   return ((s16) a) < 0 ? (u17) a : (u17)(u16) -1u;
+ }
+ 
+ int
+ main (void)
+ {
+   static const u16 v[] = { ((u16)1u)<<15 , (u16)-2u, (u16)-1u, (u16)(u15)-1u, 0u };
+ 
+   for (unsigned i = 0; i < sizeof v / sizeof v[0]; i++)
+     if (f (v[i]) != fref (v[i]))
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/pr126464.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/pr126464.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/pr126464.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/pr126464.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,28 ----
+ /* PR tree-optimization/126464 */
+ /* { dg-do run } */
+ 
+ #if __DBL_MANT_DIG__ == 53 && __DBL_MAX_10_EXP__ == 308 \
+     && __DBL_HAS_INFINITY__ && __FLT_EVAL_METHOD__ == 0
+ [[gnu::noipa]] double
+ foo (double x, double y)
+ {
+   if (y >= -1e304 && y <= -1e300)
+     {
+       if (x + y == -__builtin_inf ())
+ 	return x * 0.5;
+     }
+   return x;
+ }
+ #endif
+ 
+ int
+ main ()
+ {
+ #if __DBL_MANT_DIG__ == 53 && __DBL_MAX_10_EXP__ == 308 \
+     && __DBL_HAS_INFINITY__ && __FLT_EVAL_METHOD__ == 0
+   if (foo (-__builtin_inf (), -1e303) != -__builtin_inf ())
+     __builtin_abort ();
+   if (foo (-1.797693134862e308, -1e303) != -1.797693134862e308 / 2.0)
+     __builtin_abort ();
+ #endif
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/pr126470-1.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/pr126470-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/pr126470-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/pr126470-1.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do run } */
+ /* PR tree-optimization/126470 */
+ 
+ /* *p should not become unconditional.  */
+ 
+ __attribute__((noipa)) int
+ f (int a, int *p)
+ {
+   return a != 0 ? a / (*p | 1) : 0;
+ }
+ 
+ int
+ main (void)
+ {
+   if (f (0, 0) != 0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/torture/pr126571-1.c gcc-17-20260802/gcc/testsuite/gcc.dg/torture/pr126571-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/torture/pr126571-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/torture/pr126571-1.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* PR tree-optimization/126571 */
+ typedef void (*FP) (void);
+ 
+ int
+ f (int c, FP fp, int *q)
+ {
+   int r;
+   if (c)
+     r = *(int *) fp;
+   else
+     r = *q;
+   return r + 1;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/factor_op_phi-restrict-1.c gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/factor_op_phi-restrict-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/factor_op_phi-restrict-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/factor_op_phi-restrict-1.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-phiopt-details-alias" } */
+ /* Testcase to make sure restrict works correctly by zeroing out clique/base. */
+ 
+ int
+ f (int c, int * __restrict fp, int *q)
+ {
+   int r;
+   if (c)
+     r = *fp;
+   else
+     r = *q;
+   return r + 1;
+ }
+ /* { dg-final { scan-tree-dump-times "changed to factor out load from" 1 "phiopt2" } } */
+ /* { dg-final { scan-tree-dump-not "clique " "phiopt2" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/minmax-29.c gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/minmax-29.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/minmax-29.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/minmax-29.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-optimized" } */
+ 
+ /* These should not produce max, only 3 min and there should be an if left. */
+ 
+ __attribute__((noipa)) int
+ min_le (int a, int c)
+ {
+   return (a <= 6) ? (a < c ? a : c) : (5 < c ? 5 : c);
+ }
+ 
+ int
+ min_le_1 (int a, int c)
+ {
+   if (a <= 6)
+     return (a < c ? a : c);
+   return (5 < c ? 5 : c);
+ }
+ 
+ int
+ min_le_2 (int a, int c)
+ {
+   int t = (a < c ? a : c);
+   int t1 = (5 < c ? 5 : c);
+   if (a <= 6)
+     return t;
+   return t1;
+ }
+ /* { dg-final { scan-tree-dump-not "MAX_EXPR " "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "MIN_EXPR " 3 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "if " 3 "optimized" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/minmax-30.c gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/minmax-30.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/minmax-30.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/minmax-30.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-optimized" } */
+ 
+ /* These should not produce min, only 3 max and there should be an if left. */
+ int
+ max_ge (int a, int c)
+ {
+   return (a >= 4) ? (a > c ? a : c) : (5 > c ? 5 : c);
+ }
+ 
+ int
+ max_ge_1 (int a, int c)
+ {
+   int t = (a > c ? a : c);
+   int t1 = (5 > c ? 5 : c);
+   return (a >= 4) ? t : t1;
+ }
+ 
+ int
+ max_ge_2 (int a, int c)
+ {
+   if (a >= 4)
+     return (a > c ? a : c);
+   return (5 > c ? 5 : c);
+ }
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "MAX_EXPR " 3 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "if " 3 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "MIN_EXPR " "optimized" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/minmax-31.c gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/minmax-31.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/minmax-31.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/minmax-31.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-optimized" } */
+ 
+ /* These should produce 2x min for each function. */
+ 
+ __attribute__((noipa)) int
+ min_le (int a, int c)
+ {
+   return (a < 5) ? (a < c ? a : c) : (5 < c ? 5 : c);
+ }
+ 
+ int
+ min_le_1 (int a, int c)
+ {
+   if (a < 5)
+     return (a < c ? a : c);
+   return (5 < c ? 5 : c);
+ }
+ 
+ int
+ min_le_2 (int a, int c)
+ {
+   int t = (a < c ? a : c);
+   int t1 = (5 < c ? 5 : c);
+   if (a < 5)
+     return t;
+   return t1;
+ }
+ /* { dg-final { scan-tree-dump-not "MAX_EXPR " "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "MIN_EXPR " 6 "optimized" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/minmax-32.c gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/minmax-32.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/minmax-32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/minmax-32.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-optimized" } */
+ 
+ /* These should produce 2x max for each function. */
+ int
+ max_ge (int a, int c)
+ {
+   return (a > 4) ? (a > c ? a : c) : (5 > c ? 5 : c);
+ }
+ 
+ int
+ max_ge_1 (int a, int c)
+ {
+   int t = (a > c ? a : c);
+   int t1 = (5 > c ? 5 : c);
+   return (a > 4) ? t : t1;
+ }
+ 
+ int
+ max_ge_2 (int a, int c)
+ {
+   if (a > 4)
+     return (a > c ? a : c);
+   return (5 > c ? 5 : c);
+ }
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "MAX_EXPR " 6 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "MIN_EXPR " "optimized" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/pr109843.c gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/pr109843.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/pr109843.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/pr109843.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,76 ----
+ /* PR tree-optimization/109843 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ #include <stdbool.h>
+ 
+ /* Transforms to copysign (y, x)  */
+ 
+ float copysign1 (float x, float y)
+ {
+   bool t = __builtin_signbit (x) == 0;
+   bool t1 = __builtin_signbit (y) == 0;
+   return (t == t1) ? y : -y;
+ }
+ 
+ float copysign2 (float x, float y)
+ {
+   bool t = __builtin_signbit (x) != 0;
+   bool t1 = __builtin_signbit (y) != 0;
+   return (t == t1) ? y : -y;
+ }
+ 
+ float copysign3 (float x, float y)
+ {
+   bool t = __builtin_signbit (x) != 0;
+   bool t1 = __builtin_signbit (y) == 0;
+   return (t != t1) ? y : -y;
+ }
+ 
+ float copysign4 (float x, float y)
+ {
+   bool t = __builtin_signbit (x) == 0;
+   bool t1 = __builtin_signbit (y) != 0;
+   return (t != t1) ? y : -y;
+ }
+ 
+ float copysign5 (float x, float y)
+ {
+   bool t = __builtin_signbit (y) == 0;
+   bool t1 = __builtin_signbit (x) == 0;
+   return (t == t1) ? y : -y;
+ }
+ 
+ /* Transforms to copysign (y, -x)  */
+ 
+ float copysign6 (float x, float y)
+ {
+   bool t = __builtin_signbit (x) == 0;
+   bool t1 = __builtin_signbit (y) == 0;
+   return (t != t1) ? y : -y;
+ }
+ 
+ float copysign7 (float x, float y)
+ {
+   bool t = __builtin_signbit (x) != 0;
+   bool t1 = __builtin_signbit (y) == 0;
+   return (t == t1) ? y : -y;
+ }
+ 
+ float copysign8 (float x, float y)
+ {
+   bool t = __builtin_signbit (x) == 0;
+   bool t1 = __builtin_signbit (y) != 0;
+   return (t == t1) ? y : -y;
+ }
+ 
+ float copysign9 (float x, float y)
+ {
+   bool t = __builtin_signbit (x) != 0;
+   bool t1 = __builtin_signbit (y) != 0;
+   return (t != t1) ? y : -y;
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "signbit" "optimized" { target ifn_copysign } } } */
+ /* { dg-final { scan-tree-dump-times "= \\.COPYSIGN" 9 "optimized" { target ifn_copysign } } } */
+ /* { dg-final { scan-tree-dump-times " = -" 4 "optimized" { target ifn_copysign } } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/pr122848.c gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/pr122848.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/pr122848.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/pr122848.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,70 ----
+ /* PR tree-optimization/122848 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ int f1 (unsigned char a)
+ {
+   int t = a;
+   int t1 = (signed char) a;
+   return t & t1;
+ }
+ 
+ int f2 (unsigned char a)
+ {
+   int t = a;
+   int t1 = (signed char) a;
+   return t1 & t;
+ }
+ 
+ int f3 (unsigned char a)
+ {
+   return (int) a & (int) (signed char) a;
+ }
+ 
+ int f4 (unsigned short a)
+ {
+   return (int) a & (int) (short) a;
+ }
+ 
+ long f5 (unsigned int a)
+ {
+   return (long) a & (long) (int) a;
+ }
+ 
+ unsigned int f6 (unsigned char a)
+ {
+   return (unsigned int) a & (unsigned int) (signed char) a;
+ }
+ 
+ int f7 (unsigned char a)
+ {
+   return (int) a | (int) (signed char) a;
+ }
+ 
+ int f8 (unsigned short a)
+ {
+   return (int) a | (int) (short) a;
+ }
+ 
+ int f9 (signed char a)
+ {
+   return (int) (unsigned char) a & (int) a;
+ }
+ 
+ int f10 (signed char a)
+ {
+   return (int) a & (int) (unsigned char) a;
+ }
+ 
+ int f11 (signed char a)
+ {
+   return (int) (unsigned char) a | (int) a;
+ }
+ 
+ int f12 (signed short a)
+ {
+   return (int) (unsigned short) a | (int) a;
+ }
+ 
+ /* { dg-final { scan-tree-dump-not " & " "optimized" } } */
+ /* { dg-final { scan-tree-dump-not " \\| " "optimized" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/pr123311-1.c gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/pr123311-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/pr123311-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/pr123311-1.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ #define min(x, y) ((x) < (y) ? (x) : (y))
+ 
+ int
+ f1 (unsigned int x, unsigned int y)
+ {
+   return min (__builtin_ctz (x), __builtin_ctz (y));
+ }
+ 
+ int
+ f2 (unsigned int x, unsigned int y)
+ {
+   return min (__builtin_clz (x), __builtin_clz (y));
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\\| " 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin_ctz|\\.CTZ" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin_clz|\\.CLZ" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "MIN_EXPR" "optimized" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/pr123311-2.c gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/pr123311-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/pr123311-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/pr123311-2.c	Sun Aug  2 22:32:12 2026
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ /* { dg-additional-options "-mbmi -mlzcnt" { target i?86-*-* x86_64-*-* } } */
+ /* { dg-require-effective-target clz } */
+ /* { dg-require-effective-target ctz } */
+ 
+ #define W (__SIZEOF_INT__ * __CHAR_BIT__)
+ #define min(x, y) ((x) < (y) ? (x) : (y))
+ 
+ int
+ f1 (unsigned int x, unsigned int y)
+ {
+   return min (__builtin_ctzg (x, W), __builtin_ctzg (y, W));
+ }
+ 
+ int
+ f2 (unsigned int x, unsigned int y)
+ {
+   return min (__builtin_clzg (x, W), __builtin_clzg (y, W));
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\\| " 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin_ctz|\\.CTZ" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin_clz|\\.CLZ" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "MIN_EXPR" "optimized" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-113.c gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-113.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-113.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-113.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -fdump-tree-fre1" } */
+ 
+ int func1(int *a, int j) {
+   int k = j - 1;
+   return a[j - 1] == a[k];
+ }
+ 
+ int func2(int *a, int j) {
+   int k = j - 1;
+   return a[k] == a[j-1];
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 1;" 2 "fre1" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-114.c gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-114.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-114.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-114.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -fdump-tree-fre1" } */
+ 
+ /* Variable-addend variant of ssa-fre-113.c: the narrow operation is
+    seen first, the widened form of it second.  Uses __PTRDIFF_TYPE__ so
+    the test degenerates gracefully on ilp32 targets.  */
+ 
+ int func1(int *a, int j, int i) {
+   int k = j + i;
+   int x = a[k];
+   __PTRDIFF_TYPE__ idx = (__PTRDIFF_TYPE__)j + i;
+   return x == a[idx];
+ }
+ 
+ int func2(int *a, int j, int i) {
+   int k = j - i;
+   int x = a[k];
+   __PTRDIFF_TYPE__ idx = (__PTRDIFF_TYPE__)j - (__PTRDIFF_TYPE__)i;
+   return x == a[idx];
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 1;" 2 "fre1" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/ubsan/bitint-5.c gcc-17-20260802/gcc/testsuite/gcc.dg/ubsan/bitint-5.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/ubsan/bitint-5.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/ubsan/bitint-5.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,36 ----
+ /* PR middle-end/126447 */
+ /* { dg-do compile { target bitint575 } } */
+ /* { dg-options "-fsanitize=signed-integer-overflow" } */
+ 
+ void foo (int);
+ [[gnu::returns_twice]] void bar ();
+ 
+ _BitInt(575)
+ baz ()
+ {
+   _BitInt(575) w = 1;
+   bar ();
+   w *= 3;
+   foo (3);
+   return w;
+ }
+ 
+ _BitInt(575)
+ qux ()
+ {
+   _BitInt(575) w = 1;
+   bar ();
+   w += 3;
+   foo (3);
+   return w;
+ }
+ 
+ _BitInt(575)
+ fred (_BitInt(575) x)
+ {
+   _BitInt(575) w = 1;
+   bar ();
+   w -= x;
+   foo (3);
+   return w;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-15.c gcc-17-20260802/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-15.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-15.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-15.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,47 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32gcv -mabi=ilp32 -O3 -ftree-vectorize -mrvv-max-lmul=dynamic -fdump-tree-vect-details" } */
+ 
+ #include <stdint-gcc.h>
+ 
+ void foo2 (int64_t *__restrict a,
+           int32_t *__restrict b,
+           int32_t *__restrict c,
+           int32_t *__restrict a2,
+           int32_t *__restrict b2,
+           int32_t *__restrict c2,
+           int32_t *__restrict a3,
+           int32_t *__restrict b3,
+           int32_t *__restrict c3,
+           int32_t *__restrict a4,
+           int32_t *__restrict b4,
+           int32_t *__restrict c4,
+           int64_t *__restrict a5,
+           int32_t *__restrict b5,
+           int32_t *__restrict c5,
+           int n)
+ {
+     for (int i = 0; i < n; i++){
+       a[i] = b[i] - c[i];
+       b5[i] = b[i] - c[i];
+       a2[i] = b2[i] - c2[i];
+       a3[i] = b3[i] - c3[i];
+       a4[i] = b4[i] - c4[i];
+       a5[i] = a[i] - a4[i];
+       a[i] = a5[i] - b5[i] - a[i];
+ 
+       a[i] = a[i] - c[i];
+       b5[i] = a[i] - c[i];
+       a2[i] = a[i] - c2[i];
+       a3[i] = a[i] - c3[i];
+       a4[i] = a[i] - c4[i];
+       a5[i] = a[i] - a4[i];
+       a[i] = a[i] - b5[i] - a[i];
+     }
+ }
+ 
+ /* { dg-final { scan-assembler {e64,m8} } } */
+ /* { dg-final { scan-assembler-not {csrr} } } */
+ /* { dg-final { scan-tree-dump-not "Preferring smaller LMUL loop because it has unexpected spills" "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Maximum lmul = 8" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Maximum lmul = 4" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Maximum lmul = 2" 1 "vect" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-epil-1.c gcc-17-20260802/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-epil-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-epil-1.c	Mon Jul 27 02:16:13 2026
--- gcc-17-20260802/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-epil-1.c	Sun Aug  2 22:32:13 2026
*************** void test (const unsigned char * __restr
*** 52,58 ****
      pp_avg_rgb[3] = pp_avg_rgb_3;
  }
  
! /* Even though there's an SLP opportunity in-order reductions should never use
!    masked epilogs.  */
! /* { dg-final { scan-tree-dump "optimized: loop vectorized using 64 byte vectors" "vect" } } */
! /* { dg-final { scan-tree-dump "optimized: epilogue loop vectorized using 32 byte vectors" "vect" } } */
--- 52,57 ----
      pp_avg_rgb[3] = pp_avg_rgb_3;
  }
  
! /* In-order reductions should not use masked epilogs here.  */
! /* { dg-final { scan-tree-dump "optimized: loop vectorized using 16 byte vectors" "vect" } } */
! /* { dg-final { scan-tree-dump-not "optimized: epilogue loop vectorized using masked" "vect" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/vect/vect-pr126404.c gcc-17-20260802/gcc/testsuite/gcc.dg/vect/vect-pr126404.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/vect/vect-pr126404.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/vect/vect-pr126404.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-march=x86-64-v4" { target { x86_64-*-* i?86-*-* } } } */
+ 
+ unsigned ff(int g7)
+ {
+   int v3 = 8;
+   int ob13;
+   int ov14;
+   do {
+       ob13 = __builtin_add_overflow(2, g7, &ov14);
+       g7 = 0;
+       v3 = __builtin_ctz(v3);
+   } while (ob13);
+   return v3;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.dg/vect/vect-pr126457.c gcc-17-20260802/gcc/testsuite/gcc.dg/vect/vect-pr126457.c
*** gcc-17-20260727/gcc/testsuite/gcc.dg/vect/vect-pr126457.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.dg/vect/vect-pr126457.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ 
+ int g6, g24;
+ _Bool f18_c6;
+ void f18()
+ {
+     int a1;
+     int bb16 = 607229;
+ lbl_sw5:
+     bb16 = __builtin_clz(bb16);
+     f18_c6 = a1;
+     a1 = g24;
+     if (f18_c6) goto lbl_sw5;
+     g6 = __builtin_parity(bb16);
+     return;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-1.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-1.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,68 ----
+ /* { dg-do assemble { target { aarch64*-*-* } } } */
+ /* { dg-require-effective-target aarch64_f16f32dot_neon_ok } */
+ /* { dg-add-options aarch64_f16f32dot_neon }  */
+ /* { dg-additional-options "-save-temps" } */
+ /* { dg-final { check-function-bodies "**" "" {-O[^0]} } } */
+ /* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
+ 
+ #include <arm_neon.h>
+ 
+ /*
+ **ufoo:
+ **	fdot	v0.2s, (v1.4h, v2.4h|v2.4h, v1.4h)
+ **	ret
+ */
+ float32x2_t ufoo(float32x2_t r, float16x4_t x, float16x4_t y)
+ {
+   return vdot_f32_f16 (r, x, y);
+ }
+ 
+ /*
+ **ufooq:
+ **	fdot	v0.4s, (v1.8h, v2.8h|v2.8h, v1.8h)
+ **	ret
+ */
+ float32x4_t ufooq(float32x4_t r, float16x8_t x, float16x8_t y)
+ {
+   return vdotq_f32_f16 (r, x, y);
+ }
+ 
+ /*
+ **ufoo_lane:
+ **	fdot	v0.2s, v1.4h, v2.2h\[0\]
+ **	ret
+ */
+ float32x2_t ufoo_lane(float32x2_t r, float16x4_t x, float16x4_t y)
+ {
+   return vdot_lane_f32_f16 (r, x, y, 0);
+ }
+ 
+ /*
+ **ufoo_laneq:
+ **	fdot	v0.2s, v1.4h, v2.2h\[2\]
+ **	ret
+ */
+ float32x2_t ufoo_laneq(float32x2_t r, float16x4_t x, float16x8_t y)
+ {
+   return vdot_laneq_f32_f16 (r, x, y, 2);
+ }
+ 
+ /*
+ **ufooq_lane:
+ **	fdot	v0.4s, v1.8h, v2.2h\[1\]
+ **	ret
+ */
+ float32x4_t ufooq_lane(float32x4_t r, float16x8_t x, float16x4_t y)
+ {
+   return vdotq_lane_f32_f16 (r, x, y, 1);
+ }
+ 
+ /*
+ **ufooq_laneq:
+ **	fdot	v0.4s, v1.8h, v2.2h\[2\]
+ **	ret
+ */
+ float32x4_t ufooq_laneq(float32x4_t r, float16x8_t x, float16x8_t y)
+ {
+   return vdotq_laneq_f32_f16 (r, x, y, 2);
+ }
\ No newline at end of file
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-2.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-2.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,70 ----
+ /* { dg-do assemble { target { aarch64*-*-* } } } */
+ /* { dg-require-effective-target stdint_types_mbig_endian } */
+ /* { dg-require-effective-target aarch64_f16f32dot_neon_ok } */
+ /* { dg-add-options aarch64_f16f32dot_neon }  */
+ /* { dg-additional-options "-mbig-endian --save-temps" } */
+ /* { dg-final { check-function-bodies "**" "" {-O[^0]} } } */
+ /* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
+ 
+ 
+ #include <arm_neon.h>
+ 
+ /*
+ **ufoo:
+ **	fdot	v0.2s, (v1.4h, v2.4h|v2.4h, v1.4h)
+ **	ret
+ */
+ float32x2_t ufoo(float32x2_t r, float16x4_t x, float16x4_t y)
+ {
+   return vdot_f32_f16 (r, x, y);
+ }
+ 
+ /*
+ **ufooq:
+ **	fdot	v0.4s, (v1.8h, v2.8h|v2.8h, v1.8h)
+ **	ret
+ */
+ float32x4_t ufooq(float32x4_t r, float16x8_t x, float16x8_t y)
+ {
+   return vdotq_f32_f16 (r, x, y);
+ }
+ 
+ /*
+ **ufoo_lane:
+ **	fdot	v0.2s, v1.4h, v2.2h\[0\]
+ **	ret
+ */
+ float32x2_t ufoo_lane(float32x2_t r, float16x4_t x, float16x4_t y)
+ {
+   return vdot_lane_f32_f16 (r, x, y, 0);
+ }
+ 
+ /*
+ **ufoo_laneq:
+ **	fdot	v0.2s, v1.4h, v2.2h\[2\]
+ **	ret
+ */
+ float32x2_t ufoo_laneq(float32x2_t r, float16x4_t x, float16x8_t y)
+ {
+   return vdot_laneq_f32_f16 (r, x, y, 2);
+ }
+ 
+ /*
+ **ufooq_lane:
+ **	fdot	v0.4s, v1.8h, v2.2h\[1\]
+ **	ret
+ */
+ float32x4_t ufooq_lane(float32x4_t r, float16x8_t x, float16x4_t y)
+ {
+   return vdotq_lane_f32_f16 (r, x, y, 1);
+ }
+ 
+ /*
+ **ufooq_laneq:
+ **	fdot	v0.4s, v1.8h, v2.2h\[2\]
+ **	ret
+ */
+ float32x4_t ufooq_laneq(float32x4_t r, float16x8_t x, float16x8_t y)
+ {
+   return vdotq_laneq_f32_f16 (r, x, y, 2);
+ }
\ No newline at end of file
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-3.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-3.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/fdot-3.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do assemble { target { aarch64*-*-* } } } */
+ /* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
+ /* { dg-require-effective-target aarch64_f16f32dot_neon_ok } */
+ /* { dg-add-options aarch64_f16f32dot_neon }  */
+ /* { dg-additional-options "--save-temps" } */
+ 
+ #include <arm_neon.h>
+ 
+ float32x2_t ufoo_lane(float32x2_t r, float16x4_t x, float16x4_t y)
+ {
+   return vdot_lane_f32_f16 (r, x, y, 2);
+ }
+ 
+ float32x2_t ufoo_laneq(float32x2_t r, float16x4_t x, float16x8_t y)
+ {
+   return vdot_laneq_f32_f16 (r, x, y, 4);
+ }
+ 
+ float32x4_t ufooq_lane(float32x4_t r, float16x8_t x, float16x4_t y)
+ {
+   return vdotq_lane_f32_f16 (r, x, y, 3);
+ }
+ 
+ float32x4_t ufooq_laneq(float32x4_t r, float16x8_t x, float16x8_t y)
+ {
+   return vdotq_laneq_f32_f16 (r, x, y, 5);
+ }
+ 
+ /* { dg-error {lane 2 out of range 0 - 1} "" { target *-*-* } 0 } */
+ /* { dg-error {lane 4 out of range 0 - 3} "" { target *-*-* } 0 } */
+ /* { dg-error {lane 3 out of range 0 - 1} "" { target *-*-* } 0 } */
+ /* { dg-error {lane 5 out of range 0 - 3} "" { target *-*-* } 0 } */
\ No newline at end of file
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/ffs.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/ffs.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/ffs.c	Mon Jul 27 02:16:13 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/ffs.c	Sun Aug  2 22:32:13 2026
***************
*** 9,17 ****
  /*
  ** ffsw1:
  **	cmp	w1, 0
! **	rbit	w0, w1
! **	clz	w0, w0
! **	csinc	w0, wzr, w0, eq
  **	ret
  */
  
--- 9,17 ----
  /*
  ** ffsw1:
  **	cmp	w1, 0
! **	rbit	(w[0-9]+), w1
! **	clz	(w[0-9]+), \1
! **	csinc	w0, wzr, \2, eq
  **	ret
  */
  
*************** int ffsw1 (int y, uint32_t x)
*** 23,31 ****
  /*
  ** ffsx1:
  **	cmp	x1, 0
! **	rbit	x0, x1
! **	clz	x0, x0
! **	csinc	x0, xzr, x0, eq
  **	ret
  */
  
--- 23,31 ----
  /*
  ** ffsx1:
  **	cmp	x1, 0
! **	rbit	(x[0-9]+), x1
! **	clz	(x[0-9]+), \1
! **	csinc	x0, xzr, \2, eq
  **	ret
  */
  
*************** int ffsx1 (int y, uint64_t x)
*** 39,46 ****
  /*
  ** ffsw2:
  **	cmp	w1, 0
! **	ctz	w0, w1
! **	csinc	w0, wzr, w0, eq
  **	ret
  */
  
--- 39,46 ----
  /*
  ** ffsw2:
  **	cmp	w1, 0
! **	ctz	(w[0-9]+), w1
! **	csinc	w0, wzr, \1, eq
  **	ret
  */
  
*************** int ffsw2 (int y, uint32_t x)
*** 52,59 ****
  /*
  ** ffsx2:
  **	cmp	x1, 0
! **	ctz	x0, x1
! **	csinc	x0, xzr, x0, eq
  **	ret
  */
  
--- 52,59 ----
  /*
  ** ffsx2:
  **	cmp	x1, 0
! **	ctz	(x[0-9]+), x1
! **	csinc	x0, xzr, \1, eq
  **	ret
  */
  
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/frecpe_1.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/frecpe_1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/frecpe_1.c	Mon Jul 27 02:16:13 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/frecpe_1.c	Sun Aug  2 22:32:13 2026
*************** f2 (double x)
*** 15,18 ****
    return 1 / x;
  }
  
! /* { dg-final { scan-assembler {\tfrecpe\t(d[0-9]+), d0\n\tfrecps\t(d[0-9]+), \1, d0\n\tfmul\t\1, \1, \2\n\tfrecps\t\2, \1, d0\n\tfmul\td0, \1, \2\n} } } */
--- 15,18 ----
    return 1 / x;
  }
  
! /* { dg-final { scan-assembler {\tfrecpe\t(d[0-9]+), d0\n\tfrecps\t(d[0-9]+), \1, d0\n\tfmul\t(d[0-9]+), \1, \2\n\tfrecps\t(d[0-9]+), \1, d0\n\tfmul\td0, \3, \4\n} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/frecpe_2.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/frecpe_2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/frecpe_2.c	Mon Jul 27 02:16:13 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/frecpe_2.c	Sun Aug  2 22:32:13 2026
*************** f1 (float x, float y)
*** 7,13 ****
    return y / x;
  }
  
! /* { dg-final { scan-assembler {\tfrecpe\t(s[0-9]+), s0\n\tfrecps\t(s[0-9]+), \1, s0\n\tfmul\t\1, \1, s1\n\tfmul\ts0, \1, \2\n} } } */
  
  double
  f2 (double x, double y)
--- 7,13 ----
    return y / x;
  }
  
! /* { dg-final { scan-assembler {\tfrecpe\t(s[0-9]+), s0\n\tfrecps\t(s[0-9]+), \1, s0\n\tfmul\t(s[0-9]+), \1, s1\n\tfmul\ts0, \3, \2\n} } } */
  
  double
  f2 (double x, double y)
*************** f2 (double x, double y)
*** 15,18 ****
    return y / x;
  }
  
! /* { dg-final { scan-assembler {\tfrecpe\t(d[0-9]+), d0\n\tfrecps\t(d[0-9]+), \1, d0\n\tfmul\t\1, \1, \2\n\tfrecps\t\2, \1, d0\n\tfmul\t\1, \1, d1\n\tfmul\td0, \1, \2\n} } } */
--- 15,18 ----
    return y / x;
  }
  
! /* { dg-final { scan-assembler {\tfrecpe\t(d[0-9]+), d0\n\tfrecps\t(d[0-9]+), \1, d0\n\tfmul\t(d[0-9]+), \1, \2\n\tfrecps\t(d[0-9]+), \3, d0\n\tfmul\t(d[0-9]+), \3, d1\n\tfmul\td0, \5, \4\n} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel-1.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel-1.c	Mon Jul 27 02:16:13 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel-1.c	Sun Aug  2 22:32:13 2026
***************
*** 6,12 ****
  ** 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
  */
--- 6,12 ----
  ** f1:
  **	...
  **	cmp	w[0-9]+, w[0-9]+
! **	csel	w[0-9]+, w[0-9]+, w[0-9]+, (le|gt)
  **	add	w[0-9]+, w[0-9]+, w[0-9]+
  **	ret
  */
*************** int f1 (int a, int b, int c, int d, int
*** 22,28 ****
  ** 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
  */
--- 22,28 ----
  ** f2:
  **	...
  **	cmp	x[0-9]+, x[0-9]+
! **	csel	x[0-9]+, x[0-9]+, x[0-9]+, (le|gt)
  **	add	x[0-9]+, x[0-9]+, x[0-9]+
  **	ret
  */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel.c	Mon Jul 27 02:16:13 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel.c	Sun Aug  2 22:32:13 2026
***************
*** 10,16 ****
  ** 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
  */
--- 10,16 ----
  ** f1: { xfail *-*-* }
  **	...
  **	cmp	w[0-9]+, w[0-9]+
! **	csel	w[0-9]+, w[0-9]+, w[0-9]+, (le|gt)
  **	add	w[0-9]+, w[0-9]+, w[0-9]+
  **	ret
  */
*************** int f1 (int a, int b, int c)
*** 26,32 ****
  ** 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
  */
--- 26,32 ----
  ** f2: { xfail *-*-* }
  **	...
  **	cmp	x[0-9]+, x[0-9]+
! **	csel	x[0-9]+, x[0-9]+, x[0-9]+, (le|gt)
  **	add	x[0-9]+, x[0-9]+, x[0-9]+
  **	ret
  */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/pr126480.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/pr126480.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/pr126480.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/pr126480.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,20 ----
+ /* PR target/126480 */
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O2 -march=armv8.2-a -fdump-tree-slp2-details" } */
+ 
+ void
+ foo (unsigned int *foo, unsigned long *a, unsigned long *b)
+ {
+   foo[0] = a[0] >> 33;
+   foo[1] = a[0] >> 44;
+ }
+ 
+ /* If costs are pessimistically charged for scalar truncations, then the
+    function is vectorized.  Truncation is expected to be free as part of the
+    store operations, therefore the scalar alternative is expected to be more
+    efficient than the vectorized version.  */
+ /* { dg-final { scan-tree-dump-not "basic block part vectorized" "slp2" } } */
+ 
+ /* { dg-final { scan-assembler-not {\tushl\tv[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d\n} } } */
+ /* { dg-final { scan-assembler-times {\tlsr\tx[0-9]+, x[0-9]+, 33\n} 1 } } */
+ /* { dg-final { scan-assembler-times {\tlsr\tx[0-9]+, x[0-9]+, 44\n} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_2.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_2.c	Mon Jul 27 02:16:13 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_2.c	Sun Aug  2 22:32:13 2026
*************** void test(mfloat8x8_t x8, mfloat8x16_t x
*** 14,19 ****
--- 14,20 ----
    vcopy_lane_mf8(x8, 0, x8, -1); /* { dg-error {passing -1 to argument 4 of 'vcopy_lane_mf8', which expects a value in the range \[0, 7\]} } */
    vcopy_lane_mf8(x8, 0, x8, 8); /* { dg-error {passing 8 to argument 4 of 'vcopy_lane_mf8', which expects a value in the range \[0, 7\]} } */
    vcopy_lane_mf8(x8, 100, x8, 100); /* { dg-error {passing 100 to argument 2 of 'vcopy_lane_mf8', which expects a value in the range \[0, 7\]} } */
+   /* { dg-error {passing 100 to argument 4 of 'vcopy_lane_mf8', which expects a value in the range \[0, 7\]} "" { target *-*-* } .-1 } */
  
    vcopy_laneq_mf8(x8, -1, x16, 0); /* { dg-error {passing -1 to argument 2 of 'vcopy_laneq_mf8', which expects a value in the range \[0, 7\]} } */
    vcopy_laneq_mf8(x8, 8, x16, 0); /* { dg-error {passing 8 to argument 2 of 'vcopy_laneq_mf8', which expects a value in the range \[0, 7\]} } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_s8.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_s8.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_s8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_s8.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtb_untied:
+ **	scvtf	z0\.h, z4\.b
+ **	ret
+ */
+ TEST_DUAL_Z (cvtb_untied, svfloat16_t, svint8_t,
+ 		z0 = svcvtb_f16_s8 (z4),
+ 		z0 = svcvtb_f16 (z4))
+ 
+ /*
+ ** cvtb_tied:
+ **	scvtf	z0\.h, z0\.b
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtb_tied, svfloat16_t, svint8_t,
+ 		z0_res = svcvtb_f16_s8 (z0),
+ 		z0_res = svcvtb_f16 (z0))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_u8.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_u8.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_u8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_u8.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtb_untied:
+ **	ucvtf	z0\.h, z4\.b
+ **	ret
+ */
+ TEST_DUAL_Z (cvtb_untied, svfloat16_t, svuint8_t,
+ 		z0 = svcvtb_f16_u8 (z4),
+ 		z0 = svcvtb_f16 (z4))
+ 
+ /*
+ ** cvtb_tied:
+ **	ucvtf	z0\.h, z0\.b
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtb_tied, svfloat16_t, svuint8_t,
+ 		z0_res = svcvtb_f16_u8 (z0),
+ 		z0_res = svcvtb_f16 (z0))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_s16.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_s16.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_s16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_s16.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtb_untied:
+ **	scvtf	z0\.s, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvtb_untied, svfloat32_t, svint16_t,
+ 		z0 = svcvtb_f32_s16 (z4),
+ 		z0 = svcvtb_f32 (z4))
+ 
+ /*
+ ** cvtb_tied:
+ **	scvtf	z0\.s, z0\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtb_tied, svfloat32_t, svint16_t,
+ 		z0_res = svcvtb_f32_s16 (z0),
+ 		z0_res = svcvtb_f32 (z0))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_u16.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_u16.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_u16.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtb_untied:
+ **	ucvtf	z0\.s, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvtb_untied, svfloat32_t, svuint16_t,
+ 		z0 = svcvtb_f32_u16 (z4),
+ 		z0 = svcvtb_f32 (z4))
+ 
+ /*
+ ** cvtb_tied:
+ **	ucvtf	z0\.s, z0\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtb_tied, svfloat32_t, svuint16_t,
+ 		z0_res = svcvtb_f32_u16 (z0),
+ 		z0_res = svcvtb_f32 (z0))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_s32.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_s32.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_s32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_s32.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtb_untied:
+ **	scvtf	z0\.d, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvtb_untied, svfloat64_t, svint32_t,
+ 		z0 = svcvtb_f64_s32 (z4),
+ 		z0 = svcvtb_f64 (z4))
+ 
+ /*
+ ** cvtb_tied:
+ **	scvtf	z0\.d, z0\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtb_tied, svfloat64_t, svint32_t,
+ 		z0_res = svcvtb_f64_s32 (z0),
+ 		z0_res = svcvtb_f64 (z0))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_u32.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_u32.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_u32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_u32.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtb_untied:
+ **	ucvtf	z0\.d, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvtb_untied, svfloat64_t, svuint32_t,
+ 		z0 = svcvtb_f64_u32 (z4),
+ 		z0 = svcvtb_f64 (z4))
+ 
+ /*
+ ** cvtb_tied:
+ **	ucvtf	z0\.d, z0\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtb_tied, svfloat64_t, svuint32_t,
+ 		z0_res = svcvtb_f64_u32 (z0),
+ 		z0_res = svcvtb_f64 (z0))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s16_f32_x2.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s16_f32_x2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s16_f32_x2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s16_f32_x2.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,53 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtn_z0_z0:
+ **	fcvtzsn	z0\.h, {z0\.s - z1\.s}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z0, svfloat32x2_t, svint16_t,
+ 		z0_res = svcvtn_s16_f32_x2 (z0),
+ 		z0_res = svcvtn_s16 (z0))
+ 
+ /*
+ ** cvtn_z0_z6:
+ **	fcvtzsn	z0\.h, {z6\.s - z7\.s}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z6, svfloat32x2_t, svint16_t,
+ 		z0_res = svcvtn_s16_f32_x2 (z6),
+ 		z0_res = svcvtn_s16 (z6))
+ 
+ /*
+ ** cvtn_z0_z29:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fcvtzsn	z0\.h, [^\n]+
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z29, svfloat32x2_t, svint16_t,
+ 		z0_res = svcvtn_s16_f32_x2 (z29),
+ 		z0_res = svcvtn_s16 (z29))
+ 
+ /*
+ ** cvtn_z5_z0:
+ **	fcvtzsn	z5\.h, {z0\.s - z1\.s}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z5_z0, svfloat32x2_t, svint16_t,
+ 		z5 = svcvtn_s16_f32_x2 (z0),
+ 		z5 = svcvtn_s16 (z0))
+ 
+ /*
+ ** cvtn_z22_z16:
+ **	fcvtzsn	z22\.h, {z16\.s - z17\.s}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z22_z16, svfloat32x2_t, svint16_t,
+ 		z22 = svcvtn_s16_f32_x2 (z16),
+ 		z22 = svcvtn_s16 (z16))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s32_f64_x2.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s32_f64_x2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s32_f64_x2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s32_f64_x2.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,53 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtn_z0_z0:
+ **	fcvtzsn	z0\.s, {z0\.d - z1\.d}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z0, svfloat64x2_t, svint32_t,
+ 		z0_res = svcvtn_s32_f64_x2 (z0),
+ 		z0_res = svcvtn_s32 (z0))
+ 
+ /*
+ ** cvtn_z0_z6:
+ **	fcvtzsn	z0\.s, {z6\.d - z7\.d}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z6, svfloat64x2_t, svint32_t,
+ 		z0_res = svcvtn_s32_f64_x2 (z6),
+ 		z0_res = svcvtn_s32 (z6))
+ 
+ /*
+ ** cvtn_z0_z29:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fcvtzsn	z0\.s, [^\n]+
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z29, svfloat64x2_t, svint32_t,
+ 		z0_res = svcvtn_s32_f64_x2 (z29),
+ 		z0_res = svcvtn_s32 (z29))
+ 
+ /*
+ ** cvtn_z5_z0:
+ **	fcvtzsn	z5\.s, {z0\.d - z1\.d}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z5_z0, svfloat64x2_t, svint32_t,
+ 		z5 = svcvtn_s32_f64_x2 (z0),
+ 		z5 = svcvtn_s32 (z0))
+ 
+ /*
+ ** cvtn_z22_z16:
+ **	fcvtzsn	z22\.s, {z16\.d - z17\.d}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z22_z16, svfloat64x2_t, svint32_t,
+ 		z22 = svcvtn_s32_f64_x2 (z16),
+ 		z22 = svcvtn_s32 (z16))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s8_f16_x2.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s8_f16_x2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s8_f16_x2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s8_f16_x2.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,53 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtn_z0_z0:
+ **	fcvtzsn	z0\.b, {z0\.h - z1\.h}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z0, svfloat16x2_t, svint8_t,
+ 		z0_res = svcvtn_s8_f16_x2 (z0),
+ 		z0_res = svcvtn_s8 (z0))
+ 
+ /*
+ ** cvtn_z0_z6:
+ **	fcvtzsn	z0\.b, {z6\.h - z7\.h}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z6, svfloat16x2_t, svint8_t,
+ 		z0_res = svcvtn_s8_f16_x2 (z6),
+ 		z0_res = svcvtn_s8 (z6))
+ 
+ /*
+ ** cvtn_z0_z29:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fcvtzsn	z0\.b, [^\n]+
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z29, svfloat16x2_t, svint8_t,
+ 		z0_res = svcvtn_s8_f16_x2 (z29),
+ 		z0_res = svcvtn_s8 (z29))
+ 
+ /*
+ ** cvtn_z5_z0:
+ **	fcvtzsn	z5\.b, {z0\.h - z1\.h}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z5_z0, svfloat16x2_t, svint8_t,
+ 		z5 = svcvtn_s8_f16_x2 (z0),
+ 		z5 = svcvtn_s8 (z0))
+ 
+ /*
+ ** cvtn_z22_z16:
+ **	fcvtzsn	z22\.b, {z16\.h - z17\.h}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z22_z16, svfloat16x2_t, svint8_t,
+ 		z22 = svcvtn_s8_f16_x2 (z16),
+ 		z22 = svcvtn_s8 (z16))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u16_f32_x2.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u16_f32_x2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u16_f32_x2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u16_f32_x2.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,53 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtn_z0_z0:
+ **	fcvtzun	z0\.h, {z0\.s - z1\.s}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z0, svfloat32x2_t, svuint16_t,
+ 		z0_res = svcvtn_u16_f32_x2 (z0),
+ 		z0_res = svcvtn_u16 (z0))
+ 
+ /*
+ ** cvtn_z0_z6:
+ **	fcvtzun	z0\.h, {z6\.s - z7\.s}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z6, svfloat32x2_t, svuint16_t,
+ 		z0_res = svcvtn_u16_f32_x2 (z6),
+ 		z0_res = svcvtn_u16 (z6))
+ 
+ /*
+ ** cvtn_z0_z29:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fcvtzun	z0\.h, [^\n]+
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z29, svfloat32x2_t, svuint16_t,
+ 		z0_res = svcvtn_u16_f32_x2 (z29),
+ 		z0_res = svcvtn_u16 (z29))
+ 
+ /*
+ ** cvtn_z5_z0:
+ **	fcvtzun	z5\.h, {z0\.s - z1\.s}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z5_z0, svfloat32x2_t, svuint16_t,
+ 		z5 = svcvtn_u16_f32_x2 (z0),
+ 		z5 = svcvtn_u16 (z0))
+ 
+ /*
+ ** cvtn_z22_z16:
+ **	fcvtzun	z22\.h, {z16\.s - z17\.s}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z22_z16, svfloat32x2_t, svuint16_t,
+ 		z22 = svcvtn_u16_f32_x2 (z16),
+ 		z22 = svcvtn_u16 (z16))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u32_f64_x2.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u32_f64_x2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u32_f64_x2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u32_f64_x2.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,53 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtn_z0_z0:
+ **	fcvtzun	z0\.s, {z0\.d - z1\.d}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z0, svfloat64x2_t, svuint32_t,
+ 		z0_res = svcvtn_u32_f64_x2 (z0),
+ 		z0_res = svcvtn_u32 (z0))
+ 
+ /*
+ ** cvtn_z0_z6:
+ **	fcvtzun	z0\.s, {z6\.d - z7\.d}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z6, svfloat64x2_t, svuint32_t,
+ 		z0_res = svcvtn_u32_f64_x2 (z6),
+ 		z0_res = svcvtn_u32 (z6))
+ 
+ /*
+ ** cvtn_z0_z29:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fcvtzun	z0\.s, [^\n]+
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z29, svfloat64x2_t, svuint32_t,
+ 		z0_res = svcvtn_u32_f64_x2 (z29),
+ 		z0_res = svcvtn_u32 (z29))
+ 
+ /*
+ ** cvtn_z5_z0:
+ **	fcvtzun	z5\.s, {z0\.d - z1\.d}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z5_z0, svfloat64x2_t, svuint32_t,
+ 		z5 = svcvtn_u32_f64_x2 (z0),
+ 		z5 = svcvtn_u32 (z0))
+ 
+ /*
+ ** cvtn_z22_z16:
+ **	fcvtzun	z22\.s, {z16\.d - z17\.d}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z22_z16, svfloat64x2_t, svuint32_t,
+ 		z22 = svcvtn_u32_f64_x2 (z16),
+ 		z22 = svcvtn_u32 (z16))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u8_f16_x2.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u8_f16_x2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u8_f16_x2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u8_f16_x2.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,53 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtn_z0_z0:
+ **	fcvtzun	z0\.b, {z0\.h - z1\.h}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z0, svfloat16x2_t, svuint8_t,
+ 		z0_res = svcvtn_u8_f16_x2 (z0),
+ 		z0_res = svcvtn_u8 (z0))
+ 
+ /*
+ ** cvtn_z0_z6:
+ **	fcvtzun	z0\.b, {z6\.h - z7\.h}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z6, svfloat16x2_t, svuint8_t,
+ 		z0_res = svcvtn_u8_f16_x2 (z6),
+ 		z0_res = svcvtn_u8 (z6))
+ 
+ /*
+ ** cvtn_z0_z29:
+ **	mov	[^\n]+
+ **	mov	[^\n]+
+ **	fcvtzun	z0\.b, [^\n]+
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z0_z29, svfloat16x2_t, svuint8_t,
+ 		z0_res = svcvtn_u8_f16_x2 (z29),
+ 		z0_res = svcvtn_u8 (z29))
+ 
+ /*
+ ** cvtn_z5_z0:
+ **	fcvtzun	z5\.b, {z0\.h - z1\.h}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z5_z0, svfloat16x2_t, svuint8_t,
+ 		z5 = svcvtn_u8_f16_x2 (z0),
+ 		z5 = svcvtn_u8 (z0))
+ 
+ /*
+ ** cvtn_z22_z16:
+ **	fcvtzun	z22\.b, {z16\.h - z17\.h}
+ **	ret
+ */
+ TEST_X2_NARROW (cvtn_z22_z16, svfloat16x2_t, svuint8_t,
+ 		z22 = svcvtn_u8_f16_x2 (z16),
+ 		z22 = svcvtn_u8 (z16))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_s8.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_s8.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_s8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_s8.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtt_untied:
+ **	scvtflt	z0\.h, z4\.b
+ **	ret
+ */
+ TEST_DUAL_Z (cvtt_untied, svfloat16_t, svint8_t,
+ 		z0 = svcvtt_f16_s8 (z4),
+ 		z0 = svcvtt_f16 (z4))
+ 
+ /*
+ ** cvtt_tied:
+ **	scvtflt	z0\.h, z0\.b
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtt_tied, svfloat16_t, svint8_t,
+ 		z0_res = svcvtt_f16_s8 (z0),
+ 		z0_res = svcvtt_f16 (z0))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_u8.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_u8.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_u8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_u8.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtt_untied:
+ **	ucvtflt	z0\.h, z4\.b
+ **	ret
+ */
+ TEST_DUAL_Z (cvtt_untied, svfloat16_t, svuint8_t,
+ 		z0 = svcvtt_f16_u8 (z4),
+ 		z0 = svcvtt_f16 (z4))
+ 
+ /*
+ ** cvtt_tied:
+ **	ucvtflt	z0\.h, z0\.b
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtt_tied, svfloat16_t, svuint8_t,
+ 		z0_res = svcvtt_f16_u8 (z0),
+ 		z0_res = svcvtt_f16 (z0))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_s16.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_s16.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_s16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_s16.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtt_untied:
+ **	scvtflt	z0\.s, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvtt_untied, svfloat32_t, svint16_t,
+ 		z0 = svcvtt_f32_s16 (z4),
+ 		z0 = svcvtt_f32 (z4))
+ 
+ /*
+ ** cvtt_tied:
+ **	scvtflt	z0\.s, z0\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtt_tied, svfloat32_t, svint16_t,
+ 		z0_res = svcvtt_f32_s16 (z0),
+ 		z0_res = svcvtt_f32 (z0))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_u16.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_u16.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_u16.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtt_untied:
+ **	ucvtflt	z0\.s, z4\.h
+ **	ret
+ */
+ TEST_DUAL_Z (cvtt_untied, svfloat32_t, svuint16_t,
+ 		z0 = svcvtt_f32_u16 (z4),
+ 		z0 = svcvtt_f32 (z4))
+ 
+ /*
+ ** cvtt_tied:
+ **	ucvtflt	z0\.s, z0\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtt_tied, svfloat32_t, svuint16_t,
+ 		z0_res = svcvtt_f32_u16 (z0),
+ 		z0_res = svcvtt_f32 (z0))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_s32.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_s32.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_s32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_s32.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtt_untied:
+ **	scvtflt	z0\.d, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvtt_untied, svfloat64_t, svint32_t,
+ 		z0 = svcvtt_f64_s32 (z4),
+ 		z0 = svcvtt_f64 (z4))
+ 
+ /*
+ ** cvtt_tied:
+ **	scvtflt	z0\.d, z0\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtt_tied, svfloat64_t, svint32_t,
+ 		z0_res = svcvtt_f64_s32 (z0),
+ 		z0_res = svcvtt_f64 (z0))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_u32.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_u32.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_u32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_u32.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** cvtt_untied:
+ **	ucvtflt	z0\.d, z4\.s
+ **	ret
+ */
+ TEST_DUAL_Z (cvtt_untied, svfloat64_t, svuint32_t,
+ 		z0 = svcvtt_f64_u32 (z4),
+ 		z0 = svcvtt_f64 (z4))
+ 
+ /*
+ ** cvtt_tied:
+ **	ucvtflt	z0\.d, z0\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (cvtt_tied, svfloat64_t, svuint32_t,
+ 		z0_res = svcvtt_f64_u32 (z0),
+ 		z0_res = svcvtt_f64 (z0))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_s16.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_s16.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_s16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_s16.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,96 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** dot_lane_0_s16_tied1:
+ **	sdot	z0\.h, z4\.b, z5\.b\[0\]
+ **	ret
+ */
+ TEST_DUAL_Z (dot_lane_0_s16_tied1, svint16_t, svint8_t,
+ 	     z0 = svdot_lane_s16_s8 (z0, z4, z5, 0),
+ 	     z0 = svdot_lane (z0, z4, z5, 0))
+ 
+ /*
+ ** dot_lane_0_s16_tied2:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	sdot	z0\.h, \1\.b, z1\.b\[0\]
+ **	ret
+ */
+ TEST_DUAL_Z_REV (dot_lane_0_s16_tied2, svint16_t, svint8_t,
+ 		 z0_res = svdot_lane_s16_s8 (z4, z0, z1, 0),
+ 		 z0_res = svdot_lane (z4, z0, z1, 0))
+ 
+ /*
+ ** dot_lane_0_s16_tied3:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	sdot	z0\.h, z1\.b, \1\.b\[0\]
+ **	ret
+ */
+ TEST_DUAL_Z_REV (dot_lane_0_s16_tied3, svint16_t, svint8_t,
+ 		 z0_res = svdot_lane_s16_s8 (z4, z1, z0, 0),
+ 		 z0_res = svdot_lane (z4, z1, z0, 0))
+ 
+ /*
+ ** dot_lane_0_s16_untied:
+ **	movprfx	z0, z1
+ **	sdot	z0\.h, z4\.b, z5\.b\[0\]
+ **	ret
+ */
+ TEST_DUAL_Z (dot_lane_0_s16_untied, svint16_t, svint8_t,
+ 	     z0 = svdot_lane_s16_s8 (z1, z4, z5, 0),
+ 	     z0 = svdot_lane (z1, z4, z5, 0))
+ 
+ /*
+ ** dot_lane_1_s16:
+ **	sdot	z0\.h, z4\.b, z5\.b\[1\]
+ **	ret
+ */
+ TEST_DUAL_Z (dot_lane_1_s16, svint16_t, svint8_t,
+ 	     z0 = svdot_lane_s16_s8 (z0, z4, z5, 1),
+ 	     z0 = svdot_lane (z0, z4, z5, 1))
+ 
+ /*
+ ** dot_lane_2_s16:
+ **	sdot	z0\.h, z4\.b, z5\.b\[2\]
+ **	ret
+ */
+ TEST_DUAL_Z (dot_lane_2_s16, svint16_t, svint8_t,
+ 	     z0 = svdot_lane_s16_s8 (z0, z4, z5, 2),
+ 	     z0 = svdot_lane (z0, z4, z5, 2))
+ 
+ /*
+ ** dot_lane_3_s16:
+ **	sdot	z0\.h, z4\.b, z5\.b\[3\]
+ **	ret
+ */
+ TEST_DUAL_Z (dot_lane_3_s16, svint16_t, svint8_t,
+ 	     z0 = svdot_lane_s16_s8 (z0, z4, z5, 3),
+ 	     z0 = svdot_lane (z0, z4, z5, 3))
+ 
+ /*
+ ** dot_lane_z8_s16:
+ **	str	d8, \[sp, -16\]!
+ **	mov	(z[0-7])\.d, z8\.d
+ **	sdot	z0\.h, z1\.b, \1\.b\[1\]
+ **	ldr	d8, \[sp\], 16
+ **	ret
+ */
+ TEST_DUAL_LANE_REG (dot_lane_z8_s16, svint16_t, svint8_t, z8,
+ 		    z0 = svdot_lane_s16_s8 (z0, z1, z8, 1),
+ 		    z0 = svdot_lane (z0, z1, z8, 1))
+ 
+ /*
+ ** dot_lane_z16_s16:
+ **	mov	(z[0-7])\.d, z16\.d
+ **	sdot	z0\.h, z1\.b, \1\.b\[1\]
+ **	ret
+ */
+ TEST_DUAL_LANE_REG (dot_lane_z16_s16, svint16_t, svint8_t, z16,
+ 		    z0 = svdot_lane_s16_s8 (z0, z1, z16, 1),
+ 		    z0 = svdot_lane (z0, z1, z16, 1))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_u16.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_u16.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_u16.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,96 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** dot_lane_0_u16_tied1:
+ **	udot	z0\.h, z4\.b, z5\.b\[0\]
+ **	ret
+ */
+ TEST_DUAL_Z (dot_lane_0_u16_tied1, svuint16_t, svuint8_t,
+ 	     z0 = svdot_lane_u16_u8 (z0, z4, z5, 0),
+ 	     z0 = svdot_lane (z0, z4, z5, 0))
+ 
+ /*
+ ** dot_lane_0_u16_tied2:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	udot	z0\.h, \1\.b, z1\.b\[0\]
+ **	ret
+ */
+ TEST_DUAL_Z_REV (dot_lane_0_u16_tied2, svuint16_t, svuint8_t,
+ 		 z0_res = svdot_lane_u16_u8 (z4, z0, z1, 0),
+ 		 z0_res = svdot_lane (z4, z0, z1, 0))
+ 
+ /*
+ ** dot_lane_0_u16_tied3:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	udot	z0\.h, z1\.b, \1\.b\[0\]
+ **	ret
+ */
+ TEST_DUAL_Z_REV (dot_lane_0_u16_tied3, svuint16_t, svuint8_t,
+ 		 z0_res = svdot_lane_u16_u8 (z4, z1, z0, 0),
+ 		 z0_res = svdot_lane (z4, z1, z0, 0))
+ 
+ /*
+ ** dot_lane_0_u16_untied:
+ **	movprfx	z0, z1
+ **	udot	z0\.h, z4\.b, z5\.b\[0\]
+ **	ret
+ */
+ TEST_DUAL_Z (dot_lane_0_u16_untied, svuint16_t, svuint8_t,
+ 	     z0 = svdot_lane_u16_u8 (z1, z4, z5, 0),
+ 	     z0 = svdot_lane (z1, z4, z5, 0))
+ 
+ /*
+ ** dot_lane_1_u16:
+ **	udot	z0\.h, z4\.b, z5\.b\[1\]
+ **	ret
+ */
+ TEST_DUAL_Z (dot_lane_1_u16, svuint16_t, svuint8_t,
+ 	     z0 = svdot_lane_u16_u8 (z0, z4, z5, 1),
+ 	     z0 = svdot_lane (z0, z4, z5, 1))
+ 
+ /*
+ ** dot_lane_2_u16:
+ **	udot	z0\.h, z4\.b, z5\.b\[2\]
+ **	ret
+ */
+ TEST_DUAL_Z (dot_lane_2_u16, svuint16_t, svuint8_t,
+ 	     z0 = svdot_lane_u16_u8 (z0, z4, z5, 2),
+ 	     z0 = svdot_lane (z0, z4, z5, 2))
+ 
+ /*
+ ** dot_lane_3_u16:
+ **	udot	z0\.h, z4\.b, z5\.b\[3\]
+ **	ret
+ */
+ TEST_DUAL_Z (dot_lane_3_u16, svuint16_t, svuint8_t,
+ 	     z0 = svdot_lane_u16_u8 (z0, z4, z5, 3),
+ 	     z0 = svdot_lane (z0, z4, z5, 3))
+ 
+ /*
+ ** dot_lane_z8_u16:
+ **	str	d8, \[sp, -16\]!
+ **	mov	(z[0-7])\.d, z8\.d
+ **	udot	z0\.h, z1\.b, \1\.b\[1\]
+ **	ldr	d8, \[sp\], 16
+ **	ret
+ */
+ TEST_DUAL_LANE_REG (dot_lane_z8_u16, svuint16_t, svuint8_t, z8,
+ 		    z0 = svdot_lane_u16_u8 (z0, z1, z8, 1),
+ 		    z0 = svdot_lane (z0, z1, z8, 1))
+ 
+ /*
+ ** dot_lane_z16_u16:
+ **	mov	(z[0-7])\.d, z16\.d
+ **	udot	z0\.h, z1\.b, \1\.b\[1\]
+ **	ret
+ */
+ TEST_DUAL_LANE_REG (dot_lane_z16_u16, svuint16_t, svuint8_t, z16,
+ 		    z0 = svdot_lane_u16_u8 (z0, z1, z16, 1),
+ 		    z0 = svdot_lane (z0, z1, z16, 1))
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_s16.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_s16.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_s16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_s16.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,47 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** dot_s16_tied1:
+ **	sdot	z0\.h, z4\.b, z5\.b
+ **	ret
+ */
+ TEST_DUAL_Z (dot_s16_tied1, svint16_t, svint8_t,
+ 	     z0 = svdot_s16_s8 (z0, z4, z5),
+ 	     z0 = svdot (z0, z4, z5))
+ 
+ /*
+ ** dot_s16_tied2:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	sdot	z0\.h, \1\.b, z1\.b
+ **	ret
+ */
+ TEST_DUAL_Z_REV (dot_s16_tied2, svint16_t, svint8_t,
+ 		 z0_res = svdot_s16_s8 (z4, z0, z1),
+ 		 z0_res = svdot (z4, z0, z1))
+ 
+ /*
+ ** dot_s16_tied3:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	sdot	z0\.h, z1\.b, \1\.b
+ **	ret
+ */
+ TEST_DUAL_Z_REV (dot_s16_tied3, svint16_t, svint8_t,
+ 		 z0_res = svdot_s16_s8 (z4, z1, z0),
+ 		 z0_res = svdot (z4, z1, z0))
+ 
+ /*
+ ** dot_s16_untied:
+ **	movprfx	z0, z1
+ **	sdot	z0\.h, z4\.b, z5\.b
+ **	ret
+ */
+ TEST_DUAL_Z (dot_s16_untied, svint16_t, svint8_t,
+ 	     z0 = svdot_s16_s8 (z1, z4, z5),
+ 	     z0 = svdot (z1, z4, z5))
\ No newline at end of file
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_u16.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_u16.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_u16.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,47 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** dot_u16_tied1:
+ **	udot	z0\.h, z4\.b, z5\.b
+ **	ret
+ */
+ TEST_DUAL_Z (dot_u16_tied1, svuint16_t, svuint8_t,
+ 	     z0 = svdot_u16_u8 (z0, z4, z5),
+ 	     z0 = svdot (z0, z4, z5))
+ 
+ /*
+ ** dot_u16_tied2:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	udot	z0\.h, \1\.b, z1\.b
+ **	ret
+ */
+ TEST_DUAL_Z_REV (dot_u16_tied2, svuint16_t, svuint8_t,
+ 		 z0_res = svdot_u16_u8 (z4, z0, z1),
+ 		 z0_res = svdot (z4, z0, z1))
+ 
+ /*
+ ** dot_u16_tied3:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	udot	z0\.h, z1\.b, \1\.b
+ **	ret
+ */
+ TEST_DUAL_Z_REV (dot_u16_tied3, svuint16_t, svuint8_t,
+ 		 z0_res = svdot_u16_u8 (z4, z1, z0),
+ 		 z0_res = svdot (z4, z1, z0))
+ 
+ /*
+ ** dot_u16_untied:
+ **	movprfx	z0, z1
+ **	udot	z0\.h, z4\.b, z5\.b
+ **	ret
+ */
+ TEST_DUAL_Z (dot_u16_untied, svuint16_t, svuint8_t,
+ 	     z0 = svdot_u16_u8 (z1, z4, z5),
+ 	     z0 = svdot (z1, z4, z5))
\ No newline at end of file
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/cond_fma.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/cond_fma.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/cond_fma.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/cond_fma.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do run { target aarch64_sve_hw } } */
+ /* { dg-options "-O2 -ftree-vectorize" } */
+ 
+ float a[256], b[256], c[256], d[256], r[256];
+ 
+ __attribute__((noipa)) void
+ f (int n)
+ {
+   for (int i = 0; i < n; i++)
+     {
+       float t = d[i] > 0.f ? __builtin_fmaf (a[i], b[i], c[i]) : d[i];
+       r[i] = -t;
+     }
+ }
+ 
+ int
+ main (void)
+ {
+   for (int i = 0; i < 256; i++)
+     {
+       a[i] = 2.f;
+       b[i] = 3.f;
+       c[i] = 5.f;
+       d[i] = i & 1 ? 4.f : -7.f;
+       r[i] = 0.f;
+     }
+ 
+   f (256);
+   for (int i = 0; i < 256; i++)
+     {
+       float expected = d[i] > 0.f ? -11.f : 7.f;
+       if (r[i] != expected)
+ 	__builtin_abort ();
+     }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/cond_fma_neg_addend.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/cond_fma_neg_addend.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/cond_fma_neg_addend.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/cond_fma_neg_addend.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do run { target aarch64_sve_hw } } */
+ /* { dg-options "-O2 -ftree-vectorize" } */
+ 
+ float a[256], b[256], c[256], d[256], r[256];
+ 
+ __attribute__((noipa)) void
+ f (int n)
+ {
+   for (int i = 0; i < n; i++)
+     r[i] = d[i] > 0.f ? __builtin_fmaf (a[i], b[i], -c[i]) : d[i];
+ }
+ 
+ int
+ main (void)
+ {
+   for (int i = 0; i < 256; i++)
+     {
+       a[i] = 2.f;
+       b[i] = 3.f;
+       c[i] = 5.f;
+       d[i] = i & 1 ? 4.f : -7.f;
+       r[i] = 0.f;
+     }
+ 
+   f (256);
+   for (int i = 0; i < 256; i++)
+     {
+       float expected = d[i] > 0.f ? 1.f : -7.f;
+       if (r[i] != expected)
+ 	__builtin_abort ();
+     }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/cond_fms.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/cond_fms.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/cond_fms.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/cond_fms.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do run { target aarch64_sve_hw } } */
+ /* { dg-options "-O2 -ftree-vectorize" } */
+ 
+ float a[256], b[256], c[256], d[256], r[256];
+ 
+ __attribute__((noipa)) void
+ f (int n)
+ {
+   for (int i = 0; i < n; i++)
+     {
+       float t = d[i] > 0.f ? __builtin_fmaf (a[i], b[i], -c[i]) : d[i];
+       r[i] = -t;
+     }
+ }
+ 
+ int
+ main (void)
+ {
+   for (int i = 0; i < 256; i++)
+     {
+       a[i] = 2.f;
+       b[i] = 3.f;
+       c[i] = 5.f;
+       d[i] = i & 1 ? 4.f : -7.f;
+       r[i] = 0.f;
+     }
+ 
+   f (256);
+   for (int i = 0; i < 256; i++)
+     {
+       float expected = d[i] > 0.f ? -1.f : 7.f;
+       if (r[i] != expected)
+ 	__builtin_abort ();
+     }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/cond_fnma.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/cond_fnma.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/cond_fnma.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/cond_fnma.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do run { target aarch64_sve_hw } } */
+ /* { dg-options "-O2 -ftree-vectorize" } */
+ 
+ float a[256], b[256], c[256], d[256], r[256];
+ 
+ __attribute__((noipa)) void
+ f (int n)
+ {
+   for (int i = 0; i < n; i++)
+     {
+       float t = d[i] > 0.f ? __builtin_fmaf (-a[i], b[i], c[i]) : d[i];
+       r[i] = -t;
+     }
+ }
+ 
+ int
+ main (void)
+ {
+   for (int i = 0; i < 256; i++)
+     {
+       a[i] = 2.f;
+       b[i] = 3.f;
+       c[i] = 5.f;
+       d[i] = i & 1 ? 4.f : -7.f;
+       r[i] = 0.f;
+     }
+ 
+   f (256);
+   for (int i = 0; i < 256; i++)
+     {
+       float expected = d[i] > 0.f ? 1.f : 7.f;
+       if (r[i] != expected)
+ 	__builtin_abort ();
+     }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/cond_fnms.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/cond_fnms.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/cond_fnms.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/cond_fnms.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do run { target aarch64_sve_hw } } */
+ /* { dg-options "-O2 -ftree-vectorize" } */
+ 
+ float a[256], b[256], c[256], d[256], r[256];
+ 
+ __attribute__((noipa)) void
+ f (int n)
+ {
+   for (int i = 0; i < n; i++)
+     {
+       float t = d[i] > 0.f ? __builtin_fmaf (-a[i], b[i], -c[i]) : d[i];
+       r[i] = -t;
+     }
+ }
+ 
+ int
+ main (void)
+ {
+   for (int i = 0; i < 256; i++)
+     {
+       a[i] = 2.f;
+       b[i] = 3.f;
+       c[i] = 5.f;
+       d[i] = i & 1 ? 4.f : -7.f;
+       r[i] = 0.f;
+     }
+ 
+   f (256);
+   for (int i = 0; i < 256; i++)
+     {
+       float expected = d[i] > 0.f ? 11.f : 7.f;
+       if (r[i] != expected)
+ 	__builtin_abort ();
+     }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_128.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_128.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_128.c	Mon Jul 27 02:16:13 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_128.c	Sun Aug  2 22:32:13 2026
*************** SEL2 (struct, nonpst8)
*** 1074,1080 ****
  
  /*
  ** test_nonpst8:
! **	ubfx	x0, x0, 8, 8
  **	ret
  */
  /* { dg-final { scan-assembler-not {\t\.variant_pcs\ttest_nonpst8\n} } } */
--- 1074,1080 ----
  
  /*
  ** test_nonpst8:
! **	ubfx	[wx]0, [wx]0, 8, 8
  **	ret
  */
  /* { dg-final { scan-assembler-not {\t\.variant_pcs\ttest_nonpst8\n} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_256.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_256.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_256.c	Mon Jul 27 02:16:13 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve/pcs/struct_3_256.c	Sun Aug  2 22:32:13 2026
*************** SEL2 (struct, nonpst8)
*** 1187,1193 ****
  
  /*
  ** test_nonpst8: { target aarch64_little_endian }
! **	ubfx	x0, x0, 8, 8
  **	ret
  */
  /*
--- 1187,1193 ----
  
  /*
  ** test_nonpst8: { target aarch64_little_endian }
! **	ubfx	[wx]0, [wx]0, 8, 8
  **	ret
  */
  /*
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve2/dotproduct_intrinsicless.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve2/dotproduct_intrinsicless.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/sve2/dotproduct_intrinsicless.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/sve2/dotproduct_intrinsicless.c	Sun Aug  2 22:32:13 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv9-a+sve2p3 -mautovec-preference=sve-only --param=aarch64-vect-unroll-limit=1" } */
+ 
+ #include <stdint.h>
+ #include <stddef.h>
+ int16_t dot_s8_s8_to_s16(const int8_t *restrict a,
+                           const int8_t *restrict b,
+                           unsigned n) {
+   int16_t acc = 0;
+ 
+ 
+   for (unsigned i = 0; i < n; ++i)
+     acc += (int16_t)a[i] * (int16_t)b[i];
+ 
+   return acc;
+ }
+ 
+ uint16_t dot_u8_u8_to_u16(const uint8_t *restrict a,
+                           const uint8_t *restrict b,
+                           unsigned n) {
+   uint16_t acc = 0;
+ 
+   for (unsigned i = 0; i < n; ++i)
+     acc += (uint16_t)a[i] * (uint16_t)b[i];
+ 
+   return acc;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\tsdot\tz[0-9]+.h, z[0-9]+\.b, z[0-9]+\.b} 1 } } */
+ /* { dg-final { scan-assembler-times {\tudot\tz[0-9]+.h, z[0-9]+\.b, z[0-9]+\.b} 1 } } */
\ No newline at end of file
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/vect-vaddv.c gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/vect-vaddv.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/aarch64/vect-vaddv.c	Mon Jul 27 02:16:14 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/aarch64/vect-vaddv.c	Sun Aug  2 22:32:13 2026
*************** double input_float64[] = {0.1, -0.1, 0.4
*** 41,48 ****
  			  7.9, -870.0, 10.4, 310.11,
  			  0.0, -865.0, -2213.0, -1.5};
  
! #define EQUALF(a, b) (fabsf (a - b) < DELTA)
! #define EQUALD(a, b) (fabs (a - b) < DELTA)
  #define EQUALL(a, b) (a == b)
  
  #define TEST(SUFFIX, Q, TYPE, LANES, FLOAT)				\
--- 41,51 ----
  			  7.9, -870.0, 10.4, 310.11,
  			  0.0, -865.0, -2213.0, -1.5};
  
! /* The reference sum and the vaddv reduction associate the addends
!    differently, so they agree only to within a few ULP.  Compare with a
!    relative tolerance: every reference value here is non-zero.  */
! #define EQUALF(a, b) (fabsf (a - b) <= DELTA * fabsf (b))
! #define EQUALD(a, b) (fabs (a - b) <= DELTA * fabs (b))
  #define EQUALL(a, b) (a == b)
  
  #define TEST(SUFFIX, Q, TYPE, LANES, FLOAT)				\
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64-div-1.c gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64-div-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64-div-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64-div-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,84 ----
+ /* { dg-do run { target { ! avr_tiny } } } */
+ /* { dg-additional-options { -std=gnu99 -Os -mcall-prologues } } */
+ 
+ // !!! Requires the fx64 <-> float conversions from AVR-LibC.
+ 
+ #include "fx64.h"
+ 
+ #define MK_TEST(fx)				    \
+   NI bool in_range_##fx (float x)		    \
+   {						    \
+     return x < fmax_##fx && x >= fmin_##fx;	    \
+   }						    \
+ 						    \
+   NI void test_div_##fx (float a, float b)	    \
+   {						    \
+     if (!in_range_##fx (a))			    \
+       return;					    \
+     if (!in_range_##fx (b))			    \
+       return;					    \
+     float f = b ? a / b : 0.0f;			    \
+     __asm volatile ("" : "+r" (f));		    \
+     fx##_t ax = (fx##_t) a;			    \
+     fx##_t bx = (fx##_t) b;			    \
+     fx##_t ab = ax / bx;			    \
+     if ((b == 0 && a < 0) || (b && f < fmin_##fx))  \
+       {						    \
+ 	if (ab != min_##fx)			    \
+ 	  exit (id_##fx + 1);			    \
+ 	return;					    \
+       }						    \
+     if ((b == 0 && a >= 0) || (b && f > fmax_##fx)) \
+       {						    \
+ 	if (ab != max_##fx)			    \
+ 	  exit (id_##fx + 2);			    \
+ 	return;					    \
+       }						    \
+     if (f != (float) ab)			    \
+       exit (id_##fx + 3);			    \
+   }
+ 
+ MK_TEST (lk)
+ MK_TEST (ulk)
+ MK_TEST (llk)
+ MK_TEST (ullk)
+ MK_TEST (llr)
+ MK_TEST (ullr)
+ 
+ NI void test_div (float a, float b)
+ {
+   test_div_lk (a, b);
+   test_div_ulk (a, b);
+ 
+   test_div_llk (a, b);
+   test_div_ullk (a, b);
+ 
+   test_div_llr (a, b);
+   test_div_ullr (a, b);
+ }
+ 
+ // Results / args must be representable as float, so no rounding occurs.
+ // Non-overflow results must be representable as fixed, so no rounding occurs.
+ const PROGMEM float fvals[] =
+   {
+     0.0,
+     +1.0, +2.0, +0.5, +0x1p10, +0x1p12, +0x1p-14,
+     -1.0, -2.0, -0.5, -0x1p10, -0x1p12, -0x1p-14,
+   };
+ 
+ NI void test (void)
+ {
+   for (uint8_t a = 0; a < ARRAY_SIZE (fvals); ++a)
+     for (uint8_t b = 0; b < ARRAY_SIZE (fvals); ++b)
+       {
+ 	float fa = pgm_read_float (&fvals[a]);
+ 	float fb = pgm_read_float (&fvals[b]);
+ 	test_div (fa, fb);
+       }
+ }
+ 
+ int main (void)
+ {
+   test ();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64-div-2.c gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64-div-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64-div-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64-div-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-do run { target { ! avr_tiny } } } */
+ /* { dg-additional-options { -std=gnu99 -Os -mcall-prologues } } */
+ 
+ // !!! Requires the fx64 <-> float conversions from AVR-LibC.
+ 
+ #include "fx64.h"
+ 
+ NI void test_lk (uint64_t a, float fb, uint64_t res)
+ {
+   lk_t b = (lk_t) fb;
+   if (lkbits (a) / b != lkbits (res))
+     exit (id_lk + 4);
+ }
+ 
+ NI void test_ulk (uint64_t a, float fb, uint64_t res)
+ {
+   ulk_t b = (ulk_t) fb;
+   if (ulkbits (a) / b != ulkbits (res))
+     exit (id_ulk + 4);
+ }
+ 
+ NI void test2_lk (uint64_t a, uint64_t b, uint64_t res)
+ {
+   if (lkbits (a) / lkbits (b) != lkbits (res))
+     exit (id_lk + 5);
+ }
+ 
+ NI void test2_ulk (uint64_t a, uint64_t b, uint64_t res)
+ {
+   if (ulkbits (a) / ulkbits (b) != ulkbits (res))
+     exit (id_ulk + 5);
+ }
+ 
+ NI void test (void)
+ {
+   test_ulk (+0xaabbccddeeff7799, +0x11.0p0f, +0x0a0b0c0d0e0f0709);
+   test_lk  (-0x77bbccddeeff7799, +0x11.0p0f, -0x070b0c0d0e0f0709);
+   test_lk  (+0x77bbccddeeff7799, -0x11.0p0f, -0x070b0c0d0e0f0709);
+   test_lk  (-0x77bbccddeeff7799, -0x11.0p0f, +0x070b0c0d0e0f0709);
+   test_lk  (-0x7ffe02468ace2468, 2.0f, -0x3fff012345671234);
+   test_ulk (+0x7ffe02468ace2468, 2.0f, +0x3fff012345671234);
+   test_ulk (+0xc42eca8642eca955, 2.0f, +0x62176543217654aa);
+   test_lk  (-0x642eca8642eca955, 2.0f, -0x32176543217654aa);
+   test_ulk (+0xffffffffffffffff, 2.0f, +0x7fffffffffffffff);
+   test_lk  (-0x7fffffffffffffff, 2.0f, -0x3fffffffffffffff);
+   test_lk  (+0, 0.0f, SMAX);
+   test_lk  (+1, 0.0f, SMAX);
+   test_lk  (-1, 0.0f, SMIN);
+   test_ulk (+0, 0.0f, UMAX);
+   test_ulk (+1, 0.0f, UMAX);
+   test_lk  (SMAX - 1000, +0x0.fffp0f, SMAX);
+   test_lk  (SMIN + 1000, +0x0.fffp0f, SMIN);
+   test_lk  (SMAX - 1000, -0x0.fffp0f, SMIN);
+   test_lk  (SMIN + 1000, -0x0.fffp0f, SMAX);
+   test_ulk (UMAX - 1000, +0x0.fffp0f, UMAX);
+   test_ulk (UMAX - 1000, +0x0.fffp0f, UMAX);
+ 
+   test2_ulk (X80 + 1, X80, ulk_1);
+   test2_ulk (X80, X80 + 1, ulk_1 - 1);
+   test2_ulk (UMAX - 1, UMAX, ulk_1 - 1);
+   test2_lk  (SMAX, SMIN, -(lk_1 - 1));
+   test2_lk  (SMIN, SMAX, -lk_1);
+   test2_lk  (SMAX, SMAX, lk_1);
+   test2_lk  (SMAX, SMAX, lk_1);
+   test2_ulk (SMIN, SMIN, ulk_1);
+   test2_ulk (1, 1, ulk_1);
+   test2_lk  (1, 1, lk_1);
+ }
+ 
+ int main (void)
+ {
+   test ();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64-div-3.c gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64-div-3.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64-div-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64-div-3.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,63 ----
+ /* { dg-do run { target { ! avr_tiny } } } */
+ /* { dg-additional-options { -std=gnu99 -Os -mcall-prologues } } */
+ 
+ // !!! Requires the fx64 <-> float conversions from AVR-LibC.
+ 
+ #include "fx64.h"
+ 
+ #define MK_TEST(fx)						\
+   NI void test_div_##fx (uint64_t a, float fb, uint64_t r)	\
+   {								\
+     fx##_t ab = fx##bits (a) / (fx##_t) fb;			\
+     if (ab != fx##bits (r))					\
+       exit (id_##fx + 6);					\
+     return;							\
+   }
+ 
+ MK_TEST (lk)
+ MK_TEST (ulk)
+ MK_TEST (llk)
+ MK_TEST (ullk)
+ 
+ NI void test1_div (uint64_t a, float fb, uint64_t r)
+ {
+   test_div_ulk (a, fb, r);
+   test_div_ullk (a, fb, r);
+   if ((a & X80) == 0)
+     {
+       test_div_lk (a, fb, r);
+       test_div_llk (a, fb, r);
+     }
+ }
+ 
+ NI void test2_div (uint64_t a, float fb, uint64_t r)
+ {
+   test_div_ulk (a, fb, r);
+   test_div_ullk (a, fb, r);
+   if ((r & X80) == 0)
+     {
+       test_div_lk (a, fb, r);
+       test_div_llk (a, fb, r);
+     }
+   else
+     {
+       test_div_lk (a, fb, SMAX);
+       test_div_llk (a, fb, SMAX);
+     }
+ }
+ 
+ NI void test (void)
+ {
+   for (uint64_t a = (uint64_t) 0xff01 << (64 - 16); a; a >>= 1)
+     {
+       test1_div (a, 2.0f, a >> 1);
+       if ((a & X80) == 0)
+ 	test2_div (a, 0.5f, a << 1);
+     }
+ }
+ 
+ int main (void)
+ {
+   test ();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64-mul-1.c gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64-mul-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64-mul-1.c	Mon Jul 27 02:16:14 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64-mul-1.c	Sun Aug  2 22:32:14 2026
***************
*** 3,9 ****
  
  // !!! Requires the fx64 <-> float conversions from AVR-LibC.
  
! #include "fx64-mul.h"
  
  #define MK_TEST(fx)				    \
    NI bool in_range_##fx (float x)		    \
--- 3,9 ----
  
  // !!! Requires the fx64 <-> float conversions from AVR-LibC.
  
! #include "fx64.h"
  
  #define MK_TEST(fx)				    \
    NI bool in_range_##fx (float x)		    \
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64-mul-2.c gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64-mul-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64-mul-2.c	Mon Jul 27 02:16:14 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64-mul-2.c	Sun Aug  2 22:32:14 2026
***************
*** 3,9 ****
  
  // !!! Requires the fx64 <-> float conversions from AVR-LibC.
  
! #include "fx64-mul.h"
  
  NI void test_mul (float fa, float fb, uint64_t res)
  {
--- 3,9 ----
  
  // !!! Requires the fx64 <-> float conversions from AVR-LibC.
  
! #include "fx64.h"
  
  NI void test_mul (float fa, float fb, uint64_t res)
  {
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64-mul.h gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64-mul.h
*** gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64-mul.h	Mon Jul 27 02:16:14 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64-mul.h	Thu Jan  1 00:00:00 1970
***************
*** 1,60 ****
- // !!! Requires the fx64 <-> float conversions from AVR-LibC.
- 
- #include <stdfix.h>
- #include <stdbool.h>
- #include <stdlib.h>
- #include <avr/pgmspace.h>
- 
- #define NI __attribute((noipa))
- #define ARRAY_SIZE(x) (sizeof(x) / sizeof(*x))
- 
- typedef long accum lk_t;
- typedef long long accum llk_t;
- typedef long long fract llr_t;
- 
- typedef unsigned long accum ulk_t;
- typedef unsigned long long accum ullk_t;
- typedef unsigned long long fract ullr_t;
- 
- // Values are in fmin <= x < fmax.
- #define fmax_llr 1.0f
- #define fmin_llr (-fmax_llr)
- #define fmax_ullr fmax_llr
- #define fmin_ullr 0.0f
- 
- #define fmax_lk 0x1.0p32f
- #define fmin_lk (-fmax_lk)
- #define fmax_ulk fmax_lk
- #define fmin_ulk 0.0f
- 
- #define fmax_llk 0x1.0p16f
- #define fmin_llk (-fmax_llk)
- #define fmax_ullk fmax_llk
- #define fmin_ullk 0.0f
- 
- #define UMAX 0xffffffffffffffff
- #define SMAX 0x7fffffffffffffff
- #define SMIN 0x8000000000000000
- 
- // Values are in min <= x <= max.
- #define max_lk lkbits (SMAX)
- #define min_lk lkbits (SMIN)
- #define max_ulk ulkbits (UMAX)
- #define min_ulk ulkbits (0)
- 
- #define max_llk llkbits (SMAX)
- #define min_llk llkbits (SMIN)
- #define max_ullk ullkbits (UMAX)
- #define min_ullk ullkbits (0)
- 
- #define max_llr llrbits (SMAX)
- #define min_llr llrbits (SMIN)
- #define max_ullr ullrbits (UMAX)
- #define min_ullr ullrbits (0)
- 
- #define id_lk   10
- #define id_ulk  20
- #define id_llk  30
- #define id_ullk 40
- #define id_llr  50
- #define id_ullr 60
--- 0 ----
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64.h gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64.h
*** gcc-17-20260727/gcc/testsuite/gcc.target/avr/fx64.h	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/avr/fx64.h	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,66 ----
+ // !!! Requires the fx64 <-> float conversions from AVR-LibC.
+ 
+ #include <stdfix.h>
+ #include <stdbool.h>
+ #include <stdlib.h>
+ #include <avr/pgmspace.h>
+ 
+ #define NI __attribute((noipa))
+ #define ARRAY_SIZE(x) (sizeof(x) / sizeof(*x))
+ 
+ typedef long accum lk_t;
+ typedef long long accum llk_t;
+ typedef long long fract llr_t;
+ 
+ typedef unsigned long accum ulk_t;
+ typedef unsigned long long accum ullk_t;
+ typedef unsigned long long fract ullr_t;
+ 
+ // Values are in fmin <= x < fmax.
+ #define fmax_llr 1.0f
+ #define fmin_llr (-fmax_llr)
+ #define fmax_ullr fmax_llr
+ #define fmin_ullr 0.0f
+ 
+ #define fmax_lk 0x1.0p32f
+ #define fmin_lk (-fmax_lk)
+ #define fmax_ulk fmax_lk
+ #define fmin_ulk 0.0f
+ 
+ #define fmax_llk 0x1.0p16f
+ #define fmin_llk (-fmax_llk)
+ #define fmax_ullk fmax_llk
+ #define fmin_ullk 0.0f
+ 
+ #define UMAX 0xffffffffffffffff
+ #define SMAX 0x7fffffffffffffff
+ #define SMIN 0x8000000000000000
+ #define X80  0x8000000000000000
+ 
+ // Values are in min <= x <= max.
+ #define max_lk lkbits (SMAX)
+ #define min_lk lkbits (SMIN)
+ #define max_ulk ulkbits (UMAX)
+ #define min_ulk ulkbits (0)
+ 
+ #define max_llk llkbits (SMAX)
+ #define min_llk llkbits (SMIN)
+ #define max_ullk ullkbits (UMAX)
+ #define min_ullk ullkbits (0)
+ 
+ #define max_llr llrbits (SMAX)
+ #define min_llr llrbits (SMIN)
+ #define max_ullr ullrbits (UMAX)
+ #define min_ullr ullrbits (0)
+ 
+ #define lk_1   (1ull << __DA_FBIT__)
+ #define ulk_1  (1ull << __UDA_FBIT__)
+ #define llk_1  (1ull << __TA_FBIT__)
+ #define ullk_1 (1ull << __UTA_FBIT__)
+ 
+ #define id_lk   10
+ #define id_ulk  20
+ #define id_llk  30
+ #define id_ullk 40
+ #define id_llr  50
+ #define id_ullr 60
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/apx-ndd-mem-tune.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/apx-ndd-mem-tune.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/apx-ndd-mem-tune.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/apx-ndd-mem-tune.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,53 ----
+ /* Verify that the memory form of NDD instructions is guarded by the
+    X86_TUNE_ENABLE_NDD_MEM tune properly. The duplicated preferred_for_speed
+    attr will be true when partial_reg_stall enabled for qi patterns, and
+    override the ENABLE_NDD_MEM set at first, so there should be only one attr
+    remaining by combining the two conditions together. */
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mapxf -march=x86-64 -O2 -mtune-ctrl=partial_reg_stall" } */
+ 
+ unsigned char gc;
+ 
+ unsigned char
+ add_qi (unsigned char *p, unsigned char b)
+ {
+   unsigned char r = *p + b;
+   gc = r;
+   return r;
+ }
+ 
+ unsigned char
+ and_qi (unsigned char *p, unsigned char b)
+ {
+   unsigned char r = *p & b;
+   gc = r;
+   return r;
+ }
+ 
+ unsigned char
+ xor_qi (unsigned char *p, unsigned char b)
+ {
+   unsigned char r = *p ^ b;
+   gc = r;
+   return r;
+ }
+ 
+ unsigned char
+ not_qi (unsigned char *p)
+ {
+   unsigned char r = ~*p;
+   gc = r;
+   return r;
+ }
+ 
+ unsigned char
+ shl_qi (unsigned char *p, unsigned char c)
+ {
+   unsigned char r = (unsigned char) (*p << c);
+   gc = r;
+   return r;
+ }
+ 
+ /* None of the QImode ops above should use the NDD memory-source form
+    when partial_reg_stall && !enable_ndd_mem.  */
+ /* { dg-final { scan-assembler-not {b[ \t]+%[a-z0-9]+, \(%[a-z0-9]+\),} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v16qi-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v16qi-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v16qi-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v16qi-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx -mno-avx2" } */
+ 
+ typedef char v16qi __attribute__ ((__vector_size__ (16)));
+ 
+ char a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p;
+ 
+ v16qi fa000000000000000() { return (v16qi){a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0a00000000000000() { return (v16qi){0,a,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f00a0000000000000() { return (v16qi){0,0,a,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f000a000000000000() { return (v16qi){0,0,0,a,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0000a00000000000() { return (v16qi){0,0,0,0,a,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f00000a0000000000() { return (v16qi){0,0,0,0,0,a,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f000000a000000000() { return (v16qi){0,0,0,0,0,0,a,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0000000a00000000() { return (v16qi){0,0,0,0,0,0,0,a,0,0,0,0,0,0,0,0}; }
+ v16qi f00000000a0000000() { return (v16qi){0,0,0,0,0,0,0,0,a,0,0,0,0,0,0,0}; }
+ v16qi f000000000a000000() { return (v16qi){0,0,0,0,0,0,0,0,0,a,0,0,0,0,0,0}; }
+ v16qi f0000000000a00000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,a,0,0,0,0,0}; }
+ v16qi f00000000000a0000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,a,0,0,0,0}; }
+ v16qi f000000000000a000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,a,0,0,0}; }
+ v16qi f0000000000000a00() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,a,0,0}; }
+ v16qi f00000000000000a0() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,0,a,0}; }
+ v16qi f000000000000000a() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,a}; }
+ 
+ v16qi fabcdefghijklmnop() { return (v16qi){a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}; }
+ 
+ /* { dg-final { scan-assembler-times "vpxor" 16 } } */
+ /* { dg-final { scan-assembler-times "vpinsrb" 31 } } */
+ /* { dg-final { scan-assembler-times "movzbl" 1 } } */
+ /* { dg-final { scan-assembler-times "vmovd" 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v2df-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v2df-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v2df-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v2df-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -mavx -mavx2" } */
+ 
+ typedef double v2df __attribute__ ((__vector_size__ (16)));
+ 
+ double m, n;
+ 
+ v2df fx0(double x) { return (v2df){ x, 0.0 }; }
+ v2df f0x(double x) { return (v2df){ 0.0, x }; }
+ v2df fxx(double x) { return (v2df){ x, x }; }
+ v2df fxy(double x, double y) { return (v2df){ x, y }; }
+ 
+ v2df fm0() { return (v2df){ m, 0.0 }; }
+ v2df f0m() { return (v2df){ 0.0, m }; }
+ v2df fmm() { return (v2df){ m, m }; }
+ v2df fmn() { return (v2df){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "vmovq" 4 } } */
+ /* { dg-final { scan-assembler-times "vpslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "vmovddup" 2 } } */
+ /* { dg-final { scan-assembler-times "vunpcklpd" 1 } } */
+ /* { dg-final { scan-assembler-times "vmovsd" 1 } } */
+ /* { dg-final { scan-assembler-times "vmovhpd" 1 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v2df-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v2df-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v2df-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v2df-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -mavx -mno-avx2" } */
+ 
+ typedef double v2df __attribute__ ((__vector_size__ (16)));
+ 
+ double m, n;
+ 
+ v2df fx0(double x) { return (v2df){ x, 0.0 }; }
+ v2df f0x(double x) { return (v2df){ 0.0, x }; }
+ v2df fxx(double x) { return (v2df){ x, x }; }
+ v2df fxy(double x, double y) { return (v2df){ x, y }; }
+ 
+ v2df fm0() { return (v2df){ m, 0.0 }; }
+ v2df f0m() { return (v2df){ 0.0, m }; }
+ v2df fmm() { return (v2df){ m, m }; }
+ v2df fmn() { return (v2df){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "vmovq" 4 } } */
+ /* { dg-final { scan-assembler-times "vpslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "vmovddup" 2 } } */
+ /* { dg-final { scan-assembler-times "vmovsd" 2 } } */
+ /* { dg-final { scan-assembler-times "vmovhpd" 2 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v2di-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v2di-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v2di-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v2di-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -mavx -mno-avx2" } */
+ 
+ typedef long long v2di __attribute__ ((__vector_size__ (16)));
+ 
+ long long m,n;
+ 
+ v2di fx0(long long x) { return (v2di){ x, 0 }; }
+ v2di f0x(long long x) { return (v2di){ 0, x }; }
+ v2di fxx(long long x) { return (v2di){ x, x }; }
+ v2di fxy(long long x, long long y) { return (v2di){ x, y }; }
+ 
+ v2di fm0() { return (v2di){ m, 0 }; }
+ v2di f0m() { return (v2di){ 0, m }; }
+ v2di fmm() { return (v2di){ m, m }; }
+ v2di fmn() { return (v2di){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "vmovq" 7 } } */
+ /* { dg-final { scan-assembler-times "vpslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "vpunpcklqdq" 1 } } */
+ /* { dg-final { scan-assembler-times "vpinsrq" 2 } } */
+ /* { dg-final { scan-assembler-times "vmovddup" 1 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v2di-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v2di-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v2di-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v2di-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -mavx -mno-avx2" } */
+ 
+ typedef long long v2di __attribute__ ((__vector_size__ (16)));
+ 
+ long long m,n;
+ 
+ v2di fx0(long long x) { return (v2di){ x, 0 }; }
+ v2di f0x(long long x) { return (v2di){ 0, x }; }
+ v2di fxx(long long x) { return (v2di){ x, x }; }
+ v2di fxy(long long x, long long y) { return (v2di){ x, y }; }
+ 
+ v2di fm0() { return (v2di){ m, 0 }; }
+ v2di f0m() { return (v2di){ 0, m }; }
+ v2di fmm() { return (v2di){ m, m }; }
+ v2di fmn() { return (v2di){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "vmovd\[ \t\]" 2 } } */
+ /* { dg-final { scan-assembler-times "vpinsrd" 2 } } */
+ /* { dg-final { scan-assembler-times "vpslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "vmovddup" 2 } } */
+ /* { dg-final { scan-assembler-times "vmovq" 4 } } */
+ /* { dg-final { scan-assembler-times "vmovhps" 2 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v4sf-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v4sf-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v4sf-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v4sf-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -mavx -mno-avx2" } */
+ 
+ typedef float v4sf __attribute__ ((__vector_size__ (16)));
+ 
+ float m,n;
+ 
+ v4sf fa000(float a) { return (v4sf){a,0.0f,0.0f,0.0f}; }
+ v4sf f0a00(float a) { return (v4sf){0.0f,a,0.0f,0.0f}; }
+ v4sf f00a0(float a) { return (v4sf){0.0f,0.0f,a,0.0f}; }
+ v4sf f000a(float a) { return (v4sf){0.0f,0.0f,0.0f,a}; }
+ 
+ v4sf faa00(float a) { return (v4sf){a,a,0.0f,0.0f}; }
+ v4sf fa0a0(float a) { return (v4sf){a,0.0f,a,0.0f}; }
+ 
+ v4sf faaaa(float a) { return (v4sf){a,a,a,a}; }
+ 
+ v4sf fab00(float a, float b) { return (v4sf){a,b,0.0f,0.0f}; }
+ v4sf fa0b0(float a, float b) { return (v4sf){a,0.0f,b,0.0f}; }
+ v4sf fabab(float a, float b) { return (v4sf){a,b,a,b}; }
+ v4sf fabcd(float a, float b, float c, float d) { return (v4sf){a,b,c,d}; }
+ 
+ v4sf fm000() { return (v4sf){m,0.0f,0.0f,0.0f}; }
+ v4sf fm0m0() { return (v4sf){m,0.0f,m,0.0f}; }
+ v4sf fmmmm() { return (v4sf){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "vinsertps" 16 } } */
+ /* { dg-final { scan-assembler-times "vpslldq" 3 } } */
+ /* { dg-final { scan-assembler-times "vshufps" 3 } } */
+ /* { dg-final { scan-assembler-times "vmovlhps" 4 } } */
+ /* { dg-final { scan-assembler-times "vunpcklps" 5 } } */
+ /* { dg-final { scan-assembler-times "vmovss" 2 } } */
+ /* { dg-final { scan-assembler-times "vbroadcastss" 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v4sf-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v4sf-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v4sf-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v4sf-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -mavx -mno-avx2" } */
+ 
+ typedef float v4sf __attribute__ ((__vector_size__ (16)));
+ 
+ float m,n;
+ 
+ v4sf fa000(float a) { return (v4sf){a,0.0f,0.0f,0.0f}; }
+ v4sf f0a00(float a) { return (v4sf){0.0f,a,0.0f,0.0f}; }
+ v4sf f00a0(float a) { return (v4sf){0.0f,0.0f,a,0.0f}; }
+ v4sf f000a(float a) { return (v4sf){0.0f,0.0f,0.0f,a}; }
+ 
+ v4sf faa00(float a) { return (v4sf){a,a,0.0f,0.0f}; }
+ v4sf fa0a0(float a) { return (v4sf){a,0.0f,a,0.0f}; }
+ 
+ v4sf faaaa(float a) { return (v4sf){a,a,a,a}; }
+ 
+ v4sf fab00(float a, float b) { return (v4sf){a,b,0.0f,0.0f}; }
+ v4sf fa0b0(float a, float b) { return (v4sf){a,0.0f,b,0.0f}; }
+ v4sf fabab(float a, float b) { return (v4sf){a,b,a,b}; }
+ v4sf fabcd(float a, float b, float c, float d) { return (v4sf){a,b,c,d}; }
+ 
+ v4sf fm000() { return (v4sf){m,0.0f,0.0f,0.0f}; }
+ v4sf fm0m0() { return (v4sf){m,0.0f,m,0.0f}; }
+ v4sf fmmmm() { return (v4sf){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "vmovss" 18 } } */
+ /* { dg-final { scan-assembler-times "vpslldq" 3 } } */
+ /* { dg-final { scan-assembler-times "vshufps" 2 } } */
+ /* { dg-final { scan-assembler-times "vmovlhps" 4 } } */
+ /* { dg-final { scan-assembler-times "vbroadcastss" 2 } } */
+ /* { dg-final { scan-assembler-times "vunpcklps" 5 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v4si-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v4si-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v4si-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v4si-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx -mno-avx2" } */
+ 
+ typedef int v4si __attribute__ ((__vector_size__ (16)));
+ 
+ int m,n;
+ 
+ v4si fa000(int a) { return (v4si){a,0,0,0}; }
+ v4si f0a00(int a) { return (v4si){0,a,0,0}; }
+ v4si f00a0(int a) { return (v4si){0,0,a,0}; }
+ v4si f000a(int a) { return (v4si){0,0,0,a}; }
+ 
+ v4si faa00(int a) { return (v4si){a,a,0,0}; }
+ v4si fa0a0(int a) { return (v4si){a,0,a,0}; }
+ 
+ v4si faaaa(int a) { return (v4si){a,a,a,a}; }
+ 
+ v4si fab00(int a, int b) { return (v4si){a,b,0,0}; }
+ v4si fa0b0(int a, int b) { return (v4si){a,0,b,0}; }
+ v4si fabab(int a, int b) { return (v4si){a,b,a,b}; }
+ v4si fabcd(int a, int b, int c, int d) { return (v4si){a,b,c,d}; }
+ 
+ v4si fm000() { return (v4si){m,0,0,0}; }
+ v4si fm0m0() { return (v4si){m,0,m,0}; }
+ v4si fmmmm() { return (v4si){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "vmovd" 14 } } */
+ /* { dg-final { scan-assembler-times "vpslldq" 3 } } */
+ /* { dg-final { scan-assembler-times "vshufps" 4 } } */
+ /* { dg-final { scan-assembler-times "vpshufd" 2 } } */
+ /* { dg-final { scan-assembler-times "vpinsrd" 6 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v8hi-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v8hi-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx-init-v8hi-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx-init-v8hi-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse2 -mno-sse4.1" } */
+ 
+ typedef short v8hi __attribute__ ((__vector_size__ (16)));
+ 
+ short a, b, c, d, e, f, g, h;
+ 
+ v8hi fa0000000() { return (v8hi){a,0,0,0,0,0,0,0}; }
+ v8hi f0a000000() { return (v8hi){0,a,0,0,0,0,0,0}; }
+ v8hi f00a00000() { return (v8hi){0,0,a,0,0,0,0,0}; }
+ v8hi f000a0000() { return (v8hi){0,0,0,a,0,0,0,0}; }
+ v8hi f0000a000() { return (v8hi){0,0,0,0,a,0,0,0}; }
+ v8hi f00000a00() { return (v8hi){0,0,0,0,0,a,0,0}; }
+ v8hi f000000a0() { return (v8hi){0,0,0,0,0,0,a,0}; }
+ v8hi f0000000a() { return (v8hi){0,0,0,0,0,0,0,a}; }
+ v8hi fabcdefgh() { return (v8hi){a,b,c,d,e,f,g,h}; }
+ 
+ /* { dg-final { scan-assembler-times "pxor" 8 } } */
+ /* { dg-final { scan-assembler-times "pinsrw" 15 } } */
+ /* { dg-final { scan-assembler-times "movzwl" 1 } } */
+ /* { dg-final { scan-assembler-times "movd" 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx2-init-v4sf-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx2-init-v4sf-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx2-init-v4sf-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx2-init-v4sf-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -mavx2 -mno-avx512vl" } */
+ 
+ typedef float v4sf __attribute__ ((__vector_size__ (16)));
+ 
+ float m,n;
+ 
+ v4sf fa000(float a) { return (v4sf){a,0.0f,0.0f,0.0f}; }
+ v4sf f0a00(float a) { return (v4sf){0.0f,a,0.0f,0.0f}; }
+ v4sf f00a0(float a) { return (v4sf){0.0f,0.0f,a,0.0f}; }
+ v4sf f000a(float a) { return (v4sf){0.0f,0.0f,0.0f,a}; }
+ 
+ v4sf faa00(float a) { return (v4sf){a,a,0.0f,0.0f}; }
+ v4sf fa0a0(float a) { return (v4sf){a,0.0f,a,0.0f}; }
+ 
+ v4sf faaaa(float a) { return (v4sf){a,a,a,a}; }
+ 
+ v4sf fab00(float a, float b) { return (v4sf){a,b,0.0f,0.0f}; }
+ v4sf fa0b0(float a, float b) { return (v4sf){a,0.0f,b,0.0f}; }
+ v4sf fabab(float a, float b) { return (v4sf){a,b,a,b}; }
+ v4sf fabcd(float a, float b, float c, float d) { return (v4sf){a,b,c,d}; }
+ 
+ v4sf fm000() { return (v4sf){m,0.0f,0.0f,0.0f}; }
+ v4sf fm0m0() { return (v4sf){m,0.0f,m,0.0f}; }
+ v4sf fmmmm() { return (v4sf){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "vinsertps" 16 } } */
+ /* { dg-final { scan-assembler-times "vpslldq" 3 } } */
+ /* { dg-final { scan-assembler-times "vshufps" 2 } } */
+ /* { dg-final { scan-assembler-times "vmovlhps" 4 } } */
+ /* { dg-final { scan-assembler-times "vunpcklps" 5 } } */
+ /* { dg-final { scan-assembler-times "vmovss" 2 } } */
+ /* { dg-final { scan-assembler-times "vbroadcastss" 2 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx2-init-v4si-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx2-init-v4si-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx2-init-v4si-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx2-init-v4si-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -mavx2 -mno-avx512vl" } */
+ 
+ typedef int v4si __attribute__ ((__vector_size__ (16)));
+ 
+ int m,n;
+ 
+ v4si fa000(int a) { return (v4si){a,0,0,0}; }
+ v4si f0a00(int a) { return (v4si){0,a,0,0}; }
+ v4si f00a0(int a) { return (v4si){0,0,a,0}; }
+ v4si f000a(int a) { return (v4si){0,0,0,a}; }
+ 
+ v4si faa00(int a) { return (v4si){a,a,0,0}; }
+ v4si fa0a0(int a) { return (v4si){a,0,a,0}; }
+ 
+ v4si faaaa(int a) { return (v4si){a,a,a,a}; }
+ 
+ v4si fab00(int a, int b) { return (v4si){a,b,0,0}; }
+ v4si fa0b0(int a, int b) { return (v4si){a,0,b,0}; }
+ v4si fabab(int a, int b) { return (v4si){a,b,a,b}; }
+ v4si fabcd(int a, int b, int c, int d) { return (v4si){a,b,c,d}; }
+ 
+ v4si fm000() { return (v4si){m,0,0,0}; }
+ v4si fm0m0() { return (v4si){m,0,m,0}; }
+ v4si fmmmm() { return (v4si){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "vmovd" 13 } } */
+ /* { dg-final { scan-assembler-times "vpslldq" 3 } } */
+ /* { dg-final { scan-assembler-times "vshufps" 4 } } */
+ /* { dg-final { scan-assembler-times "vpbroadcastd" 2 } } */
+ /* { dg-final { scan-assembler-times "vpinsrd" 6 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx2-init-v4si-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx2-init-v4si-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx2-init-v4si-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx2-init-v4si-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -mavx2 -mno-avx512vl" } */
+ 
+ typedef int v4si __attribute__ ((__vector_size__ (16)));
+ 
+ int m,n;
+ 
+ v4si fa000(int a) { return (v4si){a,0,0,0}; }
+ v4si f0a00(int a) { return (v4si){0,a,0,0}; }
+ v4si f00a0(int a) { return (v4si){0,0,a,0}; }
+ v4si f000a(int a) { return (v4si){0,0,0,a}; }
+ 
+ v4si faa00(int a) { return (v4si){a,a,0,0}; }
+ v4si fa0a0(int a) { return (v4si){a,0,a,0}; }
+ 
+ v4si faaaa(int a) { return (v4si){a,a,a,a}; }
+ 
+ v4si fab00(int a, int b) { return (v4si){a,b,0,0}; }
+ v4si fa0b0(int a, int b) { return (v4si){a,0,b,0}; }
+ v4si fabab(int a, int b) { return (v4si){a,b,a,b}; }
+ v4si fabcd(int a, int b, int c, int d) { return (v4si){a,b,c,d}; }
+ 
+ v4si fm000() { return (v4si){m,0,0,0}; }
+ v4si fm0m0() { return (v4si){m,0,m,0}; }
+ v4si fmmmm() { return (v4si){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "vmovd" 12 } } */
+ /* { dg-final { scan-assembler-times "vpslldq" 3 } } */
+ /* { dg-final { scan-assembler-times "vshufps" 4 } } */
+ /* { dg-final { scan-assembler-times "vpbroadcastd" 2 } } */
+ /* { dg-final { scan-assembler-times "vpinsrd" 6 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx2-pr126446.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx2-pr126446.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx2-pr126446.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx2-pr126446.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/126446 */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -mavx2" } */
+ 
+ typedef signed char V __attribute__((vector_size (16)));
+ 
+ signed char
+ foo ()
+ {
+   V b = {};
+   long long c = ~2878966870562407444LL;
+   b[c] = 1;
+   return b[0];
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx512vl-concatv4si-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx512vl-concatv4si-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx512vl-concatv4si-1.c	Mon Jul 27 02:16:14 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx512vl-concatv4si-1.c	Sun Aug  2 22:32:14 2026
*************** f2 (V x, V *y)
*** 20,23 ****
    asm volatile ("" : "+v" (c));
  }
  
! /* { dg-final { scan-assembler-times "vpunpcklqdq\[^\n\r]*xmm16" 2 } } */
--- 20,24 ----
    asm volatile ("" : "+v" (c));
  }
  
! /* { dg-final { scan-assembler-times "vpunpcklqdq\[^\n\r]*xmm16" 1 } } */
! /* { dg-final { scan-assembler-times "vpinsrd" 3 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx512vl-init-v2di-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx512vl-init-v2di-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx512vl-init-v2di-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx512vl-init-v2di-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -mavx512vl" } */
+ 
+ typedef long long v2di __attribute__ ((__vector_size__ (16)));
+ 
+ long long m,n;
+ 
+ v2di fx0(long long x) { return (v2di){ x, 0 }; }
+ v2di f0x(long long x) { return (v2di){ 0, x }; }
+ v2di fxx(long long x) { return (v2di){ x, x }; }
+ v2di fxy(long long x, long long y) { return (v2di){ x, y }; }
+ 
+ v2di fm0() { return (v2di){ m, 0 }; }
+ v2di f0m() { return (v2di){ 0, m }; }
+ v2di fmm() { return (v2di){ m, m }; }
+ v2di fmn() { return (v2di){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "vmovq" 6 } } */
+ /* { dg-final { scan-assembler-times "vpslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "vpbroadcastq" 2 } } */
+ /* { dg-final { scan-assembler-times "vpinsrq" 2 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx512vl-init-v2di-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx512vl-init-v2di-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx512vl-init-v2di-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx512vl-init-v2di-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -mavx512vl" } */
+ 
+ typedef long long v2di __attribute__ ((__vector_size__ (16)));
+ 
+ long long m,n;
+ 
+ v2di fx0(long long x) { return (v2di){ x, 0 }; }
+ v2di f0x(long long x) { return (v2di){ 0, x }; }
+ v2di fxx(long long x) { return (v2di){ x, x }; }
+ v2di fxy(long long x, long long y) { return (v2di){ x, y }; }
+ 
+ v2di fm0() { return (v2di){ m, 0 }; }
+ v2di f0m() { return (v2di){ 0, m }; }
+ v2di fmm() { return (v2di){ m, m }; }
+ v2di fmn() { return (v2di){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "vmovd\[ \t\]" 2 } } */
+ /* { dg-final { scan-assembler-times "vpinsrd" 2 } } */
+ /* { dg-final { scan-assembler-times "vpslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "vpbroadcastq" 2 } } */
+ /* { dg-final { scan-assembler-times "vmovq" 4 } } */
+ /* { dg-final { scan-assembler-times "vmovhps" 2 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx512vl-init-v4si-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx512vl-init-v4si-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/avx512vl-init-v4si-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/avx512vl-init-v4si-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx512vl" } */
+ 
+ typedef int v4si __attribute__ ((__vector_size__ (16)));
+ 
+ int m,n;
+ 
+ v4si fa000(int a) { return (v4si){a,0,0,0}; }
+ v4si f0a00(int a) { return (v4si){0,a,0,0}; }
+ v4si f00a0(int a) { return (v4si){0,0,a,0}; }
+ v4si f000a(int a) { return (v4si){0,0,0,a}; }
+ 
+ v4si faa00(int a) { return (v4si){a,a,0,0}; }
+ v4si fa0a0(int a) { return (v4si){a,0,a,0}; }
+ 
+ v4si faaaa(int a) { return (v4si){a,a,a,a}; }
+ 
+ v4si fab00(int a, int b) { return (v4si){a,b,0,0}; }
+ v4si fa0b0(int a, int b) { return (v4si){a,0,b,0}; }
+ v4si fabab(int a, int b) { return (v4si){a,b,a,b}; }
+ v4si fabcd(int a, int b, int c, int d) { return (v4si){a,b,c,d}; }
+ 
+ v4si fm000() { return (v4si){m,0,0,0}; }
+ v4si fm0m0() { return (v4si){m,0,m,0}; }
+ v4si fmmmm() { return (v4si){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "vmovd" 12 } } */
+ /* { dg-final { scan-assembler-times "vpslldq" 3 } } */
+ /* { dg-final { scan-assembler-times "vshufps" 4 } } */
+ /* { dg-final { scan-assembler-times "vpbroadcastd" 2 } } */
+ /* { dg-final { scan-assembler-times "vpinsrd" 6 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/fold-left-reduc-chain-cost.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/fold-left-reduc-chain-cost.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/fold-left-reduc-chain-cost.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/fold-left-reduc-chain-cost.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=x86-64-v3 -fdump-tree-vect-details" } */
+ 
+ /* The two dependent updates form a fold-left reduction chain.  */
+ 
+ float
+ foo (float *__restrict__ a, int n)
+ {
+   float sum = 0;
+   for (int i = 0; i != n; i++)
+     {
+       sum += a[2 * i];
+       sum += a[2 * i + 1];
+     }
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump "Starting SLP discovery of reduction chain" "vect" } } */
+ /* { dg-final { scan-tree-dump "in-order FP reduction lanes" "vect" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/fold-left-reduc-cost.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/fold-left-reduc-cost.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/fold-left-reduc-cost.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/fold-left-reduc-cost.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=x86-64-v3 -fdump-tree-vect-details" } */
+ 
+ /* The byte loads make V32QI available, but the fold-left reduction should
+    make the smaller SSE loop win.  */
+ 
+ float
+ foo (char *a, char *b, int n)
+ {
+   float sum = 0;
+   for (int i = 0; i != n; i++)
+     sum += a[i] * b[i];
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump "in-order FP reduction lanes" "vect" } } */
+ /* { dg-final { scan-tree-dump "loop vectorized using 16 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "loop vectorized using 32 byte vectors" "vect" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr116274-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr116274-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr116274-2.c	Mon Jul 27 02:16:15 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr116274-2.c	Sun Aug  2 22:32:14 2026
***************
*** 1,5 ****
--- 1,17 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fdump-tree-slp2-optimized" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target  { *-*-linux* && lp64 } } {^\t?\.}  } } */
+ 
+ /*
+ **test:
+ **.LFB[0-9]+:
+ **	.cfi_startproc
+ **	leaq	\(%rdi,%rsi\), %rax
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
  
  struct a { long x,y; };
  long test(struct a a) { return a.x+a.y; }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126382.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126382.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126382.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126382.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,40 ----
+ /* { dg-do compile { target { *-*-linux* && lp64 } } } */
+ /* { dg-options "-O3 -fPIC -march=x86-64-v4 -fno-asynchronous-unwind-tables -mtls-dialect=gnu" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
+ 
+ /*
+ **func:
+ **	pushq	%rbp
+ **	movq	%rsp, %rbp
+ **	pushq	%r12
+ **	pushq	%r10
+ **	leaq	16\(%rbp\), %r10
+ **	pushq	%rbx
+ **	movq	%r10, %r12
+ **	subq	\$8, %rsp
+ **	data16	leaq	FLA_ONE@tlsgd\(%rip\), %rdi
+ **	.value	0x6666
+ **	rex64
+ **	call	__tls_get_addr@PLT
+ **...
+ */
+ 
+ typedef struct
+ {
+    long n;
+    long m_inner;
+    long n_inner;
+    int base;
+  } FLA_Obj;
+ extern __thread FLA_Obj FLA_ONE, W12;
+ extern long FLA_Obj_length (FLA_Obj);
+ extern void FLA_Obj_width (FLA_Obj, ...);
+ void func (FLA_Obj A)
+ {
+   while (FLA_Obj_length (A))
+     FLA_Obj_width (FLA_ONE);
+   FLA_Obj_width (FLA_ONE, W12);
+ }
+ 
+ /* { dg-final { scan-assembler-times "call\[ \t\]__tls_get_addr@PLT" 2 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126410-1a.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126410-1a.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126410-1a.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126410-1a.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile { target *-*-linux* } } */
+ /* { dg-options "-O2 -march=x86-64-v4 -fomit-frame-pointer" } */
+ /* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */
+ 
+ #ifndef N
+ #define N 4
+ #endif
+ 
+ typedef float vector[N];
+ 
+ extern vector v;
+ 
+ extern void foo (vector *);
+ 
+ void
+ func (vector a, vector b)
+ {
+   vector r;
+   for (int i = 0; i < N; i++)
+     r[i] = a[i] * b[i];
+   foo (&r);
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126410-1b.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126410-1b.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126410-1b.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126410-1b.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile { target *-*-linux* } } */
+ /* { dg-options "-O2 -march=x86-64-v4 -fomit-frame-pointer" } */
+ /* { dg-final { scan-assembler "and\[lq\]?\[\\t \]*\\$-32,\[\\t \]*%\[re\]?sp" } } */
+ /* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */
+ 
+ #define N 8
+ 
+ #include "pr126410-1a.c"
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126410-1c.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126410-1c.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126410-1c.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126410-1c.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile { target *-*-linux* } } */
+ /* { dg-options "-O2 -march=x86-64-v4 -fomit-frame-pointer" } */
+ /* { dg-final { scan-assembler "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */
+ 
+ #define N 16
+ 
+ #include "pr126410-1a.c"
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126410-2a.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126410-2a.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126410-2a.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126410-2a.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile { target *-*-linux* } } */
+ /* { dg-options "-O2 -march=x86-64-v4 -fomit-frame-pointer" } */
+ /* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */
+ 
+ #ifndef N
+ #define N 4
+ #endif
+ 
+ typedef struct { float values[N]; } vector;
+ 
+ extern vector v;
+ 
+ extern void foo (vector *);
+ 
+ void
+ func (vector a, vector b)
+ {
+   vector r;
+   for (int i = 0; i < N; i++)
+     r.values[i] = a.values[i] * b.values[i];
+   foo (&r);
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126410-2b.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126410-2b.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126410-2b.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126410-2b.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile { target *-*-linux* } } */
+ /* { dg-options "-O2 -march=x86-64-v4 -fomit-frame-pointer" } */
+ /* { dg-final { scan-assembler "and\[lq\]?\[\\t \]*\\$-32,\[\\t \]*%\[re\]?sp" } } */
+ /* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */
+ 
+ #define N 8
+ 
+ #include "pr126410-2a.c"
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126410-2c.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126410-2c.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126410-2c.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126410-2c.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile { target *-*-linux* } } */
+ /* { dg-options "-O2 -march=x86-64-v4 -fomit-frame-pointer" } */
+ /* { dg-final { scan-assembler "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */
+ 
+ #define N 16
+ 
+ #include "pr126410-2a.c"
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126429-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126429-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126429-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126429-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx512bf16 -mavx512dq" } */
+ /* { dg-final { scan-assembler-not "kmovb" } } */
+ 
+ #include <immintrin.h>
+ 
+ __m512 dp16ps_mask (__m512 src, __mmask16 k, __m512bh a, __m512bh b)
+ {
+   return _mm512_mask_dpbf16_ps (src, k, a, b);
+ }
+ 
+ __m512 dp16ps_maskz (__mmask16 k, __m512 src, __m512bh a, __m512bh b)
+ {
+   return _mm512_maskz_dpbf16_ps (k, src, a, b);
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126450-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126450-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126450-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126450-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,43 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -march=x86-64" } */
+ 
+ typedef int V [[gnu::vector_size (16)]];
+ long long a, b, c, d, e;
+ short f;
+ [[gnu::vector_size (8 * sizeof (int))]] int g;
+ V h;
+ _Bool i;
+ 
+ __attribute__((noipa, noinline, target("avx2")))
+ void
+ foo (V x)
+ {
+   _Bool j = 0;
+   short l = 0;
+ l1:
+   b = l;
+   x = h;
+   l = c % 4;
+   i = f = e % 6;
+   e = x[j];
+   g = g > g;
+   if (d)
+     goto l2;
+ l3:
+   j = l;
+   if (j)
+     goto l1;
+   a = l;
+ l2:
+   if (e)
+     goto l3;
+ }
+ 
+ int
+ main (void)
+ {
+  if (__builtin_cpu_supports ("avx2"))
+    foo (h);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126450-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126450-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126450-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126450-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ typedef int UDItype __attribute__ ((mode (DI)));
+ typedef __attribute__ ((aligned)) struct
+ {
+   UDItype w[2];
+ } UINT128;
+ 
+ UINT128
+ __bid128_copySign (UINT128 x)
+ {
+   x.w[1] = x.w[1] & 8000000000000000ULL;
+   return x;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126571-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126571-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/pr126571-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/pr126571-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* PR tree-optimization/126571 */
+ 
+ typedef __seg_fs  int *type1;
+ 
+ int
+ f (int c, type1 fp, int *q)
+ {
+   int r;
+   if (c)
+     r = *fp;
+   else
+     r = *q;
+   return r + 1;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35a.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35a.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35a.c	Mon Jul 27 02:16:15 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35a.c	Sun Aug  2 22:32:14 2026
***************
*** 20,30 ****
  **	movl	64\(%rsp\), %edi
  **	movq	%rsi, 72\(%rsp\)
  **	movl	72\(%rsp\), %esi
- **	movq	%rax, 8\(%rsp\)
- **	leaq	32\(%rsp\), %rax
  **	movq	%rax, 16\(%rsp\)
  **	xorl	%eax, %eax
! **	movl	\$8, \(%rsp\)
  **	call	continuation
  **	addq	\$88, %rsp
  **	.cfi_def_cfa_offset 8
--- 20,30 ----
  **	movl	64\(%rsp\), %edi
  **	movq	%rsi, 72\(%rsp\)
  **	movl	72\(%rsp\), %esi
  **	movq	%rax, 16\(%rsp\)
+ **	leaq	32\(%rsp\), %rax
+ **	movq	%rax, 24\(%rsp\)
  **	xorl	%eax, %eax
! **	movl	\$8, 8\(%rsp\)
  **	call	continuation
  **	addq	\$88, %rsp
  **	.cfi_def_cfa_offset 8
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35b.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35b.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35b.c	Mon Jul 27 02:16:15 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35b.c	Sun Aug  2 22:32:14 2026
***************
*** 21,31 ****
  **	movl	64\(%rsp\), %edi
  **	movq	%r9, 72\(%rsp\)
  **	movl	72\(%rsp\), %esi
- **	movq	%rax, 8\(%rsp\)
- **	leaq	32\(%rsp\), %rax
  **	movq	%rax, 16\(%rsp\)
  **	xorl	%eax, %eax
! **	movl	\$8, \(%rsp\)
  **	call	continuation
  **	addq	\$88, %rsp
  **	.cfi_def_cfa_offset 8
--- 21,31 ----
  **	movl	64\(%rsp\), %edi
  **	movq	%r9, 72\(%rsp\)
  **	movl	72\(%rsp\), %esi
  **	movq	%rax, 16\(%rsp\)
+ **	leaq	32\(%rsp\), %rax
+ **	movq	%rax, 24\(%rsp\)
  **	xorl	%eax, %eax
! **	movl	\$8, 8\(%rsp\)
  **	call	continuation
  **	addq	\$88, %rsp
  **	.cfi_def_cfa_offset 8
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35c.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35c.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35c.c	Mon Jul 27 02:16:15 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35c.c	Sun Aug  2 22:32:14 2026
***************
*** 20,30 ****
  **	movl	64\(%rsp\), %r8d
  **	movq	%r9, 72\(%rsp\)
  **	movl	72\(%rsp\), %r9d
- **	movq	%rax, 8\(%rsp\)
- **	leaq	32\(%rsp\), %rax
  **	movq	%rax, 16\(%rsp\)
  **	xorl	%eax, %eax
! **	movl	\$8, \(%rsp\)
  **	call	continuation
  **	addq	\$88, %rsp
  **	.cfi_def_cfa_offset 8
--- 20,30 ----
  **	movl	64\(%rsp\), %r8d
  **	movq	%r9, 72\(%rsp\)
  **	movl	72\(%rsp\), %r9d
  **	movq	%rax, 16\(%rsp\)
+ **	leaq	32\(%rsp\), %rax
+ **	movq	%rax, 24\(%rsp\)
  **	xorl	%eax, %eax
! **	movl	\$8, 8\(%rsp\)
  **	call	continuation
  **	addq	\$88, %rsp
  **	.cfi_def_cfa_offset 8
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35d.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35d.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35d.c	Mon Jul 27 02:16:15 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35d.c	Sun Aug  2 22:32:14 2026
***************
*** 13,21 ****
  **	movq	%rdx, 104\(%rsp\)
  **	movq	%r8, 112\(%rsp\)
  **	movq	%r9, 120\(%rsp\)
- **	movq	\$0, 56\(%rsp\)
  **	movq	\$0, 64\(%rsp\)
! **	movq	%rax, 48\(%rsp\)
  **	cmpl	\$47, %eax
  **	ja	.L2
  **	leal	8\(%rax\), %edx
--- 13,21 ----
  **	movq	%rdx, 104\(%rsp\)
  **	movq	%r8, 112\(%rsp\)
  **	movq	%r9, 120\(%rsp\)
  **	movq	\$0, 64\(%rsp\)
! **	movq	\$0, 72\(%rsp\)
! **	movq	%rax, 56\(%rsp\)
  **	cmpl	\$47, %eax
  **	ja	.L2
  **	leal	8\(%rax\), %edx
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35e.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35e.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35e.c	Mon Jul 27 02:16:15 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35e.c	Sun Aug  2 22:32:14 2026
***************
*** 13,21 ****
  **	movq	%rdx, 104\(%rsp\)
  **	movq	%r8, 112\(%rsp\)
  **	movq	%r9, 120\(%rsp\)
- **	movq	\$0, 56\(%rsp\)
  **	movq	\$0, 64\(%rsp\)
! **	movq	%rax, 48\(%rsp\)
  **	cmpl	\$47, %eax
  **	ja	.L2
  **	leal	8\(%rax\), %edx
--- 13,21 ----
  **	movq	%rdx, 104\(%rsp\)
  **	movq	%r8, 112\(%rsp\)
  **	movq	%r9, 120\(%rsp\)
  **	movq	\$0, 64\(%rsp\)
! **	movq	\$0, 72\(%rsp\)
! **	movq	%rax, 56\(%rsp\)
  **	cmpl	\$47, %eax
  **	ja	.L2
  **	leal	8\(%rax\), %edx
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35f.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35f.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35f.c	Mon Jul 27 02:16:15 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35f.c	Sun Aug  2 22:32:14 2026
***************
*** 13,21 ****
  **	movq	%rdx, 104\(%rsp\)
  **	movq	%r8, 112\(%rsp\)
  **	movq	%r9, 120\(%rsp\)
- **	movq	\$0, 56\(%rsp\)
  **	movq	\$0, 64\(%rsp\)
! **	movq	%rax, 48\(%rsp\)
  **	cmpl	\$47, %eax
  **	ja	.L2
  **	leal	8\(%rax\), %edx
--- 13,21 ----
  **	movq	%rdx, 104\(%rsp\)
  **	movq	%r8, 112\(%rsp\)
  **	movq	%r9, 120\(%rsp\)
  **	movq	\$0, 64\(%rsp\)
! **	movq	\$0, 72\(%rsp\)
! **	movq	%rax, 56\(%rsp\)
  **	cmpl	\$47, %eax
  **	ja	.L2
  **	leal	8\(%rax\), %edx
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35g.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35g.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/preserve-none-35g.c	Mon Jul 27 02:16:15 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/preserve-none-35g.c	Sun Aug  2 22:32:14 2026
***************
*** 13,21 ****
  **	movq	%rdx, 104\(%rsp\)
  **	movq	%r8, 112\(%rsp\)
  **	movq	%r9, 120\(%rsp\)
- **	movq	\$0, 56\(%rsp\)
  **	movq	\$0, 64\(%rsp\)
! **	movq	%rax, 48\(%rsp\)
  **	cmpl	\$47, %eax
  **	ja	.L2
  **	leal	8\(%rax\), %edx
--- 13,21 ----
  **	movq	%rdx, 104\(%rsp\)
  **	movq	%r8, 112\(%rsp\)
  **	movq	%r9, 120\(%rsp\)
  **	movq	\$0, 64\(%rsp\)
! **	movq	\$0, 72\(%rsp\)
! **	movq	%rax, 56\(%rsp\)
  **	cmpl	\$47, %eax
  **	ja	.L2
  **	leal	8\(%rax\), %edx
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v16qi-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v16qi-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v16qi-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v16qi-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse -mno-sse2" } */
+ 
+ typedef char v16qi __attribute__ ((__vector_size__ (16)));
+ 
+ char a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p;
+ 
+ v16qi fa000000000000000() { return (v16qi){a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0a00000000000000() { return (v16qi){0,a,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f00a0000000000000() { return (v16qi){0,0,a,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f000a000000000000() { return (v16qi){0,0,0,a,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0000a00000000000() { return (v16qi){0,0,0,0,a,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f00000a0000000000() { return (v16qi){0,0,0,0,0,a,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f000000a000000000() { return (v16qi){0,0,0,0,0,0,a,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0000000a00000000() { return (v16qi){0,0,0,0,0,0,0,a,0,0,0,0,0,0,0,0}; }
+ v16qi f00000000a0000000() { return (v16qi){0,0,0,0,0,0,0,0,a,0,0,0,0,0,0,0}; }
+ v16qi f000000000a000000() { return (v16qi){0,0,0,0,0,0,0,0,0,a,0,0,0,0,0,0}; }
+ v16qi f0000000000a00000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,a,0,0,0,0,0}; }
+ v16qi f00000000000a0000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,a,0,0,0,0}; }
+ v16qi f000000000000a000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,a,0,0,0}; }
+ v16qi f0000000000000a00() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,a,0,0}; }
+ v16qi f00000000000000a0() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,0,a,0}; }
+ v16qi f000000000000000a() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,a}; }
+ 
+ v16qi fabcdefghijklmnop() { return (v16qi){a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}; }
+ 
+ /* { dg-final { scan-assembler-times "movaps" 17 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v2df-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v2df-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v2df-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v2df-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -msse -mno-sse2 -mfpmath=sse" } */
+ 
+ typedef double v2df __attribute__ ((__vector_size__ (16)));
+ 
+ double m, n;
+ 
+ v2df fx0(double x) { return (v2df){ x, 0.0 }; }
+ v2df f0x(double x) { return (v2df){ 0.0, x }; }
+ v2df fxx(double x) { return (v2df){ x, x }; }
+ v2df fxy(double x, double y) { return (v2df){ x, y }; }
+ 
+ v2df fm0() { return (v2df){ m, 0.0 }; }
+ v2df f0m() { return (v2df){ 0.0, m }; }
+ v2df fmm() { return (v2df){ m, m }; }
+ v2df fmn() { return (v2df){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "movq" 10 } } */
+ /* { dg-final { scan-assembler-times "movlps" 5 } } */
+ /* { dg-final { scan-assembler-times "movaps" 8 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v2df-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v2df-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v2df-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v2df-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -msse -mno-sse2" } */
+ 
+ typedef double v2df __attribute__ ((__vector_size__ (16)));
+ 
+ double m, n;
+ 
+ v2df fx0(double x) { return (v2df){ x, 0.0 }; }
+ v2df f0x(double x) { return (v2df){ 0.0, x }; }
+ v2df fxx(double x) { return (v2df){ x, x }; }
+ v2df fxy(double x, double y) { return (v2df){ x, y }; }
+ 
+ v2df fm0() { return (v2df){ m, 0.0 }; }
+ v2df f0m() { return (v2df){ 0.0, m }; }
+ v2df fmm() { return (v2df){ m, m }; }
+ v2df fmn() { return (v2df){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "movaps" 8 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v2di-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v2di-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v2di-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v2di-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -msse -mno-sse2" } */
+ 
+ typedef long long v2di __attribute__ ((__vector_size__ (16)));
+ 
+ long long m,n;
+ 
+ v2di fx0(long long x) { return (v2di){ x, 0 }; }
+ v2di f0x(long long x) { return (v2di){ 0, x }; }
+ v2di fxx(long long x) { return (v2di){ x, x }; }
+ v2di fxy(long long x, long long y) { return (v2di){ x, y }; }
+ 
+ v2di fm0() { return (v2di){ m, 0 }; }
+ v2di f0m() { return (v2di){ 0, m }; }
+ v2di fmm() { return (v2di){ m, m }; }
+ v2di fmn() { return (v2di){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "movaps" 8 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v2di-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v2di-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v2di-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v2di-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -msse -mno-sse2" } */
+ 
+ typedef long long v2di __attribute__ ((__vector_size__ (16)));
+ 
+ long long m,n;
+ 
+ v2di fx0(long long x) { return (v2di){ x, 0 }; }
+ v2di f0x(long long x) { return (v2di){ 0, x }; }
+ v2di fxx(long long x) { return (v2di){ x, x }; }
+ v2di fxy(long long x, long long y) { return (v2di){ x, y }; }
+ 
+ v2di fm0() { return (v2di){ m, 0 }; }
+ v2di f0m() { return (v2di){ 0, m }; }
+ v2di fmm() { return (v2di){ m, m }; }
+ v2di fmn() { return (v2di){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "movaps" 12 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v4sf-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v4sf-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v4sf-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v4sf-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -msse -mno-sse2" } */
+ 
+ typedef float v4sf __attribute__ ((__vector_size__ (16)));
+ 
+ float m,n;
+ 
+ v4sf fa000(float a) { return (v4sf){a,0.0f,0.0f,0.0f}; }
+ v4sf f0a00(float a) { return (v4sf){0.0f,a,0.0f,0.0f}; }
+ v4sf f00a0(float a) { return (v4sf){0.0f,0.0f,a,0.0f}; }
+ v4sf f000a(float a) { return (v4sf){0.0f,0.0f,0.0f,a}; }
+ 
+ v4sf faa00(float a) { return (v4sf){a,a,0.0f,0.0f}; }
+ v4sf fa0a0(float a) { return (v4sf){a,0.0f,a,0.0f}; }
+ 
+ v4sf faaaa(float a) { return (v4sf){a,a,a,a}; }
+ 
+ v4sf fab00(float a, float b) { return (v4sf){a,b,0.0f,0.0f}; }
+ v4sf fa0b0(float a, float b) { return (v4sf){a,0.0f,b,0.0f}; }
+ v4sf fabab(float a, float b) { return (v4sf){a,b,a,b}; }
+ v4sf fabcd(float a, float b, float c, float d) { return (v4sf){a,b,c,d}; }
+ 
+ v4sf fm000() { return (v4sf){m,0.0f,0.0f,0.0f}; }
+ v4sf fm0m0() { return (v4sf){m,0.0f,m,0.0f}; }
+ v4sf fmmmm() { return (v4sf){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "xorps" 16 } } */
+ /* { dg-final { scan-assembler-times "movss" 19 } } */
+ /* { dg-final { scan-assembler-times "movaps" 10 } } */
+ /* { dg-final { scan-assembler-times "shufps" 7 } } */
+ /* { dg-final { scan-assembler-times "movlhps" 4 } } */
+ /* { dg-final { scan-assembler-times "unpcklps" 5 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v4sf-3.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v4sf-3.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v4sf-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v4sf-3.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -msse -mno-sse2" } */
+ 
+ typedef float v4sf __attribute__ ((__vector_size__ (16)));
+ 
+ float m,n;
+ 
+ v4sf fa000(float a) { return (v4sf){a,0.0f,0.0f,0.0f}; }
+ v4sf f0a00(float a) { return (v4sf){0.0f,a,0.0f,0.0f}; }
+ v4sf f00a0(float a) { return (v4sf){0.0f,0.0f,a,0.0f}; }
+ v4sf f000a(float a) { return (v4sf){0.0f,0.0f,0.0f,a}; }
+ 
+ v4sf faa00(float a) { return (v4sf){a,a,0.0f,0.0f}; }
+ v4sf fa0a0(float a) { return (v4sf){a,0.0f,a,0.0f}; }
+ 
+ v4sf faaaa(float a) { return (v4sf){a,a,a,a}; }
+ 
+ v4sf fab00(float a, float b) { return (v4sf){a,b,0.0f,0.0f}; }
+ v4sf fa0b0(float a, float b) { return (v4sf){a,0.0f,b,0.0f}; }
+ v4sf fabab(float a, float b) { return (v4sf){a,b,a,b}; }
+ v4sf fabcd(float a, float b, float c, float d) { return (v4sf){a,b,c,d}; }
+ 
+ v4sf fm000() { return (v4sf){m,0.0f,0.0f,0.0f}; }
+ v4sf fm0m0() { return (v4sf){m,0.0f,m,0.0f}; }
+ v4sf fmmmm() { return (v4sf){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "movss" 20 } } */
+ /* { dg-final { scan-assembler-times "shufps" 7 } } */
+ /* { dg-final { scan-assembler-times "movlhps" 4 } } */
+ /* { dg-final { scan-assembler-times "unpcklps" 5 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v4si-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v4si-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v4si-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v4si-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse -mno-sse2" } */
+ 
+ typedef int v4si __attribute__ ((__vector_size__ (16)));
+ 
+ int m,n;
+ 
+ v4si fa000(int a) { return (v4si){a,0,0,0}; }
+ v4si f0a00(int a) { return (v4si){0,a,0,0}; }
+ v4si f00a0(int a) { return (v4si){0,0,a,0}; }
+ v4si f000a(int a) { return (v4si){0,0,0,a}; }
+ 
+ v4si faa00(int a) { return (v4si){a,a,0,0}; }
+ v4si fa0a0(int a) { return (v4si){a,0,a,0}; }
+ 
+ v4si faaaa(int a) { return (v4si){a,a,a,a}; }
+ 
+ v4si fab00(int a, int b) { return (v4si){a,b,0,0}; }
+ v4si fa0b0(int a, int b) { return (v4si){a,0,b,0}; }
+ v4si fabab(int a, int b) { return (v4si){a,b,a,b}; }
+ v4si fabcd(int a, int b, int c, int d) { return (v4si){a,b,c,d}; }
+ 
+ v4si fm000() { return (v4si){m,0,0,0}; }
+ v4si fm0m0() { return (v4si){m,0,m,0}; }
+ v4si fmmmm() { return (v4si){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "movss" 20 } } */
+ /* { dg-final { scan-assembler-times "shufps" 11 } } */
+ /* { dg-final { scan-assembler-times "unpcklps" 5 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v8hi-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v8hi-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse-init-v8hi-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse-init-v8hi-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse -mno-sse2" } */
+ 
+ typedef short v8hi __attribute__ ((__vector_size__ (16)));
+ 
+ short a, b, c, d, e, f, g, h;
+ 
+ v8hi fa0000000() { return (v8hi){a,0,0,0,0,0,0,0}; }
+ v8hi f0a000000() { return (v8hi){0,a,0,0,0,0,0,0}; }
+ v8hi f00a00000() { return (v8hi){0,0,a,0,0,0,0,0}; }
+ v8hi f000a0000() { return (v8hi){0,0,0,a,0,0,0,0}; }
+ v8hi f0000a000() { return (v8hi){0,0,0,0,a,0,0,0}; }
+ v8hi f00000a00() { return (v8hi){0,0,0,0,0,a,0,0}; }
+ v8hi f000000a0() { return (v8hi){0,0,0,0,0,0,a,0}; }
+ v8hi f0000000a() { return (v8hi){0,0,0,0,0,0,0,a}; }
+ v8hi fabcdefgh() { return (v8hi){a,b,c,d,e,f,g,h}; }
+ 
+ /* { dg-final { scan-assembler-times "movaps" 9 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v16qi-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v16qi-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v16qi-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v16qi-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -msse2 -mno-sse4.1" } */
+ 
+ typedef char v16qi __attribute__ ((__vector_size__ (16)));
+ 
+ char a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p;
+ 
+ v16qi fa000000000000000() { return (v16qi){a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0a00000000000000() { return (v16qi){0,a,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f00a0000000000000() { return (v16qi){0,0,a,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f000a000000000000() { return (v16qi){0,0,0,a,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0000a00000000000() { return (v16qi){0,0,0,0,a,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f00000a0000000000() { return (v16qi){0,0,0,0,0,a,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f000000a000000000() { return (v16qi){0,0,0,0,0,0,a,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0000000a00000000() { return (v16qi){0,0,0,0,0,0,0,a,0,0,0,0,0,0,0,0}; }
+ v16qi f00000000a0000000() { return (v16qi){0,0,0,0,0,0,0,0,a,0,0,0,0,0,0,0}; }
+ v16qi f000000000a000000() { return (v16qi){0,0,0,0,0,0,0,0,0,a,0,0,0,0,0,0}; }
+ v16qi f0000000000a00000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,a,0,0,0,0,0}; }
+ v16qi f00000000000a0000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,a,0,0,0,0}; }
+ v16qi f000000000000a000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,a,0,0,0}; }
+ v16qi f0000000000000a00() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,a,0,0}; }
+ v16qi f00000000000000a0() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,0,a,0}; }
+ v16qi f000000000000000a() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,a}; }
+ 
+ v16qi fabcdefghijklmnop() { return (v16qi){a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}; }
+ 
+ /* { dg-final { scan-assembler-times "movzbl" 32 } } */
+ /* { dg-final { scan-assembler-times "movd" 16 } } */
+ /* { dg-final { scan-assembler-times "sall" 3 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 12 } } */
+ /* { dg-final { scan-assembler-times "movq" 2 } } */
+ /* { dg-final { scan-assembler-times "punpcklqdq" 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v16qi-3.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v16qi-3.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v16qi-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v16qi-3.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -msse2 -mno-sse4.1" } */
+ 
+ typedef char v16qi __attribute__ ((__vector_size__ (16)));
+ 
+ char a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p;
+ 
+ v16qi fa000000000000000() { return (v16qi){a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0a00000000000000() { return (v16qi){0,a,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f00a0000000000000() { return (v16qi){0,0,a,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f000a000000000000() { return (v16qi){0,0,0,a,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0000a00000000000() { return (v16qi){0,0,0,0,a,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f00000a0000000000() { return (v16qi){0,0,0,0,0,a,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f000000a000000000() { return (v16qi){0,0,0,0,0,0,a,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0000000a00000000() { return (v16qi){0,0,0,0,0,0,0,a,0,0,0,0,0,0,0,0}; }
+ v16qi f00000000a0000000() { return (v16qi){0,0,0,0,0,0,0,0,a,0,0,0,0,0,0,0}; }
+ v16qi f000000000a000000() { return (v16qi){0,0,0,0,0,0,0,0,0,a,0,0,0,0,0,0}; }
+ v16qi f0000000000a00000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,a,0,0,0,0,0}; }
+ v16qi f00000000000a0000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,a,0,0,0,0}; }
+ v16qi f000000000000a000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,a,0,0,0}; }
+ v16qi f0000000000000a00() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,a,0,0}; }
+ v16qi f00000000000000a0() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,0,a,0}; }
+ v16qi f000000000000000a() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,a}; }
+ 
+ v16qi fabcdefghijklmnop() { return (v16qi){a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}; }
+ 
+ /* { dg-final { scan-assembler-times "movzbl" 32 } } */
+ /* { dg-final { scan-assembler-times "movd" 20 } } */
+ /* { dg-final { scan-assembler-times "sall" 15 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 12 } } */
+ /* { dg-final { scan-assembler-times "punpckldq" 2 } } */
+ /* { dg-final { scan-assembler-times "shufps" 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v2df-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v2df-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v2df-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v2df-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -msse2 -mno-sse3" } */
+ 
+ typedef double v2df __attribute__ ((__vector_size__ (16)));
+ 
+ double m, n;
+ 
+ v2df fx0(double x) { return (v2df){ x, 0.0 }; }
+ v2df f0x(double x) { return (v2df){ 0.0, x }; }
+ v2df fxx(double x) { return (v2df){ x, x }; }
+ v2df fxy(double x, double y) { return (v2df){ x, y }; }
+ 
+ v2df fm0() { return (v2df){ m, 0.0 }; }
+ v2df f0m() { return (v2df){ 0.0, m }; }
+ v2df fmm() { return (v2df){ m, m }; }
+ v2df fmn() { return (v2df){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "movq" 4 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "unpcklpd" 3 } } */
+ /* { dg-final { scan-assembler-times "movsd" 2 } } */
+ /* { dg-final { scan-assembler-times "movhpd" 1 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v2df-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v2df-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v2df-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v2df-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -msse2 -mno-sse3" } */
+ 
+ typedef double v2df __attribute__ ((__vector_size__ (16)));
+ 
+ double m, n;
+ 
+ v2df fx0(double x) { return (v2df){ x, 0.0 }; }
+ v2df f0x(double x) { return (v2df){ 0.0, x }; }
+ v2df fxx(double x) { return (v2df){ x, x }; }
+ v2df fxy(double x, double y) { return (v2df){ x, y }; }
+ 
+ v2df fm0() { return (v2df){ m, 0.0 }; }
+ v2df f0m() { return (v2df){ 0.0, m }; }
+ v2df fmm() { return (v2df){ m, m }; }
+ v2df fmn() { return (v2df){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "movq" 5 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "unpcklpd" 2 } } */
+ /* { dg-final { scan-assembler-times "movsd" 3 } } */
+ /* { dg-final { scan-assembler-times "movhpd" 2 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v2di-3.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v2di-3.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v2di-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v2di-3.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -msse2 -mno-sse3" } */
+ 
+ typedef long long v2di __attribute__ ((__vector_size__ (16)));
+ 
+ long long m,n;
+ 
+ v2di fx0(long long x) { return (v2di){ x, 0 }; }
+ v2di f0x(long long x) { return (v2di){ 0, x }; }
+ v2di fxx(long long x) { return (v2di){ x, x }; }
+ v2di fxy(long long x, long long y) { return (v2di){ x, y }; }
+ 
+ v2di fm0() { return (v2di){ m, 0 }; }
+ v2di f0m() { return (v2di){ 0, m }; }
+ v2di fmm() { return (v2di){ m, m }; }
+ v2di fmn() { return (v2di){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "movq" 9 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "punpcklqdq" 3 } } */
+ /* { dg-final { scan-assembler-times "movhps" 1 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v2di-4.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v2di-4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v2di-4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v2di-4.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -msse2 -mno-sse3" } */
+ 
+ typedef long long v2di __attribute__ ((__vector_size__ (16)));
+ 
+ long long m,n;
+ 
+ v2di fx0(long long x) { return (v2di){ x, 0 }; }
+ v2di f0x(long long x) { return (v2di){ 0, x }; }
+ v2di fxx(long long x) { return (v2di){ x, x }; }
+ v2di fxy(long long x, long long y) { return (v2di){ x, y }; }
+ 
+ v2di fm0() { return (v2di){ m, 0 }; }
+ v2di f0m() { return (v2di){ 0, m }; }
+ v2di fmm() { return (v2di){ m, m }; }
+ v2di fmn() { return (v2di){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "movd" 4 } } */
+ /* { dg-final { scan-assembler-times "movq" 6 } } */
+ /* { dg-final { scan-assembler-times "punpckldq" 2 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "punpcklqdq" 2 } } */
+ /* { dg-final { scan-assembler-times "movhps" 2 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v4sf-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v4sf-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v4sf-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v4sf-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -msse2 -mno-sse4.1" } */
+ 
+ typedef float v4sf __attribute__ ((__vector_size__ (16)));
+ 
+ float m,n;
+ 
+ v4sf fa000(float a) { return (v4sf){a,0.0f,0.0f,0.0f}; }
+ v4sf f0a00(float a) { return (v4sf){0.0f,a,0.0f,0.0f}; }
+ v4sf f00a0(float a) { return (v4sf){0.0f,0.0f,a,0.0f}; }
+ v4sf f000a(float a) { return (v4sf){0.0f,0.0f,0.0f,a}; }
+ 
+ v4sf faa00(float a) { return (v4sf){a,a,0.0f,0.0f}; }
+ v4sf fa0a0(float a) { return (v4sf){a,0.0f,a,0.0f}; }
+ 
+ v4sf faaaa(float a) { return (v4sf){a,a,a,a}; }
+ 
+ v4sf fab00(float a, float b) { return (v4sf){a,b,0.0f,0.0f}; }
+ v4sf fa0b0(float a, float b) { return (v4sf){a,0.0f,b,0.0f}; }
+ v4sf fabab(float a, float b) { return (v4sf){a,b,a,b}; }
+ v4sf fabcd(float a, float b, float c, float d) { return (v4sf){a,b,c,d}; }
+ 
+ v4sf fm000() { return (v4sf){m,0.0f,0.0f,0.0f}; }
+ v4sf fm0m0() { return (v4sf){m,0.0f,m,0.0f}; }
+ v4sf fmmmm() { return (v4sf){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "movd" 32 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 3 } } */
+ /* { dg-final { scan-assembler-times "shufps" 4 } } */
+ /* { dg-final { scan-assembler-times "movlhps" 4 } } */
+ /* { dg-final { scan-assembler-times "unpcklps" 5 } } */
+ /* { dg-final { scan-assembler-times "movss" 3 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v4sf-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v4sf-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v4sf-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v4sf-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -msse2 -mno-sse4.1" } */
+ 
+ typedef float v4sf __attribute__ ((__vector_size__ (16)));
+ 
+ float m,n;
+ 
+ v4sf fa000(float a) { return (v4sf){a,0.0f,0.0f,0.0f}; }
+ v4sf f0a00(float a) { return (v4sf){0.0f,a,0.0f,0.0f}; }
+ v4sf f00a0(float a) { return (v4sf){0.0f,0.0f,a,0.0f}; }
+ v4sf f000a(float a) { return (v4sf){0.0f,0.0f,0.0f,a}; }
+ 
+ v4sf faa00(float a) { return (v4sf){a,a,0.0f,0.0f}; }
+ v4sf fa0a0(float a) { return (v4sf){a,0.0f,a,0.0f}; }
+ 
+ v4sf faaaa(float a) { return (v4sf){a,a,a,a}; }
+ 
+ v4sf fab00(float a, float b) { return (v4sf){a,b,0.0f,0.0f}; }
+ v4sf fa0b0(float a, float b) { return (v4sf){a,0.0f,b,0.0f}; }
+ v4sf fabab(float a, float b) { return (v4sf){a,b,a,b}; }
+ v4sf fabcd(float a, float b, float c, float d) { return (v4sf){a,b,c,d}; }
+ 
+ v4sf fm000() { return (v4sf){m,0.0f,0.0f,0.0f}; }
+ v4sf fm0m0() { return (v4sf){m,0.0f,m,0.0f}; }
+ v4sf fmmmm() { return (v4sf){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "movss" 20 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 3 } } */
+ /* { dg-final { scan-assembler-times "shufps" 4 } } */
+ /* { dg-final { scan-assembler-times "movlhps" 4 } } */
+ /* { dg-final { scan-assembler-times "unpcklps" 5 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v4si-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v4si-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v4si-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v4si-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse2 -mno-sse4.1" } */
+ 
+ typedef int v4si __attribute__ ((__vector_size__ (16)));
+ 
+ int m,n;
+ 
+ v4si fa000(int a) { return (v4si){a,0,0,0}; }
+ v4si f0a00(int a) { return (v4si){0,a,0,0}; }
+ v4si f00a0(int a) { return (v4si){0,0,a,0}; }
+ v4si f000a(int a) { return (v4si){0,0,0,a}; }
+ 
+ v4si faa00(int a) { return (v4si){a,a,0,0}; }
+ v4si fa0a0(int a) { return (v4si){a,0,a,0}; }
+ 
+ v4si faaaa(int a) { return (v4si){a,a,a,a}; }
+ 
+ v4si fab00(int a, int b) { return (v4si){a,b,0,0}; }
+ v4si fa0b0(int a, int b) { return (v4si){a,0,b,0}; }
+ v4si fabab(int a, int b) { return (v4si){a,b,a,b}; }
+ v4si fabcd(int a, int b, int c, int d) { return (v4si){a,b,c,d}; }
+ 
+ v4si fm000() { return (v4si){m,0,0,0}; }
+ v4si fm0m0() { return (v4si){m,0,m,0}; }
+ v4si fmmmm() { return (v4si){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "movd" 20 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 3 } } */
+ /* { dg-final { scan-assembler-times "shufps" 6 } } */
+ /* { dg-final { scan-assembler-times "pshufd" 2 } } */
+ /* { dg-final { scan-assembler-times "punpckldq" 5 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v8hi-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v8hi-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse2-init-v8hi-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse2-init-v8hi-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse2 -mno-sse4.1" } */
+ 
+ typedef short v8hi __attribute__ ((__vector_size__ (16)));
+ 
+ short a, b, c, d, e, f, g, h;
+ 
+ v8hi fa0000000() { return (v8hi){a,0,0,0,0,0,0,0}; }
+ v8hi f0a000000() { return (v8hi){0,a,0,0,0,0,0,0}; }
+ v8hi f00a00000() { return (v8hi){0,0,a,0,0,0,0,0}; }
+ v8hi f000a0000() { return (v8hi){0,0,0,a,0,0,0,0}; }
+ v8hi f0000a000() { return (v8hi){0,0,0,0,a,0,0,0}; }
+ v8hi f00000a00() { return (v8hi){0,0,0,0,0,a,0,0}; }
+ v8hi f000000a0() { return (v8hi){0,0,0,0,0,0,a,0}; }
+ v8hi f0000000a() { return (v8hi){0,0,0,0,0,0,0,a}; }
+ v8hi fabcdefgh() { return (v8hi){a,b,c,d,e,f,g,h}; }
+ 
+ /* { dg-final { scan-assembler-times "pxor" 8 } } */
+ /* { dg-final { scan-assembler-times "pinsrw" 15 } } */
+ /* { dg-final { scan-assembler-times "movzwl" 1 } } */
+ /* { dg-final { scan-assembler-times "movd" 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v16qi-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v16qi-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v16qi-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v16qi-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse4.1 -mno-avx" } */
+ 
+ typedef char v16qi __attribute__ ((__vector_size__ (16)));
+ 
+ char a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p;
+ 
+ v16qi fa000000000000000() { return (v16qi){a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0a00000000000000() { return (v16qi){0,a,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f00a0000000000000() { return (v16qi){0,0,a,0,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f000a000000000000() { return (v16qi){0,0,0,a,0,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0000a00000000000() { return (v16qi){0,0,0,0,a,0,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f00000a0000000000() { return (v16qi){0,0,0,0,0,a,0,0,0,0,0,0,0,0,0,0}; }
+ v16qi f000000a000000000() { return (v16qi){0,0,0,0,0,0,a,0,0,0,0,0,0,0,0,0}; }
+ v16qi f0000000a00000000() { return (v16qi){0,0,0,0,0,0,0,a,0,0,0,0,0,0,0,0}; }
+ v16qi f00000000a0000000() { return (v16qi){0,0,0,0,0,0,0,0,a,0,0,0,0,0,0,0}; }
+ v16qi f000000000a000000() { return (v16qi){0,0,0,0,0,0,0,0,0,a,0,0,0,0,0,0}; }
+ v16qi f0000000000a00000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,a,0,0,0,0,0}; }
+ v16qi f00000000000a0000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,a,0,0,0,0}; }
+ v16qi f000000000000a000() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,a,0,0,0}; }
+ v16qi f0000000000000a00() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,a,0,0}; }
+ v16qi f00000000000000a0() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,0,a,0}; }
+ v16qi f000000000000000a() { return (v16qi){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,a}; }
+ 
+ v16qi fabcdefghijklmnop() { return (v16qi){a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}; }
+ 
+ /* { dg-final { scan-assembler-times "pxor" 16 } } */
+ /* { dg-final { scan-assembler-times "pinsrb" 31 } } */
+ /* { dg-final { scan-assembler-times "movzbl" 1 } } */
+ /* { dg-final { scan-assembler-times "movd" 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v2df-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v2df-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v2df-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v2df-1.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -msse4.1 -mno-avx" } */
+ 
+ typedef double v2df __attribute__ ((__vector_size__ (16)));
+ 
+ double m, n;
+ 
+ v2df fx0(double x) { return (v2df){ x, 0.0 }; }
+ v2df f0x(double x) { return (v2df){ 0.0, x }; }
+ v2df fxx(double x) { return (v2df){ x, x }; }
+ v2df fxy(double x, double y) { return (v2df){ x, y }; }
+ 
+ v2df fm0() { return (v2df){ m, 0.0 }; }
+ v2df f0m() { return (v2df){ 0.0, m }; }
+ v2df fmm() { return (v2df){ m, m }; }
+ v2df fmn() { return (v2df){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "movq" 4 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "unpcklpd" 2 } } */
+ /* { dg-final { scan-assembler-times "movsd" 1 } } */
+ /* { dg-final { scan-assembler-times "movhpd" 1 } } */
+ /* { dg-final { scan-assembler-times "movddup" 1 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v2df-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v2df-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v2df-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v2df-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -msse4.1 -mno-avx" } */
+ 
+ typedef double v2df __attribute__ ((__vector_size__ (16)));
+ 
+ double m, n;
+ 
+ v2df fx0(double x) { return (v2df){ x, 0.0 }; }
+ v2df f0x(double x) { return (v2df){ 0.0, x }; }
+ v2df fxx(double x) { return (v2df){ x, x }; }
+ v2df fxy(double x, double y) { return (v2df){ x, y }; }
+ 
+ v2df fm0() { return (v2df){ m, 0.0 }; }
+ v2df f0m() { return (v2df){ 0.0, m }; }
+ v2df fmm() { return (v2df){ m, m }; }
+ v2df fmn() { return (v2df){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "movq" 5 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "movddup" 2 } } */
+ /* { dg-final { scan-assembler-times "movsd" 1 } } */
+ /* { dg-final { scan-assembler-times "movhpd" 2 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -msse4.1 -mno-avx" } */
+ 
+ typedef long long v2di __attribute__ ((__vector_size__ (16)));
+ 
+ long long m,n;
+ 
+ v2di fx0(long long x) { return (v2di){ x, 0 }; }
+ v2di f0x(long long x) { return (v2di){ 0, x }; }
+ v2di fxx(long long x) { return (v2di){ x, x }; }
+ v2di fxy(long long x, long long y) { return (v2di){ x, y }; }
+ 
+ v2di fm0() { return (v2di){ m, 0 }; }
+ v2di f0m() { return (v2di){ 0, m }; }
+ v2di fmm() { return (v2di){ m, m }; }
+ v2di fmn() { return (v2di){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "movq" 7 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "punpcklqdq" 1 } } */
+ /* { dg-final { scan-assembler-times "pinsrq" 2 } } */
+ /* { dg-final { scan-assembler-times "movddup" 1 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-3.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-3.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v2di-3.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -msse4.1 -mno-avx" } */
+ 
+ typedef long long v2di __attribute__ ((__vector_size__ (16)));
+ 
+ long long m,n;
+ 
+ v2di fx0(long long x) { return (v2di){ x, 0 }; }
+ v2di f0x(long long x) { return (v2di){ 0, x }; }
+ v2di fxx(long long x) { return (v2di){ x, x }; }
+ v2di fxy(long long x, long long y) { return (v2di){ x, y }; }
+ 
+ v2di fm0() { return (v2di){ m, 0 }; }
+ v2di f0m() { return (v2di){ 0, m }; }
+ v2di fmm() { return (v2di){ m, m }; }
+ v2di fmn() { return (v2di){ m, n }; }
+ 
+ /* { dg-final { scan-assembler-times "movd\[ \t\]" 2 } } */
+ /* { dg-final { scan-assembler-times "pinsrd" 2 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 2 } } */
+ /* { dg-final { scan-assembler-times "movddup" 2 } } */
+ /* { dg-final { scan-assembler-times "movq" 4 } } */
+ /* { dg-final { scan-assembler-times "movhps" 2 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v4sf-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v4sf-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v4sf-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v4sf-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -msse4.1 -mno-avx" } */
+ 
+ typedef float v4sf __attribute__ ((__vector_size__ (16)));
+ 
+ float m,n;
+ 
+ v4sf fa000(float a) { return (v4sf){a,0.0f,0.0f,0.0f}; }
+ v4sf f0a00(float a) { return (v4sf){0.0f,a,0.0f,0.0f}; }
+ v4sf f00a0(float a) { return (v4sf){0.0f,0.0f,a,0.0f}; }
+ v4sf f000a(float a) { return (v4sf){0.0f,0.0f,0.0f,a}; }
+ 
+ v4sf faa00(float a) { return (v4sf){a,a,0.0f,0.0f}; }
+ v4sf fa0a0(float a) { return (v4sf){a,0.0f,a,0.0f}; }
+ 
+ v4sf faaaa(float a) { return (v4sf){a,a,a,a}; }
+ 
+ v4sf fab00(float a, float b) { return (v4sf){a,b,0.0f,0.0f}; }
+ v4sf fa0b0(float a, float b) { return (v4sf){a,0.0f,b,0.0f}; }
+ v4sf fabab(float a, float b) { return (v4sf){a,b,a,b}; }
+ v4sf fabcd(float a, float b, float c, float d) { return (v4sf){a,b,c,d}; }
+ 
+ v4sf fm000() { return (v4sf){m,0.0f,0.0f,0.0f}; }
+ v4sf fm0m0() { return (v4sf){m,0.0f,m,0.0f}; }
+ v4sf fmmmm() { return (v4sf){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "insertps" 16 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 3 } } */
+ /* { dg-final { scan-assembler-times "shufps" 4 } } */
+ /* { dg-final { scan-assembler-times "movlhps" 4 } } */
+ /* { dg-final { scan-assembler-times "unpcklps" 5 } } */
+ /* { dg-final { scan-assembler-times "movss" 3 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v4sf-3.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v4sf-3.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v4sf-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v4sf-3.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -msse4.1 -mno-avx" } */
+ 
+ typedef float v4sf __attribute__ ((__vector_size__ (16)));
+ 
+ float m,n;
+ 
+ v4sf fa000(float a) { return (v4sf){a,0.0f,0.0f,0.0f}; }
+ v4sf f0a00(float a) { return (v4sf){0.0f,a,0.0f,0.0f}; }
+ v4sf f00a0(float a) { return (v4sf){0.0f,0.0f,a,0.0f}; }
+ v4sf f000a(float a) { return (v4sf){0.0f,0.0f,0.0f,a}; }
+ 
+ v4sf faa00(float a) { return (v4sf){a,a,0.0f,0.0f}; }
+ v4sf fa0a0(float a) { return (v4sf){a,0.0f,a,0.0f}; }
+ 
+ v4sf faaaa(float a) { return (v4sf){a,a,a,a}; }
+ 
+ v4sf fab00(float a, float b) { return (v4sf){a,b,0.0f,0.0f}; }
+ v4sf fa0b0(float a, float b) { return (v4sf){a,0.0f,b,0.0f}; }
+ v4sf fabab(float a, float b) { return (v4sf){a,b,a,b}; }
+ v4sf fabcd(float a, float b, float c, float d) { return (v4sf){a,b,c,d}; }
+ 
+ v4sf fm000() { return (v4sf){m,0.0f,0.0f,0.0f}; }
+ v4sf fm0m0() { return (v4sf){m,0.0f,m,0.0f}; }
+ v4sf fmmmm() { return (v4sf){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "movss" 20 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 3 } } */
+ /* { dg-final { scan-assembler-times "shufps" 4 } } */
+ /* { dg-final { scan-assembler-times "movlhps" 4 } } */
+ /* { dg-final { scan-assembler-times "unpcklps" 5 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v4si-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v4si-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/sse4_1-init-v4si-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/sse4_1-init-v4si-2.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse4.1 -mno-avx" } */
+ 
+ typedef int v4si __attribute__ ((__vector_size__ (16)));
+ 
+ int m,n;
+ 
+ v4si fa000(int a) { return (v4si){a,0,0,0}; }
+ v4si f0a00(int a) { return (v4si){0,a,0,0}; }
+ v4si f00a0(int a) { return (v4si){0,0,a,0}; }
+ v4si f000a(int a) { return (v4si){0,0,0,a}; }
+ 
+ v4si faa00(int a) { return (v4si){a,a,0,0}; }
+ v4si fa0a0(int a) { return (v4si){a,0,a,0}; }
+ 
+ v4si faaaa(int a) { return (v4si){a,a,a,a}; }
+ 
+ v4si fab00(int a, int b) { return (v4si){a,b,0,0}; }
+ v4si fa0b0(int a, int b) { return (v4si){a,0,b,0}; }
+ v4si fabab(int a, int b) { return (v4si){a,b,a,b}; }
+ v4si fabcd(int a, int b, int c, int d) { return (v4si){a,b,c,d}; }
+ 
+ v4si fm000() { return (v4si){m,0,0,0}; }
+ v4si fm0m0() { return (v4si){m,0,m,0}; }
+ v4si fmmmm() { return (v4si){m,m,m,m}; }
+ 
+ /* { dg-final { scan-assembler-times "movd" 14 } } */
+ /* { dg-final { scan-assembler-times "pslldq" 3 } } */
+ /* { dg-final { scan-assembler-times "shufps" 4 } } */
+ /* { dg-final { scan-assembler-times "pshufd" 2 } } */
+ /* { dg-final { scan-assembler-times "pinsrd" 6 } } */
+ 
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/vect-epilogues-6.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/vect-epilogues-6.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/vect-epilogues-6.c	Mon Jul 27 02:16:15 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/vect-epilogues-6.c	Sun Aug  2 22:32:14 2026
*************** foo (double *a, char *mask, int n)
*** 17,21 ****
    return sum;
  }
  
! /* { dg-final { scan-tree-dump "optimized: loop vectorized using 64 byte vectors" "vect" } } */
! /* { dg-final { scan-tree-dump "optimized: epilogue loop vectorized using 32 byte vectors" "vect" } } */
--- 17,20 ----
    return sum;
  }
  
! /* { dg-final { scan-tree-dump "optimized: loop vectorized using 32 byte vectors" "vect" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/vect-epilogues-7.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/vect-epilogues-7.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/vect-epilogues-7.c	Mon Jul 27 02:16:15 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/vect-epilogues-7.c	Sun Aug  2 22:32:14 2026
*************** foo (double *a, char *mask, int n)
*** 17,21 ****
    return sum;
  }
  
! /* { dg-final { scan-tree-dump "optimized: loop vectorized using 64 byte vectors" "vect" } } */
! /* { dg-final { scan-tree-dump "optimized: epilogue loop vectorized using masked 64 byte vectors" "vect" } } */
--- 17,21 ----
    return sum;
  }
  
! /* { dg-final { scan-tree-dump "optimized: loop vectorized using 32 byte vectors" "vect" } } */
! /* { dg-final { scan-tree-dump "optimized: epilogue loop vectorized using masked 32 byte vectors" "vect" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/xchg-1.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/xchg-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/xchg-1.c	Mon Jul 27 02:16:15 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/xchg-1.c	Sun Aug  2 22:32:14 2026
*************** unsigned short good(unsigned short a)
*** 6,9 ****
         return (a >> 8 | a << 8);
  }
  
! /* { dg-final { scan-assembler "\[ \t\]xchg" } } */
--- 6,9 ----
         return (a >> 8 | a << 8);
  }
  
! /* { dg-final { scan-assembler "\[ \t\]rol" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/i386/xchg-2.c gcc-17-20260802/gcc/testsuite/gcc.target/i386/xchg-2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/i386/xchg-2.c	Mon Jul 27 02:16:15 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/i386/xchg-2.c	Sun Aug  2 22:32:14 2026
***************
*** 1,9 ****
! /* { dg-do compile } */
! /* { dg-options "-Os" } */
  
  unsigned short good(unsigned short a)
  {
         return (a >> 8 | a << 8);
  }
  
! /* { dg-final { scan-assembler "xchgb" } } */
--- 1,9 ----
! /* { dg-do compile { target ia32 } } */
! /* { dg-options "-O2 -march=pentium4" } */
  
  unsigned short good(unsigned short a)
  {
         return (a >> 8 | a << 8);
  }
  
! /* { dg-final { scan-assembler "\[ \t\]xchg" } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/loongarch/dtprel.c gcc-17-20260802/gcc/testsuite/gcc.target/loongarch/dtprel.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/loongarch/dtprel.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/loongarch/dtprel.c	Sun Aug  2 22:32:14 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-g" } */
+ /* { dg-final { scan-assembler-not "0x8000" } } */
+ /* { dg-final { scan-assembler ".dtpreld?word.*a\\s+.byte" } } */
+ 
+ __thread int a;
+ void
+ f(void)
+ {
+   a += 1;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-construct-opt.c gcc-17-20260802/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-construct-opt.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-construct-opt.c	Mon Jul 27 02:16:15 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-construct-opt.c	Sun Aug  2 22:32:14 2026
*************** vec_construct_v4i64 ()
*** 26,32 ****
  /* Remove some unnecessary vinsgr2vr.w as the corresponding elements
     have already been set.  */
  /* { dg-final { scan-assembler-not "v8i32:.*\tvinsgr2vr\\.w.*v8i32" } } */
! /* { dg-final { scan-assembler-times "v8i32:.*\txvreplgr2vr\\.w.*v8i32" 1 } } */
  v8i32
  vec_construct_v8i32 ()
  {
--- 26,32 ----
  /* Remove some unnecessary vinsgr2vr.w as the corresponding elements
     have already been set.  */
  /* { dg-final { scan-assembler-not "v8i32:.*\tvinsgr2vr\\.w.*v8i32" } } */
! /* { dg-final { scan-assembler-times "v8i32:.*\txvldrepl\\.w.*v8i32" 1 } } */
  v8i32
  vec_construct_v8i32 ()
  {
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/extract-sign-no-scratch.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/extract-sign-no-scratch.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/extract-sign-no-scratch.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/extract-sign-no-scratch.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-do compile { target { ! riscv_abi_e } } } */
+ /* { dg-require-effective-target rv64 } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -O2" } */
+ /* { dg-skip-if "" { *-*-* } { "-Os" "-Oz" "-Og" "-flto" } } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ /*
+ ** sign_ext_11_5:
+ **	slli	([ast][0-9]+),[ast][0-9]+,48
+ **	srai	\1,\1,53
+ **	ret
+ */
+ long
+ sign_ext_11_5 (unsigned long x)
+ {
+   return (long) (x << 48) >> 53;
+ }
+ 
+ /*
+ ** sign_ext_16_8:
+ **	slli	([ast][0-9]+),[ast][0-9]+,40
+ **	srai	\1,\1,48
+ **	ret
+ */
+ long
+ sign_ext_16_8 (unsigned long x)
+ {
+   return (long) (x << 40) >> 48;
+ }
+ 
+ /*
+ ** sign_ext_10_20:
+ **	slli	([ast][0-9]+),[ast][0-9]+,34
+ **	srai	\1,\1,54
+ **	ret
+ */
+ long
+ sign_ext_10_20 (unsigned long x)
+ {
+   return (long) (x << 34) >> 54;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/extract-zero-no-scratch.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/extract-zero-no-scratch.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/extract-zero-no-scratch.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/extract-zero-no-scratch.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-do compile { target { ! riscv_abi_e } } } */
+ /* { dg-require-effective-target rv64 } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -O2" } */
+ /* { dg-skip-if "" { *-*-* } { "-Os" "-Oz" "-Og" "-flto" } } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ /*
+ ** zero_ext_20_8:
+ **	slli	([ast][0-9]+),[ast][0-9]+,36
+ **	srli	\1,\1,44
+ **	ret
+ */
+ unsigned long
+ zero_ext_20_8 (unsigned long x)
+ {
+   return (x >> 8) & 0xfffffUL;
+ }
+ 
+ /*
+ ** zero_ext_16_8:
+ **	slli	([ast][0-9]+),[ast][0-9]+,40
+ **	srli	\1,\1,48
+ **	ret
+ */
+ unsigned long
+ zero_ext_16_8 (unsigned long x)
+ {
+   return (x >> 8) & 0xffffUL;
+ }
+ 
+ /*
+ ** zero_ext_13_20:
+ **	slli	([ast][0-9]+),[ast][0-9]+,31
+ **	srli	\1,\1,51
+ **	ret
+ */
+ unsigned long
+ zero_ext_13_20 (unsigned long x)
+ {
+   return (x >> 20) & 0x1fffUL;
+ }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h	Mon Jul 27 02:16:16 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h	Sun Aug  2 22:32:15 2026
***************
*** 252,257 ****
--- 252,396 ----
      ST_F ((void *)out, vd14, VL); OUT += VL;                                \
      ST_F ((void *)out, vd15, VL); OUT += VL;                                \
  
+ #define LOOP_DUAL_WIDEN_BINARY_BODY_X4(NT, WT, LD_NF, OUT_F, ST_F, OUT,     \
+ 					START, VL)                          \
+     NT vs0 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs1 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs2 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs3 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt0 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt1 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt2 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt3 = LD_NF ((void *)START, VL); START += VL;                        \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     WT vd0 = OUT_F (vs0, vt0, VL);                                          \
+     WT vd1 = OUT_F (vs1, vt1, VL);                                          \
+     WT vd2 = OUT_F (vs2, vt2, VL);                                          \
+     WT vd3 = OUT_F (vs3, vt3, VL);                                          \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     ST_F ((void *)out, vd0, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd1, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd2, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd3, VL); OUT += VL;                                 \
+ 
+ #define LOOP_DUAL_WIDEN_BINARY_BODY_X8(NT, WT, LD_NF, OUT_F, ST_F, OUT,     \
+ 					START, VL)                          \
+     NT vs0 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs1 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs2 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs3 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs4 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs5 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs6 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs7 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt0 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt1 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt2 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt3 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt4 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt5 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt6 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt7 = LD_NF ((void *)START, VL); START += VL;                        \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     WT vd0 = OUT_F (vs0, vt0, VL);                                          \
+     WT vd1 = OUT_F (vs1, vt1, VL);                                          \
+     WT vd2 = OUT_F (vs2, vt2, VL);                                          \
+     WT vd3 = OUT_F (vs3, vt3, VL);                                          \
+     WT vd4 = OUT_F (vs4, vt4, VL);                                          \
+     WT vd5 = OUT_F (vs5, vt5, VL);                                          \
+     WT vd6 = OUT_F (vs6, vt6, VL);                                          \
+     WT vd7 = OUT_F (vs7, vt7, VL);                                          \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     ST_F ((void *)out, vd0, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd1, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd2, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd3, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd4, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd5, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd6, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd7, VL); OUT += VL;                                 \
+ 
+ #define LOOP_DUAL_WIDEN_BINARY_BODY_X16(NT, WT, LD_NF, OUT_F, ST_F, OUT,    \
+ 					START, VL)                          \
+     NT vs0 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs1 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs2 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs3 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs4 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs5 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs6 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs7 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs8 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs9 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs10 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs11 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs12 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs13 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs14 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs15 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vt0 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt1 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt2 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt3 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt4 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt5 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt6 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt7 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt8 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt9 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vt10 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vt11 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vt12 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vt13 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vt14 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vt15 = LD_NF ((void *)START, VL); START += VL;                       \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     WT vd0 = OUT_F (vs0, vt0, VL);                                          \
+     WT vd1 = OUT_F (vs1, vt1, VL);                                          \
+     WT vd2 = OUT_F (vs2, vt2, VL);                                          \
+     WT vd3 = OUT_F (vs3, vt3, VL);                                          \
+     WT vd4 = OUT_F (vs4, vt4, VL);                                          \
+     WT vd5 = OUT_F (vs5, vt5, VL);                                          \
+     WT vd6 = OUT_F (vs6, vt6, VL);                                          \
+     WT vd7 = OUT_F (vs7, vt7, VL);                                          \
+     WT vd8 = OUT_F (vs8, vt8, VL);                                          \
+     WT vd9 = OUT_F (vs9, vt9, VL);                                          \
+     WT vd10 = OUT_F (vs10, vt10, VL);                                       \
+     WT vd11 = OUT_F (vs11, vt11, VL);                                       \
+     WT vd12 = OUT_F (vs12, vt12, VL);                                       \
+     WT vd13 = OUT_F (vs13, vt13, VL);                                       \
+     WT vd14 = OUT_F (vs14, vt14, VL);                                       \
+     WT vd15 = OUT_F (vs15, vt15, VL);                                       \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     ST_F ((void *)out, vd0, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd1, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd2, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd3, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd4, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd5, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd6, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd7, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd8, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd9, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd10, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd11, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd12, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd13, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd14, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd15, VL); OUT += VL;                                \
+ 
  #define DEF_GROUP_OVERLAP_UNARY_0(VL_F, NT, WT, LD_F, OUT_F, ST_F, NAME, \
  				  LOOP_BODY)                             \
    void test_group_overlap_##NAME##_##NT##_unary_0(uint8_t *data,         \
***************
*** 282,285 ****
--- 421,439 ----
      }                                                                       \
    }
  
+ #define DEF_GROUP_OVERLAP_BINARY_1(VL_F, NT, WT, LD_NF, OUT_F, ST_F, NAME,  \
+ 				   LOOP_BODY)                               \
+   void test_group_overlap_##NAME##_##NT##_binary_1(uint8_t *data,           \
+ 						   uint8_t *out,            \
+ 						   size_t limit)            \
+   {                                                                         \
+     uint8_t *start = data;                                                  \
+     uint8_t *end = data + limit;                                            \
+     size_t vl = VL_F ();                                                    \
+                                                                             \
+     while (start < end) {                                                   \
+       LOOP_BODY (NT, WT, LD_NF, OUT_F, ST_F, out, start, vl);               \
+     }                                                                       \
+   }
+ 
  #endif
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m1.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m1.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e16m1,
+   vint16m1_t,
+   vint32m2_t,
+   __riscv_vle16_v_i16m1,
+   __riscv_vwadd_vv_i32m2,
+   __riscv_vse32_v_i32m2,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v2,v1,v3([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v10,v11,v3([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e16m2,
+   vint16m2_t,
+   vint32m4_t,
+   __riscv_vle16_v_i16m2,
+   __riscv_vwadd_vv_i32m4,
+   __riscv_vse32_v_i32m4,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v8,v10,v6([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v28,v30,v24([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-m4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e16m4,
+   vint16m4_t,
+   vint32m8_t,
+   __riscv_vle16_v_i16m4,
+   __riscv_vwadd_vv_i32m8,
+   __riscv_vse32_v_i32m8,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v8,v4,v12([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v24,v28,v16([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-mf2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-mf2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-mf2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e16m1,
+   vint16mf2_t,
+   vint32m1_t,
+   __riscv_vle16_v_i16mf2,
+   __riscv_vwadd_vv_i32m1,
+   __riscv_vse32_v_i32m1,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-not {vwadd\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwadd\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-mf4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-mf4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i16-mf4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e16m1,
+   vint16mf4_t,
+   vint32mf2_t,
+   __riscv_vle16_v_i16mf4,
+   __riscv_vwadd_vv_i32mf2,
+   __riscv_vse32_v_i32mf2,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-not {vwadd\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwadd\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m1.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m1.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e32m1,
+   vint32m1_t,
+   vint64m2_t,
+   __riscv_vle32_v_i32m1,
+   __riscv_vwadd_vv_i64m2,
+   __riscv_vse64_v_i64m2,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v2,v1,v3([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v10,v11,v3([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e32m2,
+   vint32m2_t,
+   vint64m4_t,
+   __riscv_vle32_v_i32m2,
+   __riscv_vwadd_vv_i64m4,
+   __riscv_vse64_v_i64m4,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v8,v10,v6([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v28,v30,v24([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-m4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e32m4,
+   vint32m4_t,
+   vint64m8_t,
+   __riscv_vle32_v_i32m4,
+   __riscv_vwadd_vv_i64m8,
+   __riscv_vse64_v_i64m8,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v8,v4,v12([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v24,v28,v16([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-mf2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-mf2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i32-mf2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e32m1,
+   vint32mf2_t,
+   vint64m1_t,
+   __riscv_vle32_v_i32mf2,
+   __riscv_vwadd_vv_i64m1,
+   __riscv_vse64_v_i64m1,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-not {vwadd\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwadd\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m1.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m1.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e8m1,
+   vint8m1_t,
+   vint16m2_t,
+   __riscv_vle8_v_i8m1,
+   __riscv_vwadd_vv_i16m2,
+   __riscv_vse16_v_i16m2,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v2,v1,v3([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v10,v11,v3([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e8m2,
+   vint8m2_t,
+   vint16m4_t,
+   __riscv_vle8_v_i8m2,
+   __riscv_vwadd_vv_i16m4,
+   __riscv_vse16_v_i16m4,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v8,v10,v6([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v28,v30,v24([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-m4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e8m4,
+   vint8m4_t,
+   vint16m8_t,
+   __riscv_vle8_v_i8m4,
+   __riscv_vwadd_vv_i16m8,
+   __riscv_vse16_v_i16m8,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v8,v4,v12([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vv\s+v24,v28,v16([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf2_t,
+   vint16m1_t,
+   __riscv_vle8_v_i8mf2,
+   __riscv_vwadd_vv_i16m1,
+   __riscv_vse16_v_i16m1,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-not {vwadd\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwadd\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf4_t,
+   vint16mf2_t,
+   __riscv_vle8_v_i8mf4,
+   __riscv_vwadd_vv_i16mf2,
+   __riscv_vse16_v_i16mf2,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-not {vwadd\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwadd\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf8.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf8.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf8.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf8_t,
+   vint16mf4_t,
+   __riscv_vle8_v_i8mf8,
+   __riscv_vwadd_vv_i16mf4,
+   __riscv_vse16_v_i16mf4,
+   vwadd_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-not {vwadd\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwadd\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m1.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m1.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e16m1,
+   vuint16m1_t,
+   vuint32m2_t,
+   __riscv_vle16_v_u16m1,
+   __riscv_vwaddu_vv_u32m2,
+   __riscv_vse32_v_u32m2,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v2,v1,v3([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v10,v11,v3([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e16m2,
+   vuint16m2_t,
+   vuint32m4_t,
+   __riscv_vle16_v_u16m2,
+   __riscv_vwaddu_vv_u32m4,
+   __riscv_vse32_v_u32m4,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v8,v10,v6([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v28,v30,v24([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-m4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e16m4,
+   vuint16m4_t,
+   vuint32m8_t,
+   __riscv_vle16_v_u16m4,
+   __riscv_vwaddu_vv_u32m8,
+   __riscv_vse32_v_u32m8,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v8,v4,v12([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v24,v28,v16([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-mf2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-mf2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-mf2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e16m1,
+   vuint16mf2_t,
+   vuint32m1_t,
+   __riscv_vle16_v_u16mf2,
+   __riscv_vwaddu_vv_u32m1,
+   __riscv_vse32_v_u32m1,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-not {vwaddu\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwaddu\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-mf4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-mf4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u16-mf4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e16m1,
+   vuint16mf4_t,
+   vuint32mf2_t,
+   __riscv_vle16_v_u16mf4,
+   __riscv_vwaddu_vv_u32mf2,
+   __riscv_vse32_v_u32mf2,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-not {vwaddu\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwaddu\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m1.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m1.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e32m1,
+   vuint32m1_t,
+   vuint64m2_t,
+   __riscv_vle32_v_u32m1,
+   __riscv_vwaddu_vv_u64m2,
+   __riscv_vse64_v_u64m2,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v2,v1,v3([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v10,v11,v3([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e32m2,
+   vuint32m2_t,
+   vuint64m4_t,
+   __riscv_vle32_v_u32m2,
+   __riscv_vwaddu_vv_u64m4,
+   __riscv_vse64_v_u64m4,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v8,v10,v6([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v28,v30,v24([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-m4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e32m4,
+   vuint32m4_t,
+   vuint64m8_t,
+   __riscv_vle32_v_u32m4,
+   __riscv_vwaddu_vv_u64m8,
+   __riscv_vse64_v_u64m8,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v8,v4,v12([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v24,v28,v16([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-mf2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-mf2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u32-mf2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e32m1,
+   vuint32mf2_t,
+   vuint64m1_t,
+   __riscv_vle32_v_u32mf2,
+   __riscv_vwaddu_vv_u64m1,
+   __riscv_vse64_v_u64m1,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-not {vwaddu\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwaddu\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m1.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m1.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e8m1,
+   vuint8m1_t,
+   vuint16m2_t,
+   __riscv_vle8_v_u8m1,
+   __riscv_vwaddu_vv_u16m2,
+   __riscv_vse16_v_u16m2,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v2,v1,v3([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v10,v11,v3([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e8m2,
+   vuint8m2_t,
+   vuint16m4_t,
+   __riscv_vle8_v_u8m2,
+   __riscv_vwaddu_vv_u16m4,
+   __riscv_vse16_v_u16m4,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v8,v10,v6([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v28,v30,v24([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-m4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e8m4,
+   vuint8m4_t,
+   vuint16m8_t,
+   __riscv_vle8_v_u8m4,
+   __riscv_vwaddu_vv_u16m8,
+   __riscv_vse16_v_u16m8,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v8,v4,v12([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vv\s+v24,v28,v16([^0-9]|$)} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf2_t,
+   vuint16m1_t,
+   __riscv_vle8_v_u8mf2,
+   __riscv_vwaddu_vv_u16m1,
+   __riscv_vse16_v_u16m1,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-not {vwaddu\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwaddu\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf4_t,
+   vuint16mf2_t,
+   __riscv_vle8_v_u8mf4,
+   __riscv_vwaddu_vv_u16mf2,
+   __riscv_vse16_v_u16mf2,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-not {vwaddu\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwaddu\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf8.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf8.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf8.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_1(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf8_t,
+   vuint16mf4_t,
+   __riscv_vle8_v_u8mf8,
+   __riscv_vwaddu_vv_u16mf4,
+   __riscv_vse16_v_u16mf4,
+   vwaddu_vv,
+   LOOP_DUAL_WIDEN_BINARY_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-not {vwaddu\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwaddu\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m1.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m1.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e16m1,
+   vint16m1_t,
+   vint32m2_t,
+   __riscv_vle16_v_i16m1,
+   __riscv_vle32_v_i32m2,
+   __riscv_vwsub_wv_i32m2,
+   __riscv_vse32_v_i32m2,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v0,v4,v1([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v2,v2,v25} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e16m2,
+   vint16m2_t,
+   vint32m4_t,
+   __riscv_vle16_v_i16m2,
+   __riscv_vle32_v_i32m4,
+   __riscv_vwsub_wv_i32m4,
+   __riscv_vse32_v_i32m4,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v0,v8,v2} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v16,v16,v0} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e16m4,
+   vint16m4_t,
+   vint32m8_t,
+   __riscv_vle16_v_i16m4,
+   __riscv_vle32_v_i32m8,
+   __riscv_vwsub_wv_i32m8,
+   __riscv_vse32_v_i32m8,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v0,v0,v12} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v8,v8,v28} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-mf2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-mf2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-mf2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e16m1,
+   vint16mf2_t,
+   vint32m1_t,
+   __riscv_vle16_v_i16mf2,
+   __riscv_vle32_v_i32m1,
+   __riscv_vwsub_wv_i32m1,
+   __riscv_vse32_v_i32m1,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v0,v[0-9]+,v1([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v2,v[0-9]+,v3([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v4,v[0-9]+,v5([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v6,v[0-9]+,v7([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v8,v[0-9]+,v9([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v10,v[0-9]+,v11([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v12,v[0-9]+,v13([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v14,v[0-9]+,v15([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v16,v[0-9]+,v17([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v18,v[0-9]+,v19([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v20,v[0-9]+,v21([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v22,v[0-9]+,v23([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v24,v[0-9]+,v25([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v26,v[0-9]+,v27([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v28,v[0-9]+,v29([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v30,v[0-9]+,v31([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-mf4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-mf4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-mf4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e16m1,
+   vint16mf4_t,
+   vint32mf2_t,
+   __riscv_vle16_v_i16mf4,
+   __riscv_vle32_v_i32mf2,
+   __riscv_vwsub_wv_i32mf2,
+   __riscv_vse32_v_i32mf2,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v0,v[0-9]+,v1([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v2,v[0-9]+,v3([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v4,v[0-9]+,v5([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v6,v[0-9]+,v7([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v8,v[0-9]+,v9([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v10,v[0-9]+,v11([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v12,v[0-9]+,v13([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v14,v[0-9]+,v15([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v16,v[0-9]+,v17([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v18,v[0-9]+,v19([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v20,v[0-9]+,v21([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v22,v[0-9]+,v23([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v24,v[0-9]+,v25([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v26,v[0-9]+,v27([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v28,v[0-9]+,v29([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v30,v[0-9]+,v31([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m1.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m1.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e32m1,
+   vint32m1_t,
+   vint64m2_t,
+   __riscv_vle32_v_i32m1,
+   __riscv_vle64_v_i64m2,
+   __riscv_vwsub_wv_i64m2,
+   __riscv_vse64_v_i64m2,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v0,v4,v1([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v2,v2,v25} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e32m2,
+   vint32m2_t,
+   vint64m4_t,
+   __riscv_vle32_v_i32m2,
+   __riscv_vle64_v_i64m4,
+   __riscv_vwsub_wv_i64m4,
+   __riscv_vse64_v_i64m4,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v0,v8,v2} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v16,v16,v0} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-m4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e32m4,
+   vint32m4_t,
+   vint64m8_t,
+   __riscv_vle32_v_i32m4,
+   __riscv_vle64_v_i64m8,
+   __riscv_vwsub_wv_i64m8,
+   __riscv_vse64_v_i64m8,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v0,v0,v12} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v8,v8,v28} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-mf2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-mf2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i32-mf2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e32m1,
+   vint32mf2_t,
+   vint64m1_t,
+   __riscv_vle32_v_i32mf2,
+   __riscv_vle64_v_i64m1,
+   __riscv_vwsub_wv_i64m1,
+   __riscv_vse64_v_i64m1,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v0,v[0-9]+,v1([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v2,v[0-9]+,v3([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v4,v[0-9]+,v5([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v6,v[0-9]+,v7([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v8,v[0-9]+,v9([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v10,v[0-9]+,v11([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v12,v[0-9]+,v13([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v14,v[0-9]+,v15([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v16,v[0-9]+,v17([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v18,v[0-9]+,v19([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v20,v[0-9]+,v21([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v22,v[0-9]+,v23([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v24,v[0-9]+,v25([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v26,v[0-9]+,v27([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v28,v[0-9]+,v29([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v30,v[0-9]+,v31([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m1.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m1.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e8m1,
+   vint8m1_t,
+   vint16m2_t,
+   __riscv_vle8_v_i8m1,
+   __riscv_vle16_v_i16m2,
+   __riscv_vwsub_wv_i16m2,
+   __riscv_vse16_v_i16m2,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v0,v4,v1([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v2,v2,v25} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e8m2,
+   vint8m2_t,
+   vint16m4_t,
+   __riscv_vle8_v_i8m2,
+   __riscv_vle16_v_i16m4,
+   __riscv_vwsub_wv_i16m4,
+   __riscv_vse16_v_i16m4,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v0,v8,v2} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v16,v16,v0} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-m4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e8m4,
+   vint8m4_t,
+   vint16m8_t,
+   __riscv_vle8_v_i8m4,
+   __riscv_vle16_v_i16m8,
+   __riscv_vwsub_wv_i16m8,
+   __riscv_vse16_v_i16m8,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v0,v0,v12} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.wv\s+v8,v8,v28} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf2_t,
+   vint16m1_t,
+   __riscv_vle8_v_i8mf2,
+   __riscv_vle16_v_i16m1,
+   __riscv_vwsub_wv_i16m1,
+   __riscv_vse16_v_i16m1,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v0,v[0-9]+,v1([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v2,v[0-9]+,v3([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v4,v[0-9]+,v5([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v6,v[0-9]+,v7([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v8,v[0-9]+,v9([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v10,v[0-9]+,v11([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v12,v[0-9]+,v13([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v14,v[0-9]+,v15([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v16,v[0-9]+,v17([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v18,v[0-9]+,v19([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v20,v[0-9]+,v21([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v22,v[0-9]+,v23([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v24,v[0-9]+,v25([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v26,v[0-9]+,v27([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v28,v[0-9]+,v29([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v30,v[0-9]+,v31([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf4_t,
+   vint16mf2_t,
+   __riscv_vle8_v_i8mf4,
+   __riscv_vle16_v_i16mf2,
+   __riscv_vwsub_wv_i16mf2,
+   __riscv_vse16_v_i16mf2,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v0,v[0-9]+,v1([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v2,v[0-9]+,v3([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v4,v[0-9]+,v5([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v6,v[0-9]+,v7([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v8,v[0-9]+,v9([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v10,v[0-9]+,v11([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v12,v[0-9]+,v13([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v14,v[0-9]+,v15([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v16,v[0-9]+,v17([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v18,v[0-9]+,v19([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v20,v[0-9]+,v21([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v22,v[0-9]+,v23([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v24,v[0-9]+,v25([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v26,v[0-9]+,v27([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v28,v[0-9]+,v29([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v30,v[0-9]+,v31([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf8.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf8.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i8-mf8.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf8_t,
+   vint16mf4_t,
+   __riscv_vle8_v_i8mf8,
+   __riscv_vle16_v_i16mf4,
+   __riscv_vwsub_wv_i16mf4,
+   __riscv_vse16_v_i16mf4,
+   vwsub_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v0,v[0-9]+,v1([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v2,v[0-9]+,v3([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v4,v[0-9]+,v5([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v6,v[0-9]+,v7([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v8,v[0-9]+,v9([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v10,v[0-9]+,v11([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v12,v[0-9]+,v13([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v14,v[0-9]+,v15([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v16,v[0-9]+,v17([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v18,v[0-9]+,v19([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v20,v[0-9]+,v21([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v22,v[0-9]+,v23([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v24,v[0-9]+,v25([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v26,v[0-9]+,v27([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v28,v[0-9]+,v29([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsub\.wv\s+v30,v[0-9]+,v31([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m1.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m1.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e16m1,
+   vuint16m1_t,
+   vuint32m2_t,
+   __riscv_vle16_v_u16m1,
+   __riscv_vle32_v_u32m2,
+   __riscv_vwsubu_wv_u32m2,
+   __riscv_vse32_v_u32m2,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v0,v4,v1([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v2,v2,v25} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e16m2,
+   vuint16m2_t,
+   vuint32m4_t,
+   __riscv_vle16_v_u16m2,
+   __riscv_vle32_v_u32m4,
+   __riscv_vwsubu_wv_u32m4,
+   __riscv_vse32_v_u32m4,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v0,v8,v2} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v16,v16,v0} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e16m4,
+   vuint16m4_t,
+   vuint32m8_t,
+   __riscv_vle16_v_u16m4,
+   __riscv_vle32_v_u32m8,
+   __riscv_vwsubu_wv_u32m8,
+   __riscv_vse32_v_u32m8,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v0,v0,v12} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v8,v8,v28} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-mf2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-mf2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-mf2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e16m1,
+   vuint16mf2_t,
+   vuint32m1_t,
+   __riscv_vle16_v_u16mf2,
+   __riscv_vle32_v_u32m1,
+   __riscv_vwsubu_wv_u32m1,
+   __riscv_vse32_v_u32m1,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v0,v[0-9]+,v1([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v2,v[0-9]+,v3([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v4,v[0-9]+,v5([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v6,v[0-9]+,v7([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v8,v[0-9]+,v9([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v10,v[0-9]+,v11([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v12,v[0-9]+,v13([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v14,v[0-9]+,v15([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v16,v[0-9]+,v17([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v18,v[0-9]+,v19([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v20,v[0-9]+,v21([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v22,v[0-9]+,v23([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v24,v[0-9]+,v25([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v26,v[0-9]+,v27([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v28,v[0-9]+,v29([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v30,v[0-9]+,v31([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-mf4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-mf4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-mf4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e16m1,
+   vuint16mf4_t,
+   vuint32mf2_t,
+   __riscv_vle16_v_u16mf4,
+   __riscv_vle32_v_u32mf2,
+   __riscv_vwsubu_wv_u32mf2,
+   __riscv_vse32_v_u32mf2,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v0,v[0-9]+,v1([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v2,v[0-9]+,v3([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v4,v[0-9]+,v5([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v6,v[0-9]+,v7([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v8,v[0-9]+,v9([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v10,v[0-9]+,v11([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v12,v[0-9]+,v13([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v14,v[0-9]+,v15([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v16,v[0-9]+,v17([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v18,v[0-9]+,v19([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v20,v[0-9]+,v21([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v22,v[0-9]+,v23([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v24,v[0-9]+,v25([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v26,v[0-9]+,v27([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v28,v[0-9]+,v29([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v30,v[0-9]+,v31([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m1.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m1.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e32m1,
+   vuint32m1_t,
+   vuint64m2_t,
+   __riscv_vle32_v_u32m1,
+   __riscv_vle64_v_u64m2,
+   __riscv_vwsubu_wv_u64m2,
+   __riscv_vse64_v_u64m2,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v0,v4,v1([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v2,v2,v25} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e32m2,
+   vuint32m2_t,
+   vuint64m4_t,
+   __riscv_vle32_v_u32m2,
+   __riscv_vle64_v_u64m4,
+   __riscv_vwsubu_wv_u64m4,
+   __riscv_vse64_v_u64m4,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v0,v8,v2} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v16,v16,v0} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-m4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e32m4,
+   vuint32m4_t,
+   vuint64m8_t,
+   __riscv_vle32_v_u32m4,
+   __riscv_vle64_v_u64m8,
+   __riscv_vwsubu_wv_u64m8,
+   __riscv_vse64_v_u64m8,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v0,v0,v12} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v8,v8,v28} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-mf2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-mf2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u32-mf2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e32m1,
+   vuint32mf2_t,
+   vuint64m1_t,
+   __riscv_vle32_v_u32mf2,
+   __riscv_vle64_v_u64m1,
+   __riscv_vwsubu_wv_u64m1,
+   __riscv_vse64_v_u64m1,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v0,v[0-9]+,v1([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v2,v[0-9]+,v3([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v4,v[0-9]+,v5([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v6,v[0-9]+,v7([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v8,v[0-9]+,v9([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v10,v[0-9]+,v11([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v12,v[0-9]+,v13([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v14,v[0-9]+,v15([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v16,v[0-9]+,v17([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v18,v[0-9]+,v19([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v20,v[0-9]+,v21([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v22,v[0-9]+,v23([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v24,v[0-9]+,v25([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v26,v[0-9]+,v27([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v28,v[0-9]+,v29([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v30,v[0-9]+,v31([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m1.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m1.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e8m1,
+   vuint8m1_t,
+   vuint16m2_t,
+   __riscv_vle8_v_u8m1,
+   __riscv_vle16_v_u16m2,
+   __riscv_vwsubu_wv_u16m2,
+   __riscv_vse16_v_u16m2,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v0,v4,v1([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v2,v2,v25} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e8m2,
+   vuint8m2_t,
+   vuint16m4_t,
+   __riscv_vle8_v_u8m2,
+   __riscv_vle16_v_u16m4,
+   __riscv_vwsubu_wv_u16m4,
+   __riscv_vse16_v_u16m4,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v0,v8,v2} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v16,v16,v0} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-m4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e8m4,
+   vuint8m4_t,
+   vuint16m8_t,
+   __riscv_vle8_v_u8m4,
+   __riscv_vle16_v_u16m8,
+   __riscv_vwsubu_wv_u16m8,
+   __riscv_vse16_v_u16m8,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v0,v0,v12} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.wv\s+v8,v8,v28} 1 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf2.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf2.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf2.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf2_t,
+   vuint16m1_t,
+   __riscv_vle8_v_u8mf2,
+   __riscv_vle16_v_u16m1,
+   __riscv_vwsubu_wv_u16m1,
+   __riscv_vse16_v_u16m1,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v0,v[0-9]+,v1([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v2,v[0-9]+,v3([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v4,v[0-9]+,v5([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v6,v[0-9]+,v7([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v8,v[0-9]+,v9([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v10,v[0-9]+,v11([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v12,v[0-9]+,v13([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v14,v[0-9]+,v15([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v16,v[0-9]+,v17([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v18,v[0-9]+,v19([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v20,v[0-9]+,v21([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v22,v[0-9]+,v23([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v24,v[0-9]+,v25([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v26,v[0-9]+,v27([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v28,v[0-9]+,v29([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v30,v[0-9]+,v31([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf4.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf4.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf4.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf4_t,
+   vuint16mf2_t,
+   __riscv_vle8_v_u8mf4,
+   __riscv_vle16_v_u16mf2,
+   __riscv_vwsubu_wv_u16mf2,
+   __riscv_vse16_v_u16mf2,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v0,v[0-9]+,v1([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v2,v[0-9]+,v3([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v4,v[0-9]+,v5([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v6,v[0-9]+,v7([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v8,v[0-9]+,v9([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v10,v[0-9]+,v11([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v12,v[0-9]+,v13([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v14,v[0-9]+,v15([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v16,v[0-9]+,v17([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v18,v[0-9]+,v19([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v20,v[0-9]+,v21([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v22,v[0-9]+,v23([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v24,v[0-9]+,v25([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v26,v[0-9]+,v27([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v28,v[0-9]+,v29([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v30,v[0-9]+,v31([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf8.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf8.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u8-mf8.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_0(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf8_t,
+   vuint16mf4_t,
+   __riscv_vle8_v_u8mf8,
+   __riscv_vle16_v_u16mf4,
+   __riscv_vwsubu_wv_u16mf4,
+   __riscv_vse16_v_u16mf4,
+   vwsubu_wv,
+   LOOP_WIDEN_BINARY_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v0,v[0-9]+,v1([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v2,v[0-9]+,v3([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v4,v[0-9]+,v5([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v6,v[0-9]+,v7([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v8,v[0-9]+,v9([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v10,v[0-9]+,v11([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v12,v[0-9]+,v13([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v14,v[0-9]+,v15([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v16,v[0-9]+,v17([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v18,v[0-9]+,v19([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v20,v[0-9]+,v21([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v22,v[0-9]+,v23([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v24,v[0-9]+,v25([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v26,v[0-9]+,v27([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v28,v[0-9]+,v29([^0-9]|$)} } } */
+ /* { dg-final { scan-assembler-not {vwsubu\.wv\s+v30,v[0-9]+,v31([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/zvabd-1.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/zvabd-1.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/autovec/zvabd-1.c	Mon Jul 27 02:16:16 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/autovec/zvabd-1.c	Sun Aug  2 22:32:15 2026
***************
*** 3,10 ****
  
  #include <stdint-gcc.h>
  
! static int
! abs (int i)
  {
    return i < 0 ? -i : i;
  }
--- 3,10 ----
  
  #include <stdint-gcc.h>
  
! static int64_t
! abs64 (int64_t i)
  {
    return i < 0 ? -i : i;
  }
*************** abs (int i)
*** 16,22 ****
    {                                                                        \
      int i;                                                                 \
      for (i = 0; i < n; i++)                                                \
!       dst[i] = abs (a[i]);                                                 \
    }
  
  #define TEST_VABD(TYPE1, TYPE2)                                            \
--- 16,22 ----
    {                                                                        \
      int i;                                                                 \
      for (i = 0; i < n; i++)                                                \
!       dst[i] = abs64 (a[i]);                                               \
    }
  
  #define TEST_VABD(TYPE1, TYPE2)                                            \
*************** abs (int i)
*** 27,33 ****
    {                                                                        \
      int i;                                                                 \
      for (i = 0; i < n; i++)                                                \
!       dst[i] = abs (a[i] - b[i]);                                          \
    }
  
  #define TEST_VWABDA(TYPE1, TYPE2)                                       \
--- 27,33 ----
    {                                                                        \
      int i;                                                                 \
      for (i = 0; i < n; i++)                                                \
!       dst[i] = abs64 ((int64_t) a[i] - (int64_t) b[i]);                    \
    }
  
  #define TEST_VWABDA(TYPE1, TYPE2)                                       \
*************** abs (int i)
*** 37,43 ****
    {                                                                     \
      int i;                                                              \
      for (i = 0; i < n; i++)                                             \
!       dst[i] += abs (a[i] - b[i]);                                      \
    }
  
  #define TEST_ALL()                 \
--- 37,43 ----
    {                                                                     \
      int i;                                                              \
      for (i = 0; i < n; i++)                                             \
!       dst[i] += abs64 ((int64_t) a[i] - (int64_t) b[i]);                \
    }
  
  #define TEST_ALL()                 \
*************** abs (int i)
*** 47,60 ****
    TEST_VABD (uint8_t, uint8_t)     \
    TEST_VABD (int16_t, int16_t)     \
    TEST_VABD (uint16_t, uint16_t)   \
!   TEST_VWABDA (int16_t, int8_t)   \
!   TEST_VWABDA (uint16_t, uint8_t) \
!   TEST_VWABDA (int32_t, int16_t)  \
!   TEST_VWABDA (uint32_t, uint16_t)
  
  TEST_ALL()
  
! /* { dg-final { scan-assembler-times {\tvabs\.v} 2 } } */
  /* { dg-final { scan-assembler-times {\tvabd\.vv} 2 } } */
  /* { dg-final { scan-assembler-times {\tvabdu\.vv} 2 } } */
  /* { dg-final { scan-assembler-times {\tvwabda\.vv} 2 } } */
--- 47,63 ----
    TEST_VABD (uint8_t, uint8_t)     \
    TEST_VABD (int16_t, int16_t)     \
    TEST_VABD (uint16_t, uint16_t)   \
!   TEST_VABD (int32_t, int32_t)     \
!   TEST_VWABDA (int16_t, int8_t)    \
!   TEST_VWABDA (uint16_t, uint8_t)  \
!   TEST_VWABDA (int32_t, int16_t)   \
!   TEST_VWABDA (uint32_t, uint16_t) \
!   TEST_VWABDA (int64_t, int32_t)   \
!   TEST_VWABDA (uint64_t, uint32_t)
  
  TEST_ALL()
  
! /* { dg-final { scan-assembler-times {\tvabs\.v} 5 } } */
  /* { dg-final { scan-assembler-times {\tvabd\.vv} 2 } } */
  /* { dg-final { scan-assembler-times {\tvabdu\.vv} 2 } } */
  /* { dg-final { scan-assembler-times {\tvwabda\.vv} 2 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/base/intrinsic-detection.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/base/intrinsic-detection.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/base/intrinsic-detection.c	Mon Jul 27 02:16:16 2026
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/base/intrinsic-detection.c	Sun Aug  2 22:32:15 2026
***************
*** 5,11 ****
  #include <sifive_vector.h>
  #include <andes_vector.h>
  
! #if defined (__riscv_vector) || defined (__riscv_zvbb) \
      || defined (__riscv_zve32f) || defined (__riscv_zve32x) \
      || defined (__riscv_zve64d) || defined (__riscv_zve64f) \
      || defined (__riscv_zve64x) \
--- 5,12 ----
  #include <sifive_vector.h>
  #include <andes_vector.h>
  
! #if defined (__riscv_vector) || defined (__riscv_zvabd) \
!     || defined (__riscv_zvbb) \
      || defined (__riscv_zve32f) || defined (__riscv_zve32x) \
      || defined (__riscv_zve64d) || defined (__riscv_zve64f) \
      || defined (__riscv_zve64x) \
***************
*** 24,29 ****
--- 25,31 ----
      || !defined (__riscv_intrinsic_zve64d) \
      || !defined (__riscv_intrinsic_zve64f) \
      || !defined (__riscv_intrinsic_zve64x) \
+     || !defined (__riscv_intrinsic_zvabd) \
      || !defined (__riscv_intrinsic_zvbb) \
      || !defined (__riscv_intrinsic_zvbc) \
      || !defined (__riscv_intrinsic_zvfbfmin) \
***************
*** 60,65 ****
--- 62,68 ----
      || __riscv_intrinsic_zve64d != 1 \
      || __riscv_intrinsic_zve64f != 1 \
      || __riscv_intrinsic_zve64x != 1 \
+     || __riscv_intrinsic_zvabd != 1 \
      || __riscv_intrinsic_zvbb != 1 \
      || __riscv_intrinsic_zvbc != 1 \
      || __riscv_intrinsic_zvfbfmin != 1 \
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-43.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-43.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-43.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-43.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,59 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+ 
+ #include "riscv_vector.h"
+ 
+ void
+ foo (void *in, void *out, int n)
+ {
+   for (int i = 0; i < n; i++)
+     {
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v0 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v0_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v0, 1));
+       v0 = __riscv_vwadd_vv_i16m4_tu (v0, v0_n, v0_n, 4);
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v1 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v1_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v1, 1));
+       v1 = __riscv_vwadd_vv_i16m4_tu (v1, v1_n, v1_n, 4);
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v2 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v2_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v2, 1));
+       v2 = __riscv_vwadd_vv_i16m4_tu (v2, v2_n, v2_n, 4);
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v3 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v3_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v3, 1));
+       v3 = __riscv_vwadd_vv_i16m4_tu (v3, v3_n, v3_n, 4);
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v4 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v4_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v4, 1));
+       v4 = __riscv_vwadd_vv_i16m4_tu (v4, v4_n, v4_n, 4);
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v5 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v5_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v5, 1));
+       v5 = __riscv_vwadd_vv_i16m4_tu (v5, v5_n, v5_n, 4);
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v6 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v6_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v6, 1));
+       v6 = __riscv_vwadd_vv_i16m4_tu (v6, v6_n, v6_n, 4);
+       asm volatile("nop" ::: "memory");
+       vint8m2_t v7_n = __riscv_vle8_v_i8m2 (in, 4);in+=100;
+       vint16m4_t v7 = __riscv_vwcvt_x_x_v_i16m4 (v7_n, 4);
+ 
+       asm volatile("nop" ::: "memory");
+       __riscv_vsse16_v_i16m4 (out, 4, v0, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v1, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v2, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v3, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v4, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v5, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v6, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v7, 4);out+=100;
+     }
+ }
+ 
+ /* { dg-final { scan-assembler-not {vmv1r} } } */
+ /* { dg-final { scan-assembler-not {vmv2r} } } */
+ /* { dg-final { scan-assembler-not {vmv4r} { xfail riscv*-*-* } } } */
+ /* { dg-final { scan-assembler-not {vmv8r} } } */
+ /* { dg-final { scan-assembler-not {csrr} } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/base/zvabd-intrinsic.c gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/base/zvabd-intrinsic.c
*** gcc-17-20260727/gcc/testsuite/gcc.target/riscv/rvv/base/zvabd-intrinsic.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gcc.target/riscv/rvv/base/zvabd-intrinsic.c	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,92 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvabd -mabi=lp64d" } */
+ #include <riscv_vector.h>
+ 
+ vuint8m1_t
+ test_vabs_v_u8m1 (vint8m1_t vs2, size_t vl)
+ {
+   return __riscv_vabs_v_u8m1 (vs2, vl);
+ }
+ 
+ vuint8m1_t
+ test_vabs_v_u8m1_tumu (vbool8_t mask, vuint8m1_t vd, vint8m1_t vs2, size_t vl)
+ {
+   return __riscv_vabs_v_u8m1_tumu (mask, vd, vs2, vl);
+ }
+ 
+ vuint16m1_t
+ test_vabs_v_u16m1_tu (vuint16m1_t vd, vint16m1_t vs2, size_t vl)
+ {
+   return __riscv_vabs_v_u16m1_tu (vd, vs2, vl);
+ }
+ 
+ vuint32m1_t
+ test_vabs_v_u32m1_mu (vbool32_t mask, vuint32m1_t vd, vint32m1_t vs2, size_t vl)
+ {
+   return __riscv_vabs_v_u32m1_mu (mask, vd, vs2, vl);
+ }
+ 
+ vuint64m1_t
+ test_vabs_v_u64m1_m (vbool64_t mask, vint64m1_t vs2, size_t vl)
+ {
+   return __riscv_vabs_v_u64m1_m (mask, vs2, vl);
+ }
+ 
+ vuint16m1_t
+ test_vabd_vv_u16m1 (vint16m1_t vs2, vint16m1_t vs1, size_t vl)
+ {
+   return __riscv_vabd_vv_u16m1 (vs2, vs1, vl);
+ }
+ 
+ vuint8m1_t
+ test_vabd_vv_u8m1_m (vbool8_t mask, vint8m1_t vs2, vint8m1_t vs1, size_t vl)
+ {
+   return __riscv_vabd_vv_u8m1_m (mask, vs2, vs1, vl);
+ }
+ 
+ vuint16m1_t
+ test_vabdu_vv_u16m1 (vuint16m1_t vs2, vuint16m1_t vs1, size_t vl)
+ {
+   return __riscv_vabdu_vv_u16m1 (vs2, vs1, vl);
+ }
+ 
+ vuint16m1_t
+ test_vabdu_vv_u16m1_tu (vuint16m1_t vd, vuint16m1_t vs2, vuint16m1_t vs1,
+ 			size_t vl)
+ {
+   return __riscv_vabdu_vv_u16m1_tu (vd, vs2, vs1, vl);
+ }
+ 
+ vuint32m1_t
+ test_vwabda_vv_u32m1 (vuint32m1_t vd, vint16mf2_t vs2, vint16mf2_t vs1,
+ 		      size_t vl)
+ {
+   return __riscv_vwabda_vv_u32m1 (vd, vs2, vs1, vl);
+ }
+ 
+ vuint16m1_t
+ test_vwabda_vv_u16m1_tu (vuint16m1_t vd, vint8mf2_t vs2, vint8mf2_t vs1,
+ 			 size_t vl)
+ {
+   return __riscv_vwabda_vv_u16m1_tu (vd, vs2, vs1, vl);
+ }
+ 
+ vuint16m1_t
+ test_vwabdau_vv_u16m1 (vuint16m1_t vd, vuint8mf2_t vs2, vuint8mf2_t vs1,
+ 		       size_t vl)
+ {
+   return __riscv_vwabdau_vv_u16m1 (vd, vs2, vs1, vl);
+ }
+ 
+ vuint16m1_t
+ test_vwabdau_vv_u16m1_mu (vbool16_t mask, vuint16m1_t vd, vuint8mf2_t vs2,
+ 			  vuint8mf2_t vs1, size_t vl)
+ {
+   return __riscv_vwabdau_vv_u16m1_mu (mask, vd, vs2, vs1, vl);
+ }
+ 
+ /* { dg-final { scan-assembler-times {\tvabs\.v} 5 } } */
+ /* { dg-final { scan-assembler-times {\tvabd\.vv} 2 } } */
+ /* { dg-final { scan-assembler-times {\tvabdu\.vv} 2 } } */
+ /* { dg-final { scan-assembler-times {\tvwabda\.vv} 2 } } */
+ /* { dg-final { scan-assembler-times {\tvwabdau\.vv} 2 } } */
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/coarray/team_allocated_coarrays.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/coarray/team_allocated_coarrays.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/coarray/team_allocated_coarrays.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/coarray/team_allocated_coarrays.f90	Sun Aug  2 22:32:15 2026
***************
*** 0 ****
--- 1,104 ----
+ ! { dg-do run }
+ !
+ ! F2018(11.1.5.2): Test auto-deallocation of allocatable coarrays that are
+ ! allocated within a team block.
+ !
+ program test_nested_teams
+   use iso_fortran_env, only: team_type
+   implicit none
+   type(team_type) :: team1, team2
+   integer, allocatable :: a[:]
+   integer, allocatable :: b[:]
+   integer, allocatable :: outer[:]
+   integer, allocatable :: inner(:)[:] ! Rank and corank
+   logical :: image1
+   integer :: me
+ 
+   type :: mytype
+     integer, allocatable :: i[:]
+   end type
+   type(mytype) :: dt_a, dt_b, dt_outer, dt_inner
+ 
+   image1 = this_image () == 1
+   me = this_image ()
+ 
+   ! Test 1: Simple allocation in single team block
+   form team(1, team1)
+   change team(team1)
+     allocate(a[*])
+     a = 1
+     allocate(dt_a%i[*], source = me)
+   end team
+   if (image1 .and. allocated(a)) stop 1
+   if (image1 .and. allocated(dt_a%i)) stop 2
+ 
+   ! Test 2: Multiple allocations in single team block
+   form team(1, team1)
+   change team(team1)
+     allocate(a[*], b[*])
+     a = 1
+     b = 2
+     allocate(dt_a%i[*], dt_b%i[*], source = me)
+   end team
+   if (image1 .and. allocated(a)) stop 3
+   if (image1 .and. allocated(b)) stop 4
+   if (image1 .and. allocated(dt_a%i)) stop 5
+   if (image1 .and. allocated(dt_b%i)) stop 6
+ 
+   ! Test 3: Nested team blocks - allocation in outer team only
+   form team(1, team1)
+   change team(team1)
+     allocate(outer[*])
+     allocate(dt_outer%i[*], source = me)
+     outer = 10
+ 
+     ! Nested team with no allocations
+     form team(1, team2)
+     change team(team2)
+     end team
+ 
+     ! Make sure that auto-deallocation occurs in right context
+     if (image1 .and. .not.allocated(outer)) stop 7
+     if (image1 .and. .not.allocated(dt_outer%i)) stop 8
+ 
+   end team
+   if (image1 .and. allocated(outer)) stop 9
+   if (image1 .and. allocated(dt_outer%i)) stop 10
+ 
+   ! Test 4: Nested team blocks - allocation in inner team only
+   form team(1, team1)
+   change team(team1)
+ 
+     form team(1, team2)
+     change team(team2)
+       allocate(inner(4)[*])
+       inner = 20
+       allocate(dt_inner%i[*])
+     end team
+ 
+     if (image1 .and. allocated(inner)) stop 11
+     if (image1 .and. allocated(dt_inner%i)) stop 12
+   end team
+ 
+   ! Test 5: Nested team blocks - allocations in both levels
+   form team(1, team1)
+   change team(team1)
+     allocate(outer[*])
+     outer = 30
+     allocate(dt_outer%i[*], source = me)
+ 
+     form team(1, team2)
+     change team(team2)
+       allocate(inner(2)[*])
+       inner = 40
+       allocate(dt_inner%i[*], source = me)
+     end team
+ 
+     if (image1 .and. allocated(inner)) stop 13
+     if (image1 .and. allocated(dt_inner%i)) stop 14
+ 
+   end team
+   if (image1 .and. allocated(outer)) stop 15
+   if (image1 .and. allocated(dt_outer%i)) stop 16
+ 
+ end program test_nested_teams
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/acc-init-1.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/acc-init-1.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/acc-init-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/acc-init-1.f90	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,47 ----
+ ! Test parsing and lowering of the OpenACC init directive.
+ 
+ ! { dg-do compile }
+ ! { dg-additional-options "-fdump-tree-original" }
+ 
+ subroutine init0
+   implicit none
+   !$acc init
+ end subroutine init0
+ 
+ subroutine init1
+   implicit none
+   !$acc init device_type(host)
+ end subroutine init1
+ 
+ subroutine init2
+   implicit none
+   !$acc init device_type(nvidia)
+ end subroutine init2
+ 
+ subroutine init3
+   implicit none
+   !$acc init device_num(0)
+ end subroutine init3
+ 
+ subroutine init4
+   implicit none
+   !$acc init device_type(host) device_num(0)
+ end subroutine init4
+ 
+ subroutine init5
+   implicit none
+   !$acc init if(.false.)
+ end subroutine init5
+ 
+ subroutine init6(l)
+   implicit none
+   logical, value :: l
+   !$acc init if(l) device_type(radeon) device_num(1)
+ end subroutine init6
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_init \\(-1, 0\\)" 2 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_init \\(-1, 2\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_init \\(-1, 5\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_init \\(0, 0\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_init \\(0, 2\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_init \\(1, 8\\)" 1 "original" } }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/acc-init-clauses-1.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/acc-init-clauses-1.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/acc-init-clauses-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/acc-init-clauses-1.f90	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,28 ----
+ ! Test invalid clauses on the OpenACC init directive.
+ 
+ ! { dg-do compile }
+ 
+ subroutine bad1
+   implicit none
+   !$acc init device_type(doesnt_exist) ! { dg-error "Expected host, radeon, nvidia or \\\* as argument" }
+ end subroutine bad1
+ 
+ subroutine bad2
+   implicit none
+   !$acc init device_type(nvidia, host) ! { dg-error "OpenACC 'DEVICE_TYPE' clause only accepts one argument" }
+ end subroutine bad2
+ 
+ subroutine bad3
+   implicit none
+   !$acc init if_present ! { dg-error "Failed to match clause" }
+ end subroutine bad3
+ 
+ subroutine bad4
+   implicit none
+   !$acc init async ! { dg-error "Failed to match clause" }
+ end subroutine bad4
+ 
+ subroutine bad5
+   implicit none
+   !$acc init wait ! { dg-error "Failed to match clause" }
+ end subroutine bad5
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/acc-set-1.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/acc-set-1.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/acc-set-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/acc-set-1.f90	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,36 ----
+ ! Test parsing and lowering of the OpenACC set directive.
+ 
+ ! { dg-do compile }
+ ! { dg-additional-options "-fdump-tree-original" }
+ 
+ subroutine set0
+   implicit none
+   !$acc set device_type(host)
+ end subroutine set0
+ 
+ subroutine set1
+   implicit none
+   !$acc set device_type(nvidia)
+ end subroutine set1
+ 
+ subroutine set2
+   implicit none
+   !$acc set device_num(0)
+ end subroutine set2
+ 
+ subroutine set3
+   implicit none
+   !$acc set device_type(host) device_num(0)
+ end subroutine set3
+ 
+ subroutine set4(l)
+   implicit none
+   logical, value :: l
+   !$acc set if(l) device_type(radeon) device_num(1)
+ end subroutine set4
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_set_device \\(-1, 2\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_set_device \\(-1, 5\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_set_device \\(0, 1\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_set_device \\(0, 2\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_set_device \\(1, 8\\)" 1 "original" } }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/acc-set-clauses-1.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/acc-set-clauses-1.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/acc-set-clauses-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/acc-set-clauses-1.f90	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,58 ----
+ ! Test invalid clauses on the OpenACC set directive.
+ 
+ ! { dg-do compile }
+ 
+ subroutine bad1
+   implicit none
+   !$acc set device_type(doesnt_exist) ! { dg-error "Expected host, radeon, nvidia or \\* as argument" }
+ end subroutine bad1
+ 
+ subroutine bad2
+   implicit none
+   !$acc set device_type(nvidia, host) ! { dg-error "OpenACC 'DEVICE_TYPE' clause only accepts one argument" }
+ end subroutine bad2
+ 
+ subroutine bad3
+   implicit none
+   !$acc set ! { dg-error "At least one of the clauses 'DEVICE_TYPE' and 'DEVICE_NUM' should be present in 'SET' directive" }
+ end subroutine bad3
+ 
+ subroutine bad4
+   implicit none
+   !$acc set if(.true.) ! { dg-error "At least one of the clauses 'DEVICE_TYPE' and 'DEVICE_NUM' should be present in 'SET' directive" }
+ end subroutine bad4
+ 
+ subroutine bad5
+   implicit none
+   !$acc set default_async(0) ! { dg-error "Failed to match clause" }
+ end subroutine bad5
+ 
+ subroutine bad6
+   implicit none
+   !$acc set if_present ! { dg-error "Failed to match clause" }
+ end subroutine bad6
+ 
+ subroutine bad7
+   implicit none
+   !$acc set async ! { dg-error "Failed to match clause" }
+ end subroutine bad7
+ 
+ subroutine bad8
+   implicit none
+   !$acc set wait ! { dg-error "Failed to match clause" }
+ end subroutine bad8
+ 
+ subroutine bad9
+   implicit none
+   !$acc set device_type(host) device_type(nvidia) ! { dg-error "Duplicated 'device_type' clause" }
+ end subroutine bad9
+ 
+ subroutine bad10
+   implicit none
+   !$acc set device_num(0) device_num(1) ! { dg-error "Duplicated 'device_num' clause" }
+ end subroutine bad10
+ 
+ subroutine bad11
+   implicit none
+   !$acc set if(.false.) if(.true.) ! { dg-error "Duplicated 'if' clause" }
+ end subroutine bad11
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/acc-shutdown-1.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/acc-shutdown-1.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/acc-shutdown-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/acc-shutdown-1.f90	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,47 ----
+ ! Test parsing and lowering of the OpenACC shutdown directive.
+ 
+ ! { dg-do compile }
+ ! { dg-additional-options "-fdump-tree-original" }
+ 
+ subroutine shutdown0
+   implicit none
+   !$acc shutdown
+ end subroutine shutdown0
+ 
+ subroutine shutdown1
+   implicit none
+   !$acc shutdown device_type(host)
+ end subroutine shutdown1
+ 
+ subroutine shutdown2
+   implicit none
+   !$acc shutdown device_type(nvidia)
+ end subroutine shutdown2
+ 
+ subroutine shutdown3
+   implicit none
+   !$acc shutdown device_num(0)
+ end subroutine shutdown3
+ 
+ subroutine shutdown4
+   implicit none
+   !$acc shutdown device_type(host) device_num(0)
+ end subroutine shutdown4
+ 
+ subroutine shutdown5
+   implicit none
+   !$acc shutdown if(.false.)
+ end subroutine shutdown5
+ 
+ subroutine shutdown6(l)
+   implicit none
+   logical, value :: l
+   !$acc shutdown if(l) device_type(radeon) device_num(1)
+ end subroutine shutdown6
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_shutdown \\(-1, 0\\)" 2 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_shutdown \\(-1, 2\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_shutdown \\(-1, 5\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_shutdown \\(0, 0\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_shutdown \\(0, 2\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOACC_shutdown \\(1, 8\\)" 1 "original" } }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/acc-shutdown-clauses-1.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/acc-shutdown-clauses-1.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/acc-shutdown-clauses-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/acc-shutdown-clauses-1.f90	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,43 ----
+ ! Test invalid clauses on the OpenACC shutdown directive.
+ 
+ ! { dg-do compile }
+ 
+ subroutine bad1
+   implicit none
+   !$acc shutdown device_type(doesnt_exist) ! { dg-error "Expected host, radeon, nvidia or \\* as argument" }
+ end subroutine bad1
+ 
+ subroutine bad2
+   implicit none
+   !$acc shutdown device_type(nvidia, host) ! { dg-error "OpenACC 'DEVICE_TYPE' clause only accepts one argument" }
+ end subroutine bad2
+ 
+ subroutine bad3
+   implicit none
+   !$acc shutdown if_present ! { dg-error "Failed to match clause" }
+ end subroutine bad3
+ 
+ subroutine bad4
+   implicit none
+   !$acc shutdown async ! { dg-error "Failed to match clause" }
+ end subroutine bad4
+ 
+ subroutine bad5
+   implicit none
+   !$acc shutdown wait ! { dg-error "Failed to match clause" }
+ end subroutine bad5
+ 
+ subroutine bad6
+   implicit none
+   !$acc shutdown device_type(host) device_type(nvidia) ! { dg-error "Duplicated 'device_type' clause" }
+ end subroutine bad6
+ 
+ subroutine bad7
+   implicit none
+   !$acc shutdown device_num(0) device_num(1) ! { dg-error "Duplicated 'device_num' clause" }
+ end subroutine bad7
+ 
+ subroutine bad8
+   implicit none
+   !$acc shutdown if(.false.) if(.true.) ! { dg-error "Duplicated 'if' clause" }
+ end subroutine bad8
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/uninit-if-clause.f95 gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/uninit-if-clause.f95
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/uninit-if-clause.f95	Mon Jul 27 02:16:17 2026
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/uninit-if-clause.f95	Sun Aug  2 22:32:16 2026
***************
*** 3,14 ****
  
  program test
    implicit none
!   logical :: b, b2, bs, b3, b4
    ! { dg-note {'b' was declared here} {} { target *-*-* } .-1 }
    ! { dg-note {'b2' was declared here} {} { target *-*-* } .-2 }
    ! { dg-note {'bs' was declared here} {} { target *-*-* } .-3 }
    ! { dg-note {'b3' was declared here} {} { target *-*-* } .-4 }
    ! { dg-note {'b4' was declared here} {} { target *-*-* } .-5 }
    integer :: data, data2
  
    !$acc parallel if(b) ! { dg-warning "is used uninitialized" }
--- 3,15 ----
  
  program test
    implicit none
!   logical :: b, b2, bs, b3, b4, b5
    ! { dg-note {'b' was declared here} {} { target *-*-* } .-1 }
    ! { dg-note {'b2' was declared here} {} { target *-*-* } .-2 }
    ! { dg-note {'bs' was declared here} {} { target *-*-* } .-3 }
    ! { dg-note {'b3' was declared here} {} { target *-*-* } .-4 }
    ! { dg-note {'b4' was declared here} {} { target *-*-* } .-5 }
+   ! { dg-note {'b5' was declared here} {} { target *-*-* } .-6 }
    integer :: data, data2
  
    !$acc parallel if(b) ! { dg-warning "is used uninitialized" }
*************** program test
*** 25,28 ****
--- 26,31 ----
  
    !$acc update if(b4) self(data2) ! { dg-warning "is used uninitialized" }
  
+   !$acc init if(b5) ! { dg-warning "is used uninitialized" }
+ 
  end program test
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/update-if_present-2.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/update-if_present-2.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/goacc/update-if_present-2.f90	Mon Jul 27 02:16:17 2026
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/goacc/update-if_present-2.f90	Sun Aug  2 22:32:16 2026
*************** subroutine t1
*** 20,27 ****
  
    !$acc declare link(a) if_present ! { dg-error "Unexpected junk after" }
  
!   !$acc init if_present ! { dg-error "Unclassifiable OpenACC directive" }
!   !$acc shutdown if_present ! { dg-error "Unclassifiable OpenACC directive" }
    
    !$acc update self(a) device_type(nvidia) device(b) if_present ! { dg-error "Failed to match clause" }
  end subroutine t1
--- 20,27 ----
  
    !$acc declare link(a) if_present ! { dg-error "Unexpected junk after" }
  
!   !$acc init if_present ! { dg-error "Failed to match clause" }
!   !$acc shutdown if_present ! { dg-error "Failed to match clause" }
    
    !$acc update self(a) device_type(nvidia) device(b) if_present ! { dg-error "Failed to match clause" }
  end subroutine t1
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-1.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-1.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-1.f90	Mon Jul 27 02:16:17 2026
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-1.f90	Sun Aug  2 22:32:16 2026
***************
*** 1,116 ****
  ! { dg-do compile }
! ! { dg-additional-options "-fdump-tree-original" }
  
! subroutine one_a
! !$omp teams num_teams(dims(3) : 1,2,3) &            ! { dg-message "sorry, unimplemented: 'num_teams' with 'dims' modifier" }
! !$omp&      thread_limit ( dims ( 4 ) : 1, 2, 3, 4) ! { dg-message "sorry, unimplemented: 'thread_limit' with 'dims' modifier" }
! !$omp   parallel num_threads(dims(3): 1,2,3)        ! { dg-message "sorry, unimplemented: 'num_threads' with 'dims' modifier" }
  !$omp   end parallel
  !$omp end teams
  end
  
! subroutine one_b
! !$omp teams num_teams(dims(3) : 1,2,3) &                      ! { dg-message "sorry, unimplemented: 'num_teams' with 'dims' modifier" }
! !$omp&      thread_limit ( dims ( 4 ) , relaxed : 1, 2, 3, 4) ! { dg-message "sorry, unimplemented: 'thread_limit' with 'dims' modifier" }
! !$omp   parallel num_threads(dims(3) , relaxed : 1,2,3)       ! { dg-message "sorry, unimplemented: 'num_threads' with 'dims' modifier" }
  !$omp   end parallel
  !$omp end teams
  end
  
! subroutine one_c
! !$omp teams num_teams(dims(3) : 1,2,3) &                     ! { dg-message "sorry, unimplemented: 'num_teams' with 'dims' modifier" }
! !$omp&      thread_limit ( dims ( 4 ) , strict : 1, 2, 3, 4) ! { dg-message "sorry, unimplemented: 'thread_limit' with 'dims' modifier" }
! !$omp   parallel num_threads(dims(3) , strict : 1,2,3)       ! { dg-message "sorry, unimplemented: 'num_threads' with 'dims' modifier" }
  !$omp   end parallel
  !$omp end teams
  end
  
! subroutine one_d
! !$omp teams num_teams ( dims(3) : 1,2,3) &                     ! { dg-message "sorry, unimplemented: 'num_teams' with 'dims' modifier" }
! !$omp&      thread_limit ( relaxed ,  dims ( 4 ) : 1, 2, 3, 4) ! { dg-message "sorry, unimplemented: 'thread_limit' with 'dims' modifier" }
! !$omp   parallel num_threads( relaxed , dims(3) : 1,2,3)       ! { dg-message "sorry, unimplemented: 'num_threads' with 'dims' modifier" }
  !$omp   end parallel
  !$omp end teams
  end
  
! subroutine one_e
! !$omp teams num_teams ( dims(3) : 1,2,3) &                    ! { dg-message "sorry, unimplemented: 'num_teams' with 'dims' modifier" }
! !$omp&      thread_limit ( strict ,  dims ( 4 ) : 1, 2, 3, 4) ! { dg-message "sorry, unimplemented: 'thread_limit' with 'dims' modifier" }
! !$omp   parallel num_threads( strict , dims(3) : 1,2,3)       ! { dg-message "sorry, unimplemented: 'num_threads' with 'dims' modifier" }
  !$omp   end parallel
  !$omp end teams
  end
  
  
! subroutine two
! !$omp teams thread_limit (strict : 4)          ! { dg-message "sorry, unimplemented: 'thread_limit' with 'strict' modifier" }
! !$omp   parallel num_threads(strict : 2)       ! { dg-message "sorry, unimplemented: 'num_threads' with 'strict' modifier" }
  !$omp   end parallel
  !$omp end teams
  end
  
! subroutine zero
! !$omp teams num_teams(1234) thread_limit ( 2345)  ! OK
! !$omp   parallel num_threads( 3456)            ! OK
  !$omp   end parallel
  !$omp end teams
  
  !$omp teams num_teams(123:456)
  !$omp end teams
  end
  
! subroutine three
! !$omp teams num_teams(4567) thread_limit (relaxed : 5678)  ! OK
! !$omp   parallel num_threads(relaxed : 6789)            ! OK
  !$omp   end parallel
  !$omp end teams
  end
  
! subroutine four
! !$omp parallel num_threads(1 , 2 , 3 )  ! { dg-message "sorry, unimplemented: 'num_threads' with more than one argument" }
  !$omp end parallel
  end
  
! subroutine five
! !$omp parallel num_threads(relaxed : 1,2,3)  ! { dg-message "sorry, unimplemented: 'num_threads' with more than one argument" }
  !$omp end parallel
  end
  
! subroutine six
! !$omp parallel num_threads(strict : 1,2,3)  ! { dg-message "sorry, unimplemented: 'num_threads' with 'strict' modifier" }
  !$omp end parallel
  end
  
  
! subroutine seven
    integer :: static, relaxed, dims(2)
!   !$omp teams num_teams(static) thread_limit (static)  ! OK
    !$omp   parallel num_threads(static)                 ! OK
    !$omp   end parallel
    !$omp end teams
  
    !$omp teams num_teams(relaxed) thread_limit (relaxed)  ! OK
    !$omp   parallel num_threads(relaxed)                  ! OK
    !$omp   end parallel
    !$omp end teams
  
    !$omp teams num_teams(dims(2)) thread_limit (dims(2))  ! OK
    !$omp   parallel num_threads(dims(2))                  ! OK
    !$omp   end parallel
    !$omp end teams
  
  end subroutine
  
! ! Check that the tree is correctly generated:
  
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(1234\\) thread_limit\\(2345\\)" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(3456\\)" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(4567\\) thread_limit\\(5678\\)" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(6789\\)" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(123:456\\)" 1 "original" } }
  
! ! { dg-final { scan-tree-dump-times "D\\.\[0-9\]+ = static;" 3 "original" } }
! ! { dg-final { scan-tree-dump-times "D\\.\[0-9\]+ = relaxed;" 3 "original" } }
! ! { dg-final { scan-tree-dump-times "D\\.\[0-9\]+ = dims\\\[1\\\];" 3 "original" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(D\\.\[0-9\]+\\) thread_limit\\(D\\.\[0-9\]+\\)" 3 "original" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(D\\.\[0-9\]+\\)" 3 "original" } }
--- 1,181 ----
  ! { dg-do compile }
! ! { dg-additional-options "-O0 -fdump-tree-gimple -fdump-tree-omplower -fdump-tree-ompexp" }
  
! subroutine one_a(x)
! implicit none
! integer :: x
! !$omp teams num_teams(dims(3) : 1,2,3) &
! !$omp&      thread_limit ( dims ( 4 ) : 1, 2, 3, 4)
! ! { dg-message "sorry, unimplemented: 'thread_limit' clause with 'dims' modifier" "" { target *-*-* } .-1 }
! ! { dg-message "sorry, unimplemented: 'num_teams' clause with 'dims' modifier" "" { target *-*-* } .-2 }
! !$omp   parallel num_threads(dims(3): 1,2,3)        ! { dg-message "sorry, unimplemented: 'num_threads' clause with 'dims' modifier" }
!   x = 1
  !$omp   end parallel
  !$omp end teams
  end
  
! ! As the error is printed in 'omp-expand.cc', it is shown only once and not for all of the following
! ! cases. This also affects omp-lower. Hence:
! ! { dg-final { scan-tree-dump-times "#pragma omp teams" 1 "omplower" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel" 1 "omplower" } }
! ! { dg-final { scan-tree-dump-times "__builtin_GOMP_teams_reg " 1 "ompexp" } }
! ! { dg-final { scan-tree-dump-times "__builtin_GOMP_parallel " 1 "ompexp" } }
! 
! subroutine one_b(x)
! implicit none
! integer :: x
! !$omp teams num_teams(dims(3) : 1,2,3) &
! !$omp&      thread_limit ( dims ( 4 ) , relaxed : 1, 2, 3, 4)
! !$omp   parallel num_threads(dims(3) , relaxed : 1,2,3)
!   x = 1
  !$omp   end parallel
  !$omp end teams
  end
  
! subroutine one_c(x)
! implicit none
! integer :: x
! !$omp teams num_teams(dims(3) : 11,22,33) &
! !$omp&      thread_limit ( dims ( 4 ) , strict : 11, 22, 33, 44)
! !$omp   parallel num_threads(dims(3) , strict : 11,22,33)
!   x = 1
  !$omp   end parallel
  !$omp end teams
  end
  
! subroutine one_d(x)
! implicit none
! integer :: x
! !$omp teams num_teams ( dims(3) : 1,2,3) &
! !$omp&      thread_limit ( relaxed ,  dims ( 4 ) : 111, 222, 333, 444)
! !$omp   parallel num_threads( relaxed , dims(3) : 111,222,333)
!   x = 1
  !$omp   end parallel
  !$omp end teams
  end
  
! subroutine one_e(x)
! implicit none
! integer :: x
! !$omp teams num_teams ( dims(3) : 1,2,3) &
! !$omp&      thread_limit ( strict ,  dims ( 4 ) : 1111, 2222, 3333, 4444)
! !$omp   parallel num_threads( strict , dims(3) : 1111,2222,3333)
!   x = 1
  !$omp   end parallel
  !$omp end teams
  end
  
  
! subroutine two(x)
! implicit none
! integer :: x
! !$omp teams thread_limit (strict : 4)
! !$omp   parallel num_threads(strict : 2)
!   x = 1
  !$omp   end parallel
  !$omp end teams
  end
  
! subroutine zero(x)
! implicit none
! integer :: x
! !$omp teams num_teams(1234) thread_limit ( 2345)  ! OK - old code
! !$omp   parallel num_threads( 3456)               ! OK - old code
!   x = 1
  !$omp   end parallel
  !$omp end teams
  
  !$omp teams num_teams(123:456)
+   x = 1
  !$omp end teams
  end
  
! subroutine three(x)
! implicit none
! integer :: x
! !$omp teams num_teams(4567) thread_limit (relaxed : 5678)  ! OK - old code + 'relaxed'
! !$omp   parallel num_threads(relaxed : 6789)               ! OK - old code + 'relaxed'
!   x = 1
  !$omp   end parallel
  !$omp end teams
  end
  
! subroutine four(x)
! implicit none
! integer :: x
! !$omp parallel num_threads(1 , 2 , 3 )
!   x = 1
  !$omp end parallel
  end
  
! subroutine five(x)
! implicit none
! integer :: x
! !$omp parallel num_threads(relaxed : 11,22,333)
!   x = 1
  !$omp end parallel
  end
  
! subroutine six(x)
! implicit none
! integer :: x
! !$omp parallel num_threads(strict : 111,222,333)
!   x = 1
  !$omp end parallel
  end
  
  
! subroutine seven(x)
! implicit none
! integer :: x
    integer :: static, relaxed, dims(2)
!   !$omp teams num_teams(static) thread_limit (static)  ! OK - old code (using variable name that looks like a modifier name)
    !$omp   parallel num_threads(static)                 ! OK
+     x = 1
    !$omp   end parallel
    !$omp end teams
  
    !$omp teams num_teams(relaxed) thread_limit (relaxed)  ! OK
    !$omp   parallel num_threads(relaxed)                  ! OK
+     x = 1
    !$omp   end parallel
    !$omp end teams
  
    !$omp teams num_teams(dims(2)) thread_limit (dims(2))  ! OK
    !$omp   parallel num_threads(dims(2))                  ! OK
+     x = 1
    !$omp   end parallel
    !$omp end teams
  
  end subroutine
  
! ! Check that the tree is correctly generated (gimple tree)
  
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(dims\\(\\):1, 2, 3\\) thread_limit\\(strict,dims\\(\\):1, 2, 3, 4\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(strict,dims\\(\\):1, 2, 3\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(dims\\(\\):1, 2, 3\\) thread_limit\\(dims\\(\\):1, 2, 3, 4\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(dims\\(\\):1, 2, 3\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(dims\\(\\):11, 22, 33\\) thread_limit\\(strict,dims\\(\\):11, 22, 33, 44\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(strict,dims\\(\\):11, 22, 33\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(dims\\(\\):1, 2, 3\\) thread_limit\\(dims\\(\\):111, 222, 333, 444\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(dims\\(\\):111, 222, 333\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(dims\\(\\):1, 2, 3\\) thread_limit\\(strict,dims\\(\\):1111, 2222, 3333, 4444\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(strict,dims\\(\\):1111, 2222, 3333\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams thread_limit\\(strict:4\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(strict:2\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(1234\\) thread_limit\\(2345\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(3456\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(123, 456\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(4567\\) thread_limit\\(5678\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(6789\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(1, 2, 3\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(11, 22, 333\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(strict:111, 222, 333\\) shared\\(x\\)" 1 "gimple" } }
  
! ! { dg-final { scan-tree-dump-times "D\\.\[0-9\]+ = static;" 3 "gimple" } }
! ! { dg-final { scan-tree-dump-times "D\\.\[0-9\]+ = relaxed;" 3 "gimple" } }
! ! { dg-final { scan-tree-dump-times "D\\.\[0-9\]+ = dims\\\[1\\\];" 3 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(_\[0-9\]+\\) thread_limit\\(_\[0-9\]+\\) shared\\(static\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(_\[0-9\]+\\) thread_limit\\(_\[0-9\]+\\) shared\\(relaxed\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(_\[0-9\]+\\) thread_limit\\(_\[0-9\]+\\) shared\\(dims\\) shared\\(x\\)" 1 "gimple" } }
! ! { dg-final { scan-tree-dump-times "#pragma omp parallel num_threads\\(D\\.\[0-9\]+\\) shared\\(x\\)" 3 "gimple" } }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-2.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-2.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-2.f90	Mon Jul 27 02:16:17 2026
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-2.f90	Sun Aug  2 22:32:16 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-additional-options "-fdump-tree-original" }
  
  ! This testcase is ambigous in Fortran
  ! cf. OpenMP Spec Issues 4998
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-additional-options "-fdump-tree-omplower -fdump-tree-ompexp" }
  
  ! This testcase is ambigous in Fortran
  ! cf. OpenMP Spec Issues 4998
***************
*** 13,22 ****
  subroutine sub
    integer, parameter :: dims(2) = [11,22]
  !...
!   !$omp teams  num_teams( dims(1) : 256 )  ! { dg-message "sorry, unimplemented: 'num_teams' with 'dims' modifier" }
    !$omp end teams
  end
  
! ! ... hence: 'num_teams(256)' and not 'num_teams(11:256)'
  
! ! { dg-final { scan-tree-dump "#pragma omp teams num_teams\\(256\\)" "original" } }
--- 13,24 ----
  subroutine sub
    integer, parameter :: dims(2) = [11,22]
  !...
!   !$omp teams  num_teams( dims(1) : 256 )
    !$omp end teams
  end
  
! ! ... hence: 'num_teams(dims():256)' and not 'num_teams(11:256)'
! ! regarded as idenical to num_teams(256)  (undimensional case)
  
! ! { dg-final { scan-tree-dump "#pragma omp teams num_teams\\(dims\\(\\):256\\)" "omplower" } }
! ! { dg-final { scan-tree-dump "__builtin_GOMP_teams_reg \\(sub_._omp_fn.0, 0B, 256, 0, 0\\);" "ompexp" } }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-3.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-3.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-3.f90	Mon Jul 27 02:16:17 2026
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-3.f90	Sun Aug  2 22:32:16 2026
*************** subroutine three
*** 90,111 ****
    !$omp teams num_teams(  ! { dg-error "Expected either '\\\[lower-expr : \\\] upper-expr' or 'dims\\(N\\): expr-list'" }
    block; end block
  
!   !$omp teams num_teams( dims ! { dg-error "Failed to match clause" }
    block; end block
  
!   !$omp teams num_teams( dims(1) ! { dg-error "Invalid character in name" }
    block; end block
  
    !$omp teams num_teams( dims(1) : ! { dg-error "Expected either '\\\[lower-expr : \\\] upper-expr' or 'dims\\(N\\): expr-list'" }
    block; end block
  
!   !$omp teams num_teams( dims(1) : 1 ! { dg-error "Syntax error in OpenMP expression" }
    block; end block
  
!   !$omp teams num_teams( 5 : ! { dg-error "Invalid character in name" }
    block; end block
  
!   !$omp teams num_teams( 5 : 5 ! { dg-error "Failed to match clause" }
    block; end block
  end
  
--- 90,111 ----
    !$omp teams num_teams(  ! { dg-error "Expected either '\\\[lower-expr : \\\] upper-expr' or 'dims\\(N\\): expr-list'" }
    block; end block
  
!   !$omp teams num_teams( dims ! { dg-error "Expected either '\\\[lower-expr : \\\] upper-expr' or 'dims\\(N\\): expr-list' at .1." }
    block; end block
  
!   !$omp teams num_teams( dims(1) ! { dg-error "Expected either '\\\[lower-expr : \\\] upper-expr' or 'dims\\(N\\): expr-list'" }
    block; end block
  
    !$omp teams num_teams( dims(1) : ! { dg-error "Expected either '\\\[lower-expr : \\\] upper-expr' or 'dims\\(N\\): expr-list'" }
    block; end block
  
!   !$omp teams num_teams( dims(1) : 1 ! { dg-error "Expected either '\\\[lower-expr : \\\] upper-expr' or 'dims\\(N\\): expr-list'" }
    block; end block
  
!   !$omp teams num_teams( 5 : ! { dg-error "Expected either '\\\[lower-expr : \\\] upper-expr' or 'dims\\(N\\): expr-list'" }
    block; end block
  
!   !$omp teams num_teams( 5 : 5 ! { dg-error "Expected either '\\\[lower-expr : \\\] upper-expr' or 'dims\\(N\\): expr-list' at .1." }
    block; end block
  end
  
*************** subroutine five
*** 168,174 ****
  end
  
  subroutine six
!   !$omp teams num_teams (dims(1), dims(1) : 1) ! { dg-error "Invalid character in name" }
    block; end block
  
  
--- 168,174 ----
  end
  
  subroutine six
!   !$omp teams num_teams (dims(1), dims(1) : 1) ! { dg-error "Expected either '\\\[lower-expr : \\\] upper-expr' or 'dims\\(N\\): expr-list'" }
    block; end block
  
  
*************** subroutine six
*** 241,247 ****
  end subroutine
  
  subroutine seven
!   !$omp teams num_teams (2,2)  ! { dg-error "Failed to match clause" }
    block; end block
  
    !$omp teams thread_limit (2,2)  ! { dg-error "Without the DIM modifier, only a single integer expression may be specified" }
--- 241,247 ----
  end subroutine
  
  subroutine seven
!   !$omp teams num_teams (2,2)  ! { dg-error "Expected either '\\\[lower-expr : \\\] upper-expr' or 'dims\\(N\\): expr-list'" }
    block; end block
  
    !$omp teams thread_limit (2,2)  ! { dg-error "Without the DIM modifier, only a single integer expression may be specified" }
*************** subroutine seven
*** 249,252 ****
--- 249,258 ----
  
    !$omp parallel num_threads (2,2)  ! OK
    block; end block
+ 
+   !$omp teams num_teams(39 ! { dg-error "Expected either '\\\[lower-expr : \\\] upper-expr' or 'dims\\(N\\): expr-list' at .1." }
+   block; end block
+  
+   !$omp teams num_teams(strict : 4 : 5 )  ! { dg-error "Expected either '\\\[lower-expr : \\\] upper-expr' or 'dims\\(N\\): expr-list' at .1." }
+   block; end block
  end
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-4.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-4.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-4.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-4.f90	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,99 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-fdump-tree-omplower -fdump-tree-ompexp" }
+ 
+ ! For ompexp, only check teams + parallel and not target (teams)
+ 
+ ! Note: The following tests code that produces identical code to 5.x
+ ! even though OpenMP 6.0 features are used. Namely:
+ ! - relaxed  modifier
+ ! - relaxed, dims(1)  modiefiers
+ ! - message clause with parallel and teams - if there is num_teams clause
+ !   (For target (teams), there is an implicit 'num_teams'; to avoid
+ !    complex sorry code, message + target (teams) is rejected.)
+ 
+ subroutine sub(x)
+ implicit none
+ integer :: x, i
+ 
+ !$omp target thread_limit(relaxed : 11)
+ block
+   x = 1
+ end block
+ ! { dg-final { scan-tree-dump-times "#pragma omp target num_teams\\(-2\\) thread_limit\\(11\\) firstprivate\\(x\\) \\\[child fn" 1 "omplower" } }
+ 
+ !$omp target parallel do simd thread_limit(relaxed, dims(1) : 22)
+ do i = 1, 1
+   x = 1
+ end do
+ ! { dg-final { scan-tree-dump-times "#pragma omp target num_teams\\(-2\\) thread_limit\\(dims\\(\\):22\\) map\\(tofrom:i \\\[len: 4\\\] \\\[runtime_implicit\\\]\\) firstprivate\\(x\\) \\\[child fn" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp parallel lastprivate\\(i\\) shared\\(x\\) \\\[child fn" 1 "omplower" } }
+ 
+ !$omp target teams thread_limit(relaxed : 31) num_teams(dims(1) : 33)
+ block
+   x = 1
+ end block
+ ! { dg-final { scan-tree-dump-times "#pragma omp target num_teams\\(-1\\) thread_limit\\(31\\) firstprivate\\(x\\) \\\[child fn" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(dims\\(\\):33\\) thread_limit\\(31\\) shared\\(x\\)" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_teams4 \\(33, 33, 31, D.\[0-9]+\\);" 1 "ompexp" } }
+ 
+ 
+ !$omp target teams distribute parallel do simd thread_limit(relaxed : 41) num_teams(dims(1) : 43) num_threads( dims ( 1 ) , relaxed : 44)
+ do i = 1, 1
+   x = 1
+ end do
+ ! { dg-final { scan-tree-dump-times "#pragma omp target num_teams\\(-1\\) thread_limit\\(41\\) map\\(tofrom:i \\\[len: 4\\\] \\\[runtime_implicit\\\]\\) firstprivate\\(x\\) \\\[child fn" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(dims\\(\\):43\\) thread_limit\\(41\\) shared\\(i\\) shared\\(x\\)" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp parallel _looptemp_\\(D.\[0-9\]+\\) _looptemp_\\(D.\[0-9\]+\\) num_threads\\(dims\\(\\):44\\) lastprivate\\(i\\) shared\\(x\\) \\\[child fn" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_parallel \\(sub_._omp_fn.\[0-9]+, &.omp_data_o.\[0-9]+, 44, 0\\);" 1 "ompexp" } }
+ 
+ !$omp teams thread_limit(relaxed : 51) num_teams(dims(1) : 53)
+ block
+ end block
+ ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(dims\\(\\):53\\) thread_limit\\(51\\)" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_teams_reg \\(sub_._omp_fn.\[0-9\]+, 0B, 53, 51, 0\\);" 1 "ompexp" } }
+ 
+ !$omp teams distribute parallel do simd thread_limit(relaxed : 61) num_teams(dims(1) : 63) num_threads(relaxed, dims(1) : 64)
+ do i = 1, 1
+   x = 1
+ end do
+ ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(dims\\(\\):63\\) thread_limit\\(61\\) shared\\(i\\) shared\\(x\\)" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp parallel _looptemp_\\(D.\[0-9\]+\\) _looptemp_\\(D.\[0-9\]+\\) num_threads\\(dims\\(\\):64\\) lastprivate\\(i\\) shared\\(x\\) \\\[child fn" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_teams_reg \\(sub_._omp_fn.\[0-9\]+, &.omp_data_o.\[0-9\]+, 63, 61, 0\\);" 1 "ompexp" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_parallel \\(sub_._omp_fn.\[0-9\]+, &.omp_data_o.\[0-9\]+, 64, 0\\);" 1 "ompexp" } }
+ 
+ !$omp parallel num_threads(relaxed, dims(1) : 77) message("my77") severity(fatal)
+ block
+   x = 1
+ end block
+ ! { dg-final { scan-tree-dump-times "#pragma omp parallel message\\(.my77. \\\[len:4\\\]\\)severity\\(fatal\\) num_threads\\(dims\\(\\):77\\) shared\\(x\\) \\\[child fn" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_parallel \\(sub_._omp_fn.\[0-9\]+, &.omp_data_o.\[0-9\]+, 77, 0\\);" 1 "ompexp" } }
+ 
+ 
+ !$omp parallel num_threads(relaxed : 88) message("my78") severity(warning)
+ block
+   x = 1
+ end block
+ ! { dg-final { scan-tree-dump-times "#pragma omp parallel message\\(.my78. \\\[len:4\\\]\\) severity\\(warning\\) num_threads\\(88\\) shared\\(x\\) \\\[child fn" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_parallel \\(sub_._omp_fn.\[0-9\]+, &.omp_data_o.\[0-9\]+, 88, 0\\);" 1 "ompexp" } }
+ 
+ !$omp teams thread_limit(relaxed : 91) num_teams(1 : 93)
+ block
+   x = 1
+ end block
+ ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(1, 93\\) thread_limit\\(91\\) shared\\(x\\)" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_teams_reg \\(sub_._omp_fn.\[0-9\]+, &.omp_data_o.\[0-9\]+, 93, 91, 0\\);" 1 "ompexp" } }
+ 
+ !$omp target teams thread_limit(relaxed : 991) num_teams(191 : 993)
+ block
+   x = 1
+ end block
+ ! { dg-final { scan-tree-dump-times "#pragma omp target num_teams\\(-1\\) thread_limit\\(991\\) firstprivate\\(x\\) \\\[child fn" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(191, 993\\) thread_limit\\(991\\) shared\\(x\\)" 1 "omplower" } }
+ 
+ !$omp teams thread_limit(relaxed : 1231) message("my1234") severity(warning)
+ block
+ end block 
+ ! { dg-final { scan-tree-dump-times "#pragma omp teams message\\(.my1234. \\\[len:6\\\]\\) severity\\(warning\\) thread_limit\\(1231\\)" 1 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_teams_reg \\(sub_._omp_fn.\[0-9\]+, 0B, 0, 1231, 0\\);" 1 "ompexp" } }
+ 
+ end
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-5.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-5.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-5.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/gomp/spatial-dimensions-5.f90	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,84 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-fdump-tree-gimple" }
+ 
+ subroutine sub(x)
+ implicit none
+ integer :: x, i
+ 
+ !$omp target teams distribute parallel do num_teams(11 : 22) thread_limit(strict,dims(3) : 11,12,13) num_threads(relaxed: 23,45,53) message("first") severity(warning)
+ do i = 1,1
+   x = 0
+ end do
+ ! { dg-final { scan-tree-dump-times "#pragma omp target num_teams\\(-1\\) message\\(.first. \\\[len:5\\\]\\) severity\\(warning\\) thread_limit\\(strict,dims\\(\\):11, 12, 13\\) firstprivate\\(x\\)" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(11, 22\\) thread_limit\\(strict,dims\\(\\):11, 12, 13\\) message\\(.first. \\\[len:5\\\]\\) severity\\(warning\\) shared\\(x\\)" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp parallel message\\(.first. \\\[len:5\\\]\\) severity\\(warning\\) num_threads\\(23, 45, 53\\) shared\\(x\\)" 1 "gimple" } }
+ end
+ 
+ ! { dg-message "sorry, unimplemented: 'num_threads' clause with more than one argument" "" { target *-*-* } 8 }
+ ! { dg-message "sorry, unimplemented: 'message' clause" "" { target *-*-* } 8 }
+ ! { dg-message "sorry, unimplemented: 'thread_limit' clause with 'dims' modifier" "" { target *-*-* } 8 }
+ 
+ 
+ subroutine sub2(x)
+ implicit none
+ integer :: x, i
+ 
+ !$omp target teams distribute parallel do num_teams(dims(4): 111,222,333, 324) thread_limit(relaxed : 11) num_threads(strict: 445,553) message("second") severity(fatal)
+ do i = 1,1
+   x = 0
+ end do
+ ! { dg-final { scan-tree-dump-times "#pragma omp target num_teams\\(-1\\) message\\(.second. \\\[len:6\\\]\\)severity\\(fatal\\) thread_limit\\(11\\) firstprivate\\(x\\)" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp teams num_teams\\(dims\\(\\):111, 222, 333, 324\\) thread_limit\\(11\\) message\\(.second. \\\[len:6\\\]\\)severity\\(fatal\\) shared\\(x\\)" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp parallel message\\(.second. \\\[len:6\\\]\\)severity\\(fatal\\) num_threads\\(strict:445, 553\\) shared\\(x\\)" 1 "gimple" } }
+ 
+ !$omp teams distribute parallel do num_teams(11 : 55) thread_limit(strict : 11) num_threads(relaxed: 23,45,53) message("third") severity(warning)
+ do i = 1,1
+   x = 0
+ end do
+ ! { dg-final { scan-tree-dump-times "#pragma omp teams message\\(.third. \\\[len:5\\\]\\) severity\\(warning\\) num_teams\\(11, 55\\) thread_limit\\(strict:11\\) shared\\(x\\)" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp parallel message\\(.third. \\\[len:5\\\]\\) severity\\(warning\\) num_threads\\(23, 45, 53\\) shared\\(x\\)" 1 "gimple" } }
+ 
+ !$omp teams distribute parallel do num_teams(dims(2): 1111,33) thread_limit(dims(3) : 11,3,480) num_threads(strict, dims(2): 445,553) message("fourth") severity(fatal)
+ do i = 1,1
+   x = 0
+ end do
+ ! { dg-final { scan-tree-dump-times "#pragma omp teams message\\(.fourth. \\\[len:6\\\]\\)severity\\(fatal\\) num_teams\\(dims\\(\\):1111, 33\\) thread_limit\\(strict,dims\\(\\):11, 3, 480\\) shared\\(x\\)" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp parallel message\\(.fourth. \\\[len:6\\\]\\)severity\\(fatal\\) num_threads\\(strict,dims\\(\\):445, 553\\) shared\\(x\\)" 1 "gimple" } }
+ 
+ !$omp target message("tgt1") severity(warning) thread_limit(strict : 1454)
+ block
+   x = 0
+ end block
+ ! { dg-final { scan-tree-dump-times "#pragma omp target num_teams\\(-2\\) message\\(.tgt1. \\\[len:4\\\]\\) severity\\(warning\\) thread_limit\\(strict:1454\\) firstprivate\\(x\\)" 1 "gimple" } }
+ 
+ !$omp target message("tgt2") severity(fatal) thread_limit(relaxed : 454)
+ block
+   x = 0
+ end block
+ ! { dg-final { scan-tree-dump-times "#pragma omp target num_teams\\(-2\\) message\\(.tgt2. \\\[len:4\\\]\\)severity\\(fatal\\) thread_limit\\(454\\) firstprivate\\(x\\)" 1 "gimple" } }
+ 
+ !$omp teams num_teams(14 : 34) message("teams") severity(fatal)
+ block
+   x = 0
+ end block
+ ! { dg-final { scan-tree-dump-times "#pragma omp teams message\\(.teams. \\\[len:5\\\]\\)severity\\(fatal\\) num_teams\\(14, 34\\) shared\\(x\\)" 1 "gimple" } }
+ 
+ !$omp teams thread_limit(relaxed, dims(2): 514 , 384) severity(warning)
+ block
+   x = 0
+ end block
+ ! { dg-final { scan-tree-dump-times "#pragma omp teams severity\\(warning\\) thread_limit\\(dims\\(\\):514, 384\\) shared\\(x\\)" 1 "gimple" } }
+ 
+ !$omp parallel num_threads(relaxed, dims(2): 514 , 384) severity(warning)
+ block
+   x = 0
+ end block
+ ! { dg-final { scan-tree-dump-times "#pragma omp parallel severity\\(warning\\) num_threads\\(dims\\(\\):514, 384\\) shared\\(x\\)" 1 "gimple" } }
+ 
+ !$omp parallel num_threads(strict: 847 , 3523, 53) message("parallel")
+ block
+   x = 0
+ end block
+ ! { dg-final { scan-tree-dump-times "#pragma omp parallel message\\(.parallel. \\\[len:8\\\]\\)severity\\(fatal\\) num_threads\\(strict:847, 3523, 53\\) shared\\(x\\)" 1 "gimple" } }
+ 
+ end
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/inline_matmul_29.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/inline_matmul_29.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/inline_matmul_29.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/inline_matmul_29.f90	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,28 ----
+ ! { dg-do run }
+ ! { dg-additional-options "-ffrontend-optimize -fdump-tree-original" }
+ 
+ PROGRAM memain
+   implicit none
+   REAL(8), DIMENSION(3) :: b
+   REAL(8), DIMENSION(3,2) :: A
+   real(8), dimension(:), allocatable :: y
+   real(8), dimension(2) :: z
+   integer :: i, j
+ 
+   A(:,1) = [1,-2,3]
+   A(:,2) = [-4,5,6]
+     
+   b =  [7,-8,9]
+   y = matmul(transpose(A),b)
+   z = 0
+   do i=1,2
+     do j=1,3
+        z(i) = z(i) + a(j,i) * b(j)
+      end do
+   end do
+   if (size(z,1) /= size(y,1)) stop 1
+   if (any(abs(z - y) > 1e-12)) stop 2
+     
+ END PROGRAM memain
+ ! { dg-final { scan-tree-dump-not "_gfortran_matmul_r8" "original" } }
+ ! { dg-final { scan-tree-dump-not "_gfortran_transpose_r8" "original" } }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/pr125866.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/pr125866.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/pr125866.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/pr125866.f90	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,28 ----
+ ! { dg-do compile }
+ !  ICE: a module procedure with an allocatable, intent(out)
+ !  derived-type array dummy. Reduced from the original in the PR
+ 
+ module m
+   interface
+     module subroutine s (a)
+       integer, allocatable, intent(out) :: a
+     end subroutine
+   end interface
+ end module
+ 
+ submodule (m) sm1
+ contains
+   module subroutine s (a)
+     integer, allocatable, intent(out) :: a
+     allocate (a, source = 7)
+   end subroutine
+ end submodule
+ 
+ submodule (m:sm1) sm2
+ contains
+   subroutine caller
+     integer, allocatable :: b
+     call s (b)
+     if (b /= 7) stop 1
+   end subroutine
+ end submodule
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/pr126303.f gcc-17-20260802/gcc/testsuite/gfortran.dg/pr126303.f
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/pr126303.f	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/pr126303.f	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,9 ----
+ ! PR fortran/126303
+ ! { dg-do compile }
+ ! { dg-options "-std=legacy" }
+       COMMON FOO(8)
+       DO 10 M=1,8
+         DO 10 T=0D0,1D0
+           FOO(M)=1
+    10 CONTINUE
+       END
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.dg/warn_undefined_vars_10.f90 gcc-17-20260802/gcc/testsuite/gfortran.dg/warn_undefined_vars_10.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.dg/warn_undefined_vars_10.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gfortran.dg/warn_undefined_vars_10.f90	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,15 ----
+ ! { dg-do compile }
+ ! { dg-options "-Wundefined-vars" }
+ ! PR fortran/126558 - this used to give a false positive for y.
+ 
+ program memain
+   implicit none
+   integer :: x,y
+   associate (ax => x)
+   end associate
+   print *, x ! { dg-warning "Undefined variable" }
+   associate (ay => y)
+     ay = 42
+   end associate
+   print *,y
+ end program memain
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90 gcc-17-20260802/gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90
*** gcc-17-20260727/gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90	Mon Jul 27 02:16:17 2026
--- gcc-17-20260802/gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90	Sun Aug  2 22:32:16 2026
*************** subroutine c_sub_a_conjb(n, a, c, b)
*** 57,61 ****
    end do
  end subroutine c_sub_a_conjb
  
! ! { dg-final { scan-assembler-times {fcmla\s+v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #0} 2 } }
  ! { dg-final { scan-assembler-times {fcmla\s+v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #270} 2 } }
--- 57,66 ----
    end do
  end subroutine c_sub_a_conjb
  
! ! The two plain multiplies form .COMPLEX_MUL (#0 + #90) and the two conjugate
! ! multiplies form .COMPLEX_MUL_CONJ (#0 + #270).  PR122408 is about detecting
! ! the conjugate form, so the #270 and #180 counts are the ones that guard it.
! ! { dg-final { scan-assembler-times {fcmla\s+v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #0} 4 } }
! ! { dg-final { scan-assembler-times {fcmla\s+v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #90} 2 } }
  ! { dg-final { scan-assembler-times {fcmla\s+v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #270} 2 } }
+ ! { dg-final { scan-assembler-not {fcmla\s+v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #180} } }
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gnat.dg/unchecked_union5.adb gcc-17-20260802/gcc/testsuite/gnat.dg/unchecked_union5.adb
*** gcc-17-20260727/gcc/testsuite/gnat.dg/unchecked_union5.adb	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gnat.dg/unchecked_union5.adb	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,23 ----
+ --  { dg-do compile }
+ --  { dg-options "-gnateV" }
+ 
+ procedure Unchecked_Union5 is
+ 
+    type R (Bytes_Mode : Boolean := False) is record
+       case Bytes_Mode is
+          when True =>
+             A : Boolean;
+          when False =>
+             B : Boolean;
+       end case;
+    end record with Unchecked_Union;
+ 
+    type T is record
+       Data : R;
+    end record;
+ 
+    function F (Message : T) return Integer is (0);
+ 
+ begin
+    null;
+ end;
diff -Nrcpad gcc-17-20260727/gcc/testsuite/gnat.dg/validity_check3.adb gcc-17-20260802/gcc/testsuite/gnat.dg/validity_check3.adb
*** gcc-17-20260727/gcc/testsuite/gnat.dg/validity_check3.adb	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/gcc/testsuite/gnat.dg/validity_check3.adb	Sun Aug  2 22:32:16 2026
***************
*** 0 ****
--- 1,23 ----
+ --  { dg-do compile }
+ --  { dg-options "-gnatVa" }
+ 
+ procedure Validity_Check3 is
+ 
+    type Selection is (First, Second);
+ 
+    function Next_Value (Text     : String;
+                         Position : in out Positive) return String is
+    begin
+       Position := Position + 1;
+       return Text;
+    end Next_Value;
+ 
+    Position : Positive := 1;
+    Value    : constant Selection :=
+      Selection'Value (Next_Value ("First", Position));
+ 
+ begin
+    if Value /= First then
+       raise Program_Error;
+    end if;
+ end;
diff -Nrcpad gcc-17-20260727/gcc/testsuite/lib/profopt.exp gcc-17-20260802/gcc/testsuite/lib/profopt.exp
*** gcc-17-20260727/gcc/testsuite/lib/profopt.exp	Mon Jul 27 02:16:17 2026
--- gcc-17-20260802/gcc/testsuite/lib/profopt.exp	Sun Aug  2 22:32:16 2026
*************** proc profopt-execute { src } {
*** 456,462 ****
                  set bprefix "afdo."
  		set compiler [lindex $GCC_UNDER_TEST 0]
  		set autofdo_version [string trim [lindex [remote_exec target "$compiler --print-autofdo-gcov-version"] 1] ]
! 		set profiler_check [string trim [lindex [remote_exec target "perf --no-pager list | grep arm_spe"] 1]]
  		if {$profiler_check ne ""} {
  		    set profiler "perf_spe"
  		} else {
--- 456,462 ----
                  set bprefix "afdo."
  		set compiler [lindex $GCC_UNDER_TEST 0]
  		set autofdo_version [string trim [lindex [remote_exec target "$compiler --print-autofdo-gcov-version"] 1] ]
! 		set profiler_check [string trim [lindex [remote_exec target "perf --no-pager list pmu | grep arm_spe"] 1]]
  		if {$profiler_check ne ""} {
  		    set profiler "perf_spe"
  		} else {
diff -Nrcpad gcc-17-20260727/gcc/testsuite/lib/target-supports.exp gcc-17-20260802/gcc/testsuite/lib/target-supports.exp
*** gcc-17-20260727/gcc/testsuite/lib/target-supports.exp	Mon Jul 27 02:16:17 2026
--- gcc-17-20260802/gcc/testsuite/lib/target-supports.exp	Sun Aug  2 22:32:16 2026
*************** proc check_effective_target_arm_fp16_alt
*** 6085,6090 ****
--- 6085,6113 ----
  		check_effective_target_arm_fp16_alternative_ok_nocache]
  }
  
+ # Return 1 if the target supports executing FP16 alternative format
+ # instructions selected by arm_fp16_alternative_ok.
+ 
+ proc check_effective_target_arm_fp16_alternative_hw { } {
+     if { ! [check_effective_target_arm_fp16_alternative_ok] } {
+ 	return 0
+     }
+ 
+     global et_arm_fp16_alternative_flags
+     check_runtime arm_fp16_alternative_hw {
+ 	int
+ 	main (int argc, char **argv)
+ 	{
+ 	  __fp16 a = 1.0;
+ 	  float r;
+ 	  asm ("vcvtb.f32.f16 %0, %1"
+ 	       : "=w" (r) : "w" (a)
+ 	       : /* No clobbers.  */);
+ 	  return (r == 1.0) ? 0 : 1;
+ 	}
+     } "$et_arm_fp16_alternative_flags"
+ }
+ 
  # Return 1 if this is an ARM target supports specifying the FP16 none
  # format.  Some multilibs may be incompatible with the options needed.
  
*************** proc check_effective_target_aarch64_sve2
*** 6792,6797 ****
--- 6815,6837 ----
      }]
  }
  
+ # Return true if this is an AArch64 target that can run SVE2.3 code.
+ 
+ proc check_effective_target_aarch64_sve2p3_hw { } {
+     if { ![istarget aarch64*-*-*] } {
+ 	return 0
+     }
+     return [check_runtime aarch64_sve2p3_hw_available {
+ 	#pragma GCC target "+sve2p3"
+ 	int
+ 	main (void)
+ 	{
+ 	  asm volatile ("sdot z0.h,z0.b,z1.b");
+ 	  return 0;
+ 	}
+     }]
+ }
+ 
  # Return true if this is an AArch64 target that can run SVE code and
  # if its SVE vectors have exactly BITS bits.
  
*************** proc add_options_for_arm_fp16fml_neon {
*** 7373,7378 ****
--- 7413,7459 ----
      return "$flags $et_arm_fp16fml_neon_flags"
  }
  
+ # Return 1 if the target supports F16F32DOT
+ # instructions, 0 otherwise. This test is valid
+ # for AARCH64.
+ # Record the command line options needed.
+ 
+ proc check_effective_target_aarch64_f16f32dot_neon_ok_nocache { } {
+     global et_aarch64_f16f32dot_neon_flags
+     set et_aarch64_f16f32dot_neon_flags ""
+ 
+     if { ![istarget aarch64*-*-*] } {
+ 	return 0;
+     }
+ 
+     foreach flags {"" "" } {
+ 	if { [check_no_compiler_messages_nocache aarch64_f16f32dot_neon_ok object {
+ 	    #include <arm_neon.h>
+ 	    #if !defined (__ARM_FEATURE_F16F32DOT)
+ 	    #error "__ARM_FEATURE_F16F32DOT not defined"
+ 	    #endif
+ 	} "$flags -march=armv8.2-a+fp16+f16f32dot"] } {
+ 	    set et_aarch64_f16f32dot_neon_flags "$flags -march=armv8.2-a+fp16+f16f32dot"
+ 	    return 1
+ 	}
+     }
+ 
+     return 0;
+ }
+ 
+ proc check_effective_target_aarch64_f16f32dot_neon_ok { } {
+     return [check_cached_effective_target aarch64_f16f32dot_neon_ok \
+ 		check_effective_target_aarch64_f16f32dot_neon_ok_nocache]
+ }
+ 
+ proc add_options_for_aarch64_f16f32dot_neon { flags } {
+     if { ! [check_effective_target_aarch64_f16f32dot_neon_ok] } {
+ 	return "$flags"
+     }
+     global et_aarch64_f16f32dot_neon_flags
+     return "$flags $et_aarch64_f16f32dot_neon_flags"
+ }
+ 
  # Return 1 if the target supports BFloat16 SIMD instructions, 0 otherwise.
  # The test is valid for ARM and for AArch64.
  
*************** set exts {
*** 12968,12973 ****
--- 13049,13055 ----
      "sve-sha3" "f8f16mm" "f8f32mm" "sve-f16f32mm"
      "sme-f8f16" "sme-f8f32"
      "sme-b16b16" "sme-f16f16" "sme-i16i64" "sme" "sme2" "sme2p1" "sme2p2"
+     "sme2p3"
      "ssve-fp8dot2" "ssve-fp8dot4" "ssve-fp8fma" "sve-bfscale" "sme-lutv2"
      "ssve-fexpa" "ssve-bitperm" "ssve-aes"
  }
*************** proc check_effective_target_aarch64_asm_
*** 13014,13019 ****
--- 13096,13111 ----
      } else {
  	return 0
      }
+ }
+ 
+ proc check_effective_target_aarch64_asm_sve2p3_ok { } {
+     if { [istarget aarch64*-*-*] } {
+ 	return [check_no_compiler_messages aarch64_sve2p3_assembler object {
+ 	    __asm__ (".arch_extension sve2p3; sdot z0.h,z0.b,z1.b");
+ 	} "-march=armv8-a+sve2p3"]
+     } else {
+ 	return 0
+     }
  }
  
  proc check_effective_target_aarch64_small { } {
diff -Nrcpad gcc-17-20260727/gcc/tree-core.h gcc-17-20260802/gcc/tree-core.h
*** gcc-17-20260727/gcc/tree-core.h	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree-core.h	Sun Aug  2 22:32:16 2026
*************** enum omp_clause_code {
*** 602,607 ****
--- 602,614 ----
  
    /* OpenMP clause: uses_allocators.  */
    OMP_CLAUSE_USES_ALLOCATORS,
+ 
+   /* OpenMP clause: message (string-expr).
+      If the string expr is not null terminated, the length needs to be
+      stored in OMP_CLAUSE_MESSAGE_LEN.
+      Note that the 'severity' clause is handled as flag to 'message':
+      OMP_CLAUSE_MESSAGE_SEVERITY_WARN.  */
+   OMP_CLAUSE_MESSAGE
  };
  
  #undef DEFTREESTRUCT
diff -Nrcpad gcc-17-20260727/gcc/tree-outof-ssa.cc gcc-17-20260802/gcc/tree-outof-ssa.cc
*** gcc-17-20260727/gcc/tree-outof-ssa.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree-outof-ssa.cc	Sun Aug  2 22:32:16 2026
*************** along with GCC; see the file COPYING3.
*** 45,50 ****
--- 45,51 ----
  #include "tree-ssa-ter.h"
  #include "tree-ssa-coalesce.h"
  #include "tree-outof-ssa.h"
+ #include "cfgexpand.h"
  #include "dojump.h"
  #include "internal-fn.h"
  #include "gimple-fold.h"
*************** expand_phi_nodes (struct ssaexpand *sa)
*** 1061,1068 ****
     own artificial decl so the slots are distinguished at the source.
     The new decl carries a DECL_DEBUG_EXPR back to the user variable so debug
     info still attributes the storage to it (cf.  create_access_replacement in
!    tree-sra.cc).  PARM_DECLs and RESULT_DECLs are left alone, as they require
!    a single partition holding the canonical RTL.  */
  
  static void
  split_overlapping_partition_decls (var_map map)
--- 1062,1070 ----
     own artificial decl so the slots are distinguished at the source.
     The new decl carries a DECL_DEBUG_EXPR back to the user variable so debug
     info still attributes the storage to it (cf.  create_access_replacement in
!    tree-sra.cc).  A PARM_DECL or RESULT_DECL keeps the partition of its default
!    definition, which holds the canonical RTL, and only its other partitions are
!    split.  */
  
  static void
  split_overlapping_partition_decls (var_map map)
*************** split_overlapping_partition_decls (var_m
*** 1072,1085 ****
    auto_vec<tree> new_decl;
    new_decl.safe_grow_cleared (n);
    bool any = false;
  
    for (unsigned i = 0; i < n; i++)
      {
        tree repr = partition_to_var (map, i);
        if (!repr)
  	continue;
        tree var = SSA_NAME_VAR (repr);
!       if (!var || !VAR_P (var))
  	continue;
        /* Only partitions that will live in memory can end up with a
  	 misleading shared MEM_EXPR.  Mirror the decision that
--- 1074,1113 ----
    auto_vec<tree> new_decl;
    new_decl.safe_grow_cleared (n);
    bool any = false;
+   unsigned ver;
+   tree name;
+ 
+   /* set_rtl attaches the base variable of any name in a partition to that
+      partition's location, not just the one of its representative, so collect
+      what the names of each partition contribute.  A name with no base
+      variable contributes nothing, since set_rtl passes a type rather than a
+      decl for those and leaves the MEM_EXPR it has in place.  */
+   auto_vec<tree> part_var;
+   part_var.safe_grow_cleared (n);
+   FOR_EACH_SSA_NAME (ver, name, cfun)
+     {
+       int p = var_to_partition (map, name);
+       if (p == NO_PARTITION)
+ 	continue;
+       tree var = SSA_NAME_VAR (name);
+       if (!var)
+ 	continue;
+       part_var[p] = expand_leader_merge (part_var[p], var);
+     }
  
    for (unsigned i = 0; i < n; i++)
      {
        tree repr = partition_to_var (map, i);
        if (!repr)
  	continue;
+       /* Expansion hands set_rtl the representative before the other names,
+ 	 and expand_leader_merge keeps the variable it is given first unless a
+ 	 later one is DECL_IGNORED_P, so merging the two gives the variable
+ 	 this partition ends up with.  */
        tree var = SSA_NAME_VAR (repr);
!       if (part_var[i])
! 	var = expand_leader_merge (var, part_var[i]);
!       if (!var)
  	continue;
        /* Only partitions that will live in memory can end up with a
  	 misleading shared MEM_EXPR.  Mirror the decision that
*************** split_overlapping_partition_decls (var_m
*** 1123,1130 ****
    if (!any)
      return;
  
-   unsigned ver;
-   tree name;
    FOR_EACH_SSA_NAME (ver, name, cfun)
      {
        if (SSA_NAME_IS_DEFAULT_DEF (name))
--- 1151,1156 ----
diff -Nrcpad gcc-17-20260727/gcc/tree-pretty-print.cc gcc-17-20260802/gcc/tree-pretty-print.cc
*** gcc-17-20260727/gcc/tree-pretty-print.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree-pretty-print.cc	Sun Aug  2 22:32:16 2026
*************** dump_omp_clause (pretty_printer *pp, tre
*** 704,709 ****
--- 704,719 ----
  
      case OMP_CLAUSE_NUM_THREADS:
        pp_string (pp, "num_threads(");
+       if (OMP_CLAUSE_NUM_THREADS_STRICT (clause))
+ 	pp_string (pp, "strict");
+       if (OMP_CLAUSE_NUM_THREADS_STRICT (clause)
+ 	  && OMP_CLAUSE_NUM_THREADS_DIMS (clause))
+ 	pp_comma (pp);
+       if (OMP_CLAUSE_NUM_THREADS_DIMS (clause))
+ 	pp_string (pp, "dims()");
+       if (OMP_CLAUSE_NUM_THREADS_STRICT (clause)
+ 	  || OMP_CLAUSE_NUM_THREADS_DIMS (clause))
+ 	pp_colon (pp);
        dump_generic_node (pp, OMP_CLAUSE_NUM_THREADS_EXPR (clause),
  			 spc, flags, false);
        pp_right_paren (pp);
*************** dump_omp_clause (pretty_printer *pp, tre
*** 820,825 ****
--- 830,858 ----
        pp_string (pp, "mergeable");
        break;
  
+     case OMP_CLAUSE_MESSAGE:
+       if (OMP_CLAUSE_MESSAGE_EXPR (clause))
+ 	{
+ 	  pp_string (pp, "message(");
+ 	  dump_generic_node (pp, OMP_CLAUSE_MESSAGE_EXPR (clause),
+ 			     spc, flags, false);
+ 	  if (OMP_CLAUSE_MESSAGE_LEN (clause))
+ 	    {
+ 	      pp_string (pp, " [len:");
+ 	      dump_generic_node (pp, OMP_CLAUSE_MESSAGE_LEN (clause),
+ 				 spc, flags, false);
+ 	      pp_right_bracket (pp);
+ 	    }
+ 	  pp_right_paren (pp);
+ 	  if (OMP_CLAUSE_MESSAGE_SEVERITY_WARN (clause))
+ 	    pp_space (pp);
+ 	}
+       if (OMP_CLAUSE_MESSAGE_SEVERITY_WARN (clause))
+ 	pp_string (pp, "severity(warning)");
+       else
+ 	pp_string (pp, "severity(fatal)");
+       break;
+ 
      case OMP_CLAUSE_LINEAR:
        pp_string (pp, "linear(");
        if (OMP_CLAUSE_LINEAR_OLD_LINEAR_MODIFIER (clause))
*************** dump_omp_clause (pretty_printer *pp, tre
*** 1272,1277 ****
--- 1305,1312 ----
  
      case OMP_CLAUSE_NUM_TEAMS:
        pp_string (pp, "num_teams(");
+       if (OMP_CLAUSE_NUM_TEAMS_DIMS (clause))
+ 	pp_string (pp, "dims():");
        if (OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR (clause))
  	{
  	  dump_generic_node (pp, OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR (clause),
*************** dump_omp_clause (pretty_printer *pp, tre
*** 1285,1290 ****
--- 1320,1335 ----
  
      case OMP_CLAUSE_THREAD_LIMIT:
        pp_string (pp, "thread_limit(");
+       if (OMP_CLAUSE_THREAD_LIMIT_STRICT (clause))
+ 	pp_string (pp, "strict");
+       if (OMP_CLAUSE_THREAD_LIMIT_STRICT (clause)
+ 	  && OMP_CLAUSE_THREAD_LIMIT_DIMS (clause))
+ 	pp_comma (pp);
+       if (OMP_CLAUSE_THREAD_LIMIT_DIMS (clause))
+ 	pp_string (pp, "dims()");
+       if (OMP_CLAUSE_THREAD_LIMIT_STRICT (clause)
+ 	  || OMP_CLAUSE_THREAD_LIMIT_DIMS (clause))
+ 	pp_colon (pp);
        dump_generic_node (pp, OMP_CLAUSE_THREAD_LIMIT_EXPR (clause),
  			 spc, flags, false);
        pp_right_paren (pp);
diff -Nrcpad gcc-17-20260727/gcc/tree-ssa-ifcombine.cc gcc-17-20260802/gcc/tree-ssa-ifcombine.cc
*** gcc-17-20260727/gcc/tree-ssa-ifcombine.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree-ssa-ifcombine.cc	Sun Aug  2 22:32:16 2026
*************** ifcombine_ifandif (basic_block inner_con
*** 1076,1085 ****
      }
  
    /* See if we have two comparisons that we can merge into one.  */
!   else bits_test_failed:
!     if (TREE_CODE_CLASS (gimple_cond_code (inner_cond)) == tcc_comparison
! 	   && TREE_CODE_CLASS (gimple_cond_code (outer_cond)) == tcc_comparison)
      {
        tree t, ts = NULL_TREE;
        enum tree_code inner_cond_code = gimple_cond_code (inner_cond);
        enum tree_code outer_cond_code = gimple_cond_code (outer_cond);
--- 1076,1084 ----
      }
  
    /* See if we have two comparisons that we can merge into one.  */
!   else
      {
+     bits_test_failed:
        tree t, ts = NULL_TREE;
        enum tree_code inner_cond_code = gimple_cond_code (inner_cond);
        enum tree_code outer_cond_code = gimple_cond_code (outer_cond);
diff -Nrcpad gcc-17-20260727/gcc/tree-ssa-loop-im.cc gcc-17-20260802/gcc/tree-ssa-loop-im.cc
*** gcc-17-20260727/gcc/tree-ssa-loop-im.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree-ssa-loop-im.cc	Sun Aug  2 22:32:16 2026
*************** ref_indep_loop_p (class loop *loop, im_m
*** 3257,3263 ****
        /* tri-state, { unknown, independent, dependent }  */
        dep_state state = query_loop_dependence (loop, ref, kind);
        if (state != dep_unknown)
! 	return state == dep_independent ? true : false;
  
        class loop *inner = loop->inner;
        while (inner)
--- 3257,3263 ----
        /* tri-state, { unknown, independent, dependent }  */
        dep_state state = query_loop_dependence (loop, ref, kind);
        if (state != dep_unknown)
! 	return state == dep_independent;
  
        class loop *inner = loop->inner;
        while (inner)
diff -Nrcpad gcc-17-20260727/gcc/tree-ssa-phiopt.cc gcc-17-20260802/gcc/tree-ssa-phiopt.cc
*** gcc-17-20260727/gcc/tree-ssa-phiopt.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree-ssa-phiopt.cc	Sun Aug  2 22:32:16 2026
*************** cond_store_replacement_limited (basic_bl
*** 3683,3688 ****
--- 3683,3690 ----
        tree beforelhs = gimple_assign_lhs (vdef_before);
        /* Only allow the store to be right before the condition.  */
        if (gimple_bb (vdef_before) == cond_bb
+ 	  /* This can't be a clobber */
+ 	  && !gimple_clobber_p (vdef_before)
  	  /* An exact match is only supported.
  	     FIXME: Allow for clique/base mismatch?  */
  	  && operand_equal_p (lhs, beforelhs))
*************** factor_out_conditional_load (edge e0, ed
*** 4287,4292 ****
--- 4289,4297 ----
  	 FIXME: Refine to check ADDRESSABLE bit.  */
        if (TREE_CODE (p0) != SSA_NAME || TREE_CODE (p1) != SSA_NAME)
  	return false;
+       // Incompatible address spaces or differnt function pointers could show up here.
+       if (!types_compatible_p (TREE_TYPE (p0), TREE_TYPE (p1)))
+ 	return false;
        /* Build P' = PHI <P, Q> and the single load result = *P'.  */
        newptr = make_ssa_name (TREE_TYPE (p0));
        gphi *pphi = create_phi_node (newptr, merge);
diff -Nrcpad gcc-17-20260727/gcc/tree-ssa-sccvn.cc gcc-17-20260802/gcc/tree-ssa-sccvn.cc
*** gcc-17-20260727/gcc/tree-ssa-sccvn.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree-ssa-sccvn.cc	Sun Aug  2 22:32:16 2026
*************** valueized_wider_op (tree wide_type, tree
*** 5642,5647 ****
--- 5642,5678 ----
    return NULL_TREE;
  }
  
+ /* Return true if RESULT, the result of a value-number lookup, may be
+    used at the statement being visited.  A result of wrapping type can
+    be inserted for code hoisting without introducing undefined
+    overflow; anything else has to be available.  See PR86554.  */
+ 
+ static bool
+ vn_nary_result_avail_or_insertable_p (tree result)
+ {
+   return (TYPE_OVERFLOW_WRAPS (TREE_TYPE (result))
+ 	  || (rpo_avail && vn_context_bb
+ 	      && rpo_avail->eliminate_avail (vn_context_bb, result)));
+ }
+ 
+ /* If OP is an SSA name defined by a conversion from an integral type,
+    return the valueized source of the conversion, otherwise return
+    NULL_TREE.  */
+ 
+ static tree
+ ssa_integral_conversion_op (tree op)
+ {
+   if (TREE_CODE (op) != SSA_NAME)
+     return NULL_TREE;
+   gassign *def = dyn_cast <gassign *> (SSA_NAME_DEF_STMT (op));
+   if (!def || !CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (def)))
+     return NULL_TREE;
+   const tree src = gimple_assign_rhs1 (def);
+   if (!INTEGRAL_TYPE_P (TREE_TYPE (src)))
+     return NULL_TREE;
+   return vn_valueize (src);
+ }
+ 
  /* Visit a nary operator RHS, value number it, and return true if the
     value number of LHS has changed as a result.  */
  
*************** visit_nary_op (tree lhs, gassign *stmt)
*** 5698,5712 ****
  		  ops[0] = vn_nary_op_lookup_pieces
  		      (2, gimple_assign_rhs_code (def), type, ops, NULL);
  		  /* We have wider operation available.  */
! 		  if (ops[0]
! 		      /* If the leader is a wrapping operation we can
! 		         insert it for code hoisting w/o introducing
! 			 undefined overflow.  If it is not it has to
! 			 be available.  See PR86554.  */
! 		      && (TYPE_OVERFLOW_WRAPS (TREE_TYPE (ops[0]))
! 			  || (rpo_avail && vn_context_bb
! 			      && rpo_avail->eliminate_avail (vn_context_bb,
! 							     ops[0]))))
  		    {
  		      unsigned lhs_prec = TYPE_PRECISION (type);
  		      unsigned rhs_prec = TYPE_PRECISION (TREE_TYPE (rhs1));
--- 5729,5735 ----
  		  ops[0] = vn_nary_op_lookup_pieces
  		      (2, gimple_assign_rhs_code (def), type, ops, NULL);
  		  /* We have wider operation available.  */
! 		  if (ops[0] && vn_nary_result_avail_or_insertable_p (ops[0]))
  		    {
  		      unsigned lhs_prec = TYPE_PRECISION (type);
  		      unsigned rhs_prec = TYPE_PRECISION (TREE_TYPE (rhs1));
*************** visit_nary_op (tree lhs, gassign *stmt)
*** 5747,5752 ****
--- 5770,5841 ----
  	    }
  	}
        break;
+     case PLUS_EXPR:
+     case MINUS_EXPR:
+       {
+ 	/* Match (T)A +- B against an existing (T)(A +- B'), the inverse
+ 	   of the conversion case above, so the redundancy is detected
+ 	   regardless of the order the two forms appear in the IL.
+ 	   See PR124545.  The narrow operation is only ever looked up,
+ 	   never created: assuming no overflow is only valid for
+ 	   operations the program actually executes, so the narrow
+ 	   leader has to be available.  Creating the narrow operation
+ 	   instead is wrong-code, see PR126415.  */
+ 	const tree narrow1 = ssa_integral_conversion_op (vn_valueize (rhs1));
+ 	if (!INTEGRAL_TYPE_P (type) || !narrow1)
+ 	  break;
+ 	const tree ntype = TREE_TYPE (narrow1);
+ 	/* A sign-change keeps the value bit-identical; a widening is
+ 	   only handled when the narrow operation cannot wrap.  */
+ 	const bool sign_change_p
+ 	  = TYPE_PRECISION (ntype) == TYPE_PRECISION (type);
+ 	const bool nowrap_widening_p
+ 	  = (TYPE_PRECISION (ntype) < TYPE_PRECISION (type)
+ 	     && TYPE_OVERFLOW_UNDEFINED (ntype));
+ 	if (!sign_change_p && !nowrap_widening_p)
+ 	  break;
+ 	/* Determine the narrow variant of the second operand: a
+ 	   constant that narrows and extends back unchanged, or a
+ 	   conversion from the same narrow type.  */
+ 	const tree rhs2 = gimple_assign_rhs2 (stmt);
+ 	tree narrow2 = NULL_TREE;
+ 	if (TREE_CODE (rhs2) == INTEGER_CST)
+ 	  {
+ 	    const widest_int cst = wi::to_widest (rhs2);
+ 	    const widest_int narrowed
+ 	      = wi::ext (cst, TYPE_PRECISION (ntype), TYPE_SIGN (ntype));
+ 	    const widest_int extended
+ 	      = wi::ext (narrowed, TYPE_PRECISION (type), TYPE_SIGN (type));
+ 	    if (cst == extended)
+ 	      narrow2 = fold_convert (ntype, rhs2);
+ 	  }
+ 	else if (TREE_CODE (rhs2) == SSA_NAME)
+ 	  {
+ 	    const tree op = ssa_integral_conversion_op (vn_valueize (rhs2));
+ 	    if (op && types_compatible_p (TREE_TYPE (op), ntype))
+ 	      narrow2 = op;
+ 	  }
+ 	if (!narrow2)
+ 	  break;
+ 	tree ops[3] = { narrow1, narrow2 };
+ 	const tree narrow_val
+ 	  = vn_nary_op_lookup_pieces (2, code, ntype, ops, NULL);
+ 	/* We have a narrower or sign-changed operation available.  */
+ 	if (narrow_val && vn_nary_result_avail_or_insertable_p (narrow_val))
+ 	  {
+ 	    gimple_match_op match_op (gimple_match_cond::UNCOND,
+ 				      NOP_EXPR, type, narrow_val);
+ 	    result = vn_nary_build_or_lookup (&match_op);
+ 	    if (result)
+ 	      {
+ 		const bool changed = set_ssa_val_to (lhs, result);
+ 		if (TREE_CODE (result) == SSA_NAME)
+ 		  vn_nary_op_insert_stmt (stmt, result);
+ 		return changed;
+ 	      }
+ 	  }
+       }
+       break;
      case BIT_AND_EXPR:
        if (INTEGRAL_TYPE_P (type)
  	  && TREE_CODE (rhs1) == SSA_NAME
diff -Nrcpad gcc-17-20260727/gcc/tree-vect-data-refs.cc gcc-17-20260802/gcc/tree-vect-data-refs.cc
*** gcc-17-20260727/gcc/tree-vect-data-refs.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree-vect-data-refs.cc	Sun Aug  2 22:32:16 2026
*************** vect_analyze_early_break_dependences (lo
*** 729,735 ****
  	{
  	  gimple *stmt = gsi_stmt (gsi);
  	  gsi_prev (&gsi);
! 	  if (is_gimple_debug (stmt))
  	    continue;
  
  	  stmt_vec_info orig_stmt_vinfo = loop_vinfo->lookup_stmt (stmt);
--- 729,735 ----
  	{
  	  gimple *stmt = gsi_stmt (gsi);
  	  gsi_prev (&gsi);
! 	  if (is_gimple_debug (stmt) || is_a <glabel *> (stmt))
  	    continue;
  
  	  stmt_vec_info orig_stmt_vinfo = loop_vinfo->lookup_stmt (stmt);
diff -Nrcpad gcc-17-20260727/gcc/tree-vect-loop.cc gcc-17-20260802/gcc/tree-vect-loop.cc
*** gcc-17-20260727/gcc/tree-vect-loop.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree-vect-loop.cc	Sun Aug  2 22:32:16 2026
*************** _loop_vec_info::_loop_vec_info (class lo
*** 805,811 ****
  	{
  	  gimple *stmt = gsi_stmt (si);
  	  gimple_set_uid (stmt, 0);
! 	  if (is_gimple_debug (stmt))
  	    continue;
  	  add_stmt (stmt);
  	  /* If .GOMP_SIMD_LANE call for the current loop has 3 arguments, the
--- 805,811 ----
  	{
  	  gimple *stmt = gsi_stmt (si);
  	  gimple_set_uid (stmt, 0);
! 	  if (is_gimple_debug (stmt) || is_a <glabel *> (stmt))
  	    continue;
  	  add_stmt (stmt);
  	  /* If .GOMP_SIMD_LANE call for the current loop has 3 arguments, the
*************** vectorizable_reduction (loop_vec_info lo
*** 7208,7213 ****
--- 7208,7223 ----
        return false;
      }
  
+   /* We'll verify the reduction operation only later - avoid
+      all operations that mismatch on the number of SLP children.  */
+   if (op.num_ops != SLP_TREE_CHILDREN (slp_for_stmt_info).length ())
+     {
+       if (dump_enabled_p ())
+ 	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ 			 "unsupported reduction operation.\n");
+       return false;
+     }
+ 
    /* All uses but the last are expected to be defined in the loop.
       The last use is the reduction variable.  In case of nested cycle this
       assumption is not true: we use reduc_index to record the index of the
*************** vectorizable_live_operation (vec_info *v
*** 10356,10362 ****
  
    /* Get the correct slp vectorized stmt.  */
    tree vec_lhs = SLP_TREE_VEC_DEFS (slp_node)[vec_entry];
-   gimple *vec_stmt = SSA_NAME_DEF_STMT (vec_lhs);
  
    /* In case we need to early break vectorize also get the first stmt.  */
    tree vec_lhs0 = SLP_TREE_VEC_DEFS (slp_node)[0];
--- 10366,10371 ----
*************** vectorizable_live_operation (vec_info *v
*** 10444,10450 ****
        if (TREE_CODE (new_tree) == SSA_NAME
  	  && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (lhs))
  	SSA_NAME_OCCURS_IN_ABNORMAL_PHI (new_tree) = 1;
!       if (is_a <gphi *> (vec_stmt))
  	{
  	  gimple_stmt_iterator si = gsi_after_labels (gimple_bb (vec_stmt));
  	  gsi_insert_seq_before (&si, stmts, GSI_SAME_STMT);
--- 10453,10462 ----
        if (TREE_CODE (new_tree) == SSA_NAME
  	  && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (lhs))
  	SSA_NAME_OCCURS_IN_ABNORMAL_PHI (new_tree) = 1;
!       gimple *vec_stmt = SSA_NAME_DEF_STMT (vec_lhs);
!       if (TREE_CODE (vec_lhs) != SSA_NAME || SSA_NAME_IS_DEFAULT_DEF (vec_lhs))
! 	vinfo->insert_seq_on_entry (stmt_info, stmts);
!       else if (is_a <gphi *> (vec_stmt))
  	{
  	  gimple_stmt_iterator si = gsi_after_labels (gimple_bb (vec_stmt));
  	  gsi_insert_seq_before (&si, stmts, GSI_SAME_STMT);
*************** vectorizable_live_operation (vec_info *v
*** 10495,10500 ****
--- 10507,10514 ----
  		edge e;
  		if (TREE_CODE (new_tree) == SSA_NAME
  		    && !SSA_NAME_IS_DEFAULT_DEF (new_tree)
+ 		    && TREE_CODE (vec_lhs) == SSA_NAME
+ 		    && !SSA_NAME_IS_DEFAULT_DEF (vec_lhs)
  		    && (gimple_bb (use_stmt)->loop_father
  			!= gimple_bb (vec_stmt)->loop_father)
  		    /* But a replacement in a LC PHI is OK.  This happens
diff -Nrcpad gcc-17-20260727/gcc/tree-vect-patterns.cc gcc-17-20260802/gcc/tree-vect-patterns.cc
*** gcc-17-20260727/gcc/tree-vect-patterns.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree-vect-patterns.cc	Sun Aug  2 22:32:16 2026
*************** vect_recog_popcount_clz_ctz_ffs_pattern
*** 2258,2263 ****
--- 2258,2268 ----
  
    bool supported
      = direct_internal_fn_supported_p (ifn, vec_type, OPTIMIZE_FOR_SPEED);
+   /* We cannot rely on the reduction check in vect_recog_ctz_ffs_pattern
+      because we do not set up the temporary pattern stmt finally for
+      the recursive analysis.  */
+   if (!supported && vect_is_reduction (stmt_vinfo))
+     return NULL;
    if (!supported)
      switch (ifn)
        {
diff -Nrcpad gcc-17-20260727/gcc/tree-vect-slp.cc gcc-17-20260802/gcc/tree-vect-slp.cc
*** gcc-17-20260727/gcc/tree-vect-slp.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree-vect-slp.cc	Sun Aug  2 22:32:16 2026
*************** vect_analyze_slp_reduc_chain (loop_vec_i
*** 4398,4404 ****
    do
      {
        stmt_vec_info stmt = next_stmt;
!       gimple_match_op op;
        if (!gimple_extract_op (STMT_VINFO_STMT (stmt), &op))
  	gcc_unreachable ();
        tree reduc_def = gimple_arg (STMT_VINFO_STMT (stmt),
--- 4398,4404 ----
    do
      {
        stmt_vec_info stmt = next_stmt;
!       gimple_match_op op, orig_op;
        if (!gimple_extract_op (STMT_VINFO_STMT (stmt), &op))
  	gcc_unreachable ();
        tree reduc_def = gimple_arg (STMT_VINFO_STMT (stmt),
*************** vect_analyze_slp_reduc_chain (loop_vec_i
*** 4406,4419 ****
        next_stmt = vect_stmt_to_vectorize (vinfo->lookup_def (reduc_def));
        gcc_assert (is_a <gphi *> (STMT_VINFO_STMT (next_stmt))
  		  || STMT_VINFO_REDUC_IDX (next_stmt) != -1);
!       if (!gimple_extract_op (STMT_VINFO_STMT (vect_orig_stmt (stmt)), &op))
  	gcc_unreachable ();
        if (CONVERT_EXPR_CODE_P (op.code)
  	  && tree_nop_conversion_p (op.type, TREE_TYPE (op.ops[0]))
  	  && (first
  	      || is_a <gphi *> (STMT_VINFO_STMT (next_stmt))))
  	;
!       else if (code != op.code)
  	{
  	  fail = true;
  	  break;
--- 4406,4420 ----
        next_stmt = vect_stmt_to_vectorize (vinfo->lookup_def (reduc_def));
        gcc_assert (is_a <gphi *> (STMT_VINFO_STMT (next_stmt))
  		  || STMT_VINFO_REDUC_IDX (next_stmt) != -1);
!       if (!gimple_extract_op (STMT_VINFO_STMT (vect_orig_stmt (stmt)),
! 			      &orig_op))
  	gcc_unreachable ();
        if (CONVERT_EXPR_CODE_P (op.code)
  	  && tree_nop_conversion_p (op.type, TREE_TYPE (op.ops[0]))
  	  && (first
  	      || is_a <gphi *> (STMT_VINFO_STMT (next_stmt))))
  	;
!       else if (code != orig_op.code)
  	{
  	  fail = true;
  	  break;
*************** _bb_vec_info::_bb_vec_info (vec<basic_bl
*** 8647,8653 ****
  	{
  	  gimple *stmt = gsi_stmt (gsi);
  	  gimple_set_uid (stmt, 0);
! 	  if (is_gimple_debug (stmt))
  	    continue;
  	  add_stmt (stmt);
  	}
--- 8648,8654 ----
  	{
  	  gimple *stmt = gsi_stmt (gsi);
  	  gimple_set_uid (stmt, 0);
! 	  if (is_gimple_debug (stmt) || is_a <glabel *> (stmt))
  	    continue;
  	  add_stmt (stmt);
  	}
*************** vectorizable_bb_reduc_epilogue (slp_inst
*** 9211,9217 ****
  	 be included here.  */
        || (needs_fold_left_reduction_p (TREE_TYPE (vectype), reduc_code)
  	  && (!instance->remain_defs.is_empty ()
! 	      || maybe_ne (TYPE_VECTOR_SUBPARTS (vectype), 2u))))
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
--- 9212,9218 ----
  	 be included here.  */
        || (needs_fold_left_reduction_p (TREE_TYPE (vectype), reduc_code)
  	  && (!instance->remain_defs.is_empty ()
! 	      || SLP_TREE_LANES (SLP_INSTANCE_TREE (instance)) != 2)))
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
*************** vect_bb_vectorization_profitable_p (bb_v
*** 9651,9657 ****
  
    if (dump_enabled_p ())
      {
!       dump_printf_loc (MSG_NOTE, vect_location, "Costing subgraph: \n");
        hash_set<slp_tree> visited;
        FOR_EACH_VEC_ELT (slp_instances, i, instance)
  	vect_print_slp_graph (MSG_NOTE, vect_location,
--- 9652,9662 ----
  
    if (dump_enabled_p ())
      {
!       dump_printf_loc (MSG_NOTE, vect_location, "Costing subgraph:\n");
!       FOR_EACH_VEC_ELT (slp_instances, i, instance)
! 	dump_printf_loc (MSG_NOTE, vect_location, "   entry instance %p -> "
! 			 "node %p\n", (void *)instance,
! 			 (void *)SLP_INSTANCE_TREE (instance));
        hash_set<slp_tree> visited;
        FOR_EACH_VEC_ELT (slp_instances, i, instance)
  	vect_print_slp_graph (MSG_NOTE, vect_location,
*************** vect_add_slp_permutation (vec_info *vinf
*** 11364,11370 ****
        first_def = gimple_assign_lhs (conv_stmt);
      }
    gassign *perm_stmt;
-   tree perm_dest = make_ssa_name (vectype);
    if (mask_vec)
      {
        if (operand_equal_p (TYPE_SIZE (TREE_TYPE (first_def)),
--- 11369,11374 ----
*************** vect_add_slp_permutation (vec_info *vinf
*** 11378,11383 ****
--- 11382,11388 ----
  	  vect_finish_stmt_generation (vinfo, NULL, conv_stmt, gsi);
  	  second_def = gimple_assign_lhs (conv_stmt);
  	}
+       tree perm_dest = make_ssa_name (vectype);
        perm_stmt = gimple_build_assign (perm_dest, VEC_PERM_EXPR,
  				       first_def, second_def,
  				       mask_vec);
*************** vect_add_slp_permutation (vec_info *vinf
*** 11395,11400 ****
--- 11400,11406 ----
  	{
  	  /* For identity permutes we still need to handle the case
  	     of offsetted extracts or concats.  */
+ 	  tree perm_dest = make_ssa_name (vectype);
  	  unsigned HOST_WIDE_INT c;
  	  if (known_le (TYPE_VECTOR_SUBPARTS (vectype), def_nunits))
  	    {
*************** vect_add_slp_permutation (vec_info *vinf
*** 11419,11427 ****
  	}
        else
  	{
- 	  /* We need a copy here in case the def was external.  */
  	  gcc_assert (known_eq (eltno, 0U));
! 	  perm_stmt = gimple_build_assign (perm_dest, def);
  	}
      }
    vect_finish_stmt_generation (vinfo, NULL, perm_stmt, gsi);
--- 11425,11433 ----
  	}
        else
  	{
  	  gcc_assert (known_eq (eltno, 0U));
! 	  node->push_vec_def (def);
! 	  return;
  	}
      }
    vect_finish_stmt_generation (vinfo, NULL, perm_stmt, gsi);
*************** vect_schedule_slp_node (vec_info *vinfo,
*** 11928,11944 ****
  	    unsigned j;
  	    tree vdef;
  	    FOR_EACH_VEC_ELT (SLP_TREE_VEC_DEFS (child), j, vdef)
! 	      {
! 		gimple *vstmt = SSA_NAME_DEF_STMT (vdef);
! 		if (!last_stmt)
! 		  last_stmt = vstmt;
! 		else if (vect_stmt_dominates_stmt_p (last_stmt, vstmt))
! 		  last_stmt = vstmt;
! 		else if (vect_stmt_dominates_stmt_p (vstmt, last_stmt))
! 		  ;
! 		else
! 		  gcc_unreachable ();
! 	      }
  	  }
  	else if (!SLP_TREE_VECTYPE (child))
  	  {
--- 11934,11952 ----
  	    unsigned j;
  	    tree vdef;
  	    FOR_EACH_VEC_ELT (SLP_TREE_VEC_DEFS (child), j, vdef)
! 	      if (TREE_CODE (vdef) == SSA_NAME
! 		  && !SSA_NAME_IS_DEFAULT_DEF (vdef))
! 		{
! 		  gimple *vstmt = SSA_NAME_DEF_STMT (vdef);
! 		  if (!last_stmt)
! 		    last_stmt = vstmt;
! 		  else if (vect_stmt_dominates_stmt_p (last_stmt, vstmt))
! 		    last_stmt = vstmt;
! 		  else if (vect_stmt_dominates_stmt_p (vstmt, last_stmt))
! 		    ;
! 		  else
! 		    gcc_unreachable ();
! 		}
  	  }
  	else if (!SLP_TREE_VECTYPE (child))
  	  {
diff -Nrcpad gcc-17-20260727/gcc/tree-vect-stmts.cc gcc-17-20260802/gcc/tree-vect-stmts.cc
*** gcc-17-20260727/gcc/tree-vect-stmts.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree-vect-stmts.cc	Sun Aug  2 22:32:16 2026
*************** vectorizable_store (vec_info *vinfo,
*** 8304,8310 ****
  
    /* Transform.  */
  
!   ensure_base_align (dr_info);
  
    if (STMT_VINFO_SIMD_LANE_ACCESS_P (stmt_info) >= 3)
      {
--- 8304,8311 ----
  
    /* Transform.  */
  
!   if (!costing_p)
!     ensure_base_align (dr_info);
  
    if (STMT_VINFO_SIMD_LANE_ACCESS_P (stmt_info) >= 3)
      {
*************** vectorizable_load (vec_info *vinfo,
*** 9986,9992 ****
    /* Transform.  */
  
    dr_vec_info *dr_info = STMT_VINFO_DR_INFO (stmt_info), *first_dr_info = NULL;
!   ensure_base_align (dr_info);
  
    if (memory_access_type == VMAT_INVARIANT)
      {
--- 9987,9994 ----
    /* Transform.  */
  
    dr_vec_info *dr_info = STMT_VINFO_DR_INFO (stmt_info), *first_dr_info = NULL;
!   if (!costing_p)
!     ensure_base_align (dr_info);
  
    if (memory_access_type == VMAT_INVARIANT)
      {
diff -Nrcpad gcc-17-20260727/gcc/tree-vectorizer.h gcc-17-20260802/gcc/tree-vectorizer.h
*** gcc-17-20260727/gcc/tree-vectorizer.h	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree-vectorizer.h	Sun Aug  2 22:32:16 2026
*************** typedef struct _slp_tree *slp_tree;
*** 31,36 ****
--- 31,37 ----
  #include "tree-ssa-operands.h"
  #include "gimple-match.h"
  #include "dominance.h"
+ #include "ssa.h"
  
  /* Used for naming of new temporaries.  */
  enum vect_var_kind {
*************** vect_is_extending_load (class vec_info *
*** 3000,3005 ****
--- 3001,3034 ----
  	  && DR_IS_READ (STMT_VINFO_DATA_REF (def_stmt_info)));
  }
  
+ /* Return true if STMT_INFO truncates the input of a store.  */
+ inline bool
+ vect_is_truncating_store (class vec_info *vinfo, stmt_vec_info stmt_info)
+ {
+   /* Although this is quite large for an inline function, this part
+      at least should be inline.  */
+   gassign *assign = dyn_cast<gassign *> (stmt_info->stmt);
+   if (!assign || !CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (assign)))
+     return false;
+ 
+   tree rhs = gimple_assign_rhs1 (stmt_info->stmt);
+   tree lhs = gimple_assign_lhs (assign);
+   tree lhs_type = TREE_TYPE (lhs);
+   tree rhs_type = TREE_TYPE (rhs);
+   if (!INTEGRAL_TYPE_P (lhs_type) || !INTEGRAL_TYPE_P (rhs_type)
+       || TYPE_PRECISION (lhs_type) >= TYPE_PRECISION (rhs_type))
+     return false;
+ 
+   gimple *use_stmt;
+   use_operand_p use_p;
+   if (!single_imm_use (lhs, &use_p, &use_stmt))
+     return false;
+ 
+   stmt_vec_info use_stmt_info = vinfo->lookup_stmt (use_stmt);
+   return (use_stmt_info && STMT_VINFO_DATA_REF (use_stmt_info)
+ 	  && DR_IS_WRITE (STMT_VINFO_DATA_REF (use_stmt_info)));
+ }
+ 
  /* Return true if STMT_INFO is an integer truncation.  */
  inline bool
  vect_is_integer_truncation (stmt_vec_info stmt_info)
diff -Nrcpad gcc-17-20260727/gcc/tree.cc gcc-17-20260802/gcc/tree.cc
*** gcc-17-20260727/gcc/tree.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree.cc	Sun Aug  2 22:32:16 2026
*************** unsigned const char omp_clause_num_ops[]
*** 400,405 ****
--- 400,406 ----
    1, /* OMP_CLAUSE_NOCONTEXT */
    1, /* OMP_CLAUSE_DYN_GROUPPRIVATE  */
    3, /* OMP_CLAUSE_USES_ALLOCATORS */
+   2, /* OMP_CLAUSE_MESSAGE */
  };
  
  const char * const omp_clause_code_name[] =
*************** const char * const omp_clause_code_name[
*** 505,510 ****
--- 506,512 ----
    "nocontext",
    "dyn_groupprivate",
    "uses_allocators",
+   "message"
  };
  
  /* Unless specific to OpenACC, we tend to internally maintain OpenMP-centric
*************** ssa_uniform_vector_p (tree op)
*** 10876,10881 ****
--- 10878,10888 ----
        gimple *def_stmt = SSA_NAME_DEF_STMT (op);
        if (gimple_assign_single_p (def_stmt))
  	return uniform_vector_p (gimple_assign_rhs1 (def_stmt));
+       /* A VEC_DUPLICATE_EXPR is a unary assignment, so it is not covered
+ 	 by the gimple_assign_single_p case above.  */
+       if (is_gimple_assign (def_stmt)
+ 	  && gimple_assign_rhs_code (def_stmt) == VEC_DUPLICATE_EXPR)
+ 	return gimple_assign_rhs1 (def_stmt);
      }
    return NULL_TREE;
  }
diff -Nrcpad gcc-17-20260727/gcc/tree.h gcc-17-20260802/gcc/tree.h
*** gcc-17-20260727/gcc/tree.h	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/tree.h	Sun Aug  2 22:32:16 2026
*************** class auto_suppress_location_wrappers
*** 1864,1869 ****
--- 1864,1879 ----
    TREE_PRIVATE (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_GRAINSIZE))
  #define OMP_CLAUSE_NUM_TASKS_STRICT(NODE) \
    TREE_PRIVATE (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_NUM_TASKS))
+ #define OMP_CLAUSE_NUM_THREADS_STRICT(NODE) \
+   TREE_PRIVATE (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_NUM_THREADS))
+ #define OMP_CLAUSE_THREAD_LIMIT_STRICT(NODE) \
+   TREE_PRIVATE (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_THREAD_LIMIT))
+ #define OMP_CLAUSE_NUM_TEAMS_DIMS(NODE) \
+   TREE_PROTECTED (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_NUM_TEAMS))
+ #define OMP_CLAUSE_NUM_THREADS_DIMS(NODE) \
+   TREE_PROTECTED (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_NUM_THREADS))
+ #define OMP_CLAUSE_THREAD_LIMIT_DIMS(NODE) \
+   TREE_PROTECTED (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_THREAD_LIMIT))
  
  /* OpenACC clause expressions  */
  #define OMP_CLAUSE_EXPR(NODE, CLAUSE) \
*************** class auto_suppress_location_wrappers
*** 1909,1914 ****
--- 1919,1935 ----
  #define OMP_CLAUSE_DOACROSS_DEPEND(NODE) \
    TREE_PROTECTED (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_DOACROSS))
  
+ /* If the string passed to the 'message' clause is not null terminated,
+    OMP_CLAUSE_MESSAGE_LEN must be set.  */
+ #define OMP_CLAUSE_MESSAGE_EXPR(NODE) \
+   OMP_CLAUSE_OPERAND ( \
+     OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MESSAGE), 0)
+ #define OMP_CLAUSE_MESSAGE_LEN(NODE) \
+   OMP_CLAUSE_OPERAND ( \
+     OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MESSAGE), 1)
+ #define OMP_CLAUSE_MESSAGE_SEVERITY_WARN(NODE) \
+   (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MESSAGE)->base.public_flag)
+ 
  #define OMP_CLAUSE_MAP_KIND(NODE) \
    ((enum gomp_map_kind) OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MAP)->omp_clause.subcode.map_kind)
  #define OMP_CLAUSE_SET_MAP_KIND(NODE, MAP_KIND) \
diff -Nrcpad gcc-17-20260727/gcc/value-range-pretty-print.cc gcc-17-20260802/gcc/value-range-pretty-print.cc
*** gcc-17-20260727/gcc/value-range-pretty-print.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/value-range-pretty-print.cc	Sun Aug  2 22:32:16 2026
*************** vrange_printer::visit (const frange &r)
*** 219,233 ****
        print_frange_nan (r);
        return;
      }
!   pp_character (pp, '[');
!   bool has_endpoints = !r.known_isnan ();
!   if (has_endpoints)
!     {
!       print_real_value (type, r.lower_bound ());
!       pp_string (pp, ", ");
!       print_real_value (type, r.upper_bound ());
!     }
!   pp_character (pp, ']');
    print_frange_nan (r);
  }
  
--- 219,235 ----
        print_frange_nan (r);
        return;
      }
!   if (r.known_isnan ())
!     pp_string (pp, "[]");
!   else
!     for (unsigned i = 0; i < r.num_pairs (); ++i)
!       {
! 	pp_character (pp, '[');
! 	print_real_value (type, r.lower_bound (i));
! 	pp_string (pp, ", ");
! 	print_real_value (type, r.upper_bound (i));
! 	pp_character (pp, ']');
!       }
    print_frange_nan (r);
  }
  
diff -Nrcpad gcc-17-20260727/gcc/value-range-storage.cc gcc-17-20260802/gcc/value-range-storage.cc
*** gcc-17-20260727/gcc/value-range-storage.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/value-range-storage.cc	Sun Aug  2 22:32:16 2026
*************** debug (const irange_storage &storage)
*** 507,531 ****
  // frange_storage implementation
  //============================================================================
  
  // Allocate a new frange_storage object initialized to R.
  
  frange_storage *
  frange_storage::alloc (vrange_internal_alloc &allocator, const frange &r)
  {
!   size_t size = sizeof (frange_storage);
!   frange_storage *p = static_cast <frange_storage *> (allocator.alloc (size));
    new (p) frange_storage (r);
    return p;
  }
  
  void
  frange_storage::set_frange (const frange &r)
  {
    gcc_checking_assert (fits_p (r));
  
    m_kind = r.m_kind;
!   m_min = r.m_min;
!   m_max = r.m_max;
    m_pos_nan = r.m_pos_nan;
    m_neg_nan = r.m_neg_nan;
  }
--- 507,546 ----
  // frange_storage implementation
  //============================================================================
  
+ // Return the number of bytes to allocate for an frange_storage holding R.
+ 
+ size_t
+ frange_storage::size (const frange &r)
+ {
+   return sizeof (frange_storage) + (r.num_pairs () - 1) * sizeof (frange_pair);
+ }
+ 
  // Allocate a new frange_storage object initialized to R.
  
  frange_storage *
  frange_storage::alloc (vrange_internal_alloc &allocator, const frange &r)
  {
!   frange_storage *p
!     = static_cast <frange_storage *> (allocator.alloc (size (r)));
    new (p) frange_storage (r);
    return p;
  }
  
+ frange_storage::frange_storage (const frange &r)
+   : vrange_storage (VR_FRANGE), m_max_ranges (r.num_pairs ())
+ {
+   set_frange (r);
+ }
+ 
  void
  frange_storage::set_frange (const frange &r)
  {
    gcc_checking_assert (fits_p (r));
  
    m_kind = r.m_kind;
!   m_num_ranges = r.m_num_ranges;
!   for (unsigned i = 0; i < r.m_num_ranges; ++i)
!     m_pairs[i] = r.m_pairs[i];
    m_pos_nan = r.m_pos_nan;
    m_neg_nan = r.m_neg_nan;
  }
*************** frange_storage::get_frange (frange &r, t
*** 555,567 ****
        return;
      }
  
!   // We use the constructor to create the new range instead of writing
!   // out the bits into the frange directly, because the global range
!   // being read may be being inlined into a function with different
!   // restrictions as when it was originally written.  We want to make
!   // sure the resulting range is canonicalized correctly for the new
!   // consumer.
!   r = frange (type, m_min, m_max, m_kind);
  
    // The constructor will set the NAN bits for HONOR_NANS, but we must
    // make sure to set the NAN sign if known.
--- 570,582 ----
        return;
      }
  
!   // Rebuild piecewise, like irange_storage::get_irange().
!   r.set_undefined ();
!   for (unsigned i = 0; i < m_num_ranges; ++i)
!     {
!       frange tmp (type, m_pairs[i].min, m_pairs[i].max, m_kind);
!       r.union_ (tmp);
!     }
  
    // The constructor will set the NAN bits for HONOR_NANS, but we must
    // make sure to set the NAN sign if known.
*************** frange_storage::equal_p (const frange &r
*** 583,591 ****
  }
  
  bool
! frange_storage::fits_p (const frange &) const
  {
!   return true;
  }
  
  //============================================================================
--- 598,606 ----
  }
  
  bool
! frange_storage::fits_p (const frange &r) const
  {
!   return m_max_ranges >= r.num_pairs ();
  }
  
  //============================================================================
diff -Nrcpad gcc-17-20260727/gcc/value-range-storage.h gcc-17-20260802/gcc/value-range-storage.h
*** gcc-17-20260727/gcc/value-range-storage.h	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/value-range-storage.h	Sun Aug  2 22:32:16 2026
*************** class GTY((tag ("VR_FRANGE"))) frange_st
*** 162,176 ****
    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;
!   REAL_VALUE_TYPE m_min;
!   REAL_VALUE_TYPE m_max;
    bool m_pos_nan;
    bool m_neg_nan;
  };
  
  extern vrange_storage *ggc_alloc_vrange_storage (tree type);
--- 162,178 ----
    bool equal_p (const frange &r) const;
    bool fits_p (const frange &) const;
   private:
!   frange_storage (const frange &r);
    DISABLE_COPY_AND_ASSIGN (frange_storage);
+   static size_t size (const frange &r);
  
    enum value_range_kind m_kind;
!   // The max number of sub-ranges that fit in this storage.
!   const unsigned char m_max_ranges;
!   unsigned char m_num_ranges;
    bool m_pos_nan;
    bool m_neg_nan;
+   frange_pair m_pairs[1];
  };
  
  extern vrange_storage *ggc_alloc_vrange_storage (tree type);
diff -Nrcpad gcc-17-20260727/gcc/value-range.cc gcc-17-20260802/gcc/value-range.cc
*** gcc-17-20260727/gcc/value-range.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/value-range.cc	Sun Aug  2 22:32:16 2026
*************** frange_cmp (const REAL_VALUE_TYPE &a, co
*** 1013,1018 ****
--- 1013,1046 ----
    return 0;
  }
  
+ static inline const REAL_VALUE_TYPE &
+ frange_min (const REAL_VALUE_TYPE &a, const REAL_VALUE_TYPE &b)
+ {
+   return frange_cmp (a, b) <= 0 ? a : b;
+ }
+ 
+ static inline const REAL_VALUE_TYPE &
+ frange_max (const REAL_VALUE_TYPE &a, const REAL_VALUE_TYPE &b)
+ {
+   return frange_cmp (a, b) >= 0 ? a : b;
+ }
+ 
+ // Return TRUE if [..., A_MAX] and [B_MIN, ...] can be fused into one interval,
+ // either because they overlap or because no representable value exists between
+ // them.  The latter is how -0.0 and +0.0 abut: there is nothing in between, so
+ // [x, -0.0] U [+0.0, y] is really [x, y].
+ 
+ static bool
+ frange_fusible_p (machine_mode mode, const REAL_VALUE_TYPE &a_max,
+ 		  const REAL_VALUE_TYPE &b_min)
+ {
+   if (frange_cmp (b_min, a_max) <= 0)
+     return true;
+   REAL_VALUE_TYPE next = a_max;
+   frange_nextafter (mode, next, dconstinf);
+   return frange_cmp (b_min, next) <= 0;
+ }
+ 
  // Flush denormal endpoints to the appropriate 0.0.
  
  void
*************** frange::flush_denormals_to_zero ()
*** 1022,1047 ****
      return;
  
    machine_mode mode = TYPE_MODE (type ());
  
    // Flush a denormal endpoint to a zero of the same sign: a +denormal lower
!   // bound to +0.0, and a -denormal upper bound to -0.0.  Then call
!   // canonicalize_zeros to rewrite the sign to whatever the flags make
    // canonical.  For example, under !HONOR_SIGNED_ZEROS (-fno-signed-zeros) a
    // range reaching zero must hold both signs of it, so:
    //
    //     [ +DENORMAL, 5.0 ]  flushes to  [ -0.0, 5.0 ]
    //
!   // keeping contains_p (-0.0) true; under HONOR_SIGNED_ZEROS the sign stands and
!   // it stays [ +0.0, 5.0 ].
!   if (real_isdenormal (&m_max, mode) && real_isneg (&m_max))
!     m_max = dconstm0;
!   if (real_isdenormal (&m_min, mode) && !real_isneg (&m_min))
!     m_min = dconst0;
!   canonicalize_zeros (m_min, m_max);
  }
  
! // Canonicalize the signed zeros of the endpoints MIN and MAX according with what
! // the target and flags want:
  //
  //   !MODE_HAS_SIGNED_ZEROS: the mode has no signed zero, so any zero is +0.0.
  //
--- 1050,1082 ----
      return;
  
    machine_mode mode = TYPE_MODE (type ());
+   frange_pair pairs[MAX_PAIRS];
+   unsigned n = m_num_ranges;
  
    // Flush a denormal endpoint to a zero of the same sign: a +denormal lower
!   // bound to +0.0, and a -denormal upper bound to -0.0.  Then set_pairs, via
!   // canonicalize_zeros, rewrites the sign to whatever the flags make
    // canonical.  For example, under !HONOR_SIGNED_ZEROS (-fno-signed-zeros) a
    // range reaching zero must hold both signs of it, so:
    //
    //     [ +DENORMAL, 5.0 ]  flushes to  [ -0.0, 5.0 ]
    //
!   // keeping contains_p (-0.0) true; under HONOR_SIGNED_ZEROS the sign stands
!   // and it stays [ +0.0, 5.0 ].
!   for (unsigned i = 0; i < n; ++i)
!     {
!       pairs[i] = m_pairs[i];
!       if (real_isdenormal (&pairs[i].max, mode) && real_isneg (&pairs[i].max))
! 	pairs[i].max = dconstm0;
!       if (real_isdenormal (&pairs[i].min, mode) && !real_isneg (&pairs[i].min))
! 	pairs[i].min = dconst0;
!     }
! 
!   set_pairs (pairs, n);
  }
  
! // Canonicalize the signed zeros of a sub-range according with what the target
! // and flags want:
  //
  //   !MODE_HAS_SIGNED_ZEROS: the mode has no signed zero, so any zero is +0.0.
  //
*************** frange::flush_denormals_to_zero ()
*** 1051,1074 ****
  //   Otherwise the sign is a real distinction, and we keep it.
  
  void
! frange::canonicalize_zeros (REAL_VALUE_TYPE &min, REAL_VALUE_TYPE &max)
  {
    if (!MODE_HAS_SIGNED_ZEROS (TYPE_MODE (m_type)))
      {
!       if (real_iszero (&min, 1))
! 	min.sign = 0;
!       if (real_iszero (&max, 1))
! 	max.sign = 0;
      }
    else if (!HONOR_SIGNED_ZEROS (m_type))
      {
!       if (real_iszero (&max, 1))
! 	max.sign = 0;
!       if (real_iszero (&min, 0))
! 	min.sign = 1;
      }
  }
  
  // Setter for franges.
  
  void
--- 1086,1161 ----
  //   Otherwise the sign is a real distinction, and we keep it.
  
  void
! frange::canonicalize_zeros (frange_pair &p)
  {
    if (!MODE_HAS_SIGNED_ZEROS (TYPE_MODE (m_type)))
      {
!       if (real_iszero (&p.min, 1))
! 	p.min.sign = 0;
!       if (real_iszero (&p.max, 1))
! 	p.max.sign = 0;
      }
    else if (!HONOR_SIGNED_ZEROS (m_type))
      {
!       if (real_iszero (&p.max, 1))
! 	p.max.sign = 0;
!       if (real_iszero (&p.min, 0))
! 	p.min.sign = 1;
      }
  }
  
+ // Sort, fuse and install the N intervals in PAIRS as this range's sub-ranges.
+ //
+ // Fusing merges intervals that overlap or abut.  If more than MAX_PAIRS still
+ // survive, the last slot swallows the surplus.
+ 
+ void
+ frange::set_pairs (frange_pair *pairs, unsigned n)
+ {
+   gcc_checking_assert (n > 0);
+   machine_mode mode = TYPE_MODE (m_type);
+ 
+   // Sort by lower bound.  N is tiny (at most 2 * MAX_PAIRS).
+   for (unsigned i = 0; i + 1 < n; ++i)
+     for (unsigned j = i + 1; j < n; ++j)
+       if (frange_cmp (pairs[j].min, pairs[i].min) < 0)
+ 	std::swap (pairs[i], pairs[j]);
+ 
+   // Fuse overlapping and abutting intervals.
+   unsigned k = 0;
+   for (unsigned i = 1; i < n; ++i)
+     {
+       if (frange_fusible_p (mode, pairs[k].max, pairs[i].min))
+ 	{
+ 	  if (frange_cmp (pairs[i].max, pairs[k].max) > 0)
+ 	    pairs[k].max = pairs[i].max;
+ 	}
+       else
+ 	pairs[++k] = pairs[i];
+     }
+   n = k + 1;
+ 
+   // Only MAX_PAIRS fit.  Like irange, keep the first pieces and let the last
+   // slot swallow the rest.
+   if (n > MAX_PAIRS)
+     {
+       pairs[MAX_PAIRS - 1].max = pairs[n - 1].max;
+       n = MAX_PAIRS;
+     }
+ 
+   m_kind = VR_RANGE;
+   m_num_ranges = n;
+   for (unsigned i = 0; i < n; ++i)
+     {
+       m_pairs[i] = pairs[i];
+       canonicalize_zeros (m_pairs[i]);
+     }
+ 
+   normalize_kind ();
+   if (flag_checking)
+     verify_range ();
+ }
+ 
  // Setter for franges.
  
  void
*************** frange::set (tree type,
*** 1095,1102 ****
  
    m_kind = kind;
    m_type = type;
!   m_min = min;
!   m_max = max;
    if (HONOR_NANS (m_type))
      {
        m_pos_nan = nan.pos_p ();
--- 1182,1190 ----
  
    m_kind = kind;
    m_type = type;
!   m_num_ranges = 1;
!   m_pairs[0].min = min;
!   m_pairs[0].max = max;
    if (HONOR_NANS (m_type))
      {
        m_pos_nan = nan.pos_p ();
*************** frange::set (tree type,
*** 1108,1114 ****
        m_neg_nan = false;
      }
  
!   canonicalize_zeros (m_min, m_max);
  
    // For -ffinite-math-only we can drop ranges outside the
    // representable numbers to min/max for the type.
--- 1196,1202 ----
        m_neg_nan = false;
      }
  
!   canonicalize_zeros (m_pairs[0]);
  
    // For -ffinite-math-only we can drop ranges outside the
    // representable numbers to min/max for the type.
*************** frange::set (tree type,
*** 1116,1129 ****
      {
        REAL_VALUE_TYPE min_repr = frange_val_min (m_type);
        REAL_VALUE_TYPE max_repr = frange_val_max (m_type);
!       if (real_less (&m_min, &min_repr))
! 	m_min = min_repr;
!       else if (real_less (&max_repr, &m_min))
! 	m_min = max_repr;
!       if (real_less (&max_repr, &m_max))
! 	m_max = max_repr;
!       else if (real_less (&m_max, &min_repr))
! 	m_max = min_repr;
      }
  
    // Check for swapped ranges.
--- 1204,1217 ----
      {
        REAL_VALUE_TYPE min_repr = frange_val_min (m_type);
        REAL_VALUE_TYPE max_repr = frange_val_max (m_type);
!       if (real_less (&m_pairs[0].min, &min_repr))
! 	m_pairs[0].min = min_repr;
!       else if (real_less (&max_repr, &m_pairs[0].min))
! 	m_pairs[0].min = max_repr;
!       if (real_less (&max_repr, &m_pairs[0].max))
! 	m_pairs[0].max = max_repr;
!       else if (real_less (&m_pairs[0].max, &min_repr))
! 	m_pairs[0].max = min_repr;
      }
  
    // Check for swapped ranges.
*************** bool
*** 1162,1169 ****
  frange::normalize_kind ()
  {
    if (m_kind == VR_RANGE
!       && frange_val_is_min (m_min, m_type)
!       && frange_val_is_max (m_max, m_type))
      {
        if (!HONOR_NANS (m_type) || (m_pos_nan && m_neg_nan))
  	{
--- 1250,1258 ----
  frange::normalize_kind ()
  {
    if (m_kind == VR_RANGE
!       && m_num_ranges == 1
!       && frange_val_is_min (m_pairs[0].min, m_type)
!       && frange_val_is_max (m_pairs[0].max, m_type))
      {
        if (!HONOR_NANS (m_type) || (m_pos_nan && m_neg_nan))
  	{
*************** frange::normalize_kind ()
*** 1176,1183 ****
        if (HONOR_NANS (m_type) && (!m_pos_nan || !m_neg_nan))
  	{
  	  m_kind = VR_RANGE;
! 	  m_min = frange_val_min (m_type);
! 	  m_max = frange_val_max (m_type);
  	  if (flag_checking)
  	    verify_range ();
  	  return true;
--- 1265,1273 ----
        if (HONOR_NANS (m_type) && (!m_pos_nan || !m_neg_nan))
  	{
  	  m_kind = VR_RANGE;
! 	  m_num_ranges = 1;
! 	  m_pairs[0].min = frange_val_min (m_type);
! 	  m_pairs[0].max = frange_val_max (m_type);
  	  if (flag_checking)
  	    verify_range ();
  	  return true;
*************** frange::union_nans (const frange &r)
*** 1199,1206 ****
    if (known_isnan () && m_kind != r.m_kind)
      {
        m_kind = r.m_kind;
!       m_min = r.m_min;
!       m_max = r.m_max;
        changed = true;
      }
    if (m_pos_nan != r.m_pos_nan || m_neg_nan != r.m_neg_nan)
--- 1289,1297 ----
    if (known_isnan () && m_kind != r.m_kind)
      {
        m_kind = r.m_kind;
!       m_num_ranges = r.m_num_ranges;
!       for (unsigned i = 0; i < r.m_num_ranges; ++i)
! 	m_pairs[i] = r.m_pairs[i];
        changed = true;
      }
    if (m_pos_nan != r.m_pos_nan || m_neg_nan != r.m_neg_nan)
*************** frange::union_ (const vrange &v)
*** 1233,1260 ****
    // Combine NAN info.
    if (known_isnan () || r.known_isnan ())
      return union_nans (r);
-   bool changed = false;
-   if (m_pos_nan != r.m_pos_nan || m_neg_nan != r.m_neg_nan)
-     {
-       m_pos_nan |= r.m_pos_nan;
-       m_neg_nan |= r.m_neg_nan;
-       changed = true;
-     }
  
!   // Combine endpoints.
!   if (frange_cmp (r.m_min, m_min) < 0)
!     {
!       m_min = r.m_min;
!       changed = true;
!     }
!   if (frange_cmp (m_max, r.m_max) < 0)
!     {
!       m_max = r.m_max;
!       changed = true;
!     }
  
!   changed |= normalize_kind ();
!   return changed;
  }
  
  // Intersect two ranges when one is known to be a NAN.
--- 1324,1349 ----
    // Combine NAN info.
    if (known_isnan () || r.known_isnan ())
      return union_nans (r);
  
!   frange save = *this;
!   m_pos_nan |= r.m_pos_nan;
!   m_neg_nan |= r.m_neg_nan;
  
!   // Throw both operands' sub-ranges into the pot as set_pairs will
!   // canonicalize things and hand us back at most MAX_PAIRS.
!   //
!   // NOTE: Both operands are already sorted and disjoint, so a merge could
!   // combine them in O(n) like irange::union_ rather than have set_pairs
!   // re-sort.  Not worth it while MAX_PAIRS is tiny; revisit if it grows.
!   frange_pair pairs[2 * MAX_PAIRS];
!   unsigned n = 0;
!   for (unsigned i = 0; i < save.m_num_ranges; ++i)
!     pairs[n++] = save.m_pairs[i];
!   for (unsigned i = 0; i < r.m_num_ranges; ++i)
!     pairs[n++] = r.m_pairs[i];
! 
!   set_pairs (pairs, n);
!   return *this != save;
  }
  
  // Intersect two ranges when one is known to be a NAN.
*************** frange::intersect_nans (const frange &r)
*** 1267,1277 ****
    m_pos_nan &= r.m_pos_nan;
    m_neg_nan &= r.m_neg_nan;
    if (maybe_isnan ())
!     m_kind = VR_NAN;
    else
      set_undefined ();
-   if (flag_checking)
-     verify_range ();
    return true;
  }
  
--- 1356,1364 ----
    m_pos_nan &= r.m_pos_nan;
    m_neg_nan &= r.m_neg_nan;
    if (maybe_isnan ())
!     set_nan (m_type, get_nan_state ());
    else
      set_undefined ();
    return true;
  }
  
*************** frange::intersect (const vrange &v)
*** 1296,1336 ****
    // Combine NAN info.
    if (known_isnan () || r.known_isnan ())
      return intersect_nans (r);
-   bool changed = false;
-   if (m_pos_nan != r.m_pos_nan || m_neg_nan != r.m_neg_nan)
-     {
-       m_pos_nan &= r.m_pos_nan;
-       m_neg_nan &= r.m_neg_nan;
-       changed = true;
-     }
  
!   // Combine endpoints.
!   if (frange_cmp (m_min, r.m_min) < 0)
!     {
!       m_min = r.m_min;
!       changed = true;
!     }
!   if (frange_cmp (r.m_max, m_max) < 0)
!     {
!       m_max = r.m_max;
!       changed = true;
!     }
  
!   // If the endpoints are swapped, the resulting range is empty.  This also
!   // catches [+0.0, -0.0], which is also empty.
!   if (frange_cmp (m_max, m_min) < 0)
      {
        if (maybe_isnan ())
! 	m_kind = VR_NAN;
        else
  	set_undefined ();
-       if (flag_checking)
- 	verify_range ();
        return true;
      }
  
!   changed |= normalize_kind ();
!   return changed;
  }
  
  frange &
--- 1383,1426 ----
    // Combine NAN info.
    if (known_isnan () || r.known_isnan ())
      return intersect_nans (r);
  
!   frange save = *this;
!   m_pos_nan &= r.m_pos_nan;
!   m_neg_nan &= r.m_neg_nan;
  
!   // Meet every sub-range against every other.  Two sorted, disjoint sets of at
!   // most MAX_PAIRS each cannot yield more than MAX_PAIRS^2 pieces.
!   //
!   // NOTE: Since both operands are sorted, a merge-style meet like irange would
!   // be O(n) and leave set_pairs nothing to sort.  Not worth it while MAX_PAIRS
!   // is tiny; revisit if it grows.
!   frange_pair pairs[MAX_PAIRS * MAX_PAIRS];
!   unsigned n = 0;
!   for (unsigned i = 0; i < save.m_num_ranges; ++i)
!     for (unsigned j = 0; j < r.m_num_ranges; ++j)
!       {
! 	const REAL_VALUE_TYPE &min
! 	  = frange_max (save.m_pairs[i].min, r.m_pairs[j].min);
! 	const REAL_VALUE_TYPE &max
! 	  = frange_min (save.m_pairs[i].max, r.m_pairs[j].max);
! 	// A reversed interval means these two do not overlap.  This also
! 	// catches [+0.0, -0.0], which is empty rather than nonsensical.
! 	if (frange_cmp (min, max) <= 0)
! 	  pairs[n++] = { min, max };
!       }
! 
!   // Nothing but a possible NAN survives.
!   if (n == 0)
      {
        if (maybe_isnan ())
! 	set_nan (m_type, get_nan_state ());
        else
  	set_undefined ();
        return true;
      }
  
!   set_pairs (pairs, n);
!   return *this != save;
  }
  
  frange &
*************** frange::operator= (const frange &src)
*** 1338,1345 ****
  {
    m_kind = src.m_kind;
    m_type = src.m_type;
!   m_min = src.m_min;
!   m_max = src.m_max;
    m_pos_nan = src.m_pos_nan;
    m_neg_nan = src.m_neg_nan;
  
--- 1428,1436 ----
  {
    m_kind = src.m_kind;
    m_type = src.m_type;
!   m_num_ranges = src.m_num_ranges;
!   for (unsigned i = 0; i < src.m_num_ranges; ++i)
!     m_pairs[i] = src.m_pairs[i];
    m_pos_nan = src.m_pos_nan;
    m_neg_nan = src.m_neg_nan;
  
*************** frange::operator== (const frange &src) c
*** 1369,1377 ****
  	  return false;
  	}
  
!       return (real_identical (&m_min, &src.m_min)
! 	      && real_identical (&m_max, &src.m_max)
! 	      && m_pos_nan == src.m_pos_nan
  	      && m_neg_nan == src.m_neg_nan
  	      && types_compatible_p (m_type, src.m_type));
      }
--- 1460,1473 ----
  	  return false;
  	}
  
!       if (m_num_ranges != src.m_num_ranges)
! 	return false;
!       for (unsigned i = 0; i < m_num_ranges; ++i)
! 	if (!real_identical (&m_pairs[i].min, &src.m_pairs[i].min)
! 	    || !real_identical (&m_pairs[i].max, &src.m_pairs[i].max))
! 	  return false;
! 
!       return (m_pos_nan == src.m_pos_nan
  	      && m_neg_nan == src.m_neg_nan
  	      && types_compatible_p (m_type, src.m_type));
      }
*************** frange::contains_p (const REAL_VALUE_TYP
*** 1404,1410 ****
    if (known_isnan ())
      return false;
  
!   return frange_cmp (r, m_min) >= 0 && frange_cmp (r, m_max) <= 0;
  }
  
  // If range is a singleton, place it in RESULT and return TRUE.  If
--- 1500,1511 ----
    if (known_isnan ())
      return false;
  
!   for (unsigned i = 0; i < m_num_ranges; ++i)
!     if (frange_cmp (r, m_pairs[i].min) >= 0
! 	&& frange_cmp (r, m_pairs[i].max) <= 0)
!       return true;
! 
!   return false;
  }
  
  // If range is a singleton, place it in RESULT and return TRUE.  If
*************** frange::contains_p (const REAL_VALUE_TYP
*** 1415,1421 ****
  bool
  frange::internal_singleton_p (REAL_VALUE_TYPE *result) const
  {
!   if (m_kind == VR_RANGE && real_identical (&m_min, &m_max))
      {
        // Return false for any singleton that may be a NAN.
        if (HONOR_NANS (m_type) && maybe_isnan ())
--- 1516,1524 ----
  bool
  frange::internal_singleton_p (REAL_VALUE_TYPE *result) const
  {
!   if (m_kind == VR_RANGE
!       && m_num_ranges == 1
!       && real_identical (&m_pairs[0].min, &m_pairs[0].max))
      {
        // Return false for any singleton that may be a NAN.
        if (HONOR_NANS (m_type) && maybe_isnan ())
*************** frange::internal_singleton_p (REAL_VALUE
*** 1428,1443 ****
  	  // or -0.0.  Since this means there is more than one way to
  	  // represent a value, return false to avoid propagating it.
  	  // See libgcc/config/rs6000/ibm-ldouble-format for details.
! 	  if (real_isinf (&m_min))
  	    return false;
  	  REAL_VALUE_TYPE r;
! 	  real_convert (&r, DFmode, &m_min);
! 	  if (real_identical (&r, &m_min))
  	    return false;
  	}
  
        if (result)
! 	*result = m_min;
        return true;
      }
    return false;
--- 1531,1546 ----
  	  // or -0.0.  Since this means there is more than one way to
  	  // represent a value, return false to avoid propagating it.
  	  // See libgcc/config/rs6000/ibm-ldouble-format for details.
! 	  if (real_isinf (&m_pairs[0].min))
  	    return false;
  	  REAL_VALUE_TYPE r;
! 	  real_convert (&r, DFmode, &m_pairs[0].min);
! 	  if (real_identical (&r, &m_pairs[0].min))
  	    return false;
  	}
  
        if (result)
! 	*result = m_pairs[0].min;
        return true;
      }
    return false;
*************** frange::singleton_p (tree *result) const
*** 1449,1455 ****
    if (internal_singleton_p ())
      {
        if (result)
! 	*result = build_real (m_type, m_min);
        return true;
      }
    return false;
--- 1552,1558 ----
    if (internal_singleton_p ())
      {
        if (result)
! 	*result = build_real (m_type, m_pairs[0].min);
        return true;
      }
    return false;
*************** frange::verify_range () const
*** 1479,1486 ****
        return;
      case VR_VARYING:
        gcc_checking_assert (m_type);
!       gcc_checking_assert (frange_val_is_min (m_min, m_type));
!       gcc_checking_assert (frange_val_is_max (m_max, m_type));
        if (HONOR_NANS (m_type))
  	gcc_checking_assert (m_pos_nan && m_neg_nan);
        else
--- 1582,1590 ----
        return;
      case VR_VARYING:
        gcc_checking_assert (m_type);
!       gcc_checking_assert (m_num_ranges == 1);
!       gcc_checking_assert (frange_val_is_min (m_pairs[0].min, m_type));
!       gcc_checking_assert (frange_val_is_max (m_pairs[0].max, m_type));
        if (HONOR_NANS (m_type))
  	gcc_checking_assert (m_pos_nan && m_neg_nan);
        else
*************** frange::verify_range () const
*** 1488,1493 ****
--- 1592,1598 ----
        return;
      case VR_RANGE:
        gcc_checking_assert (m_type);
+       gcc_checking_assert (m_num_ranges >= 1 && m_num_ranges <= MAX_PAIRS);
        break;
      case VR_NAN:
        gcc_checking_assert (m_type);
*************** frange::verify_range () const
*** 1497,1520 ****
        gcc_unreachable ();
      }
  
!   // NANs cannot appear in the endpoints of a range.
!   gcc_checking_assert (!real_isnan (&m_min) && !real_isnan (&m_max));
  
!   // Make sure we don't have swapped ranges.  This also catches [ +0.0, -0.0].
!   gcc_checking_assert (frange_cmp (m_min, m_max) <= 0);
  
!   // A zero endpoint must carry its canonical sign.  Every producer runs
!   // canonicalize_zeros, so a zero bound can only descend from a canonical one.
!   if (!MODE_HAS_SIGNED_ZEROS (TYPE_MODE (m_type)))
!     gcc_checking_assert (!real_iszero (&m_min, 1) && !real_iszero (&m_max, 1));
!   else if (!HONOR_SIGNED_ZEROS (m_type))
!     gcc_checking_assert (!real_iszero (&m_min, 0) && !real_iszero (&m_max, 1));
  
    // If all the properties are clear, we better not span the entire
    // domain, because that would make us varying.
!   if (m_pos_nan && m_neg_nan)
!     gcc_checking_assert (!frange_val_is_min (m_min, m_type)
! 			 || !frange_val_is_max (m_max, m_type));
  }
  
  // We can't do much with nonzeros yet.
--- 1602,1639 ----
        gcc_unreachable ();
      }
  
!   for (unsigned i = 0; i < m_num_ranges; ++i)
!     {
!       // NANs cannot appear in the endpoints of a range.
!       gcc_checking_assert (!real_isnan (&m_pairs[i].min)
! 			   && !real_isnan (&m_pairs[i].max));
  
!       // Make sure we don't have swapped ranges.
!       // This also catches [ +0.0, -0.0].
!       gcc_checking_assert (frange_cmp (m_pairs[i].min, m_pairs[i].max) <= 0);
  
!       // A zero endpoint must carry its canonical sign.  Every producer runs
!       // canonicalize_zeros, so a zero bound can only descend from a canonical
!       // one.
!       if (!MODE_HAS_SIGNED_ZEROS (TYPE_MODE (m_type)))
! 	gcc_checking_assert (!real_iszero (&m_pairs[i].min, 1)
! 			     && !real_iszero (&m_pairs[i].max, 1));
!       else if (!HONOR_SIGNED_ZEROS (m_type))
! 	gcc_checking_assert (!real_iszero (&m_pairs[i].min, 0)
! 			     && !real_iszero (&m_pairs[i].max, 1));
!     }
! 
!   // Sub-ranges are sorted and separated by at least one representable value.
!   for (unsigned i = 1; i < m_num_ranges; ++i)
!     gcc_checking_assert (!frange_fusible_p (TYPE_MODE (m_type),
! 					    m_pairs[i - 1].max,
! 					    m_pairs[i].min));
  
    // If all the properties are clear, we better not span the entire
    // domain, because that would make us varying.
!   if (m_num_ranges == 1 && m_pos_nan && m_neg_nan)
!     gcc_checking_assert (!frange_val_is_min (m_pairs[0].min, m_type)
! 			 || !frange_val_is_max (m_pairs[0].max, m_type));
  }
  
  // We can't do much with nonzeros yet.
*************** bool
*** 1552,1559 ****
  frange::zero_p () const
  {
    return (m_kind == VR_RANGE
! 	  && real_iszero (&m_min)
! 	  && real_iszero (&m_max));
  }
  
  // Set the range to non-negative numbers, that is [+0.0, +INF].
--- 1671,1679 ----
  frange::zero_p () const
  {
    return (m_kind == VR_RANGE
! 	  && m_num_ranges == 1
! 	  && real_iszero (&m_pairs[0].min)
! 	  && real_iszero (&m_pairs[0].max));
  }
  
  // Set the range to non-negative numbers, that is [+0.0, +INF].
diff -Nrcpad gcc-17-20260727/gcc/value-range.h gcc-17-20260802/gcc/value-range.h
*** gcc-17-20260727/gcc/value-range.h	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/gcc/value-range.h	Sun Aug  2 22:32:16 2026
*************** nan_state::neg_p () const
*** 584,593 ****
    return m_neg_nan;
  }
  
  // A subset of possible values for a floating point type.
  //
! // The representation is a type with a couple of endpoints, unioned
! // with a subset of { -NaN, +NaN }.
  
  class frange final : public vrange
  {
--- 584,601 ----
    return m_neg_nan;
  }
  
+ // A sub-range in an frange.
+ 
+ struct frange_pair
+ {
+   REAL_VALUE_TYPE min;
+   REAL_VALUE_TYPE max;
+ };
+ 
  // A subset of possible values for a floating point type.
  //
! // The representation is a single interval, unioned with a subset of
! // { -NaN, +NaN }.
  
  class frange final : public vrange
  {
*************** public:
*** 657,662 ****
--- 665,675 ----
    bool known_isnormal () const;
    bool known_isdenormal_or_zero () const;
    virtual void verify_range () const override;
+ 
+   static const unsigned int MAX_PAIRS = 1;
+   unsigned num_pairs () const { return m_num_ranges; }
+   const REAL_VALUE_TYPE &lower_bound (unsigned pair) const;
+   const REAL_VALUE_TYPE &upper_bound (unsigned pair) const;
  protected:
    virtual bool contains_p (tree cst) const override;
    virtual void set (tree, tree, value_range_kind = VR_RANGE) override;
*************** private:
*** 666,676 ****
    bool normalize_kind ();
    bool union_nans (const frange &);
    bool intersect_nans (const frange &);
!   void canonicalize_zeros (REAL_VALUE_TYPE &, REAL_VALUE_TYPE &);
  
    tree m_type;
!   REAL_VALUE_TYPE m_min;
!   REAL_VALUE_TYPE m_max;
    bool m_pos_nan;
    bool m_neg_nan;
  };
--- 679,690 ----
    bool normalize_kind ();
    bool union_nans (const frange &);
    bool intersect_nans (const frange &);
!   void set_pairs (frange_pair *, unsigned);
!   void canonicalize_zeros (frange_pair &);
  
    tree m_type;
!   frange_pair m_pairs[MAX_PAIRS];
!   unsigned char m_num_ranges;
    bool m_pos_nan;
    bool m_neg_nan;
  };
*************** inline const REAL_VALUE_TYPE &
*** 679,692 ****
  frange::lower_bound () const
  {
    gcc_checking_assert (!undefined_p () && !known_isnan ());
!   return m_min;
  }
  
  inline const REAL_VALUE_TYPE &
  frange::upper_bound () const
  {
    gcc_checking_assert (!undefined_p () && !known_isnan ());
!   return m_max;
  }
  
  // Return the NAN state.
--- 693,722 ----
  frange::lower_bound () const
  {
    gcc_checking_assert (!undefined_p () && !known_isnan ());
!   return m_pairs[0].min;
  }
  
  inline const REAL_VALUE_TYPE &
  frange::upper_bound () const
  {
    gcc_checking_assert (!undefined_p () && !known_isnan ());
!   return m_pairs[m_num_ranges - 1].max;
! }
! 
! inline const REAL_VALUE_TYPE &
! frange::lower_bound (unsigned pair) const
! {
!   gcc_checking_assert (!undefined_p () && !known_isnan ());
!   gcc_checking_assert (pair < m_num_ranges);
!   return m_pairs[pair].min;
! }
! 
! inline const REAL_VALUE_TYPE &
! frange::upper_bound (unsigned pair) const
! {
!   gcc_checking_assert (!undefined_p () && !known_isnan ());
!   gcc_checking_assert (pair < m_num_ranges);
!   return m_pairs[pair].max;
  }
  
  // Return the NAN state.
*************** frange::set_varying (tree type)
*** 1634,1641 ****
  {
    m_kind = VR_VARYING;
    m_type = type;
!   m_min = frange_val_min (type);
!   m_max = frange_val_max (type);
    if (HONOR_NANS (m_type))
      {
        m_pos_nan = true;
--- 1664,1672 ----
  {
    m_kind = VR_VARYING;
    m_type = type;
!   m_num_ranges = 1;
!   m_pairs[0].min = frange_val_min (type);
!   m_pairs[0].max = frange_val_max (type);
    if (HONOR_NANS (m_type))
      {
        m_pos_nan = true;
*************** frange::set_undefined ()
*** 1653,1661 ****
  {
    m_kind = VR_UNDEFINED;
    m_type = NULL;
    m_pos_nan = false;
    m_neg_nan = false;
!   // m_min and m_min are uninitialized as they are REAL_VALUE_TYPE ??.
    if (flag_checking)
      verify_range ();
  }
--- 1684,1693 ----
  {
    m_kind = VR_UNDEFINED;
    m_type = NULL;
+   m_num_ranges = 1;
    m_pos_nan = false;
    m_neg_nan = false;
!   // Leave the rest undefined; as it speeds up initializing undefined ranges.
    if (flag_checking)
      verify_range ();
  }
*************** frange::set_nan (tree type, const nan_st
*** 1789,1794 ****
--- 1821,1827 ----
      {
        m_kind = VR_NAN;
        m_type = type;
+       m_num_ranges = 1;
        m_neg_nan = nan.neg_p ();
        m_pos_nan = nan.pos_p ();
        if (flag_checking)
*************** frange::known_isfinite () const
*** 1823,1829 ****
  {
    if (undefined_p () || varying_p () || m_kind == VR_ANTI_RANGE)
      return false;
!   return (!maybe_isnan () && !real_isinf (&m_min) && !real_isinf (&m_max));
  }
  
  // Return TRUE if range is known to be normal.
--- 1856,1864 ----
  {
    if (undefined_p () || varying_p () || m_kind == VR_ANTI_RANGE)
      return false;
!   return (!maybe_isnan ()
! 	  && !real_isinf (&lower_bound ())
! 	  && !real_isinf (&upper_bound ()));
  }
  
  // Return TRUE if range is known to be normal.
*************** frange::known_isnormal () const
*** 1835,1843 ****
      return false;
  
    machine_mode mode = TYPE_MODE (type ());
!   return (!real_isdenormal (&m_min, mode) && !real_isdenormal (&m_max, mode)
! 	  && !real_iszero (&m_min) && !real_iszero (&m_max)
! 	  && (!real_isneg (&m_min) || real_isneg (&m_max)));
  }
  
  // Return TRUE if range is known to be denormal.
--- 1870,1880 ----
      return false;
  
    machine_mode mode = TYPE_MODE (type ());
!   const REAL_VALUE_TYPE &min = lower_bound ();
!   const REAL_VALUE_TYPE &max = upper_bound ();
!   return (!real_isdenormal (&min, mode) && !real_isdenormal (&max, mode)
! 	  && !real_iszero (&min) && !real_iszero (&max)
! 	  && (!real_isneg (&min) || real_isneg (&max)));
  }
  
  // Return TRUE if range is known to be denormal.
*************** frange::known_isdenormal_or_zero () cons
*** 1849,1856 ****
      return false;
  
    machine_mode mode = TYPE_MODE (type ());
!   return ((real_isdenormal (&m_min, mode) || real_iszero (&m_min))
! 	  && (real_isdenormal (&m_max, mode) || real_iszero (&m_max)));
  }
  
  // Return TRUE if range may be infinite.
--- 1886,1895 ----
      return false;
  
    machine_mode mode = TYPE_MODE (type ());
!   const REAL_VALUE_TYPE &min = lower_bound ();
!   const REAL_VALUE_TYPE &max = upper_bound ();
!   return ((real_isdenormal (&min, mode) || real_iszero (&min))
! 	  && (real_isdenormal (&max, mode) || real_iszero (&max)));
  }
  
  // Return TRUE if range may be infinite.
*************** frange::maybe_isinf () const
*** 1862,1868 ****
      return false;
    if (varying_p ())
      return true;
!   return real_isinf (&m_min) || real_isinf (&m_max);
  }
  
  // Return TRUE if range is known to be the [-INF,-INF] or [+INF,+INF].
--- 1901,1907 ----
      return false;
    if (varying_p ())
      return true;
!   return real_isinf (&lower_bound ()) || real_isinf (&upper_bound ());
  }
  
  // Return TRUE if range is known to be the [-INF,-INF] or [+INF,+INF].
*************** inline bool
*** 1871,1879 ****
  frange::known_isinf () const
  {
    return (m_kind == VR_RANGE
  	  && !maybe_isnan ()
! 	  && real_identical (&m_min, &m_max)
! 	  && real_isinf (&m_min));
  }
  
  // Return TRUE if range is possibly a NAN.
--- 1910,1919 ----
  frange::known_isinf () const
  {
    return (m_kind == VR_RANGE
+ 	  && m_num_ranges == 1
  	  && !maybe_isnan ()
! 	  && real_identical (&m_pairs[0].min, &m_pairs[0].max)
! 	  && real_isinf (&m_pairs[0].min));
  }
  
  // Return TRUE if range is possibly a NAN.
*************** frange::signbit_p (bool &signbit) const
*** 1921,1929 ****
    // No NAN.
    if (!m_pos_nan && !m_neg_nan)
      {
!       if (m_min.sign == m_max.sign)
  	{
! 	  signbit = m_min.sign;
  	  return true;
  	}
        return false;
--- 1961,1969 ----
    // No NAN.
    if (!m_pos_nan && !m_neg_nan)
      {
!       if (lower_bound ().sign == upper_bound ().sign)
  	{
! 	  signbit = lower_bound ().sign;
  	  return true;
  	}
        return false;
*************** frange::signbit_p (bool &signbit) const
*** 1931,1937 ****
    // NAN with known sign.
    bool nan_sign = m_neg_nan;
    if (known_isnan ()
!       || (nan_sign == m_min.sign && nan_sign == m_max.sign))
      {
        signbit = nan_sign;
        return true;
--- 1971,1978 ----
    // NAN with known sign.
    bool nan_sign = m_neg_nan;
    if (known_isnan ()
!       || (nan_sign == lower_bound ().sign
! 	  && nan_sign == upper_bound ().sign))
      {
        signbit = nan_sign;
        return true;
diff -Nrcpad gcc-17-20260727/libgcc/ChangeLog gcc-17-20260802/libgcc/ChangeLog
*** gcc-17-20260727/libgcc/ChangeLog	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/libgcc/ChangeLog	Sun Aug  2 22:32:17 2026
***************
*** 1,3 ****
--- 1,28 ----
+ 2026-07-31  Muhammad Kamran  <muhammad.kamran@arm.com>
+ 
+ 	* config/aarch64/aarch64-asm.h (FEATURE_1_AND_MARK): Do not emit
+ 	.previous after AArch64 build attributes.
+ 
+ 2026-07-29  Piotr Kubaj  <pkubaj@FreeBSD.org>
+ 
+ 	PR target/125803
+ 	* config/rs6000/freebsd-unwind.h (TOC_SAVE_SLOT): New macro,
+ 	defined according to _CALL_ELF.
+ 	(frob_update_context): Use TOC_SAVE_SLOT instead of the
+ 	hard-coded ELFv1 offset 40 when checking for and locating the
+ 	saved TOC, so that r2 is restored correctly under ELFv2.  Guard
+ 	the ELFv1-only PLT stub and function pointer call sequences
+ 	with _CALL_ELF != 2, mirroring linux-unwind.h.
+ 
+ 2026-07-28  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/t-avr (FUNCS_notiny): Add _udivuQ64_common, _udivuda3,
+ 	_udivuta3, _udivudq3, _divda3, _divta3, _divdq3, _divQ64_tail.
+ 	* config/avr/lib1funcs-fixed.S (__udivuta3, __usdivuta3)
+ 	(__udivudq3, __usdivudq3, __udivuda3, __usdivuda3)
+ 	(__udivuQ64_common, __divda3, __ssdivda3, __divta3, __ssdivta3)
+ 	(__divdq3, __ssdivdq3, __divQ64_tail): New functions.
+ 
  2026-07-25  Georg-Johann Lay  <avr@gjlay.de>
  
  	* config/avr/t-avr (FUNCS_notiny): Add _negdi2_r10.
diff -Nrcpad gcc-17-20260727/libgcc/config/aarch64/aarch64-asm.h gcc-17-20260802/libgcc/config/aarch64/aarch64-asm.h
*** gcc-17-20260727/libgcc/config/aarch64/aarch64-asm.h	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/libgcc/config/aarch64/aarch64-asm.h	Sun Aug  2 22:32:17 2026
***************
*** 109,116 ****
      .aeabi_attribute Tag_Feature_GCS, 1;				\
      .else;								\
      .aeabi_attribute Tag_Feature_GCS, 0;				\
!     .endif;								\
!     .previous
  #else
  /* Add a NT_GNU_PROPERTY_TYPE_0 note.  */
  # define FEATURE_1_AND_MARK(value) GNU_PROPERTY (FEATURE_1_AND, value)
--- 109,115 ----
      .aeabi_attribute Tag_Feature_GCS, 1;				\
      .else;								\
      .aeabi_attribute Tag_Feature_GCS, 0;				\
!     .endif;
  #else
  /* Add a NT_GNU_PROPERTY_TYPE_0 note.  */
  # define FEATURE_1_AND_MARK(value) GNU_PROPERTY (FEATURE_1_AND, value)
diff -Nrcpad gcc-17-20260727/libgcc/config/avr/lib1funcs-fixed.S gcc-17-20260802/libgcc/config/avr/lib1funcs-fixed.S
*** gcc-17-20260727/libgcc/config/avr/lib1funcs-fixed.S	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/libgcc/config/avr/lib1funcs-fixed.S	Sun Aug  2 22:32:17 2026
*************** DEFUN __mulQ64_work
*** 1198,1221 ****
  ENDF __mulQ64_work
  #endif /* L_mulQ64_work */
  
- #undef A0
- #undef A1
- #undef A2
- #undef A3
- #undef A4
- #undef A5
- #undef A6
- #undef A7
- 
- #undef B0
- #undef B1
- #undef B2
- #undef B3
- #undef B4
- #undef B5
- #undef B6
- #undef B7
- 
  #undef C0
  #undef C1
  #undef C2
--- 1198,1203 ----
*************** ENDF __mulQ64_work
*** 1244,1249 ****
--- 1226,1502 ----
  
  .popsection ; .text.libgcc.mul64
  
+ /*******************************************************
+     Fixed 64 / 64 saturated Divisions
+ *******************************************************/
+ 
+ ;;; Cnt counts from 65 - BBB down to CStop = -FBIT.
+ #define Cnt     r26
+ #define CStop   r27
+ #define BBB     24
+ 
+ #if defined (L_udivuta3)
+ ;;; unsigned long [sat] accum
+ DEFUN __udivuta3
+ ENTRY __usdivuta3
+     push    r8
+     push    r9
+     push    r28
+     push    r29
+     ldi     CStop, -__UTA_FBIT__
+     XCALL   __udivuQ64_common
+     pop     r29
+     pop     r28
+     pop     r9
+     pop     r8
+     ret
+ ENDF __udivuta3
+ #endif /* L_udivuta3 */
+ 
+ #if defined (L_udivudq3)
+ ;;; unsigned long long [sat] fract
+ DEFUN __udivudq3
+ ENTRY __usdivudq3
+     push    r8
+     push    r9
+     push    r28
+     push    r29
+     ldi     CStop, -__UDQ_FBIT__
+     XCALL   __udivuQ64_common
+     pop     r29
+     pop     r28
+     pop     r9
+     pop     r8
+     ret
+ ENDF __udivudq3
+ #endif /* L_udivudq3 */
+ 
+ #if defined (L_udivuda3)
+ ;;; unsigned long [sat] accum
+ DEFUN __udivuda3
+ ENTRY __usdivuda3
+     push    r8
+     push    r9
+     push    r28
+     push    r29
+     ldi     CStop, -__UDA_FBIT__
+     XCALL   __udivuQ64_common
+     pop     r29
+     pop     r28
+     pop     r9
+     pop     r8
+     ret
+ ENDF __udivuda3
+ #endif /* L_udivuda3 */
+ 
+ #if defined (L_udivuQ64_common)
+ ;;; Remainder
+ #define M0  A5
+ #define M1  A6
+ #define M2  A7
+ #define M3  28
+ #define M4  M3+1
+ #define M5  0
+ #define M6  M5+1
+ #define M7  9
+ 
+ ;;; Quotient
+ #define Q0  30
+ #define Q1  Q0+1
+ #define Q2  8
+ #define Q3  A0
+ #define Q4  A1
+ #define Q5  A2
+ #define Q6  A3
+ #define Q7  A4
+ 
+ ;;; Perform unsigned saturated 64-bit fixed-point division.
+ ;;; Rounds towards zero.  Division by 0 is saturated to 0xff..
+ ;;; R18  = R18  / R10
+ ;;; A[8] = A[8] / B[8]
+ ;;; CStop R27 is -FBIT.
+ ;;; No callee-saved regs are saved.
+ ;;; T is not touched.
+ ;;;
+ ;;; Registers overlap as follows:
+ ;;;                     A7  A6  A5  A4  A3  A2  A1  A0
+ ;;; M7  M6  M5  M4  M3  M2  M1  M0  Q7  Q6  Q5  Q4  Q3  Q2  Q1  Q0
+ ;;; r9  r1  r0  r29 r28 r25 r24 r23 r22 r21 r20 r19 r18 r8  r31 r30
+ ;;; This means the algorithm has a head start of BBB = 24 bits.
+ ;;; (32 bits is too much to pass the tests.)
+ DEFUN __udivuQ64_common
+     ldi     Cnt, 65 - BBB
+     ;; M[7..3] = 0.
+     ;; Q[2..0] = 0.
+     sub     M5, M5              ; CLC
+     ;; M6 = 0 already.
+     wmov    r8, M5              ; M7, Q2
+     wmov    M3, M5              ; M4, M3
+     wmov    Q0, M5              ; Q1, Q0
+     rjmp .Lenter
+ 
+ .Loop:
+     ;; Shift one more bit of A into M from the low end.
+     ;; When A's bits are exhausted, shift in 0s.
+     ROL  M0         $ rol  M1       $ rol  M2       $ rol  M3
+     rol  M4         $ rol  M5       $ rol  M6       $ rol  M7
+ 
+     ;; When M overflows then B will always fit.
+     brcs    .LsubB
+     CP   M0, B0     $ cpc  M1, B1   $ cpc  M2, B2   $ cpc  M3, B3
+     cpc  M4, B4     $ cpc  M5, B5   $ cpc  M6, B6   $ cpc  M7, B7
+     brlo    .LshiftQ
+ 
+ .LsubB:
+     SUB  M0, B0     $ sbc  M1, B1   $ sbc  M2, B2   $ sbc  M3, B3
+     sbc  M4, B4     $ sbc  M5, B5   $ sbc  M6, B6   $ sbc  M7, B7
+ 
+     SEC
+     ROL  Q0
+     skip
+ .LshiftQ:
+     LSL  Q0         $ rol  Q1       $ rol  Q2
+ .Lenter:                                            $ rol  Q3
+     rol  Q4         $ rol  Q5       $ rol  Q6       $ rol  Q7
+ 
+     dec     Cnt
+     ;; Cnt >= 0: Feed one more bit of A (plus a final 0 for latency) into M.
+     brpl .Loop
+ 
+     cpse Cnt, CStop
+     ;; Cnt < 0: Feed 0s into M.
+     brcc .Loop
+ 
+     ;; Done
+     clr     __zero_reg__
+     ;; When quotient 1s drop out of Q, then it's overflow.
+     brcs .Loverflow
+ 
+     ;; Move result into place.
+     mov  A7, Q7     $ mov  A6, Q6   $ mov  A5, Q5   $ mov  A4, Q4
+     mov  A3, Q3     $ mov  A2, Q2   $                 wmov A0, Q0
+     ret
+ 
+ .Loverflow:
+     ;; A = 0xff..
+     XJMP    __sbc_8
+ ENDF __udivuQ64_common
+ 
+ #undef Q0
+ #undef Q1
+ #undef Q2
+ #undef Q3
+ #undef Q4
+ #undef Q5
+ #undef Q6
+ #undef Q7
+ 
+ #undef M0
+ #undef M1
+ #undef M2
+ #undef M3
+ #undef M4
+ #undef M5
+ #undef M6
+ #undef M7
+ #endif /* L_udivuQ64_common */
+ 
+ ;;; Perform signed saturated 64-bit fixed-point division.
+ ;;; Division by 0 is saturated according to the sign of the dividend.
+ ;;; Rounds towards zero.
+ 
+ #if defined (L_divda3)
+ ;;; signed long [sat] accum
+ DEFUN __divda3
+ ENTRY __ssdivda3
+     ;; Save R8, R9, B and Y.
+     do_prologue_saves 12
+     ldi     CStop, -__DA_FBIT__
+     XJMP    __divQ64_tail
+ ENDF __divda3
+ #endif /* L_divda3 */
+ 
+ #if defined (L_divta3)
+ ;;; signed long long [sat] accum
+ DEFUN __divta3
+ ENTRY __ssdivta3
+     ;; Save R8, R9, B and Y.
+     do_prologue_saves 12
+     ldi     CStop, -__TA_FBIT__
+     XJMP    __divQ64_tail
+ ENDF __divta3
+ #endif /* L_divta3 */
+ 
+ #if defined (L_divdq3)
+ ;;; signed long long [sat] fract
+ DEFUN __divdq3
+ ENTRY __ssdivdq3
+     ;; Save R8, R9, B and Y.
+     do_prologue_saves 12
+     ldi     CStop, -__DQ_FBIT__
+     XJMP    __divQ64_tail
+ ENDF __divdq3
+ #endif /* L_divdq3 */
+ 
+ #if defined (L_divQ64_tail)
+ DEFUN __divQ64_tail
+     mov     __tmp_reg__, A7
+     eor     __tmp_reg__, B7
+     bst     __tmp_reg__, 7
+ 
+     .call_if_neg  A7, __negdi2          ; A = |A|
+     .call_if_neg  B7, __negdi2_r10      ; B = |B|
+     XCALL   __udivuQ64_common           ; A /= B as unsigned
+ 
+     ;; r30.7 = result sign
+     bld     r30, 7
+ 
+     ;; Handle overflow.
+     tst     A7
+     ;; In the negative result case, A = 0x80.. is no overflow,
+     ;; but treating it as such keeps the value unchanged.
+     brmi .Lsaturate
+ 
+     ;; Handle result sign.
+     brtc 9f
+     XCALL   __negdi2
+ 
+ 9:  do_epilogue_restores 12
+ 
+ .Lsaturate:
+     ;; r30.7 = 0 -> 0x7f..
+     ;; r30.7 = 1 -> 0x80..
+     cpi     r30, 0x80
+     ;; C = 1 -> 0x7f..
+     ;; C = 0 -> 0x80..
+     XCALL   __sbc_8
+     subi    A7, 0x80
+     rjmp    9b
+ ENDF __divQ64_tail
+ #endif /* L_divQ64_tail */
+ 
+ #undef Cnt
+ #undef CStop
+ #undef BBB
+ 
+ #undef A0
+ #undef A1
+ #undef A2
+ #undef A3
+ #undef A4
+ #undef A5
+ #undef A6
+ #undef A7
+ 
+ #undef B0
+ #undef B1
+ #undef B2
+ #undef B3
+ #undef B4
+ #undef B5
+ #undef B6
+ #undef B7
+ 
  #endif /* ! AVR_TINY */
  
  /*******************************************************
diff -Nrcpad gcc-17-20260727/libgcc/config/avr/t-avr gcc-17-20260802/libgcc/config/avr/t-avr
*** gcc-17-20260727/libgcc/config/avr/t-avr	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/libgcc/config/avr/t-avr	Sun Aug  2 22:32:17 2026
*************** FUNCS_notiny += \
*** 100,105 ****
--- 100,107 ----
  	_mulda3 _multa3 _muldq3 \
  	_muluQ64_tail _mulQ64_work \
  	_divsa3 _udivusa3 \
+ 	_udivuda3 _udivuta3 _udivudq3 _udivuQ64_common \
+ 	_divda3 _divta3 _divdq3 _divQ64_tail \
  	_clr_8 \
  	_ssneg_4 _ssneg_8 \
  	_ssabs_4 _ssabs_8 \
diff -Nrcpad gcc-17-20260727/libgcc/config/rs6000/freebsd-unwind.h gcc-17-20260802/libgcc/config/rs6000/freebsd-unwind.h
*** gcc-17-20260727/libgcc/config/rs6000/freebsd-unwind.h	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/libgcc/config/rs6000/freebsd-unwind.h	Sun Aug  2 22:32:17 2026
***************
*** 24,29 ****
--- 24,37 ----
  
  #define R_LR		65
  
+ #ifdef __powerpc64__
+ #if _CALL_ELF == 2
+ #define TOC_SAVE_SLOT	24
+ #else
+ #define TOC_SAVE_SLOT	40
+ #endif
+ #endif
+ 
  #define MD_FROB_UPDATE_CONTEXT frob_update_context
  
  static void
*************** frob_update_context (struct _Unwind_Cont
*** 40,48 ****
  	 figure out if it was saved.  The big problem here is that the
  	 code that does the save/restore is generated by the linker, so
  	 we have no good way to determine at compile time what to do.  */
!       if (pc[0] == 0xF8410028
  	  || ((pc[0] & 0xFFFF0000) == 0x3D820000
! 	      && pc[1] == 0xF8410028))
  	{
  	  /* We are in a plt call stub or r2 adjusting long branch stub,
  	     before r2 has been saved.  Keep REG_UNSAVED.  */
--- 48,60 ----
  	 figure out if it was saved.  The big problem here is that the
  	 code that does the save/restore is generated by the linker, so
  	 we have no good way to determine at compile time what to do.  */
!       if (pc[0] == 0xF8410000 + TOC_SAVE_SLOT
! #if _CALL_ELF != 2
! 	  /* The ELFv2 linker never generates the old PLT stub form.  */
  	  || ((pc[0] & 0xFFFF0000) == 0x3D820000
! 	      && pc[1] == 0xF8410000 + TOC_SAVE_SLOT)
! #endif
! 	  )
  	{
  	  /* We are in a plt call stub or r2 adjusting long branch stub,
  	     before r2 has been saved.  Keep REG_UNSAVED.  */
*************** frob_update_context (struct _Unwind_Cont
*** 51,68 ****
  	{
  	  unsigned int *insn
  	    = (unsigned int *) _Unwind_GetGR (context, R_LR);
! 	  if (insn && *insn == 0xE8410028)
! 	    _Unwind_SetGRPtr (context, 2, context->cfa + 40);
  	  else if (pc[0] == 0x4E800421
! 		   && pc[1] == 0xE8410028)
  	    {
  	      /* We are at the bctrl instruction in a call via function
  		 pointer.  gcc always emits the load of the new R2 just
  		 before the bctrl so this is the first and only place
  		 we need to use the stored R2.  */
  	      _Unwind_Word sp = _Unwind_GetGR (context, 1);
! 	      _Unwind_SetGRPtr (context, 2, (void *)(sp + 40));
  	    }
  	}
      }
  #endif
--- 63,83 ----
  	{
  	  unsigned int *insn
  	    = (unsigned int *) _Unwind_GetGR (context, R_LR);
! 	  if (insn && *insn == 0xE8410000 + TOC_SAVE_SLOT)
! 	    _Unwind_SetGRPtr (context, 2, context->cfa + TOC_SAVE_SLOT);
! #if _CALL_ELF != 2
! 	  /* ELFv2 does not use this function pointer call sequence.  */
  	  else if (pc[0] == 0x4E800421
! 		   && pc[1] == 0xE8410000 + TOC_SAVE_SLOT)
  	    {
  	      /* We are at the bctrl instruction in a call via function
  		 pointer.  gcc always emits the load of the new R2 just
  		 before the bctrl so this is the first and only place
  		 we need to use the stored R2.  */
  	      _Unwind_Word sp = _Unwind_GetGR (context, 1);
! 	      _Unwind_SetGRPtr (context, 2, (void *)(sp + TOC_SAVE_SLOT));
  	    }
+ #endif
  	}
      }
  #endif
diff -Nrcpad gcc-17-20260727/libgcobol/ChangeLog gcc-17-20260802/libgcobol/ChangeLog
*** gcc-17-20260727/libgcobol/ChangeLog	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/libgcobol/ChangeLog	Sun Aug  2 22:32:17 2026
***************
*** 1,3 ****
--- 1,70 ----
+ 2026-08-01  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* gmath.cc (get_int256_from_qualified_field): Use int128 structure.
+ 	(multiply_int128_by_int128): Likewise.
+ 	(__gg__multiplyf1_phase2): Likewise.
+ 	(__gg__multiplyf2): Likewise.
+ 	(__gg__dividef1_phase2): Likewise.
+ 	(__gg__dividef23): Likewise.
+ 	(__gg__dividef45): Likewise.
+ 	* inspect.cc (inspect_backward_format_1): Likewise.
+ 	(__gg__inspect_format_1): Likewise.
+ 	(__gg__inspect_format_1_sbc): Likewise.
+ 	* intrinsic.cc (get_value_as_double_from_qualified_field): Likewise.
+ 	(populate_ctm_from_date): Likewise.
+ 	(populate_ctm_from_time): Likewise.
+ 	(__gg__char): Likewise.
+ 	(__gg__char_national): Likewise.
+ 	(__gg__combined_datetime): Likewise.
+ 	(__gg__date_of_integer): Likewise.
+ 	(__gg__date_to_yyyymmdd): Likewise.
+ 	(__gg__day_of_integer): Likewise.
+ 	(__gg__day_to_yyyyddd): Likewise.
+ 	(__gg__factorial): Likewise.
+ 	(__gg__integer_of_date): Likewise.
+ 	(__gg__integer_of_day): Likewise.
+ 	(__gg__random): Likewise.
+ 	(__gg__test_date_yyyymmdd): Likewise.
+ 	(__gg__test_day_yyyyddd): Likewise.
+ 	(__gg__year_to_yyyy): Likewise.
+ 	(__gg__locale_time_from_seconds): Likewise.
+ 	* libgcobol.cc (__gg__power_of_ten): Change comment.
+ 	(__gg__move): Use int128 structure.
+ 	(__gg__string): Likewise.
+ 	(__gg__binary_value_from_qualified_field): Likewise.
+ 	(__gg__int128_from_qualified_field): Likewise.
+ 	(__gg__float128_from_qualified_field): Likewise.
+ 	(__gg__unstring): Likewise.
+ 	* libgcobol.h (struct cbl_timespec): Add "struct int128"
+ 	(__gg__binary_value_from_qualified_field): Use int128 structure.
+ 	(__gg__int128_from_qualified_field): Use int128 structure.
+ 	* stringbin.cc (packed_from_combined): Change comment.
+ 
+ 2026-08-01  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* gmath.cc (scale_int256_by_digits): Switch to int256::rdigits.
+ 	(add_int256_to_int256): Likewise.
+ 	(squeeze_int256): Likewise.
+ 	(get_int256_from_qualified_field): Likewise.
+ 	(__gg__add_fixed_phase1): Likewise.
+ 	(__gg__addf1_fixed_phase2): Likewise.
+ 	(__gg__fixed_phase2_assign_to_c): Likewise.
+ 	(__gg__addf3): Likewise.
+ 	(__gg__subtractf1_fixed_phase2): Likewise.
+ 	(__gg__subtractf2_fixed_phase1): Likewise.
+ 	(__gg__subtractf3): Likewise.
+ 	(multiply_int128_by_int128): Likewise.
+ 	(__gg__multiplyf1_phase2): Likewise.
+ 	(__gg__multiplyf2): Likewise.
+ 	(divide_int128_by_int128): Likewise.
+ 	(__gg__dividef1_phase2): Likewise.
+ 	(__gg__dividef23): Likewise.
+ 	(__gg__dividef45): Likewise.
+ 
+ 2026-07-28  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* io.cc: Remove reference to cstdbool, now obsolete.
+ 
  2026-07-25  Robert Dubner  <rdubner@symas.com>
  
  	* constants.cc (struct cblc_field_t):  Add external_e attribute to
diff -Nrcpad gcc-17-20260727/libgcobol/gmath.cc gcc-17-20260802/libgcobol/gmath.cc
*** gcc-17-20260727/libgcobol/gmath.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/libgcobol/gmath.cc	Sun Aug  2 22:32:17 2026
*************** typedef unsigned __int128 uint128;
*** 356,361 ****
--- 356,362 ----
  typedef struct int256
    {
    uint64_t i64[4];
+   int rdigits;
    }int256;
  
  static inline uint64_t
*************** multiply_int256_by_int64(int256 &product
*** 424,442 ****
    return carry != 0;
    }
  
! static int
  add_int256_to_int256(int256 &sum, const int256 &addend)
    {
!   uint128 carry = 0;
!   for(int i=0; i<4; i++)
      {
!     uint128 temp = static_cast<uint128>(sum.i64[i]) + addend.i64[i] + carry;
!     sum.i64[i] = uint128_lo64(temp);
!     carry = temp >> 64;
      }
-   // Indicate that an overflow took place.  This is not useful unless the two
-   // values are known to be positive.
-   return carry != 0;
    }
  
  static void
--- 425,482 ----
    return carry != 0;
    }
  
! static void
! scale_int256_by_digits(int256 &val, int digits)
!   {
!   if( digits )
!     {
!     uint64_t pot;
!     while(digits > 17)
!       {
!       pot = (uint64_t)__gg__power_of_ten(17);
!       multiply_int256_by_int64(val, pot);
!       digits -= 17;
!       }
!     pot = (uint64_t)__gg__power_of_ten(digits);
!     multiply_int256_by_int64(val, pot);
!     }
!   }
! 
! static void
  add_int256_to_int256(int256 &sum, const int256 &addend)
    {
!   // We are accumulating addend into sum.
! 
!   // We have to scale the one with fewer rdigits to match the one with
!   // greater rdigits.
!   if( addend.rdigits >= sum.rdigits )
      {
!     // This is the easier case.  We are accumulating into sum, so we can scale
!     // it in place:
!     scale_int256_by_digits(sum, addend.rdigits - sum.rdigits);
!     sum.rdigits += addend.rdigits - sum.rdigits;
!     uint128 carry = 0;
!     for(int i=0; i<4; i++)
!       {
!       uint128 temp = static_cast<uint128>(sum.i64[i]) + addend.i64[i] + carry;
!       sum.i64[i] = uint128_lo64(temp);
!       carry = temp >> 64;
!       }
!     }
!   else
!     {
!     // We aren't rude enough to change addend.  Besides, we declared it const,
!     // just in case we lost our heads.
!     int256 addend2 = addend;
!     scale_int256_by_digits(addend2, sum.rdigits - addend2.rdigits);
!     uint128 carry = 0;
!     for(int i=0; i<4; i++)
!       {
!       uint128 temp = static_cast<uint128>(sum.i64[i]) + addend2.i64[i] + carry;
!       sum.i64[i] = uint128_lo64(temp);
!       carry = temp >> 64;
!       }
      }
    }
  
  static void
*************** negate_int256(int256 &val)
*** 456,480 ****
      }
    }
  
! static int
  subtract_int256_from_int256(int256 &difference, int256 subtrahend)
    {
    negate_int256(subtrahend);
!   return add_int256_to_int256(difference, subtrahend);
!   }
! 
! static void
! scale_int256_by_digits(int256 &val, int digits)
!   {
!   uint64_t pot;
!   while(digits > 17)
!     {
!     pot = (uint64_t)__gg__power_of_ten(17);
!     multiply_int256_by_int64(val, pot);
!     digits -= 17;
!     }
!   pot = (uint64_t)__gg__power_of_ten(digits);
!   multiply_int256_by_int64(val, pot);
    }
  
  static void
--- 496,506 ----
      }
    }
  
! static void
  subtract_int256_from_int256(int256 &difference, int256 subtrahend)
    {
    negate_int256(subtrahend);
!   add_int256_to_int256(difference, subtrahend);
    }
  
  static void
*************** divide_int256_by_int64(int256 &val, uint
*** 491,497 ****
    }
  
  static int
! squeeze_int256(int256 &val, int &rdigits)
    {
    int overflow = 0;
    // It has been decreed that at this juncture the result must fit into
--- 517,523 ----
    }
  
  static int
! squeeze_int256(int256 &val)
    {
    int overflow = 0;
    // It has been decreed that at this juncture the result must fit into
*************** squeeze_int256(int256 &val, int &rdigits
*** 507,516 ****
    // As long as there are some decimal places left, we hold our nose and
    // right-shift a too-large value rightward by decimal digits.  In other
    // words, we truncate the fractional part to make room for the integer part:
!   while(rdigits > 0 && int256_get_u128(val, 1) )
      {
      divide_int256_by_int64(val, 10UL);
!     rdigits -= 1;
      }
  
    // At this point, to be useful, val has to have fewer than 128 bits:
--- 533,542 ----
    // As long as there are some decimal places left, we hold our nose and
    // right-shift a too-large value rightward by decimal digits.  In other
    // words, we truncate the fractional part to make room for the integer part:
!   while(val.rdigits > 0 && int256_get_u128(val, 1) )
      {
      divide_int256_by_int64(val, 10UL);
!     val.rdigits -= 1;
      }
  
    // At this point, to be useful, val has to have fewer than 128 bits:
*************** squeeze_int256(int256 &val, int &rdigits
*** 535,555 ****
      // cppcheck-suppress badBitmaskCheck
        |  static_cast<uint128>(0x098a224000000000ULL);
  
!     // If we still have some rdigits to throw away, we can keep shrinking
      // the value:
  
!     while(rdigits > 0 && int256_get_u128(val, 0) >= biggest  )
        {
        divide_int256_by_int64(val, 10UL);
!       rdigits -= 1;
        }
  
!     // And we have to make sure that rdigits isn't too big
  
!     while(rdigits > MAX_FIXED_POINT_DIGITS)
        {
        divide_int256_by_int64(val, 10UL);
!       rdigits -= 1;
        }
  
      if( int256_get_u128(val, 0) >= biggest )
--- 561,581 ----
      // cppcheck-suppress badBitmaskCheck
        |  static_cast<uint128>(0x098a224000000000ULL);
  
!     // If we still have some val.rdigits to throw away, we can keep shrinking
      // the value:
  
!     while(val.rdigits > 0 && int256_get_u128(val, 0) >= biggest  )
        {
        divide_int256_by_int64(val, 10UL);
!       val.rdigits -= 1;
        }
  
!     // And we have to make sure that val.rdigits isn't too big
  
!     while(val.rdigits > MAX_FIXED_POINT_DIGITS)
        {
        divide_int256_by_int64(val, 10UL);
!       val.rdigits -= 1;
        }
  
      if( int256_get_u128(val, 0) >= biggest )
*************** squeeze_int256(int256 &val, int &rdigits
*** 568,584 ****
  
  static void
  get_int256_from_qualified_field(int256 &var,
-                                 int &rdigits,
                            const cblc_field_t *field,
                                  size_t field_o,
                                  size_t field_s)
    {
!   __int128 incoming = __gg__binary_value_from_qualified_field(&rdigits,
!                                                               field,
!                                                               field_o,
!                                                               field_s);
!   int256_set_u128(var, 0, static_cast<uint128>(incoming));
!   if( incoming < 0 )
      {
      // This value is negative, so extend the sign bit:
      var.i64[2] = UINT64_MAX;
--- 594,611 ----
  
  static void
  get_int256_from_qualified_field(int256 &var,
                            const cblc_field_t *field,
                                  size_t field_o,
                                  size_t field_s)
    {
!   int128 incoming;
!   __gg__int128_from_qualified_field(incoming,
!                                     field,
!                                     field_o,
!                                     field_s);
!   var.rdigits = incoming.rdigits;
!   int256_set_u128(var, 0, static_cast<uint128>(incoming.i128));
!   if( incoming.i128 < 0 )
      {
      // This value is negative, so extend the sign bit:
      var.i64[2] = UINT64_MAX;
*************** get_int256_from_qualified_field(int256 &
*** 593,599 ****
    }
  
  static int256 phase1_result;
- static int    phase1_rdigits;
  
  static GCOB_FP128 phase1_result_float;
  
--- 620,625 ----
*************** __gg__add_fixed_phase1( cbl_arith_format
*** 617,623 ****
  
    // Let us prime the pump with the first value of A[]
    get_int256_from_qualified_field(phase1_result,
-                                   phase1_rdigits,
                                    AA[0].field,
                                    AA[0].offset,
                                    AA[0].size);
--- 643,648 ----
*************** __gg__add_fixed_phase1( cbl_arith_format
*** 626,659 ****
  
    for( size_t i=1; i<nA; i++ )
      {
-     int temp_rdigits;
      int256 temp = {};
      get_int256_from_qualified_field(temp,
-                                     temp_rdigits,
                                      AA[i].field,
                                      AA[i].offset,
                                      AA[i].size);
  
-     // We have to scale the one with fewer rdigits to match the one with
-     // greater rdigits:
-     if( phase1_rdigits > temp_rdigits )
-       {
-       scale_int256_by_digits(temp, phase1_rdigits - temp_rdigits);
-       }
-     else if( phase1_rdigits < temp_rdigits )
-       {
-       scale_int256_by_digits(phase1_result, temp_rdigits - phase1_rdigits);
-       phase1_rdigits = temp_rdigits;
-       }
- 
-     // The two numbers have the same number of rdigits.  It's now safe to add
-     // them.
      add_int256_to_int256(phase1_result, temp);
      }
  
!   // phase1_result/phase1_rdigits now reflect the sum of all A[]
  
!   int overflow = squeeze_int256(phase1_result, phase1_rdigits);
    if( overflow )
      {
      *compute_error |= compute_error_overflow;
--- 651,668 ----
  
    for( size_t i=1; i<nA; i++ )
      {
      int256 temp = {};
      get_int256_from_qualified_field(temp,
                                      AA[i].field,
                                      AA[i].offset,
                                      AA[i].size);
  
      add_int256_to_int256(phase1_result, temp);
      }
  
!   // phase1_result/phase1_result.rdigits now reflect the sum of all A[]
  
!   int overflow = squeeze_int256(phase1_result);
    if( overflow )
      {
      *compute_error |= compute_error_overflow;
*************** __gg__addf1_fixed_phase2( cbl_arith_form
*** 687,693 ****
  
      // Convert the intermediate
      GCOB_FP128 value_a = (GCOB_FP128)int256_get_u128(phase1_result, 0);
!     value_a /= __gg__power_of_ten(phase1_rdigits);
  
      // Pick up the target
      GCOB_FP128 value_b = __gg__float128_from_qualified_field(C[0].field,
--- 696,702 ----
  
      // Convert the intermediate
      GCOB_FP128 value_a = (GCOB_FP128)int256_get_u128(phase1_result, 0);
!     value_a /= __gg__power_of_ten(phase1_result.rdigits);
  
      // Pick up the target
      GCOB_FP128 value_b = __gg__float128_from_qualified_field(C[0].field,
*************** __gg__addf1_fixed_phase2( cbl_arith_form
*** 706,742 ****
      }
    else
      {
!     // We have a fixed-point intermediate, and we are accumulating intoi a
      // fixed point target.
      int256 value_a   = phase1_result;
-     int    rdigits_a = phase1_rdigits;
- 
      int256 value_b = {};
!     int rdigits_b;
  
      get_int256_from_qualified_field(value_b,
-                                     rdigits_b,
                                      C[0].field,
                                      C[0].offset,
                                      C[0].size);
- 
-     // We have to scale the one with fewer rdigits to match the one with
-     // greater rdigits:
-     if( rdigits_a > rdigits_b )
-       {
-       scale_int256_by_digits(value_b, rdigits_a - rdigits_b);
-       }
-     else if( rdigits_a < rdigits_b )
-       {
-       scale_int256_by_digits(value_a, rdigits_b - rdigits_a);
-       rdigits_a = rdigits_b;
-       }
- 
-     // The two numbers have the same number of rdigits.  It's now safe to add
-     // them.
      add_int256_to_int256(value_a, value_b);
  
!     int overflow = squeeze_int256(value_a, rdigits_a);
      if( overflow )
        {
        *compute_error |= compute_error_overflow;
--- 715,734 ----
      }
    else
      {
!     // We have a fixed-point intermediate, and we are accumulating into a
      // fixed point target.
      int256 value_a   = phase1_result;
      int256 value_b = {};
! 
!     value_a.rdigits = phase1_result.rdigits;
  
      get_int256_from_qualified_field(value_b,
                                      C[0].field,
                                      C[0].offset,
                                      C[0].size);
      add_int256_to_int256(value_a, value_b);
  
!     int overflow = squeeze_int256(value_a);
      if( overflow )
        {
        *compute_error |= compute_error_overflow;
*************** __gg__addf1_fixed_phase2( cbl_arith_form
*** 748,754 ****
                                          C[0].size,
                                          on_size_error,
                                          int256_get_u128(value_a, 0),
!                                         rdigits_a,
                                          *rounded++);
      }
    }
--- 740,746 ----
                                          C[0].size,
                                          on_size_error,
                                          int256_get_u128(value_a, 0),
!                                         value_a.rdigits,
                                          *rounded++);
      }
    }
*************** __gg__fixed_phase2_assign_to_c( cbl_arit
*** 780,786 ****
  
      // Convert the intermediate
      GCOB_FP128 value_a = (GCOB_FP128)int256_get_u128(phase1_result, 0);
!     value_a /= __gg__power_of_ten(phase1_rdigits);
  
      *compute_error |= conditional_stash(CC[0].field, CC[0].offset, CC[0].size,
                                          on_size_error,
--- 772,778 ----
  
      // Convert the intermediate
      GCOB_FP128 value_a = (GCOB_FP128)int256_get_u128(phase1_result, 0);
!     value_a /= __gg__power_of_ten(phase1_result.rdigits);
  
      *compute_error |= conditional_stash(CC[0].field, CC[0].offset, CC[0].size,
                                          on_size_error,
*************** __gg__fixed_phase2_assign_to_c( cbl_arit
*** 792,800 ****
      // We have a fixed-point intermediate, and we are accumulating intoi a
      // fixed point target.
      int256 value_a   = phase1_result;
!     int    rdigits_a = phase1_rdigits;
  
!     int overflow = squeeze_int256(value_a, rdigits_a);
      if( overflow )
        {
        *compute_error |= compute_error_overflow;
--- 784,792 ----
      // We have a fixed-point intermediate, and we are accumulating intoi a
      // fixed point target.
      int256 value_a   = phase1_result;
!     value_a.rdigits = phase1_result.rdigits;
  
!     int overflow = squeeze_int256(value_a);
      if( overflow )
        {
        *compute_error |= compute_error_overflow;
*************** __gg__fixed_phase2_assign_to_c( cbl_arit
*** 815,821 ****
      *compute_error |= conditional_stash(CC[0].field, CC[0].offset, CC[0].size,
                                          on_size_error,
                                          int256_get_u128(value_a, 0),
!                                         rdigits_a,
                                         *rounded++);
      }
    }
--- 807,813 ----
      *compute_error |= conditional_stash(CC[0].field, CC[0].offset, CC[0].size,
                                          on_size_error,
                                          int256_get_u128(value_a, 0),
!                                         value_a.rdigits,
                                         *rounded++);
      }
    }
*************** __gg__addf3(cbl_arith_format_t ,
*** 950,987 ****
        {
        // We have are doing fixed-point arithmetic.
        int256 value_a;
-       int    rdigits_a;
- 
        int256 value_b;
-       int rdigits_b;
  
        get_int256_from_qualified_field(value_a,
-                                       rdigits_a,
                                        A[i].field,
                                        A[i].offset,
                                        A[i].size);
        get_int256_from_qualified_field(value_b,
-                                       rdigits_b,
                                        C[i].field,
                                        C[i].offset,
                                        C[i].size);
-       // We have to scale the one with fewer rdigits to match the one with greater
-       // rdigits:
-       if( rdigits_a > rdigits_b )
-         {
-         scale_int256_by_digits(value_b, rdigits_a - rdigits_b);
-         }
-       else if( rdigits_a < rdigits_b )
-         {
-         scale_int256_by_digits(value_a, rdigits_b - rdigits_a);
-         rdigits_a = rdigits_b;
-         }
- 
-       // The two numbers have the same number of rdigits.  It's now safe to add
-       // them.
        add_int256_to_int256(value_a, value_b);
  
!       int overflow = squeeze_int256(value_a, rdigits_a);
        if( overflow )
          {
          *compute_error |= compute_error_overflow;
--- 942,960 ----
        {
        // We have are doing fixed-point arithmetic.
        int256 value_a;
        int256 value_b;
  
        get_int256_from_qualified_field(value_a,
                                        A[i].field,
                                        A[i].offset,
                                        A[i].size);
        get_int256_from_qualified_field(value_b,
                                        C[i].field,
                                        C[i].offset,
                                        C[i].size);
        add_int256_to_int256(value_a, value_b);
  
!       int overflow = squeeze_int256(value_a);
        if( overflow )
          {
          *compute_error |= compute_error_overflow;
*************** __gg__addf3(cbl_arith_format_t ,
*** 991,997 ****
        *compute_error |= conditional_stash(C[i].field, C[i].offset, C[i].size,
                                            on_size_error,
                                            int256_get_u128(value_a, 0),
!                                           rdigits_a,
                                            *rounded++);
        }
      }
--- 964,970 ----
        *compute_error |= conditional_stash(C[i].field, C[i].offset, C[i].size,
                                            on_size_error,
                                            int256_get_u128(value_a, 0),
!                                           value_a.rdigits,
                                            *rounded++);
        }
      }
*************** __gg__subtractf1_fixed_phase2(cbl_arith_
*** 1024,1030 ****
  
      // Convert the intermediate
      GCOB_FP128 value_a = (GCOB_FP128)int256_get_u128(phase1_result, 0);
!     value_a /= __gg__power_of_ten(phase1_rdigits);
  
      // Pick up the target
      GCOB_FP128 value_b = __gg__float128_from_qualified_field(C[0].field,
--- 997,1003 ----
  
      // Convert the intermediate
      GCOB_FP128 value_a = (GCOB_FP128)int256_get_u128(phase1_result, 0);
!     value_a /= __gg__power_of_ten(phase1_result.rdigits);
  
      // Pick up the target
      GCOB_FP128 value_b = __gg__float128_from_qualified_field(C[0].field,
*************** __gg__subtractf1_fixed_phase2(cbl_arith_
*** 1044,1077 ****
      // We have a fixed-point intermediate, and we are accumulating intoi a
      // fixed point target.
      int256 value_a   = phase1_result;
!     int    rdigits_a = phase1_rdigits;
  
      int256 value_b = {};
-     int rdigits_b;
  
      get_int256_from_qualified_field(value_b,
-                                     rdigits_b,
                                      C[0].field,
                                      C[0].offset,
                                      C[0].size);
  
-     // We have to scale the one with fewer rdigits to match the one with
-     // greater rdigits:
-     if( rdigits_a > rdigits_b )
-       {
-       scale_int256_by_digits(value_b, rdigits_a - rdigits_b);
-       rdigits_b = rdigits_a;
-       }
-     else if( rdigits_a < rdigits_b )
-       {
-       scale_int256_by_digits(value_a, rdigits_b - rdigits_a);
-       }
- 
-     // The two numbers have the same number of rdigits.  It's now safe to add
-     // them.
      subtract_int256_from_int256(value_b, value_a);
  
!     int overflow = squeeze_int256(value_b, rdigits_b);
      if( overflow )
        {
        *compute_error |= compute_error_overflow;
--- 1017,1034 ----
      // We have a fixed-point intermediate, and we are accumulating intoi a
      // fixed point target.
      int256 value_a   = phase1_result;
!     value_a.rdigits = phase1_result.rdigits;
  
      int256 value_b = {};
  
      get_int256_from_qualified_field(value_b,
                                      C[0].field,
                                      C[0].offset,
                                      C[0].size);
  
      subtract_int256_from_int256(value_b, value_a);
  
!     int overflow = squeeze_int256(value_b);
      if( overflow )
        {
        *compute_error |= compute_error_overflow;
*************** __gg__subtractf1_fixed_phase2(cbl_arith_
*** 1081,1087 ****
      *compute_error |= conditional_stash(C[0].field, C[0].offset, C[0].size,
                                          on_size_error,
                                          int256_get_u128(value_b, 0),
!                                         rdigits_b,
                                          *rounded++);
      }
    }
--- 1038,1044 ----
      *compute_error |= conditional_stash(C[0].field, C[0].offset, C[0].size,
                                          on_size_error,
                                          int256_get_u128(value_b, 0),
!                                         value_b.rdigits,
                                          *rounded++);
      }
    }
*************** __gg__subtractf2_fixed_phase1(cbl_arith_
*** 1117,1156 ****
    // Subtract the phase1_result from the B value:
  
    int256 value_a   = phase1_result;
!   int    rdigits_a = phase1_rdigits;
  
    int256 value_b = {};
-   int rdigits_b;
  
    get_int256_from_qualified_field(value_b,
-                                   rdigits_b,
                                    BB[0].field,
                                    BB[0].offset,
                                    BB[0].size);
  
-   // We have to scale the one with fewer rdigits to match the one with greater
-   // rdigits:
-   if( rdigits_a > rdigits_b )
-     {
-     scale_int256_by_digits(value_b, rdigits_a - rdigits_b);
-     rdigits_b = rdigits_a;
-     }
-   else if( rdigits_a < rdigits_b )
-     {
-     scale_int256_by_digits(value_a, rdigits_b - rdigits_a);
-     }
- 
-   // The two numbers have the same number of rdigits.  It's now safe to take
-   // the difference.
    subtract_int256_from_int256(value_b, value_a);
  
!   int overflow = squeeze_int256(value_b, rdigits_b);
    if( overflow )
      {
      *compute_error |= compute_error_overflow;
      }
    phase1_result  = value_b;
!   phase1_rdigits = rdigits_b;
    }
  
  extern "C"
--- 1074,1097 ----
    // Subtract the phase1_result from the B value:
  
    int256 value_a   = phase1_result;
!   value_a.rdigits = phase1_result.rdigits;
  
    int256 value_b = {};
  
    get_int256_from_qualified_field(value_b,
                                    BB[0].field,
                                    BB[0].offset,
                                    BB[0].size);
  
    subtract_int256_from_int256(value_b, value_a);
  
!   int overflow = squeeze_int256(value_b);
    if( overflow )
      {
      *compute_error |= compute_error_overflow;
      }
    phase1_result  = value_b;
!   phase1_result.rdigits = value_b.rdigits;
    }
  
  extern "C"
*************** __gg__subtractf3( cbl_arith_format_t ,
*** 1261,1299 ****
        {
        // We are doing fixed-point subtraction.
        int256 value_a;
-       int    rdigits_a;
- 
        int256 value_b;
-       int rdigits_b;
  
        get_int256_from_qualified_field(value_a,
-                                       rdigits_a,
                                        A[i].field,
                                        A[i].offset,
                                        A[i].size);
        get_int256_from_qualified_field(value_b,
-                                       rdigits_b,
                                        C[i].field,
                                        C[i].offset,
                                        C[i].size);
  
-       // We have to scale the one with fewer rdigits to match the one with
-       // greater rdigits:
-       if( rdigits_a > rdigits_b )
-         {
-         scale_int256_by_digits(value_b, rdigits_a - rdigits_b);
-         rdigits_b = rdigits_a;
-         }
-       else if( rdigits_a < rdigits_b )
-         {
-         scale_int256_by_digits(value_a, rdigits_b - rdigits_a);
-         }
- 
-       // The two numbers have the same number of rdigits.  It's now safe to add
-       // them.
        subtract_int256_from_int256(value_b, value_a);
  
!       int overflow = squeeze_int256(value_b, rdigits_b);
  
        if( overflow )
          {
--- 1202,1221 ----
        {
        // We are doing fixed-point subtraction.
        int256 value_a;
        int256 value_b;
  
        get_int256_from_qualified_field(value_a,
                                        A[i].field,
                                        A[i].offset,
                                        A[i].size);
        get_int256_from_qualified_field(value_b,
                                        C[i].field,
                                        C[i].offset,
                                        C[i].size);
  
        subtract_int256_from_int256(value_b, value_a);
  
!       int overflow = squeeze_int256(value_b);
  
        if( overflow )
          {
*************** __gg__subtractf3( cbl_arith_format_t ,
*** 1304,1310 ****
        *compute_error |= conditional_stash(C[i].field, C[i].offset, C[i].size,
                                            on_size_error,
                                            int256_get_u128(value_b, 0),
!                                           rdigits_b,
                                            *rounded++);
        }
      }
--- 1226,1232 ----
        *compute_error |= conditional_stash(C[i].field, C[i].offset, C[i].size,
                                            on_size_error,
                                            int256_get_u128(value_b, 0),
!                                           value_b.rdigits,
                                            *rounded++);
        }
      }
*************** __gg__subtractf3( cbl_arith_format_t ,
*** 1312,1319 ****
  
  static bool multiply_intermediate_is_float;
  static GCOB_FP128 multiply_intermediate_float;
! static __int128  multiply_intermediate_int128;
! static int       multiply_intermediate_rdigits;
  
  extern "C"
  void
--- 1234,1240 ----
  
  static bool multiply_intermediate_is_float;
  static GCOB_FP128 multiply_intermediate_float;
! static int128 multiply_intermediate_int128;
  
  extern "C"
  void
*************** __gg__multiplyf1_phase1(cbl_arith_format
*** 1342,1364 ****
    else
      {
      multiply_intermediate_is_float = false;
!     multiply_intermediate_int128 =
!         __gg__binary_value_from_qualified_field(&multiply_intermediate_rdigits,
!                                                 A[0].field,
!                                                 A[0].offset,
!                                                 A[0].size);
      }
    }
  
  static
  void multiply_int128_by_int128(int256 &ABCD,
!                                __int128 ab_value,
!                                __int128 cd_value)
    {
!   bool is_negative = (ab_value < 0) != (cd_value < 0);
  
!   uint128 abs_ab = int128_abs_as_uint128(ab_value);
!   uint128 abs_cd = int128_abs_as_uint128(cd_value);
  
    uint128 AC00;
    uint128 AD0;
--- 1263,1284 ----
    else
      {
      multiply_intermediate_is_float = false;
!     __gg__int128_from_qualified_field(multiply_intermediate_int128,
!                                       A[0].field,
!                                       A[0].offset,
!                                       A[0].size);
      }
    }
  
  static
  void multiply_int128_by_int128(int256 &ABCD,
!                                const int128 &ab_value,
!                                const int128 &cd_value)
    {
!   bool is_negative = (ab_value.i128 < 0) != (cd_value.i128 < 0);
  
!   uint128 abs_ab = int128_abs_as_uint128(ab_value.i128);
!   uint128 abs_cd = int128_abs_as_uint128(cd_value.i128);
  
    uint128 AC00;
    uint128 AD0;
*************** void multiply_int128_by_int128(int256 &A
*** 1399,1412 ****
    temp.i64[3] = uint128_hi64(AC00);
    add_int256_to_int256(ABCD, temp);
  
!   // ABCD is now a 256-bit integer with rdigits decimal places
    if( is_negative )
      {
      negate_int256(ABCD);
      }
!   }
! 
  
  
  extern "C"
  void
--- 1319,1332 ----
    temp.i64[3] = uint128_hi64(AC00);
    add_int256_to_int256(ABCD, temp);
  
!   // ABCD is now a 256-bit integer
    if( is_negative )
      {
      negate_int256(ABCD);
      }
!   ABCD.rdigits = ab_value.rdigits + cd_value.rdigits;
  
+   }
  
  extern "C"
  void
*************** __gg__multiplyf1_phase2(cbl_arith_format
*** 1452,1461 ****
      if( C[0].field->type == FldFloat )
        {
        // fixed * float
!       a_value = (GCOB_FP128) multiply_intermediate_int128;
!       if( multiply_intermediate_rdigits )
          {
!         a_value /= (GCOB_FP128)__gg__power_of_ten(multiply_intermediate_rdigits);
          }
        b_value = __gg__float128_from_qualified_field(C[0].field,
                                                      C[0].offset,
--- 1372,1382 ----
      if( C[0].field->type == FldFloat )
        {
        // fixed * float
!       a_value = (GCOB_FP128) multiply_intermediate_int128.i128;
!       if( multiply_intermediate_int128.rdigits )
          {
!         a_value /= 
!           (GCOB_FP128)__gg__power_of_ten(multiply_intermediate_int128.rdigits);
          }
        b_value = __gg__float128_from_qualified_field(C[0].field,
                                                      C[0].offset,
*************** __gg__multiplyf1_phase2(cbl_arith_format
*** 1469,1487 ****
        // We have two 128-bit numbers.  Call them AB and CD, where A, B, C, D are
        // 64-bit "digits".  We need to multiply them to create a 256-bit result
  
!       int cd_rdigits;
!       __int128 ab_value = multiply_intermediate_int128;
!       __int128 cd_value = __gg__binary_value_from_qualified_field(&cd_rdigits,
!                                                                   C[0].field,
!                                                                   C[0].offset,
!                                                                   C[0].size);
  
!       int256 ABCD;
!       int rdigits = multiply_intermediate_rdigits + cd_rdigits;
  
        multiply_int128_by_int128(ABCD, ab_value, cd_value);
  
!       int overflow = squeeze_int256(ABCD, rdigits);
        if( overflow )
          {
          *compute_error |= compute_error_overflow;
--- 1390,1407 ----
        // We have two 128-bit numbers.  Call them AB and CD, where A, B, C, D are
        // 64-bit "digits".  We need to multiply them to create a 256-bit result
  
!       int128 ab_value = multiply_intermediate_int128;
  
!       int128 cd_value;
  
+       __gg__int128_from_qualified_field(cd_value,
+                                         C[0].field,
+                                         C[0].offset,
+                                         C[0].size);
+       int256 ABCD;
        multiply_int128_by_int128(ABCD, ab_value, cd_value);
  
!       int overflow = squeeze_int256(ABCD);
        if( overflow )
          {
          *compute_error |= compute_error_overflow;
*************** __gg__multiplyf1_phase2(cbl_arith_format
*** 1490,1496 ****
        *compute_error |= conditional_stash(C[0].field, C[0].offset, C[0].size,
                                            on_size_error,
                                            int256_get_u128(ABCD, 0),
!                                           rdigits,
                                            *rounded++);
  
        goto done;
--- 1410,1416 ----
        *compute_error |= conditional_stash(C[0].field, C[0].offset, C[0].size,
                                            on_size_error,
                                            int256_get_u128(ABCD, 0),
!                                           ABCD.rdigits,
                                            *rounded++);
  
        goto done;
*************** __gg__multiplyf2( cbl_arith_format_t ,
*** 1534,1540 ****
    bool      got_float = false;
    GCOB_FP128 product_float;
    int256    product_fix;
-   int       product_fix_digits;
  
    if( A[0].field->type == FldFloat || B[0].field->type == FldFloat )
      {
--- 1454,1459 ----
*************** __gg__multiplyf2( cbl_arith_format_t ,
*** 1549,1567 ****
      }
    else
      {
!     int a_rdigits;
!     int b_rdigits;
!     __int128 a_value = __gg__binary_value_from_qualified_field(&a_rdigits,
!                                                                A[0].field,
!                                                                A[0].offset,
!                                                                A[0].size);
!     __int128 b_value = __gg__binary_value_from_qualified_field(&b_rdigits,
!                                                                B[0].field,
!                                                                B[0].offset,
!                                                                B[0].size);
!     product_fix_digits = a_rdigits + b_rdigits;
      multiply_int128_by_int128(product_fix, a_value, b_value);
!     int overflow = squeeze_int256(product_fix, product_fix_digits);
      if( overflow )
        {
        *compute_error |= compute_error_overflow;
--- 1468,1485 ----
      }
    else
      {
!     int128 a_value;
!     int128 b_value;
!     __gg__int128_from_qualified_field(a_value,
!                                       A[0].field,
!                                       A[0].offset,
!                                       A[0].size);
!     __gg__int128_from_qualified_field(b_value,
!                                       B[0].field,
!                                       B[0].offset,
!                                       B[0].size);
      multiply_int128_by_int128(product_fix, a_value, b_value);
!     int overflow = squeeze_int256(product_fix);
      if( overflow )
        {
        *compute_error |= compute_error_overflow;
*************** __gg__multiplyf2( cbl_arith_format_t ,
*** 1582,1588 ****
        *compute_error |= conditional_stash(C[i].field, C[i].offset, C[i].size,
                                            on_size_error,
                                            int256_get_u128(product_fix, 0),
!                                           product_fix_digits,
                                            *rounded++);
        }
      }
--- 1500,1506 ----
        *compute_error |= conditional_stash(C[i].field, C[i].offset, C[i].size,
                                            on_size_error,
                                            int256_get_u128(product_fix, 0),
!                                           product_fix.rdigits,
                                            *rounded++);
        }
      }
*************** shift_left_int256(int256 &value, int bit
*** 1691,1697 ****
  
  static void
  divide_int128_by_int128(int256   &quotient,
-                         int      &quotient_rdigits,
                          __int128  dividend,
                          int       dividend_rdigits,
                          __int128  divisor,
--- 1609,1614 ----
*************** divide_int128_by_int128(int256   &quotie
*** 1703,1709 ****
      *compute_error |= compute_error_divide_by_zero;
      quotient = int256{};
      quotient.i64[0] = static_cast<uint64_t>(dividend);
!     quotient_rdigits = dividend_rdigits;
      return;
      }
  
--- 1620,1626 ----
      *compute_error |= compute_error_divide_by_zero;
      quotient = int256{};
      quotient.i64[0] = static_cast<uint64_t>(dividend);
!     quotient.rdigits = dividend_rdigits;
      return;
      }
  
*************** divide_int128_by_int128(int256   &quotie
*** 1720,1726 ****
  
    int scale = MAX_FIXED_POINT_DIGITS;
    scale_int256_by_digits(quotient, scale);
!   quotient_rdigits = scale + dividend_rdigits - divisor_rdigits;
  
    // Now, let's see if we can do a simple divide-by-single-place calculation:
  
--- 1637,1643 ----
  
    int scale = MAX_FIXED_POINT_DIGITS;
    scale_int256_by_digits(quotient, scale);
!   quotient.rdigits = scale + dividend_rdigits - divisor_rdigits;
  
    // Now, let's see if we can do a simple divide-by-single-place calculation:
  
*************** divide_int128_by_int128(int256   &quotie
*** 1748,1753 ****
--- 1665,1671 ----
      uint64_t divisor_high = uint128_hi64(normalized_divisor);
  
      quotient = int256{};
+     quotient.rdigits = scale + dividend_rdigits - divisor_rdigits;
  
      for( int q_place = 1; q_place >= 0; q_place-- )
        {
*************** __gg__dividef1_phase2(cbl_arith_format_t
*** 1880,1891 ****
      {
      if( C[0].field->type == FldFloat )
        {
!       // gixed * float
!       a_value = (GCOB_FP128) multiply_intermediate_int128;
!       if( multiply_intermediate_rdigits )
          {
!         a_value /= 
!                  (GCOB_FP128)__gg__power_of_ten(multiply_intermediate_rdigits);
          }
        b_value = __gg__float128_from_qualified_field(C[0].field,
                                                      C[0].offset,
--- 1798,1809 ----
      {
      if( C[0].field->type == FldFloat )
        {
!       // fixed by float
!       a_value = (GCOB_FP128) multiply_intermediate_int128.i128;
!       if( multiply_intermediate_int128.rdigits )
          {
!         a_value /=
!           (GCOB_FP128)__gg__power_of_ten(multiply_intermediate_int128.rdigits);
          }
        b_value = __gg__float128_from_qualified_field(C[0].field,
                                                      C[0].offset,
*************** __gg__dividef1_phase2(cbl_arith_format_t
*** 1894,1924 ****
        }
      else
        {
!       // fixed times fixed
! 
!       // We have two 128-bit numbers.  Call them AB and CD, where A, B, C, D
!       // are 64-bit "digits".  We need to multiply them to create a 256-bit
!       // result
! 
!       int dividend_rdigits;
!       __int128 dividend = __gg__binary_value_from_qualified_field(
!                                                   &dividend_rdigits,
!                                                   C[0].field,
!                                                   C[0].offset,
!                                                   C[0].size);
  
-       int quotient_rdigits;
        int256 quotient;
  
        divide_int128_by_int128(quotient,
!                               quotient_rdigits,
!                               dividend,
!                               dividend_rdigits,
!                               multiply_intermediate_int128,
!                               multiply_intermediate_rdigits,
                                compute_error);
  
!       int overflow = squeeze_int256(quotient, quotient_rdigits);
        if( overflow )
          {
          *compute_error |= compute_error_overflow;
--- 1812,1834 ----
        }
      else
        {
!       // fixed by fixed
!       int128 dividend;
!       __gg__int128_from_qualified_field(dividend,
!                                         C[0].field,
!                                         C[0].offset,
!                                         C[0].size);
  
        int256 quotient;
  
        divide_int128_by_int128(quotient,
!                               dividend.i128,
!                               dividend.rdigits,
!                               multiply_intermediate_int128.i128,
!                               multiply_intermediate_int128.rdigits,
                                compute_error);
  
!       int overflow = squeeze_int256(quotient);
        if( overflow )
          {
          *compute_error |= compute_error_overflow;
*************** __gg__dividef1_phase2(cbl_arith_format_t
*** 1927,1933 ****
        *compute_error |= conditional_stash(C[0].field, C[0].offset, C[0].size,
                                            on_size_error,
                                            int256_get_u128(quotient, 0),
!                                           quotient_rdigits,
                                            *rounded++);
  
        goto done;
--- 1837,1843 ----
        *compute_error |= conditional_stash(C[0].field, C[0].offset, C[0].size,
                                            on_size_error,
                                            int256_get_u128(quotient, 0),
!                                           quotient.rdigits,
                                            *rounded++);
  
        goto done;
*************** __gg__dividef23(cbl_arith_format_t ,
*** 1998,2028 ****
    else
      {
      // fixed divided by fixed
!     int dividend_rdigits;
!     __int128 dividend = __gg__binary_value_from_qualified_field(
!                                                     &dividend_rdigits,
!                                                     A[0].field,
!                                                     A[0].offset,
!                                                     A[0].size);
  
!     int divisor_rdigits;
!     __int128 divisor = __gg__binary_value_from_qualified_field(
!                                                     &divisor_rdigits,
!                                                     B[0].field,
!                                                     B[0].offset,
!                                                     B[0].size);
!     int quotient_rdigits;
      int256 quotient;
  
      divide_int128_by_int128(quotient,
!                             quotient_rdigits,
!                             dividend,
!                             dividend_rdigits,
!                             divisor,
!                             divisor_rdigits,
                              compute_error);
  
!     *compute_error |= squeeze_int256(quotient, quotient_rdigits);
      if( !*compute_error )
        {
          // At this point, we assign the quotient to *C.
--- 1908,1935 ----
    else
      {
      // fixed divided by fixed
!     int128 dividend;
!     __gg__int128_from_qualified_field(dividend,
!                                       A[0].field,
!                                       A[0].offset,
!                                       A[0].size);
  
!     int128 divisor;
!     __gg__int128_from_qualified_field(divisor,
!                                       B[0].field,
!                                       B[0].offset,
!                                       B[0].size);
      int256 quotient;
  
      divide_int128_by_int128(quotient,
!                             dividend.i128,
!                             dividend.rdigits,
!                             divisor.i128,
!                             divisor.rdigits,
                              compute_error);
  
! 
!     *compute_error |= squeeze_int256(quotient);
      if( !*compute_error )
        {
          // At this point, we assign the quotient to *C.
*************** __gg__dividef23(cbl_arith_format_t ,
*** 2031,2037 ****
          *compute_error |= conditional_stash(C[i].field, C[i].offset, C[i].size,
                                              on_size_error,
                                              int256_get_u128(quotient, 0),
!                                             quotient_rdigits,
                                              *rounded++);
          }
        }
--- 1938,1944 ----
          *compute_error |= conditional_stash(C[i].field, C[i].offset, C[i].size,
                                              on_size_error,
                                              int256_get_u128(quotient, 0),
!                                             quotient.rdigits,
                                              *rounded++);
          }
        }
*************** __gg__dividef45(cbl_arith_format_t ,
*** 2091,2128 ****
    else
      {
      // fixed divided by fixed
!     int dividend_rdigits;
!     __int128 dividend = __gg__binary_value_from_qualified_field(
!                                               &dividend_rdigits,
!                                               A[0].field,
!                                               A[0].offset,
!                                               A[0].size);
! 
!     int divisor_rdigits;
!     __int128 divisor = __gg__binary_value_from_qualified_field(
!                                               &divisor_rdigits,
!                                               B[0].field,
!                                               B[0].offset,
!                                               B[0].size);
  
-     int quotient_rdigits;
      int256 quotient;
  
      divide_int128_by_int128(quotient,
!                             quotient_rdigits,
!                             dividend,
!                             dividend_rdigits,
!                             divisor,
!                             divisor_rdigits,
                              compute_error);
  
!     *compute_error |= squeeze_int256(quotient, quotient_rdigits);
  
      if( !*compute_error )
        {
        // We are going to need the unrounded quotient to calculate the remainder
!       __int128 unrounded_quotient = 0;
!       int      unrounded_quotient_digits;
        rounded_p += 1;// Skip the rounded value for the remainder
        cbl_round_t rounded = *rounded_p;
        switch(rounded)
--- 1998,2029 ----
    else
      {
      // fixed divided by fixed
!     int128 dividend;
!     __gg__int128_from_qualified_field(dividend,
!                                       A[0].field,
!                                       A[0].offset,
!                                       A[0].size);
!     int128 divisor;                   
!     __gg__int128_from_qualified_field(divisor,
!                                       B[0].field,
!                                       B[0].offset,
!                                       B[0].size);
  
      int256 quotient;
  
      divide_int128_by_int128(quotient,
!                             dividend.i128,
!                             dividend.rdigits,
!                             divisor.i128,
!                             divisor.rdigits,
                              compute_error);
  
!     *compute_error |= squeeze_int256(quotient);
  
      if( !*compute_error )
        {
        // We are going to need the unrounded quotient to calculate the remainder
!       int128 unrounded_quotient;
        rounded_p += 1;// Skip the rounded value for the remainder
        cbl_round_t rounded = *rounded_p;
        switch(rounded)
*************** __gg__dividef45(cbl_arith_format_t ,
*** 2134,2146 ****
                                                C[1].size,
                                                on_size_error,
                                                int256_get_u128(quotient, 0),
!                                               quotient_rdigits,
                                                *rounded_p++);
!           unrounded_quotient = __gg__binary_value_from_qualified_field(
!                                                   &unrounded_quotient_digits,
!                                                   C[1].field,
!                                                   C[1].offset,
!                                                   C[1].size);
            break;
            }
          default:
--- 2035,2046 ----
                                                C[1].size,
                                                on_size_error,
                                                int256_get_u128(quotient, 0),
!                                               quotient.rdigits,
                                                *rounded_p++);
!           __gg__int128_from_qualified_field(unrounded_quotient,
!                                             C[1].field,
!                                             C[1].offset,
!                                             C[1].size);
            break;
            }
          default:
*************** __gg__dividef45(cbl_arith_format_t ,
*** 2148,2167 ****
            conditional_stash(C[1].field, C[1].offset, C[1].size,
                              false,
                              int256_get_u128(quotient, 0),
!                             quotient_rdigits,
                              truncation_e);
!           unrounded_quotient = __gg__binary_value_from_qualified_field(
!                                                   &unrounded_quotient_digits,
!                                                   C[1].field,
!                                                   C[1].offset,
!                                                   C[1].size);
            // At this point, we assign the rounded quotient to *C.
            *compute_error |= conditional_stash(C[1].field,
                                                C[1].offset,
                                                C[1].size,
                                                on_size_error,
                                                int256_get_u128(quotient, 0),
!                                               quotient_rdigits,
                                                *rounded_p++);
            break;
            }
--- 2048,2066 ----
            conditional_stash(C[1].field, C[1].offset, C[1].size,
                              false,
                              int256_get_u128(quotient, 0),
!                             quotient.rdigits,
                              truncation_e);
!           __gg__int128_from_qualified_field(unrounded_quotient,
!                                             C[1].field,
!                                             C[1].offset,
!                                             C[1].size);
            // At this point, we assign the rounded quotient to *C.
            *compute_error |= conditional_stash(C[1].field,
                                                C[1].offset,
                                                C[1].size,
                                                on_size_error,
                                                int256_get_u128(quotient, 0),
!                                               quotient.rdigits,
                                                *rounded_p++);
            break;
            }
*************** __gg__dividef45(cbl_arith_format_t ,
*** 2185,2219 ****
  
          // We need to multiply the unrounded quotient by the divisor.
          int256 temp;
-         int    temp_rdigits;
          // Step 1: Multiply the unrounded quotient by the divisor
          multiply_int128_by_int128(temp, unrounded_quotient, divisor);
-         temp_rdigits = unrounded_quotient_digits + divisor_rdigits;
  
          int256 odividend = {};
!         int256_set_u128(odividend, 0, static_cast<uint128>(dividend));
!         if( dividend < 0 )
            {
            odividend.i64[2] = UINT64_MAX;
            odividend.i64[3] = UINT64_MAX;
            }
  
-         // We need to line up the rdigits so that we can subtract temp from
-         // odividend:
- 
-         if( temp_rdigits < dividend_rdigits )
-           {
-           scale_int256_by_digits(temp, dividend_rdigits-temp_rdigits);
-           temp_rdigits = dividend_rdigits;
-           }
-         else if(temp_rdigits > dividend_rdigits)
-           {
-           scale_int256_by_digits(odividend, temp_rdigits-dividend_rdigits);
-           }
- 
          subtract_int256_from_int256(odividend, temp);
  
!         *compute_error |= squeeze_int256(odividend, temp_rdigits);
  
          if( !*compute_error )
            {
--- 2084,2104 ----
  
          // We need to multiply the unrounded quotient by the divisor.
          int256 temp;
          // Step 1: Multiply the unrounded quotient by the divisor
          multiply_int128_by_int128(temp, unrounded_quotient, divisor);
  
          int256 odividend = {};
!         int256_set_u128(odividend, 0, static_cast<uint128>(dividend.i128));
!         odividend.rdigits = dividend.rdigits;
!         if( dividend.i128 < 0 )
            {
            odividend.i64[2] = UINT64_MAX;
            odividend.i64[3] = UINT64_MAX;
            }
  
          subtract_int256_from_int256(odividend, temp);
  
!         *compute_error |= squeeze_int256(odividend);
  
          if( !*compute_error )
            {
*************** __gg__dividef45(cbl_arith_format_t ,
*** 2222,2228 ****
                                                C[0].size,
                                                on_size_error,
                                                int256_get_u128(odividend, 0),
!                                               temp_rdigits,
                                                truncation_e);
            }
          }
--- 2107,2113 ----
                                                C[0].size,
                                                on_size_error,
                                                int256_get_u128(odividend, 0),
!                                               odividend.rdigits,
                                                truncation_e);
            }
          }
diff -Nrcpad gcc-17-20260727/libgcobol/inspect.cc gcc-17-20260802/libgcobol/inspect.cc
*** gcc-17-20260727/libgcobol/inspect.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/libgcobol/inspect.cc	Sun Aug  2 22:32:17 2026
*************** inspect_backward_format_1(const size_t i
*** 1161,1185 ****
  
    for(size_t i = 0; i<id_2_results.size(); i++)
      {
!     int rdigits;
!     __int128 id_2_value
!       = __gg__binary_value_from_qualified_field(&rdigits,
!                                                 id_2_results[i].id2,
!                                                 id_2_results[i].id2_o,
!                                                 id_2_results[i].id2_s);
!     while(rdigits--)
        {
!       id_2_value /= 10.0;
        }
  
      // Accumulate what we've found into it
!     id_2_value += id_2_results[i].result;
  
      // And put it back:
      __gg__int128_to_qualified_field(id_2_results[i].id2,
                                      id_2_results[i].id2_o,
                                      id_2_results[i].id2_s,
!                                     id_2_value,
                                      0,
                                      truncation_e,
                                      NULL);
--- 1161,1184 ----
  
    for(size_t i = 0; i<id_2_results.size(); i++)
      {
!     int128 id_2_value;
!     __gg__int128_from_qualified_field(id_2_value,
!                                       id_2_results[i].id2,
!                                       id_2_results[i].id2_o,
!                                       id_2_results[i].id2_s);
!     while(id_2_value.rdigits--)
        {
!       id_2_value.i128 /= 10.0;
        }
  
      // Accumulate what we've found into it
!     id_2_value.i128 += id_2_results[i].result;
  
      // And put it back:
      __gg__int128_to_qualified_field(id_2_results[i].id2,
                                      id_2_results[i].id2_o,
                                      id_2_results[i].id2_s,
!                                     id_2_value.i128,
                                      0,
                                      truncation_e,
                                      NULL);
*************** __gg__inspect_format_1( int backward,
*** 1531,1555 ****
  
    for(size_t i = 0; i<id_2_results.size(); i++)
      {
!     int rdigits;
!     __int128 id_2_value
!       = __gg__binary_value_from_qualified_field(&rdigits,
!                                                 id_2_results[i].id2,
!                                                 id_2_results[i].id2_o,
!                                                 id_2_results[i].id2_s);
!     while(rdigits--)
        {
!       id_2_value /= 10.0;
        }
  
      // Accumulate what we've found into it
!     id_2_value += id_2_results[i].result;
  
      // And put it back:
      __gg__int128_to_qualified_field(id_2_results[i].id2,
                                      id_2_results[i].id2_o,
                                      id_2_results[i].id2_s,
!                                     id_2_value,
                                      0,
                                      truncation_e,
                                      NULL);
--- 1530,1553 ----
  
    for(size_t i = 0; i<id_2_results.size(); i++)
      {
!     int128 id_2_value;
!     __gg__int128_from_qualified_field(id_2_value,
!                                       id_2_results[i].id2,
!                                       id_2_results[i].id2_o,
!                                       id_2_results[i].id2_s);
!     while(id_2_value.rdigits--)
        {
!       id_2_value.i128 /= 10.0;
        }
  
      // Accumulate what we've found into it
!     id_2_value.i128 += id_2_results[i].result;
  
      // And put it back:
      __gg__int128_to_qualified_field(id_2_results[i].id2,
                                      id_2_results[i].id2_o,
                                      id_2_results[i].id2_s,
!                                     id_2_value.i128,
                                      0,
                                      truncation_e,
                                      NULL);
*************** __gg__inspect_format_1_sbc( int backward
*** 2994,3018 ****
  
    for(size_t i = 0; i<id_2_results.size(); i++)
      {
!     int rdigits;
!     __int128 id_2_value
!       = __gg__binary_value_from_qualified_field(&rdigits,
!                                                 id_2_results[i].id2,
!                                                 id_2_results[i].id2_o,
!                                                 id_2_results[i].id2_s);
!     while(rdigits--)
        {
!       id_2_value /= 10.0;
        }
  
      // Accumulate what we've found into it
!     id_2_value += id_2_results[i].result;
  
      // And put it back:
      __gg__int128_to_qualified_field(id_2_results[i].id2,
                                      id_2_results[i].id2_o,
                                      id_2_results[i].id2_s,
!                                     id_2_value,
                                      0,
                                      truncation_e,
                                      NULL);
--- 2992,3015 ----
  
    for(size_t i = 0; i<id_2_results.size(); i++)
      {
!     int128 id_2_value;
!     __gg__int128_from_qualified_field(id_2_value,
!                                       id_2_results[i].id2,
!                                       id_2_results[i].id2_o,
!                                       id_2_results[i].id2_s);
!     while(id_2_value.rdigits--)
        {
!       id_2_value.i128 /= 10.0;
        }
  
      // Accumulate what we've found into it
!     id_2_value.i128 += id_2_results[i].result;
  
      // And put it back:
      __gg__int128_to_qualified_field(id_2_results[i].id2,
                                      id_2_results[i].id2_o,
                                      id_2_results[i].id2_s,
!                                     id_2_value.i128,
                                      0,
                                      truncation_e,
                                      NULL);
diff -Nrcpad gcc-17-20260727/libgcobol/intrinsic.cc gcc-17-20260802/libgcobol/intrinsic.cc
*** gcc-17-20260727/libgcobol/intrinsic.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/libgcobol/intrinsic.cc	Sun Aug  2 22:32:17 2026
*************** get_value_as_double_from_qualified_field
*** 447,453 ****
                                            size_t input_s)
    {
    double retval;
!   int rdigits;
  
    switch( input->type )
      {
--- 447,453 ----
                                            size_t input_s)
    {
    double retval;
!   int128 val128;
  
    switch( input->type )
      {
*************** get_value_as_double_from_qualified_field
*** 458,468 ****
        break;
  
      default:
!       retval = __gg__binary_value_from_qualified_field(&rdigits,
!                                                         input,
!                                                         input_o,
!                                                         input_s);
!       for(int i=0; i<rdigits; i++)
          {
          retval /= 10.0;
          }
--- 458,468 ----
        break;
  
      default:
!       retval = __gg__int128_from_qualified_field(val128,
!                                                  input,
!                                                  input_o,
!                                                  input_s);
!       for(int i=0; i<val128.rdigits; i++)
          {
          retval /= 10.0;
          }
*************** populate_ctm_from_date( struct cobol_tm
*** 757,767 ****
                          size_t pdate_size)
    {
    // Get the date as an integer
!   int rdigits;
!   double JD = (double)__gg__binary_value_from_qualified_field(&rdigits,
!                                                               pdate,
!                                                               pdate_offset,
!                                                               pdate_size);
    populate_ctm_from_JD(ctm, JD);
    }
  
--- 757,765 ----
                          size_t pdate_size)
    {
    // Get the date as an integer
!   double JD = (double)__gg__int128_from_qualified_field(pdate,
!                                                         pdate_offset,
!                                                         pdate_size);
    populate_ctm_from_JD(ctm, JD);
    }
  
*************** populate_ctm_from_time( struct cobol_tm
*** 800,814 ****
  
    if( poffset )
      {
!     int rdigits;
!     int value = (int)__gg__binary_value_from_qualified_field(&rdigits,
!                                                               poffset,
!                                                               poffset_o,
!                                                               poffset_s);
!     if( rdigits )
        {
!       value /= __gg__power_of_ten(rdigits);
!       rdigits = 0;
        }
      ctm.tz_offset = value;
      if( abs(value) >= 1440 )
--- 798,811 ----
  
    if( poffset )
      {
!     int128 val128;
!     int value = (int)__gg__int128_from_qualified_field(val128,
!                                                        poffset,
!                                                        poffset_o,
!                                                        poffset_s);
!     if( val128.rdigits )
        {
!       value /= __gg__power_of_ten(val128.rdigits);
        }
      ctm.tz_offset = value;
      if( abs(value) >= 1440 )
*************** __gg__char( cblc_field_t *dest,
*** 1210,1217 ****
              size_t source_offset,
              size_t source_size)
    {
-   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.
--- 1207,1212 ----
*************** __gg__char( cblc_field_t *dest,
*** 1219,1229 ****
    // '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 now look for that ordinal position in the collation table:
--- 1214,1225 ----
    // 'A', with the ascii value of 65, is at the ordinal position 66
    // in the default collation.
  
!   int128 val128;
!   int ordinal = (int)(__gg__int128_from_qualified_field(val128,
!                                                         source,
!                                                         source_offset,
!                                                         source_size));
!   ordinal /= __gg__power_of_ten(val128.rdigits);
    ordinal -= 1;
  
    // We now look for that ordinal position in the collation table:
*************** __gg__char_national(cblc_field_t *dest,
*** 1301,1307 ****
    // 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
--- 1297,1302 ----
*************** __gg__char_national(cblc_field_t *dest,
*** 1310,1320 ****
    // '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.
--- 1305,1316 ----
    // 'A', with the ascii value of 65, is at the ordinal position 66
    // in the default collation.
  
!   int128 val128;
!   int ordinal = (int)(__gg__int128_from_qualified_field(val128,
!                                                         source,
!                                                         source_offset,
!                                                         source_size));
!   ordinal /= __gg__power_of_ten(val128.rdigits);
    ordinal -= 1;
  
    // We need to convert the ch character to the destination encoding.
*************** __gg__combined_datetime(cblc_field_t *de
*** 1335,1350 ****
                          size_t arg2_offset,
                          size_t arg2_size)
    {
!   int rdigits;
! 
!   __int128 val1 = (int)(__gg__binary_value_from_qualified_field(&rdigits,
!                                                                 arg1,
!                                                                 arg1_offset,
!                                                                 arg1_size));
!   __int128 val2 = (int)(__gg__binary_value_from_qualified_field(&rdigits,
!                                                                 arg2,
!                                                                 arg2_offset,
!                                                                 arg2_size));
    __int128 value = val1 * 1000000 + val2;
    __gg__int128_to_field(dest,
                          value,
--- 1331,1342 ----
                          size_t arg2_offset,
                          size_t arg2_size)
    {
!   __int128 val1 = (int)(__gg__int128_from_qualified_field(arg1,
!                                                           arg1_offset,
!                                                           arg1_size));
!   __int128 val2 = (int)(__gg__int128_from_qualified_field(arg2,
!                                                           arg2_offset,
!                                                           arg2_size));
    __int128 value = val1 * 1000000 + val2;
    __gg__int128_to_field(dest,
                          value,
*************** __gg__date_of_integer(cblc_field_t *dest
*** 1450,1460 ****
                        size_t source_size)
    {
    // FUNCTION DATE-OF-INTEGER
!   int rdigits;
!   double JD = (double)__gg__binary_value_from_qualified_field(&rdigits,
!                                                               source,
!                                                               source_offset,
!                                                               source_size);
    JD += JD_OF_1601_01_02;
    int Y;
    int M;
--- 1442,1450 ----
                        size_t source_size)
    {
    // FUNCTION DATE-OF-INTEGER
!   double JD = (double)__gg__int128_from_qualified_field(source,
!                                                         source_offset,
!                                                         source_size);
    JD += JD_OF_1601_01_02;
    int Y;
    int M;
*************** __gg__date_to_yyyymmdd( cblc_field_t *de
*** 1483,1492 ****
    {
    // FUNCTION DATE-TO-YYYYMMDD
    // See the discussion in ISO/IEC 2014-1989 Section 15.20
!   int rdigits;
!   int arg1 = (int)__gg__binary_value_from_qualified_field(&rdigits, par1, par1_o, par1_s);
!   int arg2 = (int)__gg__binary_value_from_qualified_field(&rdigits, par2, par2_o, par2_s );
!   int arg3 = (int)__gg__binary_value_from_qualified_field(&rdigits, par3, par3_o, par3_s);
  
    int yy   = arg1/10000;
    int mmdd = arg1%10000;
--- 1473,1481 ----
    {
    // FUNCTION DATE-TO-YYYYMMDD
    // See the discussion in ISO/IEC 2014-1989 Section 15.20
!   int arg1 = (int)__gg__int128_from_qualified_field(par1, par1_o, par1_s);
!   int arg2 = (int)__gg__int128_from_qualified_field(par2, par2_o, par2_s );
!   int arg3 = (int)__gg__int128_from_qualified_field(par3, par3_o, par3_s);
  
    int yy   = arg1/10000;
    int mmdd = arg1%10000;
*************** __gg__day_of_integer( cblc_field_t *dest
*** 1507,1517 ****
                        size_t source_size)
    {
    // FUNCTION DAY-OF_INTEGER
!   int rdigits;
!   double JD = (double)__gg__binary_value_from_qualified_field(&rdigits,
!                                                               source,
!                                                               source_offset,
!                                                               source_size);
    JD += JD_OF_1601_01_02;
    int Y;
    int M;
--- 1496,1504 ----
                        size_t source_size)
    {
    // FUNCTION DAY-OF_INTEGER
!   double JD = (double)__gg__int128_from_qualified_field(source,
!                                                         source_offset,
!                                                         source_size);
    JD += JD_OF_1601_01_02;
    int Y;
    int M;
*************** __gg__day_to_yyyyddd( cblc_field_t *dest
*** 1543,1552 ****
    {
    // FUNCTION DAY-TO-YYYYDDD
    // See the discussion in ISO/IEC 2014-1989 Section 15.20
!   int rdigits;
!   int arg1 = (int)__gg__binary_value_from_qualified_field(&rdigits, par1, par1_o, par1_s);
!   int arg2 = (int)__gg__binary_value_from_qualified_field(&rdigits, par2, par2_o, par2_s );
!   int arg3 = (int)__gg__binary_value_from_qualified_field(&rdigits, par3, par3_o, par3_s);
  
    int yy  = arg1/1000;
    int ddd = arg1%1000;
--- 1530,1538 ----
    {
    // FUNCTION DAY-TO-YYYYDDD
    // See the discussion in ISO/IEC 2014-1989 Section 15.20
!   int arg1 = (int)__gg__int128_from_qualified_field(par1, par1_o, par1_s);
!   int arg2 = (int)__gg__int128_from_qualified_field(par2, par2_o, par2_s );
!   int arg3 = (int)__gg__int128_from_qualified_field(par3, par3_o, par3_s);
  
    int yy  = arg1/1000;
    int ddd = arg1%1000;
*************** __gg__factorial(cblc_field_t *dest,
*** 1619,1630 ****
                  size_t source_size)
    {
    // FUNCTION FACTORIAL
!   int rdigits;
!   int N = (int)__gg__binary_value_from_qualified_field( &rdigits,
!                                                         source,
!                                                         source_offset,
!                                                         source_size);
!   while(rdigits--)
      {
      N /= 10;
      }
--- 1605,1616 ----
                  size_t source_size)
    {
    // FUNCTION FACTORIAL
!   int128 val128;
!   int N = (int)__gg__int128_from_qualified_field(val128,
!                                                  source,
!                                                  source_offset,
!                                                  source_size);
!   while(val128.rdigits--)
      {
      N /= 10;
      }
*************** __gg__integer_of_date(cblc_field_t *dest
*** 1918,1928 ****
                        size_t source_size)
    {
    // FUNCTION INTEGER-OF-DATE
!   int rdigits;
!   long argument_1 = (long)(__gg__binary_value_from_qualified_field(&rdigits,
!                                                               source,
!                                                               source_offset,
!                                                               source_size));
  
    int retval = 0;
    static const int max_days[13] = {0, 31, 28, 31, 30, 31, 30,
--- 1904,1912 ----
                        size_t source_size)
    {
    // FUNCTION INTEGER-OF-DATE
!   long argument_1 = (long)(__gg__int128_from_qualified_field(source,
!                                                              source_offset,
!                                                              source_size));
  
    int retval = 0;
    static const int max_days[13] = {0, 31, 28, 31, 30, 31, 30,
*************** __gg__integer_of_day( cblc_field_t *dest
*** 1974,1984 ****
    {
    // FUNCTION INTEGER-OF-DAY
    // Convert YYYYDDD to "integer date"
!   int rdigits;
!   int yyyyddd = (int)__gg__binary_value_from_qualified_field( &rdigits,
!                                                               source,
!                                                               source_offset,
!                                                               source_size);
    int yyyy = yyyyddd / 1000;
    int ddd  = yyyyddd % 1000;
  
--- 1958,1966 ----
    {
    // FUNCTION INTEGER-OF-DAY
    // Convert YYYYDDD to "integer date"
!   int yyyyddd = (int)__gg__int128_from_qualified_field(source,
!                                                        source_offset,
!                                                        source_size);
    int yyyy = yyyyddd / 1000;
    int ddd  = yyyyddd % 1000;
  
*************** __gg__random( cblc_field_t *dest,
*** 3776,3782 ****
                size_t        input_size)
    {
    int32_t retval_31;
-   int rdigits;
  #if HAVE_INITSTATE_R && HAVE_SRANDOM_R && HAVE_RANDOM_R
    // This creates a thread-safe pseudo-random number generator
    // using input as the seed
--- 3758,3763 ----
*************** __gg__random( cblc_field_t *dest,
*** 3794,3811 ****
      __gg__clock_gettime(&ts);
      initstate_r( ts.tv_nsec, state, state_len, buf);
      }
!   int seed = (int)__gg__binary_value_from_qualified_field(&rdigits,
!                                                           input,
!                                                           input_offset,
!                                                           input_size);
    srandom_r(seed, buf);
  
    random_r(buf, &retval_31);
  #else
!   seed = (unsigned)__gg__binary_value_from_qualified_field(&rdigits,
!                                                           input,
!                                                           input_offset,
!                                                           input_size);
    srandom (seed);
    retval_31 = random ();
  #endif
--- 3775,3790 ----
      __gg__clock_gettime(&ts);
      initstate_r( ts.tv_nsec, state, state_len, buf);
      }
!   int seed = (int)__gg__int128_from_qualified_field(input,
!                                                     input_offset,
!                                                     input_size);
    srandom_r(seed, buf);
  
    random_r(buf, &retval_31);
  #else
!   seed = (unsigned)__gg__int128_from_qualified_field(input,
!                                                      input_offset,
!                                                      input_size);
    srandom (seed);
    retval_31 = random ();
  #endif
*************** __gg__test_date_yyyymmdd( cblc_field_t *
*** 4022,4032 ****
                            size_t source_offset,
                            size_t source_size)
    {
!   int rdigits;
!   int yyyymmdd = (int)__gg__binary_value_from_qualified_field(&rdigits,
!                                                               source,
!                                                               source_offset,
!                                                               source_size);
    int retval;
    int mmdd = yyyymmdd % 10000;
    int mm   = mmdd     /   100;
--- 4001,4009 ----
                            size_t source_offset,
                            size_t source_size)
    {
!   int yyyymmdd = (int)__gg__int128_from_qualified_field(source,
!                                                         source_offset,
!                                                         source_size);
    int retval;
    int mmdd = yyyymmdd % 10000;
    int mm   = mmdd     /   100;
*************** __gg__test_day_yyyyddd( cblc_field_t *de
*** 4075,4085 ****
                          size_t source_offset,
                          size_t source_size)
    {
!   int rdigits;
!   int yyyyddd = (int)__gg__binary_value_from_qualified_field(&rdigits,
!                                                               source,
!                                                               source_offset,
!                                                               source_size);
    int retval;
    int ddd  = yyyyddd % 1000;
    int yyyy = yyyyddd / 1000;
--- 4052,4060 ----
                          size_t source_offset,
                          size_t source_size)
    {
!   int yyyyddd = (int)__gg__int128_from_qualified_field(source,
!                                                        source_offset,
!                                                        source_size);
    int retval;
    int ddd  = yyyyddd % 1000;
    int yyyy = yyyyddd / 1000;
*************** __gg__year_to_yyyy( cblc_field_t *dest,
*** 4164,4173 ****
                      size_t par3_s)
    {
    // FUNCTION YEAR_TO_YYYY
!   int rdigits;
!   int yy   = (int)__gg__binary_value_from_qualified_field(&rdigits, par1, par1_o, par1_s);
!   int arg2 = (int)__gg__binary_value_from_qualified_field(&rdigits, par2, par2_o, par2_s );
!   int arg3 = (int)__gg__binary_value_from_qualified_field(&rdigits, par3, par3_o, par3_s);
  
    int retval = year_to_yyyy(yy, arg2, arg3);
  
--- 4139,4147 ----
                      size_t par3_s)
    {
    // FUNCTION YEAR_TO_YYYY
!   int yy   = (int)__gg__int128_from_qualified_field(par1, par1_o, par1_s);
!   int arg2 = (int)__gg__int128_from_qualified_field(par2, par2_o, par2_s );
!   int arg3 = (int)__gg__int128_from_qualified_field(par3, par3_o, par3_s);
  
    int retval = year_to_yyyy(yy, arg2, arg3);
  
*************** __gg__locale_time_from_seconds( cblc_fie
*** 6021,6031 ****
      // Default locale
      tm tm = {};
  
!     int rdigits=0;
!     long seconds = (long)__gg__binary_value_from_qualified_field(&rdigits,
!                                                                  arg1,
!                                                                  arg1_o,
!                                                                  arg1_s);
      tm.tm_hour   = seconds/3600;
      tm.tm_min    = ((seconds%3600) / 60) % 100;
      tm.tm_sec    = seconds % 100;
--- 5995,6003 ----
      // Default locale
      tm tm = {};
  
!     long seconds = (long)__gg__int128_from_qualified_field(arg1,
!                                                            arg1_o,
!                                                            arg1_s);
      tm.tm_hour   = seconds/3600;
      tm.tm_min    = ((seconds%3600) / 60) % 100;
      tm.tm_sec    = seconds % 100;
diff -Nrcpad gcc-17-20260727/libgcobol/io.cc gcc-17-20260802/libgcobol/io.cc
*** gcc-17-20260727/libgcobol/io.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/libgcobol/io.cc	Sun Aug  2 22:32:17 2026
***************
*** 35,41 ****
  
  #include <cassert>
  #include <cerrno>
- #include <cstdbool>
  #include <cstdint>
  #include <cstdio>
  #include <cstdlib>
--- 35,40 ----
diff -Nrcpad gcc-17-20260727/libgcobol/libgcobol.cc gcc-17-20260802/libgcobol/libgcobol.cc
*** gcc-17-20260727/libgcobol/libgcobol.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/libgcobol/libgcobol.cc	Sun Aug  2 22:32:17 2026
*************** __gg__power_of_ten(int n)
*** 1350,1356 ****
    if( n < 0 || n>MAX_POWER*2)     // The most we can handle is 10**38
      {
      fprintf(stderr,
!             "Trying to raise 10 to %d as an int128, which we can't do.\n",
              n);
      fprintf(stderr,
              "The problem is in %s %s:%d.\n",
--- 1350,1356 ----
    if( n < 0 || n>MAX_POWER*2)     // The most we can handle is 10**38
      {
      fprintf(stderr,
!             "Trying to raise 10 to %d as an __int128, which we can't do.\n",
              n);
      fprintf(stderr,
              "The problem is in %s %s:%d.\n",
*************** __gg__move( cblc_field_t        *fdest,
*** 6422,6428 ****
    int size_error = 0; // This is the return value
  
    __int128 value;
-   int rdigits;
  
    charmap_t *charmap = __gg__get_charmap(fdest->encoding);
    int stride = charmap->stride();
--- 6422,6427 ----
*************** __gg__move( cblc_field_t        *fdest,
*** 6598,6607 ****
                                        ? -fsource->rdigits : 0) ;
  
                // Pick up the absolute value of the source
!               value = __gg__binary_value_from_qualified_field(&rdigits,
!                                                               fsource,
!                                                               source_offset,
!                                                               source_size);
  
                char ach[128];
  
--- 6597,6605 ----
                                        ? -fsource->rdigits : 0) ;
  
                // Pick up the absolute value of the source
!               value = __gg__int128_from_qualified_field(fsource,
!                                                         source_offset,
!                                                         source_size);
  
                char ach[128];
  
*************** __gg__move( cblc_field_t        *fdest,
*** 6676,6685 ****
                char ach[128];
  
                // Turn the integer source into a value:
!               value = __gg__binary_value_from_qualified_field(&rdigits,
!                                                               fsource,
!                                                               source_offset,
!                                                               source_size);
  
                source_size   = fsource->digits;
  
--- 6674,6682 ----
                char ach[128];
  
                // Turn the integer source into a value:
!               value = __gg__int128_from_qualified_field(fsource,
!                                                         source_offset,
!                                                         source_size);
  
                source_size   = fsource->digits;
  
*************** __gg__move( cblc_field_t        *fdest,
*** 6793,6802 ****
              char ach[128];
  
              // Turn the integer source into a value:
!             value = __gg__binary_value_from_qualified_field(&rdigits,
!                                                             fsource,
!                                                             source_offset,
!                                                             source_size);
              // Turn the integer value into a string:
              __gg__binary_to_string_encoded(ach,
                                             source_size,
--- 6790,6798 ----
              char ach[128];
  
              // Turn the integer source into a value:
!             value = __gg__int128_from_qualified_field(fsource,
!                                                       source_offset,
!                                                       source_size);
              // Turn the integer value into a string:
              __gg__binary_to_string_encoded(ach,
                                             source_size,
*************** __gg__move( cblc_field_t        *fdest,
*** 6881,6916 ****
            case FldLiteralN:
              {
              // We are moving a number to a number:
!             value = __gg__binary_value_from_qualified_field(&rdigits,
!                                                             fsource,
!                                                             source_offset,
!                                                             source_size);
  
              if( truncation_mode == trunc_std_e )
                {
                // We need to adjust the value to have the rdigits of the
                // the destination:
  
!               int scaler = rdigits - fdest->rdigits;
                if( scaler > 0 )
                  {
!                 value /= __gg__power_of_ten(scaler);
!                 rdigits -= scaler;
                  }
                else if( scaler < 0 )
                  {
!                 value *= __gg__power_of_ten(-scaler);
!                 rdigits -= scaler;
                  }
!               if( value < 0 )
                  {
!                 value = -value;
!                 value %= __gg__power_of_ten(fdest->digits);
!                 value = -value;
                  }
                else
                  {
!                 value %= __gg__power_of_ten(fdest->digits);
                  }
                }
  
--- 6877,6913 ----
            case FldLiteralN:
              {
              // We are moving a number to a number:
!             int128 val128;
!             __gg__int128_from_qualified_field(val128,
!                                               fsource,
!                                               source_offset,
!                                               source_size);
  
              if( truncation_mode == trunc_std_e )
                {
                // We need to adjust the value to have the rdigits of the
                // the destination:
  
!               int scaler = val128.rdigits - fdest->rdigits;
                if( scaler > 0 )
                  {
!                 val128.i128 /= __gg__power_of_ten(scaler);
!                 val128.rdigits -= scaler;
                  }
                else if( scaler < 0 )
                  {
!                 val128.i128 *= __gg__power_of_ten(-scaler);
!                 val128.rdigits -= scaler;
                  }
!               if( val128.i128 < 0 )
                  {
!                 val128.i128 = -val128.i128;
!                 val128.i128 %= __gg__power_of_ten(fdest->digits);
!                 val128.i128 = -val128.i128;
                  }
                else
                  {
!                 val128.i128 %= __gg__power_of_ten(fdest->digits);
                  }
                }
  
*************** __gg__move( cblc_field_t        *fdest,
*** 6918,6925 ****
                                    fdest,
                                    dest_offset,
                                    dest_size,
!                                   value,
!                                   rdigits,
                                    rounded,
                                    &size_error );
              break;
--- 6915,6922 ----
                                    fdest,
                                    dest_offset,
                                    dest_size,
!                                   val128.i128,
!                                   val128.rdigits,
                                    rounded,
                                    &size_error );
              break;
*************** __gg__move( cblc_field_t        *fdest,
*** 6927,6933 ****
  
            case FldFloat:
              {
!             rdigits = get_scaled_rdigits(fdest);
              bool negative = false;
              __int128 value128 = 0;
              switch(fsource->capacity)
--- 6924,6930 ----
  
            case FldFloat:
              {
!             int rdigits = get_scaled_rdigits(fdest);
              bool negative = false;
              __int128 value128 = 0;
              switch(fsource->capacity)
*************** __gg__move( cblc_field_t        *fdest,
*** 7032,7046 ****
            case FldLiteralN:
              {
              // We are moving a number to a number:
!             value = __gg__binary_value_from_qualified_field(&rdigits,
!                                                             fsource,
!                                                             source_offset,
!                                                             source_size);
             __gg__int128_to_qualified_field( fdest,
                                              dest_offset,
                                              dest_size,
!                                             value,
!                                             rdigits,
                                              rounded,
                                              &size_error );
              break;
--- 7029,7044 ----
            case FldLiteralN:
              {
              // We are moving a number to a number:
!             int128 val128;
!             __gg__int128_from_qualified_field(val128,
!                                               fsource,
!                                               source_offset,
!                                               source_size);
             __gg__int128_to_qualified_field( fdest,
                                              dest_offset,
                                              dest_size,
!                                             val128.i128,
!                                             val128.rdigits,
                                              rounded,
                                              &size_error );
              break;
*************** __gg__move( cblc_field_t        *fdest,
*** 7050,7056 ****
              {
              // We are converted a floating-point value fixed-point
  
-             rdigits = get_scaled_rdigits(fdest);
              GCOB_FP128 fp128=0;
              switch(fsource->capacity)
                {
--- 7048,7053 ----
*************** __gg__move( cblc_field_t        *fdest,
*** 7112,7121 ****
                                + (fsource->rdigits<0 ? -fsource->rdigits : 0) ;
  
              // Pick up the absolute value of the source
!             value = __gg__binary_value_from_qualified_field(&rdigits,
!                                                             fsource,
!                                                             source_offset,
!                                                             source_size);
              char ach[64];
  
              // Convert it to the full complement of digits available
--- 7109,7117 ----
                                + (fsource->rdigits<0 ? -fsource->rdigits : 0) ;
  
              // Pick up the absolute value of the source
!             value = __gg__int128_from_qualified_field(fsource,
!                                                       source_offset,
!                                                       source_size);
              char ach[64];
  
              // Convert it to the full complement of digits available
*************** __gg__string(const size_t integers[], co
*** 8048,8056 ****
    int overflow = 0;
    if( ref[INDEX_OF_POINTER].field )
      {
!     int rdigits;
!     int p  = (size_t)__gg__binary_value_from_qualified_field(
!                                                     &rdigits,
                                                      ref[INDEX_OF_POINTER]
                                                        .field,
                                                      ref[INDEX_OF_POINTER]
--- 8044,8050 ----
    int overflow = 0;
    if( ref[INDEX_OF_POINTER].field )
      {
!     int p  = (size_t)__gg__int128_from_qualified_field(
                                                      ref[INDEX_OF_POINTER]
                                                        .field,
                                                      ref[INDEX_OF_POINTER]
*************** __gg__binary_value_from_field(   int *rd
*** 8603,8621 ****
                                     var->capacity);
    }
  
- extern "C"
  __int128
! __gg__binary_value_from_qualified_field(int          *rdigits,
!                                         const cblc_field_t *var,
                                          size_t        offset,
                                          size_t        size)
    {
!   return  get_binary_value_local(  rdigits,
                                     var,
                                     var->data + offset,
                                     size);
    }
  
  extern "C"
  GCOB_FP128
  __gg__float128_from_field( cblc_field_t *field )
--- 8597,8635 ----
                                     var->capacity);
    }
  
  __int128
! __gg__int128_from_qualified_field(const cblc_field_t *var,
                                          size_t        offset,
                                          size_t        size)
    {
!   // Use this version when rdigits isn't relevant
!   int rdigits;
!   return  get_binary_value_local( &rdigits,
                                     var,
                                     var->data + offset,
                                     size);
    }
  
+ __int128
+ __gg__int128_from_qualified_field(int128             &i128,
+                                   const cblc_field_t *var,
+                                   size_t             offset,
+                                   size_t             size)
+   {
+   // This routine does double-duty.  It converts VAR to a fixed-point
+   // int128 that carries an rdigits value.  It also returns the __int128
+   // portion of that value, because many routines that know there are no
+   // rdigits also call this routine.  This is a holdover from the time
+   // before this routine was refactored to carry the rdigits, which were
+   // maintained in the external logic before int128::rdigits was implemented/
+ 
+   i128.i128 = get_binary_value_local(&i128.rdigits,
+                                      var,
+                                      var->data + offset,
+                                      size);
+   return i128.i128;
+   }
+ 
  extern "C"
  GCOB_FP128
  __gg__float128_from_field( cblc_field_t *field )
*************** __gg__float128_from_qualified_field(cons
*** 8650,8663 ****
      }
    else
      {
!     int rdigits;
!     retval = (GCOB_FP128)__gg__binary_value_from_qualified_field(&rdigits,
!                                                                   field,
!                                                                   offset,
!                                                                   size);
!     if( rdigits )
        {
!       retval /= (GCOB_FP128)__gg__power_of_ten(rdigits);
        }
      }
    return retval;
--- 8664,8677 ----
      }
    else
      {
!     int128 i128;
!     retval = (GCOB_FP128)__gg__int128_from_qualified_field(i128,
!                                                            field,
!                                                            offset,
!                                                            size);
!     if( i128.rdigits )
        {
!       retval /= (GCOB_FP128)__gg__power_of_ten(i128.rdigits);
        }
      }
    return retval;
*************** __gg__unstring( const cblc_referlet_t *i
*** 10077,10096 ****
  
    if( id8  )
      {
!     int rdigits;
!     tally = (int)__gg__binary_value_from_qualified_field(&rdigits,
!                                                          id8,
!                                                          id8_o,
!                                                          id8_s);
      }
  
    if( id7 )
      {
!     int rdigits;
!     int p = (int)__gg__binary_value_from_qualified_field(&rdigits,
!                                                          id7,
!                                                          id7_o,
!                                                          id7_s);
      if( p < 1 )
        {
        overflow = 1;
--- 10091,10106 ----
  
    if( id8  )
      {
!     tally = (int)__gg__int128_from_qualified_field(id8,
!                                                    id8_o,
!                                                    id8_s);
      }
  
    if( id7 )
      {
!     int p = (int)__gg__int128_from_qualified_field(id7,
!                                                    id7_o,
!                                                    id7_s);
      if( p < 1 )
        {
        overflow = 1;
diff -Nrcpad gcc-17-20260727/libgcobol/libgcobol.h gcc-17-20260802/libgcobol/libgcobol.h
*** gcc-17-20260727/libgcobol/libgcobol.h	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/libgcobol/libgcobol.h	Sun Aug  2 22:32:17 2026
*************** struct cbl_timespec
*** 105,110 ****
--- 105,116 ----
    long    tv_nsec;   // Nanoseconds.
    } ;
  
+ typedef struct int128
+   {
+   __int128 i128;
+   int      rdigits;
+   }int128;
+ 
  extern "C" void __gg__clock_gettime(struct cbl_timespec *tp);
  
  extern "C" GCOB_FP128 __gg__float128_from_location(
*************** extern "C" void __gg__realloc_if_necessa
*** 116,125 ****
                                              size_t *dest_size,
                                              size_t new_size);
  extern "C" void __gg__set_exception_file(const cblc_file_t *file);
! extern "C" __int128 __gg__binary_value_from_qualified_field(int     *rdigits,
!                                                             const cblc_field_t *var,
!                                                             size_t     offset,
!                                                             size_t     size);
  extern "C"  GCOB_FP128 __gg__float128_from_qualified_field(const cblc_field_t *field,
                                                            size_t offset,
                                                            size_t size);
--- 122,134 ----
                                              size_t *dest_size,
                                              size_t new_size);
  extern "C" void __gg__set_exception_file(const cblc_file_t *file);
! __int128 __gg__int128_from_qualified_field(const cblc_field_t *var,
!                                            size_t              offset,
!                                            size_t              size);
! __int128 __gg__int128_from_qualified_field(struct int128      &i128,
!                                            const cblc_field_t *var,
!                                            size_t              offset,
!                                            size_t              size);
  extern "C"  GCOB_FP128 __gg__float128_from_qualified_field(const cblc_field_t *field,
                                                            size_t offset,
                                                            size_t size);
diff -Nrcpad gcc-17-20260727/libgcobol/stringbin.cc gcc-17-20260802/libgcobol/stringbin.cc
*** gcc-17-20260727/libgcobol/stringbin.cc	Mon Jul 27 02:16:18 2026
--- gcc-17-20260802/libgcobol/stringbin.cc	Sun Aug  2 22:32:17 2026
*************** packed_from_combined(const COMBINED &com
*** 407,413 ****
  
    if( combined.run > 9)
      {
!     // Stage 1: pull from int128 until the top half is zero.
      __int128 value128 = combined.val128;
  #if COBOL_LITTLE_ENDIAN
      while(value128>>64)
--- 407,413 ----
  
    if( combined.run > 9)
      {
!     // Stage 1: pull from __int128 until the top half is zero.
      __int128 value128 = combined.val128;
  #if COBOL_LITTLE_ENDIAN
      while(value128>>64)
diff -Nrcpad gcc-17-20260727/libgomp/ChangeLog gcc-17-20260802/libgomp/ChangeLog
*** gcc-17-20260727/libgomp/ChangeLog	Mon Jul 27 02:16:19 2026
--- gcc-17-20260802/libgomp/ChangeLog	Sun Aug  2 22:32:18 2026
***************
*** 1,3 ****
--- 1,53 ----
+ 2026-07-30  Sebastian Galindo  <sebastian.galindo143@gmail.com>
+ 	    Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* libgomp.map (GOACC_2.5): Export GOACC_init, GOACC_shutdown, and
+ 	GOACC_set_device.
+ 	* libgomp_g.h (GOACC_init): Declare.
+ 	(GOACC_shutdown): Likewise.
+ 	(GOACC_set_device): Likewise.
+ 	* oacc-init.c (GOACC_DIRECTIVE_DEVICE_MASK): New macro for
+ 	supported device types.
+ 	(acc_init_1): Accept explicit device number argument.
+ 	(acc_shutdown_1): Shut down a single device or all devices of a
+ 	type.
+ 	(goacc_attach_host_thread_to_device): Whitespace fix.
+ 	(GOACC_init): New entry point for init directive.
+ 	(GOACC_shutdown): New entry point for shutdown directive.
+ 	(GOACC_set_device): New entry point for set directive.
+ 	(acc_init): Pass default device number to acc_init_1.
+ 	(acc_shutdown): Pass default device number to acc_shutdown_1.
+ 	(acc_set_device_num): Whitespace fix.
+ 	(goacc_restore_bind): Whitespace fix.
+ 	(goacc_lazy_initialize): Pass default device number to acc_init_1.
+ 	* testsuite/libgomp.oacc-fortran/init-1.f90: New test.
+ 	* testsuite/libgomp.oacc-fortran/lib-1-directives.f90: New test.
+ 	* testsuite/libgomp.oacc-fortran/lib-4-directives.f90: New test.
+ 	* testsuite/libgomp.oacc-fortran/lib-5-directives.f90: New test.
+ 	* testsuite/libgomp.oacc-fortran/lib-5-init.f90: New test.
+ 	* testsuite/libgomp.oacc-fortran/set-1.f90: New test.
+ 	* testsuite/libgomp.oacc-fortran/shutdown-1.f90: New test.
+ 
+ 2026-07-29  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* testsuite/libgomp.c/target-device-type-1.c: Adjust.
+ 	* testsuite/libgomp.c/target-device-type-2.c: Likewise.
+ 
+ 2026-07-29  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C:
+ 	Simplify offload tree dump scanning.
+ 	* testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C:
+ 	Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-is-initial-host-2.c:
+ 	Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-is-initial-host.c:
+ 	Likewise.
+ 	* testsuite/libgomp.fortran/target-is-initial-host-2.f90:
+ 	Likewise.
+ 	* testsuite/libgomp.fortran/target-is-initial-host.f: Likewise.
+ 	* testsuite/libgomp.fortran/target-is-initial-host.f90: Likewise.
+ 
  2026-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
  
  	* target.c (gomp_target_init): Fix OpenMP reverse offload
diff -Nrcpad gcc-17-20260727/libgomp/libgomp.map gcc-17-20260802/libgomp/libgomp.map
*** gcc-17-20260727/libgomp/libgomp.map	Mon Jul 27 02:16:19 2026
--- gcc-17-20260802/libgomp/libgomp.map	Sun Aug  2 22:32:18 2026
*************** GOACC_2.0.2 {
*** 691,696 ****
--- 691,703 ----
  	GOACC_exit_data;
  } GOACC_2.0.1;
  
+ GOACC_2.5 {
+   global:
+ 	GOACC_init;
+ 	GOACC_shutdown;
+ 	GOACC_set_device;
+ } GOACC_2.0.2;
+ 
  GOMP_PLUGIN_1.0 {
    global:
  	GOMP_PLUGIN_malloc;
diff -Nrcpad gcc-17-20260727/libgomp/libgomp_g.h gcc-17-20260802/libgomp/libgomp_g.h
*** gcc-17-20260727/libgomp/libgomp_g.h	Mon Jul 27 02:16:19 2026
--- gcc-17-20260802/libgomp/libgomp_g.h	Sun Aug  2 22:32:18 2026
*************** extern void GOMP_error (const char *, si
*** 413,418 ****
--- 413,424 ----
  
  extern void GOACC_wait (int, int, ...);
  
+ /* oacc-init.c */
+ 
+ extern void GOACC_init (int, int);
+ extern void GOACC_shutdown (int, int);
+ extern void GOACC_set_device (int, int);
+ 
  /* oacc-mem.c */
  
  extern void GOACC_enter_exit_data (int, size_t, void **, size_t *,
diff -Nrcpad gcc-17-20260727/libgomp/oacc-init.c gcc-17-20260802/libgomp/oacc-init.c
*** gcc-17-20260727/libgomp/oacc-init.c	Mon Jul 27 02:16:19 2026
--- gcc-17-20260802/libgomp/oacc-init.c	Sun Aug  2 22:32:18 2026
*************** static gomp_mutex_t goacc_thread_lock;
*** 69,74 ****
--- 69,78 ----
     grouped by device in target.c:devices).  */
  static struct gomp_device_descr *dispatchers[_ACC_device_hwm] = { 0 };
  
+ /* Device types for init and shutdown directives to check all devices.  */
+ #define GOACC_DIRECTIVE_DEVICE_MASK                                            \
+   ((1 << acc_device_host) | (1 << acc_device_nvidia) | (1 << acc_device_radeon))
+ 
  attribute_hidden void
  goacc_register (struct gomp_device_descr *disp)
  {
*************** acc_dev_num_out_of_range (acc_device_t d
*** 231,237 ****
     held before calling this function.  */
  
  static struct gomp_device_descr *
! acc_init_1 (acc_device_t d, acc_construct_t parent_construct, int implicit)
  {
    gomp_mutex_lock (&acc_init_state_lock);
    acc_init_state = initializing;
--- 235,242 ----
     held before calling this function.  */
  
  static struct gomp_device_descr *
! acc_init_1 (acc_device_t d, acc_construct_t parent_construct, int implicit,
! 	    int dev_num)
  {
    gomp_mutex_lock (&acc_init_state_lock);
    acc_init_state = initializing;
*************** acc_init_1 (acc_device_t d, acc_construc
*** 304,313 ****
  
    ndevs = base_dev->get_num_devices_func ();
  
!   if (ndevs <= 0 || goacc_device_num >= ndevs)
!     acc_dev_num_out_of_range (d, goacc_device_num, ndevs);
  
!   acc_dev = &base_dev[goacc_device_num];
  
    gomp_mutex_lock (&acc_dev->lock);
    if (acc_dev->state == GOMP_DEVICE_INITIALIZED)
--- 309,320 ----
  
    ndevs = base_dev->get_num_devices_func ();
  
!   dev_num = (dev_num == -1 ? goacc_device_num : dev_num);
  
!   if (ndevs <= 0 || dev_num >= ndevs)
!     acc_dev_num_out_of_range (d, dev_num, ndevs);
! 
!   acc_dev = &base_dev[dev_num];
  
    gomp_mutex_lock (&acc_dev->lock);
    if (acc_dev->state == GOMP_DEVICE_INITIALIZED)
*************** acc_init_1 (acc_device_t d, acc_construc
*** 341,347 ****
  /* ACC_DEVICE_LOCK must be held before calling this function.  */
  
  static void
! acc_shutdown_1 (acc_device_t d)
  {
    struct gomp_device_descr *base_dev;
    struct goacc_thread *walk;
--- 348,354 ----
  /* ACC_DEVICE_LOCK must be held before calling this function.  */
  
  static void
! acc_shutdown_1 (acc_device_t d, int dev_num)
  {
    struct gomp_device_descr *base_dev;
    struct goacc_thread *walk;
*************** acc_shutdown_1 (acc_device_t d)
*** 353,373 ****
  
    ndevs = base_dev->get_num_devices_func ();
  
!   /* Unload all the devices of this type that have been opened.  */
!   for (i = 0; i < ndevs; i++)
!     {
!       struct gomp_device_descr *acc_dev = &base_dev[i];
  
        gomp_mutex_lock (&acc_dev->lock);
        gomp_unload_device (acc_dev);
        gomp_mutex_unlock (&acc_dev->lock);
      }
!   
    gomp_mutex_lock (&goacc_thread_lock);
  
    /* Free target-specific TLS data and close all devices.  */
    for (walk = goacc_threads; walk != NULL; walk = walk->next)
      {
        if (walk->target_tls)
  	base_dev->openacc.destroy_thread_data_func (walk->target_tls);
  
--- 360,401 ----
  
    ndevs = base_dev->get_num_devices_func ();
  
!   if (dev_num != -1 && ndevs <= dev_num)
!     acc_dev_num_out_of_range (d, dev_num, ndevs);
  
+   if (dev_num != -1)
+     {
+       struct gomp_device_descr *acc_dev = &base_dev[dev_num];
        gomp_mutex_lock (&acc_dev->lock);
        gomp_unload_device (acc_dev);
        gomp_mutex_unlock (&acc_dev->lock);
      }
!   else
!     {
!       /* Unload all the devices of this type that have been opened.  */
!       for (i = 0; i < ndevs; i++)
! 	{
! 	  struct gomp_device_descr *acc_dev = &base_dev[i];
! 
! 	  gomp_mutex_lock (&acc_dev->lock);
! 	  gomp_unload_device (acc_dev);
! 	  gomp_mutex_unlock (&acc_dev->lock);
! 	}
!     }
! 
    gomp_mutex_lock (&goacc_thread_lock);
  
    /* Free target-specific TLS data and close all devices.  */
    for (walk = goacc_threads; walk != NULL; walk = walk->next)
      {
+       /* These checks are necessary since init supports
+        * multiples devices.  */
+       if (walk->base_dev != base_dev)
+ 	continue;
+ 
+       if (dev_num != -1 && walk->dev != &base_dev[dev_num])
+ 	continue;
+ 
        if (walk->target_tls)
  	base_dev->openacc.destroy_thread_data_func (walk->target_tls);
  
*************** acc_shutdown_1 (acc_device_t d)
*** 409,428 ****
  
    gomp_mutex_unlock (&goacc_thread_lock);
  
-   /* Close all the devices of this type that have been opened.  */
    bool ret = true;
!   for (i = 0; i < ndevs; i++)
      {
!       struct gomp_device_descr *acc_dev = &base_dev[i];
        gomp_mutex_lock (&acc_dev->lock);
        if (acc_dev->state == GOMP_DEVICE_INITIALIZED)
!         {
  	  devices_active = true;
  	  ret &= gomp_fini_device (acc_dev);
  	  acc_dev->state = GOMP_DEVICE_UNINITIALIZED;
  	}
        gomp_mutex_unlock (&acc_dev->lock);
      }
  
    if (!ret)
      gomp_fatal ("device finalization failed");
--- 437,474 ----
  
    gomp_mutex_unlock (&goacc_thread_lock);
  
    bool ret = true;
! 
!   if (dev_num != -1)
      {
!       struct gomp_device_descr *acc_dev = &base_dev[dev_num];
        gomp_mutex_lock (&acc_dev->lock);
+ 
        if (acc_dev->state == GOMP_DEVICE_INITIALIZED)
! 	{
  	  devices_active = true;
  	  ret &= gomp_fini_device (acc_dev);
  	  acc_dev->state = GOMP_DEVICE_UNINITIALIZED;
  	}
+ 
        gomp_mutex_unlock (&acc_dev->lock);
      }
+   else
+     {
+       /* Close all the devices of this type that have been opened.  */
+       for (i = 0; i < ndevs; i++)
+ 	{
+ 	  struct gomp_device_descr *acc_dev = &base_dev[i];
+ 	  gomp_mutex_lock (&acc_dev->lock);
+ 	  if (acc_dev->state == GOMP_DEVICE_INITIALIZED)
+ 	    {
+ 	      devices_active = true;
+ 	      ret &= gomp_fini_device (acc_dev);
+ 	      acc_dev->state = GOMP_DEVICE_UNINITIALIZED;
+ 	    }
+ 	  gomp_mutex_unlock (&acc_dev->lock);
+ 	}
+     }
  
    if (!ret)
      gomp_fatal ("device finalization failed");
*************** goacc_attach_host_thread_to_device (int
*** 541,546 ****
--- 587,695 ----
      = acc_dev->openacc.create_thread_data_func (ord);
  }
  
+ void
+ GOACC_init (int n_device, int d)
+ {
+   /* The OpenACC spec says that if the n_device isn't specified
+      then all the devices available are initializated, but
+      the current acc_init_1 implementation initialize just the
+      goacc_device_num device number. acc_init_1 it's keeped
+      because the profiling dispatch code.  */
+ 
+   gomp_init_targets_once ();
+   /* All the device types.  */
+   if ((acc_device_t) d == acc_device_none)
+     {
+       int i;
+       for (i = 0; i < _ACC_device_hwm; i++)
+ 	{
+ 	  if (!(GOACC_DIRECTIVE_DEVICE_MASK & (1 << i)))
+ 	    continue;
+ 	  gomp_mutex_lock (&acc_device_lock);
+ 
+ 	  struct gomp_device_descr *dev
+ 	    = resolve_device ((acc_device_t) i, false);
+ 	  if (!dev || dev->get_num_devices_func () <= 0)
+ 	    {
+ 	      gomp_debug (0,
+ 			  "init directive: Device type %s isn't available or "
+ 			  "does not have devices.\n",
+ 			  name_of_acc_device_t ((acc_device_t) i));
+ 	      /* if isn't available, just continue.  */
+ 	      gomp_mutex_unlock (&acc_device_lock);
+ 	      continue;
+ 	    }
+ 
+ 	  gomp_debug (0,
+ 		      "init directive: Initializing device type %s and device "
+ 		      "number %d. \n",
+ 		      name_of_acc_device_t ((acc_device_t) i), n_device);
+ 	  cached_base_dev
+ 	    = acc_init_1 ((acc_device_t) i, acc_construct_init, 0, n_device);
+ 	  gomp_mutex_unlock (&acc_device_lock);
+ 	}
+     }
+   else
+     {
+       gomp_debug (
+ 	0, "init directive: Initializing device type %s and device number %d\n",
+ 	name_of_acc_device_t ((acc_device_t) d), n_device);
+ 
+       gomp_mutex_lock (&acc_device_lock);
+       cached_base_dev
+ 	= acc_init_1 ((acc_device_t) d, acc_construct_init, 0, n_device);
+       gomp_mutex_unlock (&acc_device_lock);
+ 
+       goacc_attach_host_thread_to_device (-1);
+     }
+ }
+ 
+ void
+ GOACC_shutdown (int n_device, int d)
+ {
+   gomp_init_targets_once ();
+ 
+   if ((acc_device_t) d == acc_device_none)
+     {
+       int i;
+       for (i = 0; i < _ACC_device_hwm; i++)
+ 	{
+ 	  if (!(GOACC_DIRECTIVE_DEVICE_MASK & (1 << i)))
+ 	    continue;
+ 
+ 	  gomp_mutex_lock (&acc_device_lock);
+ 
+ 	  struct gomp_device_descr *dev
+ 	    = resolve_device ((acc_device_t) i, false);
+ 
+ 	  if (!dev || dev->get_num_devices_func () <= 0)
+ 	    {
+ 	      gomp_mutex_unlock (&acc_device_lock);
+ 	      continue;
+ 	    }
+ 
+ 	  acc_shutdown_1 ((acc_device_t) i, n_device);
+ 
+ 	  gomp_mutex_unlock (&acc_device_lock);
+ 	}
+     }
+   else
+     {
+       gomp_mutex_lock (&acc_device_lock);
+ 
+       acc_shutdown_1 ((acc_device_t) d, n_device);
+ 
+       gomp_mutex_unlock (&acc_device_lock);
+     }
+ }
+ 
+ void
+ GOACC_set_device (int n_device, int d)
+ {
+   acc_set_device_type ((acc_device_t) d);
+   acc_set_device_num (n_device, (acc_device_t) d);
+ }
+ 
  /* OpenACC 2.0a (3.2.12, 3.2.13) doesn't specify whether the serialization of
     init/shutdown is per-process or per-thread.  We choose per-process.  */
  
*************** acc_init (acc_device_t d)
*** 553,559 ****
    gomp_init_targets_once ();
  
    gomp_mutex_lock (&acc_device_lock);
!   cached_base_dev = acc_init_1 (d, acc_construct_runtime_api, 0);
    gomp_mutex_unlock (&acc_device_lock);
    
    goacc_attach_host_thread_to_device (-1);
--- 702,708 ----
    gomp_init_targets_once ();
  
    gomp_mutex_lock (&acc_device_lock);
!   cached_base_dev = acc_init_1 (d, acc_construct_runtime_api, 0, -1);
    gomp_mutex_unlock (&acc_device_lock);
    
    goacc_attach_host_thread_to_device (-1);
*************** acc_shutdown (acc_device_t d)
*** 569,575 ****
  
    gomp_mutex_lock (&acc_device_lock);
  
!   acc_shutdown_1 (d);
  
    gomp_mutex_unlock (&acc_device_lock);
  }
--- 718,724 ----
  
    gomp_mutex_lock (&acc_device_lock);
  
!   acc_shutdown_1 (d, -1);
  
    gomp_mutex_unlock (&acc_device_lock);
  }
*************** goacc_lazy_initialize (void)
*** 926,933 ****
  
    gomp_mutex_lock (&acc_device_lock);
    if (!cached_base_dev)
!     cached_base_dev = acc_init_1 (acc_device_default,
! 				  acc_construct_parallel, 1);
    gomp_mutex_unlock (&acc_device_lock);
  
    goacc_attach_host_thread_to_device (-1);
--- 1075,1082 ----
  
    gomp_mutex_lock (&acc_device_lock);
    if (!cached_base_dev)
!     cached_base_dev
!       = acc_init_1 (acc_device_default, acc_construct_parallel, 1, -1);
    gomp_mutex_unlock (&acc_device_lock);
  
    goacc_attach_host_thread_to_device (-1);
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.c/target-device-type-1.c gcc-17-20260802/libgomp/testsuite/libgomp.c/target-device-type-1.c
*** gcc-17-20260727/libgomp/testsuite/libgomp.c/target-device-type-1.c	Mon Jul 27 02:16:19 2026
--- gcc-17-20260802/libgomp/testsuite/libgomp.c/target-device-type-1.c	Sun Aug  2 22:32:18 2026
*************** main ()
*** 18,21 ****
  }
  
  /* { dg-final { scan-tree-dump "= __builtin_omp_is_initial_device \\(\\);" "gimple" } } */
! /* { dg-final { scan-tree-dump "__builtin_GOMP_error \\(\"Executing device-type ..nohost.. target region on the host\"," "gimple" } } */
--- 18,21 ----
  }
  
  /* { dg-final { scan-tree-dump "= __builtin_omp_is_initial_device \\(\\);" "gimple" } } */
! /* { dg-final { scan-tree-dump "__builtin_GOMP_error \\(&\"Executing device-type ..nohost.. target region on the host\"\\\[0\\\]," "gimple" } } */
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.c/target-device-type-2.c gcc-17-20260802/libgomp/testsuite/libgomp.c/target-device-type-2.c
*** gcc-17-20260727/libgomp/testsuite/libgomp.c/target-device-type-2.c	Mon Jul 27 02:16:19 2026
--- gcc-17-20260802/libgomp/testsuite/libgomp.c/target-device-type-2.c	Sun Aug  2 22:32:18 2026
*************** main ()
*** 21,27 ****
  }
  
  /* { dg-final { scan-tree-dump "= __builtin_omp_is_initial_device \\(\\);" "gimple" } } */
! /* { dg-final { scan-tree-dump "__builtin_GOMP_error \\(\"Executing device-type ..nohost.. target region on the host\"," "gimple" } } */
  
  /* { dg-output "libgomp: fatal error: Executing device-type 'nohost' target region on the host" } */
  /* { dg-shouldfail "'nohost' target region on the host" } */
--- 21,27 ----
  }
  
  /* { dg-final { scan-tree-dump "= __builtin_omp_is_initial_device \\(\\);" "gimple" } } */
! /* { dg-final { scan-tree-dump "__builtin_GOMP_error \\(&\"Executing device-type ..nohost.. target region on the host\"\\\[0\\\]," "gimple" } } */
  
  /* { dg-output "libgomp: fatal error: Executing device-type 'nohost' target region on the host" } */
  /* { dg-shouldfail "'nohost' target region on the host" } */
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C gcc-17-20260802/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C
*** gcc-17-20260727/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C	Mon Jul 27 02:16:19 2026
--- gcc-17-20260802/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-1.C	Sun Aug  2 22:32:18 2026
***************
*** 1,6 ****
  // { dg-do run }
  // { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }
! // { dg-additional-options -foffload-options=-fdump-tree-optimized { target { offload_target_nvptx || offload_target_amdgcn } } }
  
  // { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }
  // { dg-final { scan-tree-dump-times "_GLOBAL__off_I_v1" 1 "gimple" } }
--- 1,6 ----
  // { dg-do run }
  // { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }
! // { dg-additional-options -foffload-options=-fdump-tree-optimized }
  
  // { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }
  // { dg-final { scan-tree-dump-times "_GLOBAL__off_I_v1" 1 "gimple" } }
***************
*** 22,31 ****
  // { dg-final { scan-tree-dump-times "void _GLOBAL__off_I_v1" 1 "optimized" { target offload_target_any } } }
  // { dg-final { scan-tree-dump-times "__attribute__\\(\\(\[^\n\r]*omp declare target nohost" 1 "optimized" { target offload_target_any } } }
  
! // { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-not "omp_initial_device;" "optimized" { target offload_target_amdgcn } } }
! // { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "v1\\._x = 5;" "optimized" { target offload_target_amdgcn } } }
! // { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump-not "omp_initial_device;" "optimized" { target offload_target_nvptx } } }
! // { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump "v1\\._x = 5;" "optimized" { target offload_target_nvptx } } }
  // { dg-additional-options "-Wno-deprecated-openmp" }
  #include <cassert>
  #include <omp.h>
--- 22,29 ----
  // { dg-final { scan-tree-dump-times "void _GLOBAL__off_I_v1" 1 "optimized" { target offload_target_any } } }
  // { dg-final { scan-tree-dump-times "__attribute__\\(\\(\[^\n\r]*omp declare target nohost" 1 "optimized" { target offload_target_any } } }
  
! // { dg-final { scan-offload-tree-dump-not "omp_initial_device;" "optimized" } }
! // { dg-final { scan-offload-tree-dump "v1\\._x = 5;" "optimized" } }
  // { dg-additional-options "-Wno-deprecated-openmp" }
  #include <cassert>
  #include <omp.h>
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C gcc-17-20260802/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C
*** gcc-17-20260727/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C	Mon Jul 27 02:16:19 2026
--- gcc-17-20260802/libgomp/testsuite/libgomp.c++/static-aggr-constructor-destructor-2.C	Sun Aug  2 22:32:18 2026
***************
*** 1,6 ****
  // { dg-do run }
  // { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }
! // { dg-additional-options -foffload-options=-fdump-tree-optimized { target { offload_target_nvptx || offload_target_amdgcn } } }
  
  // { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }
  // { dg-final { scan-tree-dump-times "_GLOBAL__off_I_v1" 1 "gimple" } }
--- 1,6 ----
  // { dg-do run }
  // { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }
! // { dg-additional-options -foffload-options=-fdump-tree-optimized }
  
  // { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }
  // { dg-final { scan-tree-dump-times "_GLOBAL__off_I_v1" 1 "gimple" } }
***************
*** 23,32 ****
  // { dg-final { scan-tree-dump-times "__attribute__\\(\\(\[^\n\r]*omp declare target nohost" 1 "optimized" { target offload_target_any } } }
  
  
! // { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-not "omp_initial_device;" "optimized" { target offload_target_amdgcn } } }
! // { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "v1\\._x = 5;" "optimized" { target offload_target_amdgcn } } }
! // { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump-not "omp_initial_device;" "optimized" { target offload_target_nvptx } } }
! // { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump "v1\\._x = 5;" "optimized" { target offload_target_nvptx } } }
  // { dg-additional-options "-Wno-deprecated-openmp" }
  
  #include <cassert>
--- 23,30 ----
  // { dg-final { scan-tree-dump-times "__attribute__\\(\\(\[^\n\r]*omp declare target nohost" 1 "optimized" { target offload_target_any } } }
  
  
! // { dg-final { scan-offload-tree-dump-not "omp_initial_device;" "optimized" } }
! // { dg-final { scan-offload-tree-dump "v1\\._x = 5;" "optimized" } }
  // { dg-additional-options "-Wno-deprecated-openmp" }
  
  #include <cassert>
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host-2.c gcc-17-20260802/libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host-2.c
*** gcc-17-20260727/libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host-2.c	Mon Jul 27 02:16:19 2026
--- gcc-17-20260802/libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host-2.c	Sun Aug  2 22:32:18 2026
***************
*** 4,17 ****
  /* Check whether 'omp_is_initial_device()' is NOT compile-time optimized. */
  
  /* { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }  */
! /* { dg-additional-options -foffload-options=-fdump-tree-optimized { target { offload_target_nvptx || offload_target_amdgcn } } }  */
  
  /* { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }  */
  
  /* { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "optimized" } }  */
  
! /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-times "omp_is_initial_device" 1 "optimized" { target offload_target_amdgcn } } }  */
! /* { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump-times "omp_is_initial_device" 1 "optimized" { target offload_target_nvptx } } }  */
  
  
  #include <omp.h>
--- 4,16 ----
  /* Check whether 'omp_is_initial_device()' is NOT compile-time optimized. */
  
  /* { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }  */
! /* { dg-additional-options -foffload-options=-fdump-tree-optimized }  */
  
  /* { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }  */
  
  /* { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "optimized" } }  */
  
! /* { dg-final { scan-offload-tree-dump-times "omp_is_initial_device" 1 "optimized" } }  */
  
  
  #include <omp.h>
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host.c gcc-17-20260802/libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host.c
*** gcc-17-20260727/libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host.c	Mon Jul 27 02:16:19 2026
--- gcc-17-20260802/libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host.c	Sun Aug  2 22:32:18 2026
***************
*** 3,16 ****
  /* Check whether 'omp_is_initial_device()' is properly compile-time optimized. */
  
  /* { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }  */
! /* { dg-additional-options -foffload-options=-fdump-tree-optimized { target { offload_target_nvptx || offload_target_amdgcn } } }  */
  
  /* { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }  */
  
  /* { dg-final { scan-tree-dump-not "omp_is_initial_device" "optimized" } }  */
  
! /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-not "omp_is_initial_device" "optimized" { target offload_target_amdgcn } } }  */
! /* { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump-not "omp_is_initial_device" "optimized" { target offload_target_nvptx } } }  */
  
  
  #include <omp.h>
--- 3,15 ----
  /* Check whether 'omp_is_initial_device()' is properly compile-time optimized. */
  
  /* { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }  */
! /* { dg-additional-options -foffload-options=-fdump-tree-optimized }  */
  
  /* { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }  */
  
  /* { dg-final { scan-tree-dump-not "omp_is_initial_device" "optimized" } }  */
  
! /* { dg-final { scan-offload-tree-dump-not "omp_is_initial_device" "optimized" } }  */
  
  
  #include <omp.h>
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.fortran/target-is-initial-host-2.f90 gcc-17-20260802/libgomp/testsuite/libgomp.fortran/target-is-initial-host-2.f90
*** gcc-17-20260727/libgomp/testsuite/libgomp.fortran/target-is-initial-host-2.f90	Mon Jul 27 02:16:19 2026
--- gcc-17-20260802/libgomp/testsuite/libgomp.fortran/target-is-initial-host-2.f90	Sun Aug  2 22:32:18 2026
***************
*** 3,16 ****
  ! Check whether 'omp_is_initial_device()' is NOT compile-time optimized. */
  
  ! { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }
! ! { dg-additional-options -foffload-options=-fdump-tree-optimized { target { offload_target_nvptx || offload_target_amdgcn } } }
  
  ! { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }
  
  ! { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "optimized" } }
  
! ! { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-times "omp_is_initial_device" 1 "optimized" { target offload_target_amdgcn } } }
! ! { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump-times "omp_is_initial_device" 1 "optimized" { target offload_target_nvptx } } }
  
  
  program main
--- 3,15 ----
  ! Check whether 'omp_is_initial_device()' is NOT compile-time optimized. */
  
  ! { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }
! ! { dg-additional-options -foffload-options=-fdump-tree-optimized }
  
  ! { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }
  
  ! { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "optimized" } }
  
! ! { dg-final { scan-offload-tree-dump-times "omp_is_initial_device" 1 "optimized" } }
  
  
  program main
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.fortran/target-is-initial-host.f gcc-17-20260802/libgomp/testsuite/libgomp.fortran/target-is-initial-host.f
*** gcc-17-20260727/libgomp/testsuite/libgomp.fortran/target-is-initial-host.f	Mon Jul 27 02:16:19 2026
--- gcc-17-20260802/libgomp/testsuite/libgomp.fortran/target-is-initial-host.f	Sun Aug  2 22:32:18 2026
***************
*** 1,14 ****
  ! Check whether 'omp_is_initial_device()' is properly compile-time optimized. */
  
  ! { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }
! ! { dg-additional-options -foffload-options=-fdump-tree-optimized { target { offload_target_nvptx || offload_target_amdgcn } } }
  
  ! { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }
  
  ! { dg-final { scan-tree-dump-not "omp_is_initial_device" "optimized" } }
  
! ! { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-not "omp_is_initial_device" "optimized" { target offload_target_amdgcn } } }
! ! { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump-not "omp_is_initial_device" "optimized" { target offload_target_nvptx } } }
  
  
        program main
--- 1,13 ----
  ! Check whether 'omp_is_initial_device()' is properly compile-time optimized. */
  
  ! { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }
! ! { dg-additional-options -foffload-options=-fdump-tree-optimized }
  
  ! { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }
  
  ! { dg-final { scan-tree-dump-not "omp_is_initial_device" "optimized" } }
  
! ! { dg-final { scan-offload-tree-dump-not "omp_is_initial_device" "optimized" } }
  
  
        program main
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.fortran/target-is-initial-host.f90 gcc-17-20260802/libgomp/testsuite/libgomp.fortran/target-is-initial-host.f90
*** gcc-17-20260727/libgomp/testsuite/libgomp.fortran/target-is-initial-host.f90	Mon Jul 27 02:16:19 2026
--- gcc-17-20260802/libgomp/testsuite/libgomp.fortran/target-is-initial-host.f90	Sun Aug  2 22:32:18 2026
***************
*** 1,14 ****
  ! Check whether 'omp_is_initial_device()' is properly compile-time optimized. */
  
  ! { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }
! ! { dg-additional-options -foffload-options=-fdump-tree-optimized { target { offload_target_nvptx || offload_target_amdgcn } } }
  
  ! { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }
  
  ! { dg-final { scan-tree-dump-not "omp_is_initial_device" "optimized" } }
  
! ! { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-not "omp_is_initial_device" "optimized" { target offload_target_amdgcn } } }
! ! { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump-not "omp_is_initial_device" "optimized" { target offload_target_nvptx } } }
  
  
  program main
--- 1,13 ----
  ! Check whether 'omp_is_initial_device()' is properly compile-time optimized. */
  
  ! { dg-additional-options "-fdump-tree-gimple -fdump-tree-optimized" }
! ! { dg-additional-options -foffload-options=-fdump-tree-optimized }
  
  ! { dg-final { scan-tree-dump-times "omp_is_initial_device" 1 "gimple" } }
  
  ! { dg-final { scan-tree-dump-not "omp_is_initial_device" "optimized" } }
  
! ! { dg-final { scan-offload-tree-dump-not "omp_is_initial_device" "optimized" } }
  
  
  program main
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/init-1.f90 gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/init-1.f90
*** gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/init-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/init-1.f90	Sun Aug  2 22:32:18 2026
***************
*** 0 ****
--- 1,59 ----
+ ! { dg-do run }
+ !
+ ! Test the OpenACC init directive at run time.
+ 
+ use openacc
+ 
+ implicit none
+ 
+ logical :: l
+ integer :: n
+ 
+ if (acc_get_num_devices (acc_device_host) .ne. 1) stop 1
+ 
+ !$acc init
+ !$acc shutdown
+ 
+ !$acc init device_type(host)
+ 
+ if (acc_get_device_type () .ne. acc_device_host) stop 2
+ if (acc_get_device_num (acc_device_host) .ne. 0) stop 3
+ 
+ !$acc shutdown device_type(host)
+ 
+ !$acc init device_type(host) device_num(0)
+ 
+ if (acc_get_device_type () .ne. acc_device_host) stop 4
+ if (acc_get_device_num (acc_device_host) .ne. 0) stop 5
+ 
+ !$acc shutdown device_type(host)
+ 
+ l = .true.
+ !$acc init if (l) device_type(host)
+ 
+ if (acc_get_device_type () .ne. acc_device_host) stop 6
+ 
+ !$acc shutdown device_type(host)
+ 
+ n = acc_get_num_devices (acc_device_default)
+ !$acc init if (.false.) device_num(n)
+ 
+ if (acc_get_num_devices (acc_device_nvidia) .ne. 0) then
+   l = .true.
+   !$acc init if (l) device_type(nvidia)
+   l = .false.
+   !$acc init if (l) device_type(host) 
+   if (acc_get_device_type () .ne. acc_device_nvidia) stop 7
+   !$acc shutdown device_type(nvidia)
+ end if
+ 
+ if (acc_get_num_devices (acc_device_radeon) .ne. 0) then
+   l = .true.
+   !$acc init if (l) device_type(radeon)
+   l = .false.
+   !$acc init if (l) device_type(host) 
+   if (acc_get_device_type () .ne. acc_device_radeon) stop 8
+   !$acc shutdown device_type(radeon)
+ end if
+ 
+ end
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/lib-1-directives.f90 gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/lib-1-directives.f90
*** gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/lib-1-directives.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/lib-1-directives.f90	Sun Aug  2 22:32:18 2026
***************
*** 0 ****
--- 1,17 ----
+ ! { dg-do run }
+ !
+ ! Port of lib-1.f90 replacing applicable runtime calls with directives.
+ 
+ use openacc
+ 
+ if (acc_get_num_devices (acc_device_host) .ne. 1) STOP 1
+ !$acc set device_type(host)
+ if (acc_get_device_type () .ne. acc_device_host) STOP 2
+ !$acc set device_type(host) device_num(0)
+ if (acc_get_device_num (acc_device_host) .ne. 0) STOP 3
+ !$acc shutdown device_type(host)
+ 
+ !$acc init device_type(host)
+ !$acc shutdown device_type(host)
+ 
+ end
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/lib-4-directives.f90 gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/lib-4-directives.f90
*** gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/lib-4-directives.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/lib-4-directives.f90	Sun Aug  2 22:32:18 2026
***************
*** 0 ****
--- 1,37 ----
+ ! { dg-do run }
+ !
+ ! Port of lib-4.f90 replacing applicable runtime calls with directives.
+ 
+ program main
+   use openacc
+   implicit none
+ 
+   integer n
+ 
+   if (acc_get_num_devices (acc_device_host) .ne. 1) STOP 1
+ 
+   if (acc_get_num_devices (acc_device_none) .ne. 0) STOP 2
+ 
+   !$acc init device_type(host)
+ 
+   if (acc_get_device_type () .ne. acc_device_host) STOP 3
+ 
+   !$acc set device_type(host)
+ 
+   if (acc_get_device_type () .ne. acc_device_host) STOP 4
+ 
+   n = 0
+ 
+   !$acc set device_type(host) device_num(n)
+ 
+   if (acc_get_device_num (acc_device_host) .ne. 0) STOP 5
+ 
+   if (.NOT. acc_async_test (n) ) STOP 6
+ 
+   call acc_wait (n)
+ 
+   call acc_wait_all ()
+ 
+   !$acc shutdown device_type(host)
+ 
+ end program
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/lib-5-directives.f90 gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/lib-5-directives.f90
*** gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/lib-5-directives.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/lib-5-directives.f90	Sun Aug  2 22:32:18 2026
***************
*** 0 ****
--- 1,59 ----
+ ! { dg-do run }
+ !
+ ! Port of lib-5.f90 replacing applicable runtime calls with directives.
+ 
+ program main
+   use openacc
+   implicit none
+ 
+   integer n
+ 
+   if (acc_get_num_devices (acc_device_nvidia) .ne. 0) then
+ 
+      !$acc init device_type(nvidia)
+ 
+      n = 0
+ 
+      !$acc set device_type(nvidia) device_num(n)
+ 
+      if (acc_get_device_num (acc_device_nvidia) .ne. 0) stop 11
+ 
+      if (acc_get_num_devices (acc_device_nvidia) .gt. 1) then
+ 
+         n = 1
+ 
+         !$acc set device_type(nvidia) device_num(n)
+ 
+         if (acc_get_device_num (acc_device_nvidia) .ne. 1) stop 12
+ 
+      end if
+ 
+      !$acc shutdown device_type(nvidia)
+ 
+   end if
+ 
+   if (acc_get_num_devices (acc_device_radeon) .ne. 0) then
+ 
+      !$acc init device_type(radeon)
+ 
+      n = 0
+ 
+      !$acc set device_type(radeon) device_num(n)
+ 
+      if (acc_get_device_num (acc_device_radeon) .ne. 0) stop 21
+ 
+      if (acc_get_num_devices (acc_device_radeon) .gt. 1) then
+ 
+         n = 1
+ 
+         !$acc set device_type(radeon) device_num(n)
+ 
+         if (acc_get_device_num (acc_device_radeon) .ne. 1) stop 22
+ 
+      end if
+ 
+      !$acc shutdown device_type(radeon)
+ 
+   end if
+ 
+ end program
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/lib-5-init.f90 gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/lib-5-init.f90
*** gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/lib-5-init.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/lib-5-init.f90	Sun Aug  2 22:32:18 2026
***************
*** 0 ****
--- 1,59 ----
+ ! { dg-do run }
+ !
+ ! Port of lib-5.f90 using !$acc init instead of call acc_init.
+ 
+ program main
+   use openacc
+   implicit none
+ 
+   integer n
+ 
+   if (acc_get_num_devices (acc_device_nvidia) .ne. 0) then
+ 
+      !$acc init device_type(nvidia)
+ 
+      n = 0
+ 
+      call acc_set_device_num (n, acc_device_nvidia)
+ 
+      if (acc_get_device_num (acc_device_nvidia) .ne. 0) stop 11
+ 
+      if (acc_get_num_devices (acc_device_nvidia) .gt. 1) then
+ 
+         n = 1
+ 
+         call acc_set_device_num (n, acc_device_nvidia)
+ 
+         if (acc_get_device_num (acc_device_nvidia) .ne. 1) stop 12
+ 
+      end if
+ 
+      call acc_shutdown (acc_device_nvidia)
+ 
+   end if
+ 
+   if (acc_get_num_devices (acc_device_radeon) .ne. 0) then
+ 
+      !$acc init device_type(radeon)
+ 
+      n = 0
+ 
+      call acc_set_device_num (n, acc_device_radeon)
+ 
+      if (acc_get_device_num (acc_device_radeon) .ne. 0) stop 21
+ 
+      if (acc_get_num_devices (acc_device_radeon) .gt. 1) then
+ 
+         n = 1
+ 
+         call acc_set_device_num (n, acc_device_radeon)
+ 
+         if (acc_get_device_num (acc_device_radeon) .ne. 1) stop 22
+ 
+      end if
+ 
+      call acc_shutdown (acc_device_radeon)
+ 
+   end if
+ 
+ end program
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/set-1.f90 gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/set-1.f90
*** gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/set-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/set-1.f90	Sun Aug  2 22:32:18 2026
***************
*** 0 ****
--- 1,82 ----
+ ! { dg-do run }
+ !
+ ! Test the OpenACC set directive at run time.
+ 
+ use openacc
+ 
+ implicit none
+ 
+ logical :: l
+ integer :: n
+ 
+ if (acc_get_num_devices (acc_device_host) .ne. 1) stop 1
+ 
+ call acc_init (acc_device_host)
+ 
+ !$acc set device_type(host)
+ 
+ if (acc_get_device_type () .ne. acc_device_host) stop 2
+ 
+ 
+ ! This set device_num(0) call init all the devices,
+ ! so we can skip the init call later
+ 
+ !$acc set device_num(0)
+ 
+ if (acc_get_device_num (acc_device_host) .ne. 0) stop 3
+ 
+ !$acc set device_type(host) device_num(0)
+ 
+ if (acc_get_device_type () .ne. acc_device_host) stop 4
+ if (acc_get_device_num (acc_device_host) .ne. 0) stop 5
+ 
+ l = .true.
+ !$acc set if (l) device_type(host)
+ 
+ if (acc_get_device_type () .ne. acc_device_host) stop 6
+ 
+ l = .false.
+ n = 1
+ !$acc set if (l) device_num(n)
+ 
+ if (acc_get_device_num (acc_device_host) .ne. 0) stop 7
+ 
+ call acc_shutdown (acc_device_host)
+ 
+ if (acc_get_num_devices (acc_device_nvidia) .ne. 0) then
+ 
+   !$acc set device_type(nvidia)
+ 
+   if (acc_get_device_type () .ne. acc_device_nvidia) stop 11
+ 
+   n = 0
+   !$acc set device_type(nvidia) device_num(n)
+ 
+   if (acc_get_device_num (acc_device_nvidia) .ne. 0) stop 12
+ 
+   l = .false.
+   !$acc set if (l) device_type(host)
+   if (acc_get_device_type () .ne. acc_device_nvidia) stop 13
+ 
+   call acc_shutdown (acc_device_nvidia)
+ end if
+ 
+ if (acc_get_num_devices (acc_device_radeon) .ne. 0) then
+ 
+   !$acc set device_type(radeon)
+ 
+   if (acc_get_device_type () .ne. acc_device_radeon) stop 21
+ 
+   n = 0
+   !$acc set device_type(radeon) device_num(n)
+ 
+   if (acc_get_device_num (acc_device_radeon) .ne. 0) stop 22
+ 
+   l = .false.
+   !$acc set if (l) device_type(host)
+   if (acc_get_device_type () .ne. acc_device_radeon) stop 23
+ 
+   call acc_shutdown (acc_device_radeon)
+ end if
+ 
+ end
diff -Nrcpad gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/shutdown-1.f90 gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/shutdown-1.f90
*** gcc-17-20260727/libgomp/testsuite/libgomp.oacc-fortran/shutdown-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libgomp/testsuite/libgomp.oacc-fortran/shutdown-1.f90	Sun Aug  2 22:32:18 2026
***************
*** 0 ****
--- 1,53 ----
+ ! { dg-do run }
+ !
+ ! Test the OpenACC shutdown directive at run time.
+ 
+ use openacc
+ 
+ implicit none
+ 
+ logical :: l
+ integer :: n
+ 
+ if (acc_get_num_devices (acc_device_host) .ne. 1) stop 1
+ 
+ !$acc init device_type(host)
+ 
+ if (acc_get_device_type () .ne. acc_device_host) stop 2
+ if (acc_get_device_num (acc_device_host) .ne. 0) stop 3
+ 
+ !$acc shutdown device_type(host)
+ 
+ !$acc init device_type(host) device_num(0)
+ 
+ !$acc shutdown device_type(host) device_num(0)
+ 
+ l = .true.
+ !$acc init if (l) device_type(host)
+ 
+ if (acc_get_device_type () .ne. acc_device_host) stop 4
+ 
+ !$acc shutdown if (l) device_type(host)
+ 
+ n = acc_get_num_devices (acc_device_default)
+ !$acc shutdown if (.false.) device_num(n)
+ 
+ if (acc_get_num_devices (acc_device_nvidia) .ne. 0) then
+   l = .true.
+   !$acc init if (l) device_type(nvidia)
+   if (acc_get_device_type () .ne. acc_device_nvidia) stop 5
+   l = .false.
+   !$acc shutdown if (l) device_type(host)
+   !$acc shutdown device_type(nvidia)
+ end if
+ 
+ if (acc_get_num_devices (acc_device_radeon) .ne. 0) then
+   l = .true.
+   !$acc init if (l) device_type(radeon)
+   if (acc_get_device_type () .ne. acc_device_radeon) stop 6
+   l = .false.
+   !$acc shutdown if (l) device_type(host)
+   !$acc shutdown device_type(radeon)
+ end if
+ 
+ end
diff -Nrcpad gcc-17-20260727/libstdc++-v3/ChangeLog gcc-17-20260802/libstdc++-v3/ChangeLog
*** gcc-17-20260727/libstdc++-v3/ChangeLog	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/ChangeLog	Sun Aug  2 22:32:18 2026
***************
*** 1,3 ****
--- 1,127 ----
+ 2026-07-31  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/123211
+ 	* include/bits/ranges_base.h (__distance_fn::operator()): For
+ 	the non-sized-sentinel overload, recursively handle segmented
+ 	iterators via __for_each_segment.
+ 
+ 2026-07-31  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/123211
+ 	* include/bits/stl_deque.h (_Deque_iterator::_S_for_each_segment):
+ 	Define.
+ 	(_Deque_iterator::_S_enable_for_each_segment): Define.
+ 	* include/bits/stl_iterator_base_funcs.h: Include <bits/move.h>.
+ 	(__for_each_segment): Define.
+ 	* include/bits/stl_iterator_base_types.h: Include
+ 	<ext/type_traits.h> in C++98 mode.
+ 	(__enable_for_each_segment): Define.
+ 	(__segmented_iterator): Define in C++20.
+ 	* include/debug/safe_iterator.h
+ 	(_Safe_iterator::_S_for_each_segment): Define.
+ 	(_Safe_iterator::_S_enable_for_each_segment): Define.
+ 	* include/std/ranges (join_view::_Iterator::_Iterator): New
+ 	constructor taking both an inner and outer iterator.
+ 	(join_view::_Iterator::_S_for_each_segment): Define.
+ 	(join_view::_Iterator::_S_enable_for_each_segment): Define.
+ 	(concat_view::_Iterator::_S_for_each_segment): Define.
+ 	(concat_view::_Iterator::_S_enable_for_each_segment): Define.
+ 	* testsuite/23_containers/deque/for_each_segment.cc: New test.
+ 	* testsuite/std/ranges/adaptors/join/for_each_segment.cc: New test.
+ 	* testsuite/std/ranges/concat/for_each_segment.cc: New test.
+ 
+ 2026-07-31  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/iosfwd: Provide feature-test macros
+ 	__cpp_lib_spanstream and __cpp_lib_syncbuf.
+ 	* testsuite/27_io/headers/iosfwd/synopsis.cc: Verify values
+ 	of these FTMs.
+ 
+ 2026-07-31  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/condition_variable (condition_variable::wait_until):
+ 	Take timeout parameter by value as per LWG 4301.
+ 	(condition_variable::wait_for): Likewise.
+ 	(condition_variable::__wait_until_impl): Likewise.
+ 	(condition_variable_any::wait_until): Likewise.
+ 	(condition_variable_any::wait_for): Likewise.
+ 
+ 2026-07-31  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/std/coroutine: Ignore -Winvalid-specialization in file.
+ 	(std::coroutine_handle): Add clang::no_specializations attribute.
+ 	* testsuite/18_support/coroutines/specializations_neg.cc: New test.
+ 
+ 2026-07-31  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/alloc_traits.h
+ 	(_GLIBCXX_NO_ALLOC_TRAITS_SPECIALIZATIONS): Define locally.
+ 	(std::allocator_traits) [__cplusplus > 202002L]: Add
+ 	clang::no_specializations attribute.
+ 	(std::allocator_traits<allocator<_Tp>>)
+ 	(std::allocator_traits<allocator<void>>): Locally ignore
+ 	-Winvalid-specialization warnings.
+ 	* include/bits/memory_resource.h
+ 	(allocator_traits<pmr::polymorphic_allocator<_Tp>>): Likewise.
+ 	* testsuite/20_util/allocator_traits/requirements/specializations_neg.cc:
+ 	New test.
+ 
+ 2026-07-31  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/126364
+ 	* include/bits/chrono_io.h (_Parser::operator()) <R>: Only break
+ 	early when setting failbit.
+ 	* testsuite/std/time/parse/126364.cc: New test.
+ 
+ 2026-07-29  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/126452
+ 	* acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Use LC_ALL_C and
+ 	match both "Warning" and "warning" in ld output.
+ 	* configure: Regenerate.
+ 
+ 2026-07-29  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/116110
+ 	* src/c++20/tzdb.cc (time_zone::_M_get_sys_info): Remove
+ 	ZoneInfo::calc_save invocation and related iterator adjustment.
+ 	(chrono::reload_tzdb): Calculate save (invoke calc_save) for
+ 	all infos on all zones.
+ 
+ 2026-07-29  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122197
+ 	* include/bits/shared_ptr_base.h (~_Sp_counted_deleter): Disable
+ 	-Warray-bounds warnings.
+ 	(_Sp_counted_deleter::_M_dispose): Likewise.
+ 	(_Sp_counted_ptr_inplace::_M_dispose): Likewise.
+ 	* testsuite/20_util/shared_ptr/dest/122197-2.cc: New test.
+ 	* testsuite/20_util/shared_ptr/dest/122197.cc: New test.
+ 
+ 2026-07-28  Arsen Arsenović  <aarsenovic@baylibre.com>
+ 
+ 	* testsuite/lib/libstdc++.exp: Load gcc-defs.exp.  Load
+ 	prune.exp and dg-options.exp after GCC testsuite libs.
+ 	(libstdc++_init): Use gcc-set-multilib-library-path to calculate
+ 	LD_LIBRARY_PATH for installed G++ compilers.
+ 
+ 2026-07-28  David Faure  <david.faure@kdab.com>
+ 
+ 	* python/libstdcxx/v6/printers.py (StdMapPrinter.num_children):
+ 	Count two children per element.
+ 	(Tr1UnorderedMapPrinter.num_children): Likewise.
+ 
+ 2026-07-28  David Faure  <david.faure@kdab.com>
+ 
+ 	* python/libstdcxx/v6/printers.py (StdMapPrinter.num_children):
+ 	Fix parameter name.
+ 	(StdSetPrinter.num_children): Likewise.
+ 
+ 2026-07-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* include/bits/deque.tcc (std::__uninitialized_copy_a): Remove unused
+ 	variable __sres.
+ 
  2026-07-26  Patrick Palka  <ppalka@redhat.com>
  
  	* testsuite/23_containers/flat_map/1.cc (test14): Reserve
diff -Nrcpad gcc-17-20260727/libstdc++-v3/acinclude.m4 gcc-17-20260802/libstdc++-v3/acinclude.m4
*** gcc-17-20260727/libstdc++-v3/acinclude.m4	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/acinclude.m4	Sun Aug  2 22:32:18 2026
*************** AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES]
*** 262,269 ****
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "Warning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
--- 262,269 ----
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "[[Ww]]arning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
diff -Nrcpad gcc-17-20260727/libstdc++-v3/configure gcc-17-20260802/libstdc++-v3/configure
*** gcc-17-20260727/libstdc++-v3/configure	Mon Jul 27 02:16:23 2026
--- gcc-17-20260802/libstdc++-v3/configure	Sun Aug  2 22:32:18 2026
*************** rm -f core conftest.err conftest.$ac_obj
*** 23173,23180 ****
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "Warning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
--- 23173,23180 ----
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "[Ww]arning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
*************** rm -f core conftest.err conftest.$ac_obj
*** 29102,29109 ****
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "Warning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
--- 29102,29109 ----
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "[Ww]arning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
*************** rm -f core conftest.err conftest.$ac_obj
*** 32236,32243 ****
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "Warning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
--- 32236,32243 ----
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "[Ww]arning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
*************** rm -f core conftest.err conftest.$ac_obj
*** 38361,38368 ****
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "Warning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
--- 38361,38368 ----
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "[Ww]arning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
*************** rm -f core conftest.err conftest.$ac_obj
*** 38652,38659 ****
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "Warning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
--- 38652,38659 ----
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "[Ww]arning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
*************** rm -f core conftest.err conftest.$ac_obj
*** 39119,39126 ****
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "Warning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
--- 39119,39126 ----
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "[Ww]arning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
*************** rm -f core conftest.err conftest.$ac_obj
*** 42516,42523 ****
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "Warning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
--- 42516,42523 ----
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "[Ww]arning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
*************** rm -f core conftest.err conftest.$ac_obj
*** 45866,45873 ****
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "Warning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
--- 45866,45873 ----
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "[Ww]arning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
*************** rm -f core conftest.err conftest.$ac_obj
*** 46082,46089 ****
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "Warning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
--- 46082,46089 ----
        rm -f conftest.c
        touch conftest.c
        if $CC -c conftest.c; then
! 	if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \
! 	   grep "[Ww]arning: gc-sections option ignored" > /dev/null; then
  	  ac_gcsections=no
  	fi
        fi
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/bits/alloc_traits.h gcc-17-20260802/libstdc++-v3/include/bits/alloc_traits.h
*** gcc-17-20260727/libstdc++-v3/include/bits/alloc_traits.h	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/bits/alloc_traits.h	Sun Aug  2 22:32:19 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 239,244 ****
--- 239,250 ----
        = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type;
    /// @endcond
  
+ #if __cplusplus > 202002L
+ # define _GLIBCXX_NO_ALLOC_TRAITS_SPECIALIZATIONS _GLIBCXX_NO_SPECIALIZATIONS
+ #else
+ # define _GLIBCXX_NO_ALLOC_TRAITS_SPECIALIZATIONS
+ #endif
+ 
    /**
     * @brief  Uniform interface to all allocator types.
     * @headerfile memory
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 246,252 ****
     * @since C++11
    */
    template<typename _Alloc>
!     struct allocator_traits : __allocator_traits_base
      {
        /// The allocator type
        typedef _Alloc allocator_type;
--- 252,259 ----
     * @since C++11
    */
    template<typename _Alloc>
!     struct _GLIBCXX_NO_ALLOC_TRAITS_SPECIALIZATIONS allocator_traits
!     : __allocator_traits_base
      {
        /// The allocator type
        typedef _Alloc allocator_type;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 571,577 ****
--- 578,589 ----
      };
  #pragma GCC diagnostic pop
  
+ #undef _GLIBCXX_NO_ALLOC_TRAITS_SPECIALIZATIONS
+ 
  #if _GLIBCXX_HOSTED
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winvalid-specialization"
+  
    /**
     * @brief  Partial specialization for `std::allocator`
     * @headerfile memory
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 876,881 ****
--- 888,894 ----
        select_on_container_copy_construction(const allocator_type& __rhs)
        { return __rhs; }
      };
+ #pragma GCC diagnostic pop
  #endif // _GLIBCXX_HOSTED
  
    /// @cond undocumented
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/bits/chrono_io.h gcc-17-20260802/libstdc++-v3/include/bits/chrono_io.h
*** gcc-17-20260727/libstdc++-v3/include/bits/chrono_io.h	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/bits/chrono_io.h	Sun Aug  2 22:32:19 2026
*************** namespace __detail
*** 4735,4756 ****
  		    {
  		      auto __val = __read_unsigned(2);
  		      if (__val == -1 || __val > 23) [[unlikely]]
! 			{
! 			  if ((_M_need & _ChronoParts::_TimeOfDay) != 0)
  			    __err |= ios_base::failbit;
! 			  break;
! 			}
  		      if (!__read_chr(':')) [[unlikely]]
  			break;
  		      __h = hours(__val);
  
  		      __val = __read_unsigned(2);
  		      if (__val == -1 || __val > 60) [[unlikely]]
! 			{
! 			  if ((_M_need & _ChronoParts::_TimeOfDay) != 0)
  			    __err |= ios_base::failbit;
! 			  break;
! 			}
  		      __min = minutes(__val);
  
  		      if (__c == 'R')
--- 4735,4756 ----
  		    {
  		      auto __val = __read_unsigned(2);
  		      if (__val == -1 || __val > 23) [[unlikely]]
! 			if ((_M_need & _ChronoParts::_TimeOfDay) != 0)
! 			  {
  			    __err |= ios_base::failbit;
! 			    break;
! 			  }
  		      if (!__read_chr(':')) [[unlikely]]
  			break;
  		      __h = hours(__val);
  
  		      __val = __read_unsigned(2);
  		      if (__val == -1 || __val > 60) [[unlikely]]
! 			if ((_M_need & _ChronoParts::_TimeOfDay) != 0)
! 			  {
  			    __err |= ios_base::failbit;
! 			    break;
! 			  }
  		      __min = minutes(__val);
  
  		      if (__c == 'R')
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/bits/deque.tcc gcc-17-20260802/libstdc++-v3/include/bits/deque.tcc
*** gcc-17-20260727/libstdc++-v3/include/bits/deque.tcc	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/bits/deque.tcc	Sun Aug  2 22:32:19 2026
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1574,1580 ****
  	      __n = __last._M_cur - __from;
  	    else
  	      __n = __first._M_last - __from;
- 	    _OTp* __sres = __result._M_cur;
  	    __n = std::min<ptrdiff_t>(__n, __result._M_last - __result._M_cur);
  	    std::uninitialized_copy(__from, __from + __n, __result._M_cur);
  	    __first += __n;
--- 1574,1579 ----
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/bits/memory_resource.h gcc-17-20260802/libstdc++-v3/include/bits/memory_resource.h
*** gcc-17-20260727/libstdc++-v3/include/bits/memory_resource.h	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/bits/memory_resource.h	Sun Aug  2 22:32:19 2026
*************** namespace pmr
*** 388,393 ****
--- 388,396 ----
  
    template<typename _Alloc> struct allocator_traits;
  
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winvalid-specialization"
+ 
    /// Partial specialization for `std::pmr::polymorphic_allocator`
    /**
     * @ingroup pmr
*************** namespace pmr
*** 534,539 ****
--- 537,543 ----
        max_size(const allocator_type&) noexcept
        { return size_t(-1) / sizeof(value_type); }
      };
+ #pragma GCC diagnostic pop
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/bits/ranges_base.h gcc-17-20260802/libstdc++-v3/include/bits/ranges_base.h
*** gcc-17-20260727/libstdc++-v3/include/bits/ranges_base.h	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/bits/ranges_base.h	Sun Aug  2 22:32:19 2026
*************** namespace ranges
*** 994,999 ****
--- 994,1010 ----
        constexpr iter_difference_t<_It>
        operator()[[nodiscard]](_It __first, _Sent __last) const
        {
+ 	if constexpr (__segmented_iterator<_It> && same_as<_It, _Sent>)
+ 	  {
+ 	    iter_difference_t<_It> __n = 0;
+ 	    auto __func = [this, &__n](auto __sfirst, auto __slast) {
+ 	      __n += iter_difference_t<_It>(this->operator()(__sfirst, __slast));
+ 	      return __slast;
+ 	    };
+ 	    std::__for_each_segment(__first, __last, __func);
+ 	    return __n;
+ 	  }
+ 
  	iter_difference_t<_It> __n = 0;
  	while (__first != __last)
  	  {
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/bits/shared_ptr_base.h gcc-17-20260802/libstdc++-v3/include/bits/shared_ptr_base.h
*** gcc-17-20260727/libstdc++-v3/include/bits/shared_ptr_base.h	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/bits/shared_ptr_base.h	Sun Aug  2 22:32:19 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 560,572 ****
  
  #pragma GCC diagnostic push // PR tree-optimization/122197
  #pragma GCC diagnostic ignored "-Wfree-nonheap-object"
    template<typename> class auto_ptr;
        ~_Sp_counted_deleter() noexcept { }
- #pragma GCC diagnostic pop
  
        virtual void
        _M_dispose() noexcept
        { _M_del._M_obj(_M_ptr); }
  
        virtual void
        _M_destroy() noexcept
--- 560,573 ----
  
  #pragma GCC diagnostic push // PR tree-optimization/122197
  #pragma GCC diagnostic ignored "-Wfree-nonheap-object"
+ #pragma GCC diagnostic ignored "-Warray-bounds"
    template<typename> class auto_ptr;
        ~_Sp_counted_deleter() noexcept { }
  
        virtual void
        _M_dispose() noexcept
        { _M_del._M_obj(_M_ptr); }
+ #pragma GCC diagnostic pop
  
        virtual void
        _M_destroy() noexcept
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 642,654 ****
  #pragma GCC diagnostic push // PR tree-optimization/122197
  #pragma GCC diagnostic ignored "-Warray-bounds"
        ~_Sp_counted_ptr_inplace() noexcept { }
- #pragma GCC diagnostic pop
  
        virtual void
        _M_dispose() noexcept
        {
  	allocator_traits<_Alloc>::destroy(_M_alloc._M_obj, _M_ptr());
        }
  
        // Override because the allocator needs to know the dynamic type
        virtual void
--- 643,655 ----
  #pragma GCC diagnostic push // PR tree-optimization/122197
  #pragma GCC diagnostic ignored "-Warray-bounds"
        ~_Sp_counted_ptr_inplace() noexcept { }
  
        virtual void
        _M_dispose() noexcept
        {
  	allocator_traits<_Alloc>::destroy(_M_alloc._M_obj, _M_ptr());
        }
+ #pragma GCC diagnostic pop
  
        // Override because the allocator needs to know the dynamic type
        virtual void
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/bits/stl_deque.h gcc-17-20260802/libstdc++-v3/include/bits/stl_deque.h
*** gcc-17-20260727/libstdc++-v3/include/bits/stl_deque.h	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/bits/stl_deque.h	Sun Aug  2 22:32:19 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 417,422 ****
--- 417,459 ----
        friend _Self
        operator+(difference_type __n, const _Self& __x) _GLIBCXX_NOEXCEPT
        { return __x + __n; }
+ 
+       template<typename _Fn>
+ 	static _Self
+ 	_S_for_each_segment(_Self __first, _Self __last, _Fn __func)
+ 	{
+ 	  if (__first._M_node == __last._M_node)
+ 	    {
+ 	      _Elt_pointer __ret = __func(__first._M_cur, __last._M_cur);
+ 	      if (__ret != __last._M_cur)
+ 		return _Self(__ret, __first._M_node);
+ 	      return __last;
+ 	    }
+ 	  else
+ 	    {
+ 	      _Elt_pointer __ret = __func(__first._M_cur, __first._M_last);
+ 	      if (__ret != __first._M_last)
+ 		return _Self(__ret, __first._M_node);
+ 
+ 	      for (_Map_pointer __node = __first._M_node + 1;
+ 		   __node < __last._M_node;
+ 		   ++__node)
+ 		{
+ 		  _Elt_pointer __end = *__node + _S_buffer_size();
+ 		  __ret = __func(*__node, __end);
+ 		  if (__ret != __end)
+ 		    return _Self(__ret, __node);
+ 		}
+ 
+ 	      __ret = __func(__last._M_first, __last._M_cur);
+ 	      if (__ret != __last._M_cur)
+ 		return _Self(__ret, __last._M_node);
+ 
+ 	      return __last;
+ 	    }
+ 	}
+ 
+       static const bool _S_enable_for_each_segment = true;
      };
  
    /**
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/bits/stl_iterator_base_funcs.h gcc-17-20260802/libstdc++-v3/include/bits/stl_iterator_base_funcs.h
*** gcc-17-20260727/libstdc++-v3/include/bits/stl_iterator_base_funcs.h	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/bits/stl_iterator_base_funcs.h	Sun Aug  2 22:32:19 2026
***************
*** 66,71 ****
--- 66,72 ----
  #include <bits/concept_check.h>
  #include <debug/assertions.h>
  #include <bits/stl_iterator_base_types.h>
+ #include <bits/move.h> // For _GLIBCXX_MOVE
  
  namespace std _GLIBCXX_VISIBILITY(default)
  {
*************** namespace __detail
*** 383,388 ****
--- 384,409 ----
  #define _GLIBCXX_ITER_MOVE(__it) _GLIBCXX_MOVE(*__it)
  #endif
  
+   /* Mechanism for traversing ranges that are composed of "segments" of other
+      ranges, such as std::deque and ranges::join_view.  The callback __func
+      is sequentially called on each constituent segment as a pair of inner
+      iterators.  If the callback returns something other than the past-the-end
+      inner iterator, then the rest of the traversal gets short-circuited and
+      returns the iterator at which we stopped.  */
+   template<typename _Iter, typename _Fn>
+ #if __cplusplus >= 201103L
+     constexpr
+     __enable_if_t<__enable_for_each_segment<_Iter>, _Iter>
+ #else
+     _Iter
+ #endif
+     __for_each_segment(_Iter __first, _Iter __last, _Fn __func)
+     {
+       return _Iter::_S_for_each_segment(_GLIBCXX_MOVE(__first),
+ 					_GLIBCXX_MOVE(__last),
+ 					_GLIBCXX_MOVE(__func));
+     }
+ 
    /// @endcond
  
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/bits/stl_iterator_base_types.h gcc-17-20260802/libstdc++-v3/include/bits/stl_iterator_base_types.h
*** gcc-17-20260727/libstdc++-v3/include/bits/stl_iterator_base_types.h	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/bits/stl_iterator_base_types.h	Sun Aug  2 22:32:19 2026
***************
*** 66,72 ****
  #include <bits/c++config.h>
  
  #if __cplusplus >= 201103L
! # include <type_traits>  // For __void_t, is_convertible
  #endif
  
  #if __cplusplus > 201703L && __cpp_concepts >= 201907L
--- 66,74 ----
  #include <bits/c++config.h>
  
  #if __cplusplus >= 201103L
! # include <type_traits>  // For __void_t, is_convertible, __enable_if_t
! #else
! # include <ext/type_traits.h> // For __gnu_cxx::__enable_if
  #endif
  
  #if __cplusplus > 201703L && __cpp_concepts >= 201907L
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 283,288 ****
--- 285,310 ----
      { enum { __value = __is_base_of(random_access_iterator_tag, _Cat) }; };
  #endif
  
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wc++14-extensions" // variable templates
+   template<typename _Iter, typename = void>
+     const bool __enable_for_each_segment = false;
+ 
+   template<typename _Iter>
+     const bool __enable_for_each_segment<_Iter,
+ #if __cplusplus >= 201103L
+       __enable_if_t<_Iter::_S_enable_for_each_segment>
+ #else
+       typename __gnu_cxx::__enable_if<_Iter::_S_enable_for_each_segment, void>::__type
+ #endif
+       > = true;
+ #pragma GCC diagnostic pop
+ 
+ #if __cpp_lib_concepts
+   template<typename _Iter>
+     concept __segmented_iterator = __enable_for_each_segment<_Iter>;
+ #endif
+ 
    /// @endcond
    /// @}
  
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/debug/safe_iterator.h gcc-17-20260802/libstdc++-v3/include/debug/safe_iterator.h
*** gcc-17-20260727/libstdc++-v3/include/debug/safe_iterator.h	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/debug/safe_iterator.h	Sun Aug  2 22:32:19 2026
*************** namespace __gnu_debug
*** 582,587 ****
--- 582,600 ----
  	  return __lhs.base() != __rhs.base();
  	}
  #endif // three-way comparison
+ 
+       template<typename _Fn>
+ 	static _GLIBCXX14_CONSTEXPR _Self
+ 	_S_for_each_segment(_Self __first, _Self __last, _Fn __func)
+ 	{
+ 	  __glibcxx_check_valid_range(__first, __last);
+ 	  _Iterator __ret
+ 	    = _Iterator::_S_for_each_segment(__first.base(), __last.base(), __func);
+ 	  return _Self(__ret, __first._M_sequence);
+ 	}
+ 
+       static const bool _S_enable_for_each_segment
+ 	= std::__enable_for_each_segment<_Iterator>;
      };
  
    template<typename _Iterator, typename _Sequence>
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/std/condition_variable gcc-17-20260802/libstdc++-v3/include/std/condition_variable
*** gcc-17-20260727/libstdc++-v3/include/std/condition_variable	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/std/condition_variable	Sun Aug  2 22:32:19 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 107,130 ****
  	  wait(__lock);
        }
  
  #ifdef _GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT
      template<typename _Duration>
        cv_status
        wait_until(unique_lock<mutex>& __lock,
! 		 const chrono::time_point<steady_clock, _Duration>& __atime)
        { return __wait_until_impl(__lock, __atime); }
  #endif
  
      template<typename _Duration>
        cv_status
        wait_until(unique_lock<mutex>& __lock,
! 		 const chrono::time_point<system_clock, _Duration>& __atime)
        { return __wait_until_impl(__lock, __atime); }
  
      template<typename _Clock, typename _Duration>
        cv_status
        wait_until(unique_lock<mutex>& __lock,
! 		 const chrono::time_point<_Clock, _Duration>& __atime)
        {
  #if __cplusplus > 201703L
  	static_assert(chrono::is_clock_v<_Clock>);
--- 107,133 ----
  	  wait(__lock);
        }
  
+     // _GLIBCXX_RESOLVE_LIB_DEFECTS
+     // 4301. condition_variable{_any}::wait_{for, until} should take timeout by value
+ 
  #ifdef _GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT
      template<typename _Duration>
        cv_status
        wait_until(unique_lock<mutex>& __lock,
! 		 chrono::time_point<steady_clock, _Duration> __atime)
        { return __wait_until_impl(__lock, __atime); }
  #endif
  
      template<typename _Duration>
        cv_status
        wait_until(unique_lock<mutex>& __lock,
! 		 chrono::time_point<system_clock, _Duration> __atime)
        { return __wait_until_impl(__lock, __atime); }
  
      template<typename _Clock, typename _Duration>
        cv_status
        wait_until(unique_lock<mutex>& __lock,
! 		 chrono::time_point<_Clock, _Duration> __atime)
        {
  #if __cplusplus > 201703L
  	static_assert(chrono::is_clock_v<_Clock>);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 149,155 ****
      template<typename _Clock, typename _Duration, typename _Predicate>
        bool
        wait_until(unique_lock<mutex>& __lock,
! 		 const chrono::time_point<_Clock, _Duration>& __atime,
  		 _Predicate __p)
        {
  	while (!__p())
--- 152,158 ----
      template<typename _Clock, typename _Duration, typename _Predicate>
        bool
        wait_until(unique_lock<mutex>& __lock,
! 		 chrono::time_point<_Clock, _Duration> __atime,
  		 _Predicate __p)
        {
  	while (!__p())
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 161,167 ****
      template<typename _Rep, typename _Period>
        cv_status
        wait_for(unique_lock<mutex>& __lock,
! 	       const chrono::duration<_Rep, _Period>& __rtime)
        {
  	// _GLIBCXX_RESOLVE_LIB_DEFECTS
  	// 3504. condition_variable::wait_for is overspecified
--- 164,170 ----
      template<typename _Rep, typename _Period>
        cv_status
        wait_for(unique_lock<mutex>& __lock,
! 	       chrono::duration<_Rep, _Period> __rtime)
        {
  	// _GLIBCXX_RESOLVE_LIB_DEFECTS
  	// 3504. condition_variable::wait_for is overspecified
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 174,180 ****
      template<typename _Rep, typename _Period, typename _Predicate>
        bool
        wait_for(unique_lock<mutex>& __lock,
! 	       const chrono::duration<_Rep, _Period>& __rtime,
  	       _Predicate __p)
        {
  	using __dur = typename steady_clock::duration;
--- 177,183 ----
      template<typename _Rep, typename _Period, typename _Predicate>
        bool
        wait_for(unique_lock<mutex>& __lock,
! 	       chrono::duration<_Rep, _Period> __rtime,
  	       _Predicate __p)
        {
  	using __dur = typename steady_clock::duration;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 193,199 ****
      template<typename _Dur>
        cv_status
        __wait_until_impl(unique_lock<mutex>& __lock,
! 			const chrono::time_point<steady_clock, _Dur>& __atime)
        {
  	__gthread_time_t __ts = chrono::__to_timeout_gthread_time_t(__atime);
  	_M_cond.wait_until(*__lock.mutex(), CLOCK_MONOTONIC, __ts);
--- 196,202 ----
      template<typename _Dur>
        cv_status
        __wait_until_impl(unique_lock<mutex>& __lock,
! 			chrono::time_point<steady_clock, _Dur> __atime)
        {
  	__gthread_time_t __ts = chrono::__to_timeout_gthread_time_t(__atime);
  	_M_cond.wait_until(*__lock.mutex(), CLOCK_MONOTONIC, __ts);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 206,212 ****
      template<typename _Dur>
        cv_status
        __wait_until_impl(unique_lock<mutex>& __lock,
! 			const chrono::time_point<system_clock, _Dur>& __atime)
        {
  	__gthread_time_t __ts = chrono::__to_timeout_gthread_time_t(__atime);
  	_M_cond.wait_until(*__lock.mutex(), __ts);
--- 209,215 ----
      template<typename _Dur>
        cv_status
        __wait_until_impl(unique_lock<mutex>& __lock,
! 			chrono::time_point<system_clock, _Dur> __atime)
        {
  	__gthread_time_t __ts = chrono::__to_timeout_gthread_time_t(__atime);
  	_M_cond.wait_until(*__lock.mutex(), __ts);
*************** _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
*** 312,321 ****
  	  wait(__lock);
        }
  
      template<typename _Lock, typename _Clock, typename _Duration>
        cv_status
        wait_until(_Lock& __lock,
! 		 const chrono::time_point<_Clock, _Duration>& __atime)
        {
  	shared_ptr<mutex> __mutex = _M_mutex;
  	unique_lock<mutex> __my_lock(*__mutex);
--- 315,327 ----
  	  wait(__lock);
        }
  
+     // _GLIBCXX_RESOLVE_LIB_DEFECTS
+     // 4301. condition_variable{_any}::wait_{for, until} should take timeout by value
+ 
      template<typename _Lock, typename _Clock, typename _Duration>
        cv_status
        wait_until(_Lock& __lock,
! 		 chrono::time_point<_Clock, _Duration> __atime)
        {
  	shared_ptr<mutex> __mutex = _M_mutex;
  	unique_lock<mutex> __my_lock(*__mutex);
*************** _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
*** 330,336 ****
  	     typename _Duration, typename _Predicate>
        bool
        wait_until(_Lock& __lock,
! 		 const chrono::time_point<_Clock, _Duration>& __atime,
  		 _Predicate __p)
        {
  	while (!__p())
--- 336,342 ----
  	     typename _Duration, typename _Predicate>
        bool
        wait_until(_Lock& __lock,
! 		 chrono::time_point<_Clock, _Duration> __atime,
  		 _Predicate __p)
        {
  	while (!__p())
*************** _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
*** 341,354 ****
  
      template<typename _Lock, typename _Rep, typename _Period>
        cv_status
!       wait_for(_Lock& __lock, const chrono::duration<_Rep, _Period>& __rtime)
        { return wait_until(__lock, __clock_t::now() + __rtime); }
  
      template<typename _Lock, typename _Rep,
  	     typename _Period, typename _Predicate>
        bool
        wait_for(_Lock& __lock,
! 	       const chrono::duration<_Rep, _Period>& __rtime, _Predicate __p)
        { return wait_until(__lock, __clock_t::now() + __rtime, std::move(__p)); }
  
  #ifdef __glibcxx_jthread
--- 347,360 ----
  
      template<typename _Lock, typename _Rep, typename _Period>
        cv_status
!       wait_for(_Lock& __lock, chrono::duration<_Rep, _Period> __rtime)
        { return wait_until(__lock, __clock_t::now() + __rtime); }
  
      template<typename _Lock, typename _Rep,
  	     typename _Period, typename _Predicate>
        bool
        wait_for(_Lock& __lock,
! 	       chrono::duration<_Rep, _Period> __rtime, _Predicate __p)
        { return wait_until(__lock, __clock_t::now() + __rtime, std::move(__p)); }
  
  #ifdef __glibcxx_jthread
*************** _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
*** 383,389 ****
      template <class _Lock, class _Clock, class _Duration, class _Predicate>
      bool wait_until(_Lock& __lock,
                      stop_token __stoken,
!                     const chrono::time_point<_Clock, _Duration>& __abs_time,
                      _Predicate __p)
      {
        if (__stoken.stop_requested())
--- 389,395 ----
      template <class _Lock, class _Clock, class _Duration, class _Predicate>
      bool wait_until(_Lock& __lock,
                      stop_token __stoken,
!                     chrono::time_point<_Clock, _Duration> __abs_time,
                      _Predicate __p)
      {
        if (__stoken.stop_requested())
*************** _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
*** 418,424 ****
      template <class _Lock, class _Rep, class _Period, class _Predicate>
      bool wait_for(_Lock& __lock,
                    stop_token __stoken,
!                   const chrono::duration<_Rep, _Period>& __rel_time,
                    _Predicate __p)
      {
        auto __abst = std::chrono::steady_clock::now() + __rel_time;
--- 424,430 ----
      template <class _Lock, class _Rep, class _Period, class _Predicate>
      bool wait_for(_Lock& __lock,
                    stop_token __stoken,
!                   chrono::duration<_Rep, _Period> __rel_time,
                    _Predicate __p)
      {
        auto __abst = std::chrono::steady_clock::now() + __rel_time;
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/std/coroutine gcc-17-20260802/libstdc++-v3/include/std/coroutine
*** gcc-17-20260727/libstdc++-v3/include/std/coroutine	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/std/coroutine	Sun Aug  2 22:32:19 2026
***************
*** 35,40 ****
--- 35,41 ----
  
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wc++17-extensions"
+ #pragma GCC diagnostic ignored "-Winvalid-specialization"
  
  #define __glibcxx_want_coroutine
  #include <bits/version.h>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 195,201 ****
  #endif
  
    template <typename _Promise>
!     struct coroutine_handle
      {
        // [coroutine.handle.con], construct/reset
  
--- 196,202 ----
  #endif
  
    template <typename _Promise>
!     struct _GLIBCXX_NO_SPECIALIZATIONS coroutine_handle
      {
        // [coroutine.handle.con], construct/reset
  
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/std/iosfwd gcc-17-20260802/libstdc++-v3/include/std/iosfwd
*** gcc-17-20260727/libstdc++-v3/include/std/iosfwd	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/std/iosfwd	Sun Aug  2 22:32:19 2026
***************
*** 39,44 ****
--- 39,48 ----
  
  #include <bits/requires_hosted.h> // iostreams
  
+ #define __glibcxx_want_spanstream
+ #define __glibcxx_want_syncbuf
+ #include <bits/version.h>
+ 
    /**
     *  @defgroup io I/O
     *
diff -Nrcpad gcc-17-20260727/libstdc++-v3/include/std/ranges gcc-17-20260802/libstdc++-v3/include/std/ranges
*** gcc-17-20260727/libstdc++-v3/include/std/ranges	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/include/std/ranges	Sun Aug  2 22:32:19 2026
*************** namespace views::__adaptor
*** 3149,3154 ****
--- 3149,3161 ----
  	    : _M_outer(std::move(__outer)), _M_parent(__parent)
  	  { _M_satisfy(); }
  
+ 	  constexpr
+ 	  _Iterator(_Parent* __parent, _Outer_iter __outer, _Inner_iter __inner)
+ 	    requires forward_range<_Base>
+ 	    : _M_outer(std::move(__outer)), _M_inner(std::move(__inner)),
+ 	      _M_parent(__parent)
+ 	  { }
+ 
  	  constexpr explicit
  	  _Iterator(_Parent* __parent) requires (!forward_range<_Base>)
  	    : _M_parent(__parent)
*************** namespace views::__adaptor
*** 3272,3277 ****
--- 3279,3328 ----
  
  	  friend _Iterator<!_Const>;
  	  template<bool> friend struct _Sentinel;
+ 
+ 	  template<typename _Fn>
+ 	    static constexpr _Iterator
+ 	    _S_for_each_segment(_Iterator __first, _Iterator __last, _Fn __func)
+ 	    {
+ 	      _Inner_iter __first_inner = __first._M_get_inner();
+ 	      _Outer_iter __first_outer = __first._M_get_outer();
+ 	      _Inner_iter __last_inner = __last._M_get_inner();
+ 	      _Outer_iter __last_outer = __last._M_get_outer();
+ 
+ 	      if (__first_outer == __last_outer)
+ 		{
+ 		  auto __ret = __func(__first_inner, __last_inner);
+ 		  return _Iterator(__first._M_parent, __first_outer, __ret);
+ 		}
+ 	      else
+ 		{
+ 		  auto __end = ranges::end(*__first_outer);
+ 		  auto __ret = __func(__first_inner, __end);
+ 		  if (__ret != __end)
+ 		    return _Iterator(__first._M_parent, __first_outer, __ret);
+ 
+ 		  while (++__first_outer != __last_outer)
+ 		    {
+ 		      __end = ranges::end(*__first_outer);
+ 		      __ret = __func(ranges::begin(*__first_outer), __end);
+ 		      if (__ret != __end)
+ 			return _Iterator(__first._M_parent, __first_outer, __ret);
+ 		    }
+ 
+ 		  if (__last != __last._M_parent->end())
+ 		    {
+ 		      __end = __last_inner;
+ 		      __ret = __func(ranges::begin(*__last_outer), __end);
+ 		      if (__ret != __end)
+ 			return _Iterator(__first._M_parent, __first_outer, __ret);
+ 		    }
+ 
+ 		  return __last;
+ 		}
+ 	    }
+ 
+ 	  static constexpr bool _S_enable_for_each_segment
+ 	    = forward_iterator<_Iterator>;
  	};
  
        template<bool _Const>
*************** namespace ranges
*** 10347,10352 ****
--- 10398,10452 ----
  	  ranges::swap(*__it1, *__it2);
        }, __x._M_it, __y._M_it);
      }
+ 
+     template<typename _Fn>
+       static constexpr _Iterator
+       _S_for_each_segment(_Iterator __first, _Iterator __last, _Fn __func)
+       {
+ 	return _S_invoke_with_runtime_index([&]<size_t _Ix>() -> _Iterator {
+ 	  return _S_invoke_with_runtime_index([&]<size_t _Iy>() -> _Iterator {
+ 	    if constexpr (_Ix == _Iy)
+ 	      {
+ 		auto __ret = __func(std::get<_Ix>(__first._M_it), std::get<_Iy>(__last._M_it));
+ 		return _Iterator(__first._M_parent, std::in_place_index<_Ix>, __ret);
+ 	      }
+ 	    else if constexpr (_Ix < _Iy)
+ 	      {
+ 		auto __first_range = std::get<_Ix>(__first._M_parent->_M_views);
+ 		auto __ret = __func(std::get<_Ix>(__first._M_it),
+ 				    ranges::end(__first_range));
+ 		if (__ret != ranges::end(__first_range))
+ 		  return _Iterator(__first._M_parent, std::in_place_index<_Ix>, __ret);
+ 
+ 		return [&]<size_t _Idx = _Ix + 1>(this auto&& __self) -> _Iterator {
+ 		  if constexpr (_Idx < _Iy)
+ 		    {
+ 		      auto __mid_range = std::get<_Idx>(__first._M_parent->_M_views);
+ 		      auto __mid_ret = __func(ranges::begin(__mid_range),
+ 					      ranges::end(__mid_range));
+ 		      if (__mid_ret != ranges::end(__mid_range))
+ 			return _Iterator(__first._M_parent, std::in_place_index<_Idx>, __mid_ret);
+ 		      return __self.template operator()<_Idx + 1>();
+ 		    }
+ 		  else
+ 		    {
+ 		      auto __last_range = std::get<_Iy>(__last._M_parent->_M_views);
+ 		      auto __last_ret = __func(ranges::begin(__last_range),
+ 					       std::get<_Iy>(__last._M_it));
+ 		      return _Iterator(__first._M_parent, std::in_place_index<_Iy>, __last_ret);
+ 		    }
+ 		}();
+ 	      }
+ 	    else
+ 	      {
+ 		__builtin_unreachable();
+ 		__glibcxx_assert(false);
+ 	      }
+ 	  }, __last._M_it.index());
+ 	}, __first._M_it.index());
+       }
+ 
+     static constexpr bool _S_enable_for_each_segment = true;
    };
  
    namespace views
diff -Nrcpad gcc-17-20260727/libstdc++-v3/python/libstdcxx/v6/printers.py gcc-17-20260802/libstdc++-v3/python/libstdcxx/v6/printers.py
*** gcc-17-20260727/libstdc++-v3/python/libstdcxx/v6/printers.py	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/python/libstdcxx/v6/printers.py	Sun Aug  2 22:32:19 2026
*************** class StdMapPrinter(printer_base):
*** 908,915 ****
          node = lookup_node_type('_Rb_tree_node', self._val.type).pointer()
          return self._iter(RbtreeIterator(self._val), node)
  
!     def num_children(slf):
!         return len(RbtreeIterator(self._val))
  
      def display_hint(self):
          return 'map'
--- 908,916 ----
          node = lookup_node_type('_Rb_tree_node', self._val.type).pointer()
          return self._iter(RbtreeIterator(self._val), node)
  
!     def num_children(self):
!         # Each element produces two children, the key and the value.
!         return 2 * len(RbtreeIterator(self._val))
  
      def display_hint(self):
          return 'map'
*************** class StdSetPrinter(printer_base):
*** 950,956 ****
          node = lookup_node_type('_Rb_tree_node', self._val.type).pointer()
          return self._iter(RbtreeIterator(self._val), node)
  
!     def num_children(slf):
          return len(RbtreeIterator(self._val))
  
  class StdBitsetPrinter(printer_base):
--- 951,957 ----
          node = lookup_node_type('_Rb_tree_node', self._val.type).pointer()
          return self._iter(RbtreeIterator(self._val), node)
  
!     def num_children(self):
          return len(RbtreeIterator(self._val))
  
  class StdBitsetPrinter(printer_base):
*************** class Tr1UnorderedMapPrinter(printer_bas
*** 1301,1307 ****
          return izip(counter, data)
  
      def num_children(self):
!         return int(self._hashtable()['_M_element_count'])
  
      def display_hint(self):
          return 'map'
--- 1302,1309 ----
          return izip(counter, data)
  
      def num_children(self):
!         # Each element produces two children, the key and the value.
!         return 2 * int(self._hashtable()['_M_element_count'])
  
      def display_hint(self):
          return 'map'
diff -Nrcpad gcc-17-20260727/libstdc++-v3/src/c++20/tzdb.cc gcc-17-20260802/libstdc++-v3/src/c++20/tzdb.cc
*** gcc-17-20260727/libstdc++-v3/src/c++20/tzdb.cc	Mon Jul 27 02:16:20 2026
--- gcc-17-20260802/libstdc++-v3/src/c++20/tzdb.cc	Sun Aug  2 22:32:19 2026
*************** namespace std::chrono
*** 1069,1103 ****
      // Find the transition info for the time point.
      auto i = ranges::upper_bound(infos, tp, ranges::less{}, &ZoneInfo::until);
  
-     // Perform the comparison on save adjusted until values (if needed)
-     // Assume that applying the save will not change relative order of
-     // ZoneInfo objects.
-     if (i != infos.begin() && i[-1].calc_save(node->rules) && (i[-1].until() > tp))
-       --i;
-     else if (i != infos.end() && i->calc_save(node->rules) && (i->until() <= tp))
-       ++i;
- 
      if (i == infos.end())
        {
  	if (infos.empty())
  	  __throw_runtime_error("std::chrono::time_zone::get_info: invalid data");
! 	(--i)->calc_save(node->rules);
! 	tp = i->until();
        }
-     else // Guarantee that i->until() is correct
-       i->calc_save(node->rules);
- 
  
      sys_info info;
  
      if (i == infos.begin())
        info.begin = sys_days(year::min()/January/1);
      else
!       {
! 	ZoneInfo& prev = i[-1];
! 	prev.calc_save(node->rules);
! 	info.begin = prev.until();
!       }
  
      if (i->to(info)) // We already know a sys_info for this time.
        return info;
--- 1069,1087 ----
      // Find the transition info for the time point.
      auto i = ranges::upper_bound(infos, tp, ranges::less{}, &ZoneInfo::until);
  
      if (i == infos.end())
        {
  	if (infos.empty())
  	  __throw_runtime_error("std::chrono::time_zone::get_info: invalid data");
! 	tp = (--i)->until();
        }
  
      sys_info info;
  
      if (i == infos.begin())
        info.begin = sys_days(year::min()/January/1);
      else
!       info.begin = i[-1].until();
  
      if (i->to(info)) // We already know a sys_info for this time.
        return info;
*************** constinit tzdb_list::_Node::NumLeapSecon
*** 2050,2055 ****
--- 2034,2044 ----
        return lhs.save < rhs.save;
      });
  
+     // Calculate the SAVE value at UNTIL, and adjust it if necessary.
+     for (time_zone& tz : node->db.zones)
+       for (ZoneInfo& info : tz._M_impl->infos)
+ 	info.calc_save(node->rules);
+ 
      return Node::_S_replace_head(std::move(head), std::move(node));
  #else
      __throw_disabled();
diff -Nrcpad gcc-17-20260727/libstdc++-v3/testsuite/18_support/coroutines/specializations_neg.cc gcc-17-20260802/libstdc++-v3/testsuite/18_support/coroutines/specializations_neg.cc
*** gcc-17-20260727/libstdc++-v3/testsuite/18_support/coroutines/specializations_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libstdc++-v3/testsuite/18_support/coroutines/specializations_neg.cc	Sun Aug  2 22:32:19 2026
***************
*** 0 ****
--- 1,18 ----
+ // { dg-do compile { target c++20 } }
+ 
+ #include <coroutine>
+ 
+ struct Promise
+ {};
+ 
+ template<>
+ struct std::coroutine_handle<Promise> // { dg-error "cannot be specialized" }
+ {};
+ 
+ template<typename>
+ struct PromiseTempl
+ {};
+ 
+ template<typename T>
+ struct std::coroutine_handle<PromiseTempl<T>> // { dg-error "cannot be specialized" }
+ {};
diff -Nrcpad gcc-17-20260727/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/specializations_neg.cc gcc-17-20260802/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/specializations_neg.cc
*** gcc-17-20260727/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/specializations_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/specializations_neg.cc	Sun Aug  2 22:32:19 2026
***************
*** 0 ****
--- 1,19 ----
+ // { dg-do compile { target c++11 } }
+ 
+ #include <memory>
+ 
+ template<typename T> struct Alloc : std::allocator<T>
+ {
+   template<typename U>
+   struct rebind { using other = Alloc<U>; };
+ };
+ 
+ template<typename T>
+ struct std::allocator_traits<Alloc<T>> // { dg-error "cannot be specialized" "" { target c++23 } }
+ {};
+ 
+ template<>
+ struct std::allocator_traits<Alloc<void>> // { dg-error "cannot be specialized" "" { target c++23 } }
+ {};
+ 
+ // { dg-bogus "cannot be specialized" "" { target c++20_down } 0 }
diff -Nrcpad gcc-17-20260727/libstdc++-v3/testsuite/20_util/shared_ptr/dest/122197-2.cc gcc-17-20260802/libstdc++-v3/testsuite/20_util/shared_ptr/dest/122197-2.cc
*** gcc-17-20260727/libstdc++-v3/testsuite/20_util/shared_ptr/dest/122197-2.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libstdc++-v3/testsuite/20_util/shared_ptr/dest/122197-2.cc	Sun Aug  2 22:32:19 2026
***************
*** 0 ****
--- 1,35 ----
+ // { dg-do compile { target c++11 } }
+ // { dg-additional-options "-O2 -Warray-bounds -Wfree-nonheap-object -U_GLIBCXX_ASSERTIONS" }
+ 
+ // Bug 122197 predictive devirtualization vs middle-end warnings since r16-4000
+ 
+ // Bug 2507952 - Bogus array bounds warning in shared_ptr_base.h
+ // https://bugzilla.redhat.com/show_bug.cgi?id=2507952
+ 
+ #undef _GLIBCXX_ASSERTIONS
+ 
+ #include <memory>
+ 
+ struct value {
+     int a;
+ };
+ 
+ value *value_new( void );
+ void value_free( value * );
+ 
+ inline std::shared_ptr<value> foo( void )
+ {
+     // Commenting out the custom free in this line "fixes" the error
+     return { value_new(), value_free };
+ }
+ 
+ struct baz {
+     int x;
+ };
+ 
+ extern void bar( void );
+ 
+ void bar( void )
+ {
+     auto x = std::shared_ptr<baz>( new baz{ .x = 1 } );
+ }
diff -Nrcpad gcc-17-20260727/libstdc++-v3/testsuite/20_util/shared_ptr/dest/122197.cc gcc-17-20260802/libstdc++-v3/testsuite/20_util/shared_ptr/dest/122197.cc
*** gcc-17-20260727/libstdc++-v3/testsuite/20_util/shared_ptr/dest/122197.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libstdc++-v3/testsuite/20_util/shared_ptr/dest/122197.cc	Sun Aug  2 22:32:19 2026
***************
*** 0 ****
--- 1,20 ----
+ // { dg-do compile { target c++11 } }
+ // { dg-additional-options "-O2 -Warray-bounds -Wfree-nonheap-object" }
+ 
+ // Bug 122197 predictive devirtualization vs middle-end warnings since r16-4000
+ 
+ #undef _GLIBCXX_ASSERTIONS
+ 
+ #include <memory>
+ #include <condition_variable>
+ 
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122197#c16
+ 
+ extern std::shared_ptr<int> output_;
+ void f();
+ 
+ void f()
+ {
+     std::shared_ptr<int> output = std::make_shared<int>();
+     output_ = output;
+ }
diff -Nrcpad gcc-17-20260727/libstdc++-v3/testsuite/23_containers/deque/for_each_segment.cc gcc-17-20260802/libstdc++-v3/testsuite/23_containers/deque/for_each_segment.cc
*** gcc-17-20260727/libstdc++-v3/testsuite/23_containers/deque/for_each_segment.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libstdc++-v3/testsuite/23_containers/deque/for_each_segment.cc	Sun Aug  2 22:32:19 2026
***************
*** 0 ****
--- 1,74 ----
+ // { dg-do run }
+ 
+ #include <deque>
+ #include <algorithm>
+ #include <testsuite_hooks.h>
+ 
+ struct Finder
+ {
+   static int call_count;
+ 
+   int target;
+ 
+   explicit Finder(int t) : target(t) { }
+ 
+   int*
+   operator()(int* first, int* last) const
+   {
+     ++call_count;
+     return std::find(first, last, target);
+   }
+ };
+ 
+ int Finder::call_count = 0;
+ 
+ void
+ test01()
+ {
+   // A deque of 500 ints spans ~4 internal nodes (128 elements per node)
+   // Node 0: elements   0 - 127
+   // Node 1: elements 128 - 255
+   // Node 2: elements 256 - 383
+   // Node 3: elements 384 - 499
+   std::deque<int> d;
+   for (int i = 0; i < 500; ++i)
+     d.push_back(i);
+ 
+   std::deque<int>::iterator it;
+ 
+   Finder::call_count = 0;
+   it = std::__for_each_segment(d.begin(), d.begin() + 100, Finder(50));
+   VERIFY( it == d.begin() + 50 );
+   VERIFY( Finder::call_count == 1 );
+ 
+   Finder::call_count = 0;
+   it = std::__for_each_segment(d.begin(), d.begin() + 100, Finder(999));
+   VERIFY( it == d.begin() + 100 );
+   VERIFY( Finder::call_count == 1 );
+ 
+   Finder::call_count = 0;
+   it = std::__for_each_segment(d.begin(), d.end(), Finder(100));
+   VERIFY( it == d.begin() + 100 );
+   VERIFY( Finder::call_count == 1 );
+ 
+   Finder::call_count = 0;
+   it = std::__for_each_segment(d.begin(), d.end(), Finder(200));
+   VERIFY( it == d.begin() + 200 );
+   VERIFY( Finder::call_count == 2 );
+ 
+   Finder::call_count = 0;
+   it = std::__for_each_segment(d.begin(), d.end(), Finder(450));
+   VERIFY( it == d.begin() + 450 );
+   VERIFY( Finder::call_count == 4 );
+ 
+   Finder::call_count = 0;
+   it = std::__for_each_segment(d.begin(), d.end(), Finder(999));
+   VERIFY( it == d.end() );
+   VERIFY( Finder::call_count == 4 );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-17-20260727/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc gcc-17-20260802/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc
*** gcc-17-20260727/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc	Mon Jul 27 02:16:21 2026
--- gcc-17-20260802/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc	Sun Aug  2 22:32:19 2026
***************
*** 3,8 ****
--- 3,20 ----
  
  #include <iosfwd>
  
+ #if __cplusplus >= 202002L && __cpp_lib_char8_t != 201907L
+ # error "Feature-test macro __cpp_lib_char8_t has wrong value in <iosfwd>"
+ #endif
+ 
+ #if __cplusplus >= 202202L && __cpp_lib_spanstream != 202106L
+ # error "Feature-test macro __cpp_lib_spanstrean has wrong value in <iosfwd>"
+ #endif
+ 
+ #if __cplusplus >= 202002L && __cpp_lib_syncbuf != 201803L
+ # error "Feature-test macro __cpp_lib_syncbuf has wrong value in <iosfwd>"
+ #endif
+ 
  namespace std
  {
    // [iosfwd.syn]
diff -Nrcpad gcc-17-20260727/libstdc++-v3/testsuite/lib/libstdc++.exp gcc-17-20260802/libstdc++-v3/testsuite/lib/libstdc++.exp
*** gcc-17-20260727/libstdc++-v3/testsuite/lib/libstdc++.exp	Mon Jul 27 02:16:21 2026
--- gcc-17-20260802/libstdc++-v3/testsuite/lib/libstdc++.exp	Sun Aug  2 22:32:19 2026
*************** load_lib libgloss.exp
*** 65,72 ****
  # compiler routines, then ours
  load_gcc_lib target-supports.exp
  load_gcc_lib target-supports-dg.exp
- load_lib prune.exp
- load_lib dg-options.exp
  load_gcc_lib scanasm.exp
  load_gcc_lib scandump.exp
  load_gcc_lib scantree.exp
--- 65,70 ----
*************** load_gcc_lib timeout.exp
*** 75,81 ****
--- 73,82 ----
  load_gcc_lib timeout-dg.exp
  load_gcc_lib wrapper.exp
  load_gcc_lib target-utils.exp
+ load_gcc_lib gcc-defs.exp
  load_gcc_lib dg-test-cleanup.exp
+ load_lib prune.exp
+ load_lib dg-options.exp
  
  # Useful for debugging.  Pass the name of a variable and the verbosity
  # threshold (number of -v's on the command line).
*************** proc libstdc++_init { testfile } {
*** 247,259 ****
  	    }
  	  }
  	}
- 
- 	set_ld_library_path_env_vars
- 	if [info exists env(LD_LIBRARY_PATH)] {
- 	  verbose -log "LD_LIBRARY_PATH = $env(LD_LIBRARY_PATH)"
- 	}
      } else {
  	set compiler [transform "g++"]
      }
  
      # Set the default timeout for v3 tests.
--- 248,261 ----
  	    }
  	  }
  	}
      } else {
  	set compiler [transform "g++"]
+ 	append ld_library_path [gcc-set-multilib-library-path $compiler]
+     }
+ 
+     set_ld_library_path_env_vars
+     if [info exists env(LD_LIBRARY_PATH)] {
+ 	verbose -log "LD_LIBRARY_PATH = $env(LD_LIBRARY_PATH)"
      }
  
      # Set the default timeout for v3 tests.
*************** proc check_effective_target_tzdb { } {
*** 1641,1721 ****
  
  set additional_prunes ""
  
- if { [info exists env(GCC_RUNTEST_PARALLELIZE_DIR)] \
-      && [info procs runtest_file_p] != [list] \
-      && [info procs gcc_parallelize_saved_runtest_file_p] == [list] } then {
-     global gcc_runtest_parallelize_counter
-     global gcc_runtest_parallelize_counter_minor
-     global gcc_runtest_parallelize_enable
-     global gcc_runtest_parallelize_dir
-     global gcc_runtest_parallelize_last
- 
-     set gcc_runtest_parallelize_counter 0
-     set gcc_runtest_parallelize_counter_minor 0
-     set gcc_runtest_parallelize_enable 1
-     set gcc_runtest_parallelize_dir [getenv GCC_RUNTEST_PARALLELIZE_DIR]
-     set gcc_runtest_parallelize_last 0
- 
-     proc gcc_parallel_test_run_p { testcase } {
- 	global gcc_runtest_parallelize_counter
- 	global gcc_runtest_parallelize_counter_minor
- 	global gcc_runtest_parallelize_enable
- 	global gcc_runtest_parallelize_dir
- 	global gcc_runtest_parallelize_last
- 
- 	if { $gcc_runtest_parallelize_enable == 0 } {
- 	    return 1
- 	}
- 
- 	# Only test the filesystem every 10th iteration
- 	incr gcc_runtest_parallelize_counter_minor
- 	if { $gcc_runtest_parallelize_counter_minor == 10 } {
- 	    set gcc_runtest_parallelize_counter_minor 0
- 	}
- 	if { $gcc_runtest_parallelize_counter_minor != 1 } {
- 	    #verbose -log "gcc_parallel_test_run_p $testcase $gcc_runtest_parallelize_counter $gcc_runtest_parallelize_last"
- 	    return $gcc_runtest_parallelize_last
- 	}
- 
- 	set path $gcc_runtest_parallelize_dir/$gcc_runtest_parallelize_counter
- 
- 	if {![catch {open $path {RDWR CREAT EXCL} 0600} fd]} {
- 	    close $fd
- 	    set gcc_runtest_parallelize_last 1
- 	    #verbose -log "gcc_parallel_test_run_p $testcase $gcc_runtest_parallelize_counter 1"
- 	    incr gcc_runtest_parallelize_counter
- 	    return 1
- 	}
- 	set gcc_runtest_parallelize_last 0
- 	#verbose -log "gcc_parallel_test_run_p $testcase $gcc_runtest_parallelize_counter 0"
- 	incr gcc_runtest_parallelize_counter
- 	return 0
-     }
- 
-     proc gcc_parallel_test_enable { val } {
- 	global gcc_runtest_parallelize_enable
- 	set gcc_runtest_parallelize_enable $val
-     }
- 
-     rename runtest_file_p gcc_parallelize_saved_runtest_file_p
-     proc runtest_file_p { runtests testcase } {
- 	if ![gcc_parallelize_saved_runtest_file_p $runtests $testcase] {
- 	    return 0
- 	}
- 	return [gcc_parallel_test_run_p $testcase]
-     }
- 
- } else {
- 
-     proc gcc_parallel_test_run_p { testcase } {
- 	return 1
-     }
- 
-     proc gcc_parallel_test_enable { val } {
-     }
- 
- }
- 
  # Utility functions, invoked via dg-final.
  
  # Compare output file written by test to expected result.
--- 1643,1648 ----
diff -Nrcpad gcc-17-20260727/libstdc++-v3/testsuite/std/ranges/adaptors/join/for_each_segment.cc gcc-17-20260802/libstdc++-v3/testsuite/std/ranges/adaptors/join/for_each_segment.cc
*** gcc-17-20260727/libstdc++-v3/testsuite/std/ranges/adaptors/join/for_each_segment.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libstdc++-v3/testsuite/std/ranges/adaptors/join/for_each_segment.cc	Sun Aug  2 22:32:19 2026
***************
*** 0 ****
--- 1,80 ----
+ // { dg-do run { target c++20 } }
+ 
+ #include <ranges>
+ #include <vector>
+ #include <algorithm>
+ #include <testsuite_hooks.h>
+ 
+ namespace ranges = std::ranges;
+ 
+ void
+ test01()
+ {
+   // 4 discrete vectors serving as segments
+   std::vector<std::vector<int>> vec
+     = { {0, 1, 2},   // Segment 0
+ 	{3, 4, 5},   // Segment 1
+ 	{6, 7, 8},   // Segment 2
+ 	{9, 10, 11}  // Segment 3
+       };
+ 
+   auto jv = vec | std::views::join;
+   std::__segmented_iterator auto begin = jv.begin();
+   std::__segmented_iterator auto end = jv.end();
+ 
+   static int call_count = 0;
+   auto make_finder = [](int target) {
+     return [target](auto first, auto last) {
+       if (first != last)
+ 	++call_count;
+       return std::find(first, last, target);
+     };
+   };
+ 
+   call_count = 0;
+   auto it = std::__for_each_segment(ranges::next(begin, 3), ranges::next(begin, 6),
+ 				    make_finder(4));
+   VERIFY( it == ranges::next(begin, 4) );
+   VERIFY( call_count == 1 );
+ 
+   call_count = 0;
+   it = std::__for_each_segment(ranges::next(begin, 3), ranges::next(begin, 6),
+ 			       make_finder(99));
+   VERIFY( it == ranges::next(begin, 6) );
+   VERIFY( call_count == 1 );
+ 
+   call_count = 0;
+   it = std::__for_each_segment(ranges::next(begin, 1), ranges::next(begin, 11),
+ 			       make_finder(2));
+   VERIFY( it == ranges::next(begin, 2) );
+   VERIFY( call_count == 1 );
+ 
+   call_count = 0;
+   it = std::__for_each_segment(ranges::next(begin, 1), ranges::next(begin, 11),
+ 			       make_finder(7));
+   VERIFY( it == ranges::next(begin, 7) );
+   VERIFY( call_count == 3 );
+ 
+   call_count = 0;
+   it = std::__for_each_segment(ranges::next(begin, 1), ranges::next(begin, 11),
+ 			       make_finder(9));
+   VERIFY( it == ranges::next(begin, 9) );
+   VERIFY( call_count == 4 );
+ 
+   call_count = 0;
+   it = std::__for_each_segment(ranges::next(begin, 1), ranges::next(begin, 11),
+ 			       make_finder(99));
+   VERIFY( it == ranges::next(begin, 11) );
+   VERIFY( call_count == 4 );
+ 
+   call_count = 0;
+   it = std::__for_each_segment(ranges::next(begin, 1), end, make_finder(99));
+   VERIFY( it == end );
+   VERIFY( call_count == 4 );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-17-20260727/libstdc++-v3/testsuite/std/ranges/concat/for_each_segment.cc gcc-17-20260802/libstdc++-v3/testsuite/std/ranges/concat/for_each_segment.cc
*** gcc-17-20260727/libstdc++-v3/testsuite/std/ranges/concat/for_each_segment.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libstdc++-v3/testsuite/std/ranges/concat/for_each_segment.cc	Sun Aug  2 22:32:19 2026
***************
*** 0 ****
--- 1,67 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <ranges>
+ #include <vector>
+ #include <algorithm>
+ #include <testsuite_hooks.h>
+ 
+ namespace ranges = std::ranges;
+ 
+ void
+ test01()
+ {
+   // 4 discrete vectors serving as segments
+   std::vector<int> v0 = {0, 1, 2};    // Segment 0
+   std::vector<int> v1 = {3, 4, 5};    // Segment 1
+   std::vector<int> v2 = {6, 7, 8};    // Segment 2
+   std::vector<int> v3 = {9, 10, 11};  // Segment 3
+ 
+   auto cv = std::views::concat(v0, v1, v2, v3);
+   std::__segmented_iterator auto begin = cv.begin();
+   std::__segmented_iterator auto end = cv.end();
+ 
+   static int call_count = 0;
+   auto make_finder = [](int target) {
+     return [target](auto first, auto last) {
+       if (first != last)
+ 	++call_count;
+       return std::find(first, last, target);
+     };
+   };
+ 
+   call_count = 0;
+   auto it = std::__for_each_segment(begin + 3, begin + 6, make_finder(4));
+   VERIFY( it == begin + 4 );
+   VERIFY( call_count == 1 );
+ 
+   call_count = 0;
+   it = std::__for_each_segment(begin + 3, begin + 6, make_finder(99));
+   VERIFY( it == begin + 6 );
+   VERIFY( call_count == 1 );
+ 
+   call_count = 0;
+   it = std::__for_each_segment(begin + 1, begin + 11, make_finder(2));
+   VERIFY( it == begin + 2 );
+   VERIFY( call_count == 1 );
+ 
+   call_count = 0;
+   it = std::__for_each_segment(begin + 1, begin + 11, make_finder(7));
+   VERIFY( it == begin + 7 );
+   VERIFY( call_count == 3 );
+ 
+   call_count = 0;
+   it = std::__for_each_segment(begin + 1, begin + 11, make_finder(9));
+   VERIFY( it == begin + 9 );
+   VERIFY( call_count == 4 );
+ 
+   call_count = 0;
+   it = std::__for_each_segment(begin + 1, end, make_finder(99));
+   VERIFY( it == end );
+   VERIFY( call_count == 4 );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-17-20260727/libstdc++-v3/testsuite/std/time/parse/126364.cc gcc-17-20260802/libstdc++-v3/testsuite/std/time/parse/126364.cc
*** gcc-17-20260727/libstdc++-v3/testsuite/std/time/parse/126364.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260802/libstdc++-v3/testsuite/std/time/parse/126364.cc	Sun Aug  2 22:32:19 2026
***************
*** 0 ****
--- 1,51 ----
+ // { dg-do run { target c++20 } }
+ 
+ // Bug 126364 - chrono::from_stream %T and %R short circuit on out of range
+ // values even when it doesn't fail the parse
+ 
+ #include <chrono>
+ #include <sstream>
+ #include <testsuite_hooks.h>
+ 
+ using namespace std::chrono;
+ 
+ static bool check(const char* input, char const* fmt)
+ {
+     std::istringstream is(input);
+     year_month_day ymd{};
+     return from_stream(is, fmt, ymd).good() && ymd.ok();
+ }
+ 
+ void
+ test_pr126364()
+ {
+   // Accept out of range numbers for unused hours, minutes, and seconds.
+   VERIFY( check("2026-07-31T25:36:57Z", "%FT%TZ") );  // hour 25 only
+   VERIFY( check("2026-07-31T20:99:57Z", "%FT%TZ") );  // minute 99 only
+   VERIFY( check("2026-07-31T20:36:99Z", "%FT%TZ") );  // second 99 only
+   VERIFY( check("2026-07-31T25:36:57Z", "%FT%T") );   // hour 25 only, no Z
+   VERIFY( check("2026-07-31T20:99:57Z", "%FT%T") );   // minute 99 only, no Z
+   VERIFY( check("2026-07-31T20:36:99Z", "%FT%T") );   // second 99 only, no Z
+   VERIFY( check("2026-07-31 25", "%F %H") );          // %H out of range alone
+   VERIFY( check("2026-07-31 99", "%F %M") );          // %M out of range alone
+ }
+ 
+ void
+ test_invalid()
+ {
+   // Do not accept non-numeric input for unused hours, minutes, and seconds.
+   VERIFY( ! check("2026-07-31 xx", "%F %H") );
+   VERIFY( ! check("2026-07-31 xx", "%F %M") );
+   VERIFY( ! check("2026-07-31 xx", "%F %S") );
+   VERIFY( ! check("2026-07-31 xx:20", "%F %R") );
+   VERIFY( ! check("2026-07-31 10:xx", "%F %R") );
+   VERIFY( ! check("2026-07-31 xx:20:30", "%F %T") );
+   VERIFY( ! check("2026-07-31 10:xx:30", "%F %T") );
+   VERIFY( ! check("2026-07-31 10:20:xx", "%F %T") );
+ }
+ 
+ int main()
+ {
+   test_pr126364();
+   test_invalid();
+ }
