diff -Nrcpad gcc-15-20250719/LAST_UPDATED gcc-15-20250726/LAST_UPDATED
*** gcc-15-20250719/LAST_UPDATED	Sat Jul 19 22:34:37 2025
--- gcc-15-20250726/LAST_UPDATED	Sat Jul 26 22:34:25 2025
***************
*** 1 ****
! Obtained from git: releases/gcc-15 revision f000ed0a034cc99cdc17eb5cfc8f8258f883ed44
--- 1 ----
! Obtained from git: releases/gcc-15 revision b26588f0cb42a6a37ad7c303e61b23f471758e0c
diff -Nrcpad gcc-15-20250719/MD5SUMS gcc-15-20250726/MD5SUMS
*** gcc-15-20250719/MD5SUMS	Sat Jul 19 22:34:43 2025
--- gcc-15-20250726/MD5SUMS	Sat Jul 26 22:34:29 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20250719.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-15-20250726.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
*** 25,31 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 564a1bfa8ff48b408720be8ac50e5673  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
--- 25,31 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! a10528394b34ec4dc002bbe179398596  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 514,520 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 0ba9c26fb089cd5ed4dfc1ce3ea84563  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 514,520 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! cc53c3a4127f230f0cf5c86977832822  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 551,557 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! ee481b07767bf290c5f9f2434cd53802  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 551,557 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 198c65b2d537bc5d194f380e2d9eb7ef  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ec6799501b2eb2923d5de6a66169dbd2  gcc/ON
*** 563,569 ****
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 69b237aa433bd45ddcd3da341da2ae4e  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 563,569 ----
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! de24f3148ae61755decd3eb19669979a  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** f1c71b64e1c84e240c7b5aea7331a32a  gcc/ad
*** 738,744 ****
  b197c097238ab059c90fd0c9452e6a76  gcc/ada/einfo-utils.adb
  9294b28a2b5738443be8b4fcd83a2391  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! 8738d9dc7133788cb2c569cb4a8a82c0  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
--- 738,744 ----
  b197c097238ab059c90fd0c9452e6a76  gcc/ada/einfo-utils.adb
  9294b28a2b5738443be8b4fcd83a2391  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! c8215fc59c32d3e426200668c4fc8caa  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
*************** c642a1d7102316f2db8b308db52c324b  gcc/ad
*** 780,786 ****
  3564a044f1e9954ffdd8d3a48643fff9  gcc/ada/exp_ch5.ads
  2263856420a09ab0977660d04793adc4  gcc/ada/exp_ch6.adb
  c22c79787fe7516adb5a4c55613fb6ab  gcc/ada/exp_ch6.ads
! 07739de5018ec5e803c97a0c46a1fd92  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
  ff5f2710ba824ff8ef979c388663bac2  gcc/ada/exp_ch8.adb
  c1f464d28d24669bfe156f13cabe5fca  gcc/ada/exp_ch8.ads
--- 780,786 ----
  3564a044f1e9954ffdd8d3a48643fff9  gcc/ada/exp_ch5.ads
  2263856420a09ab0977660d04793adc4  gcc/ada/exp_ch6.adb
  c22c79787fe7516adb5a4c55613fb6ab  gcc/ada/exp_ch6.ads
! 356896e905fa10471e94e6ed528670a1  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
  ff5f2710ba824ff8ef979c388663bac2  gcc/ada/exp_ch8.adb
  c1f464d28d24669bfe156f13cabe5fca  gcc/ada/exp_ch8.ads
*************** b042ff9582cb94caab7f476203ea6809  gcc/ad
*** 818,825 ****
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  17c1e6db56a29cef37eb0acfa2e2176f  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! ad9d60284e18b4cf2409b45d4632a379  gcc/ada/exp_util.adb
! cae531f0465d59eedf5daf97690f2e50  gcc/ada/exp_util.ads
  3bba6a658c16a14ec3297c802dcde881  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
  b38851c9b7a0167a71b96e69b7c86fb1  gcc/ada/expect.c
--- 818,825 ----
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  17c1e6db56a29cef37eb0acfa2e2176f  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! e0890410b45b81ec10bec8de64107e53  gcc/ada/exp_util.adb
! f38c33811ff4495921f4fab803f1b045  gcc/ada/exp_util.ads
  3bba6a658c16a14ec3297c802dcde881  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
  b38851c9b7a0167a71b96e69b7c86fb1  gcc/ada/expect.c
*************** b350a6fd65cafe8bd47dc42192437310  gcc/ad
*** 858,865 ****
  c77b069c11d396024d465bc58c32292f  gcc/ada/gcc-interface/trans.cc
  e8e1dea48e7ee6c84d438db1b4a6a9b2  gcc/ada/gcc-interface/utils.cc
  7b0d708fd189018a87468ef844fc3811  gcc/ada/gcc-interface/utils2.cc
! e98c75620d0cefed3bc5965c7974b5a9  gcc/ada/gen_il-fields.ads
! 42ea61b238f9b98831503c2afdbad9d3  gcc/ada/gen_il-gen-gen_entities.adb
  ebed5be70c8d5e75b9d3e8ea56e94729  gcc/ada/gen_il-gen-gen_nodes.adb
  fa07e4c6240b8cfff6d7d98112fee236  gcc/ada/gen_il-gen.adb
  c979a98c6b57608c79d578871fa0c58a  gcc/ada/gen_il-gen.ads
--- 858,865 ----
  c77b069c11d396024d465bc58c32292f  gcc/ada/gcc-interface/trans.cc
  e8e1dea48e7ee6c84d438db1b4a6a9b2  gcc/ada/gcc-interface/utils.cc
  7b0d708fd189018a87468ef844fc3811  gcc/ada/gcc-interface/utils2.cc
! 20ab1d2ee73423b8b0fababbae54659c  gcc/ada/gen_il-fields.ads
! 580645a6185724324a0a7aad4f86301c  gcc/ada/gen_il-gen-gen_entities.adb
  ebed5be70c8d5e75b9d3e8ea56e94729  gcc/ada/gen_il-gen-gen_nodes.adb
  fa07e4c6240b8cfff6d7d98112fee236  gcc/ada/gen_il-gen.adb
  c979a98c6b57608c79d578871fa0c58a  gcc/ada/gen_il-gen.ads
*************** e364f4e3ae92066699cc93a8f7b828c1  gcc/ad
*** 2923,2935 ****
  14c23ddb8ce8f7ab6478f3aff202d2bf  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! d5a830d4c7f937442a45f667249e9a85  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
  bdd184bdbe9fb946500215a918ba9014  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! 765c2d32eb7f8e81ce9da54ba469dde3  gcc/ada/sem_ch3.adb
  5fd10023b617fc61dce7c2801674285d  gcc/ada/sem_ch3.ads
  3e54b6459faeeb42c9c8e748cfc81a3f  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
--- 2923,2935 ----
  14c23ddb8ce8f7ab6478f3aff202d2bf  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! 2d222d3bc572e8af20b4403ed4ac5534  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
  bdd184bdbe9fb946500215a918ba9014  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! d3ec59bf77afef2bc8177941d25fe6d5  gcc/ada/sem_ch3.adb
  5fd10023b617fc61dce7c2801674285d  gcc/ada/sem_ch3.ads
  3e54b6459faeeb42c9c8e748cfc81a3f  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
*************** db6f5a37bd59fd83ff3286e71ab985fe  gcc/ad
*** 2969,2975 ****
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
  d0a2f5b2f65a874363f7fbe2b9a79f8b  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! b24a8825c05a0ead0be21bfe10854ec9  gcc/ada/sem_util.adb
  907db3161ce24f5c766ff52fc6b8bbd0  gcc/ada/sem_util.ads
  e4e5495b136cf8092bcca5f770b4f9a7  gcc/ada/sem_warn.adb
  e71db5efd6c6d9969e1e7887ebe4e6b5  gcc/ada/sem_warn.ads
--- 2969,2975 ----
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
  d0a2f5b2f65a874363f7fbe2b9a79f8b  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! c1115e82e269d460e3f41dd81263544d  gcc/ada/sem_util.adb
  907db3161ce24f5c766ff52fc6b8bbd0  gcc/ada/sem_util.ads
  e4e5495b136cf8092bcca5f770b4f9a7  gcc/ada/sem_warn.adb
  e71db5efd6c6d9969e1e7887ebe4e6b5  gcc/ada/sem_warn.ads
*************** ceaa52edf6355622601cd30f7c096b06  gcc/ad
*** 3016,3022 ****
  426fe1648aa969a711bc91b140c31950  gcc/ada/strub.ads
  8afc1c7d58bdd832cfc07e0b7f154b20  gcc/ada/style.adb
  47034d64868bf09604f7cf41bfa8f20b  gcc/ada/style.ads
! 13b060cdc887d7f83a4b48f3851e2121  gcc/ada/styleg.adb
  93df3efe29025f787333e334faf17c55  gcc/ada/styleg.ads
  2e977ce8e3a4cc0d1344850f639eea97  gcc/ada/stylesw.adb
  072e20e96999b6e3137326e76e71b03d  gcc/ada/stylesw.ads
--- 3016,3022 ----
  426fe1648aa969a711bc91b140c31950  gcc/ada/strub.ads
  8afc1c7d58bdd832cfc07e0b7f154b20  gcc/ada/style.adb
  47034d64868bf09604f7cf41bfa8f20b  gcc/ada/style.ads
! 602e5a3e4582230b3df902db3781e848  gcc/ada/styleg.adb
  93df3efe29025f787333e334faf17c55  gcc/ada/styleg.ads
  2e977ce8e3a4cc0d1344850f639eea97  gcc/ada/stylesw.adb
  072e20e96999b6e3137326e76e71b03d  gcc/ada/stylesw.ads
*************** b5a916bb9dd788754ac9e4ad7174ee74  gcc/co
*** 3418,3424 ****
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! e1a053721528a8d75aad6eb82371ce9e  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  1d528f9807496430cc01191e59f745d3  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
--- 3418,3424 ----
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! e5f14314b50c402188e9584b1eaa3965  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  1d528f9807496430cc01191e59f745d3  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
*************** cdcf6636402c3c91eb0010325542b491  gcc/co
*** 3467,3485 ****
  e055c97bc39ff21701576ecf45b3a7a0  gcc/config/aarch64/aarch64-sve-builtins-sme.cc
  14751aeef4937155819adeff3187a05d  gcc/config/aarch64/aarch64-sve-builtins-sme.def
  020b06065c22c51e5b289ef55b54a5b5  gcc/config/aarch64/aarch64-sve-builtins-sme.h
! 6a3e090aa0b4e965d85b3a17bd657513  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
  5249e3dd61e8bd70c85a23c5711f3ca2  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
  e2d80b89552da0c6b4cb6bede3b2e573  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
  2578221253cb8c19e9f778140a8cf9af  gcc/config/aarch64/aarch64-sve-builtins.cc
  30d08305d5bc784af521254aea449949  gcc/config/aarch64/aarch64-sve-builtins.def
  5ef25fd86c1c16a4a6fb3f74e12802b4  gcc/config/aarch64/aarch64-sve-builtins.h
! 5bc90a3ee8d61e1f0724ecae13200771  gcc/config/aarch64/aarch64-sve.md
! 4d81b8287c9c05264192898d72a11a3a  gcc/config/aarch64/aarch64-sve2.md
  805529fa07916adcabb727f19ebd8dd2  gcc/config/aarch64/aarch64-sys-regs.def
  b301dc231a69a28202d2b7d79ea75f5d  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a2493e870eb12f5d646c24f2949e4cd3  gcc/config/aarch64/aarch64-vxworks.h
! 1b29953c4540d8dddd8d4b5e8fcd59b8  gcc/config/aarch64/aarch64.cc
  4c2226a017b612867a61db1f7929ad43  gcc/config/aarch64/aarch64.h
  411e1d3571eca6300daf26431a1f99c7  gcc/config/aarch64/aarch64.md
  84c23cd68c90a9be4b986aa7009ba1c9  gcc/config/aarch64/aarch64.opt
--- 3467,3485 ----
  e055c97bc39ff21701576ecf45b3a7a0  gcc/config/aarch64/aarch64-sve-builtins-sme.cc
  14751aeef4937155819adeff3187a05d  gcc/config/aarch64/aarch64-sve-builtins-sme.def
  020b06065c22c51e5b289ef55b54a5b5  gcc/config/aarch64/aarch64-sve-builtins-sme.h
! d90362e92083076dd19c9edc16b0600a  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
  5249e3dd61e8bd70c85a23c5711f3ca2  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
  e2d80b89552da0c6b4cb6bede3b2e573  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
  2578221253cb8c19e9f778140a8cf9af  gcc/config/aarch64/aarch64-sve-builtins.cc
  30d08305d5bc784af521254aea449949  gcc/config/aarch64/aarch64-sve-builtins.def
  5ef25fd86c1c16a4a6fb3f74e12802b4  gcc/config/aarch64/aarch64-sve-builtins.h
! 16747170f39e921f5b1e160e947deb43  gcc/config/aarch64/aarch64-sve.md
! a16f9cae06244c0294eb2792a27ba07a  gcc/config/aarch64/aarch64-sve2.md
  805529fa07916adcabb727f19ebd8dd2  gcc/config/aarch64/aarch64-sys-regs.def
  b301dc231a69a28202d2b7d79ea75f5d  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a2493e870eb12f5d646c24f2949e4cd3  gcc/config/aarch64/aarch64-vxworks.h
! 78e3320a3e2166f133ba5b1e387491a9  gcc/config/aarch64/aarch64.cc
  4c2226a017b612867a61db1f7929ad43  gcc/config/aarch64/aarch64.h
  411e1d3571eca6300daf26431a1f99c7  gcc/config/aarch64/aarch64.md
  84c23cd68c90a9be4b986aa7009ba1c9  gcc/config/aarch64/aarch64.opt
*************** c61b39c4504a36e5c45cd1e3b64723d7  gcc/co
*** 3498,3504 ****
  ae88170d2d567105865813bb4b77d91f  gcc/config/aarch64/biarchlp64.h
  124d7f2adedfdccecd86bb0274dfc7aa  gcc/config/aarch64/check-sve-md.awk
  e1f047783d6854d48a65e26806d1340b  gcc/config/aarch64/constraints.md
! d98f001d9d7b4c0bc18d715b4d512ab9  gcc/config/aarch64/cortex-a57-fma-steering.cc
  034ef57fb17f601ded123d7a43b51d02  gcc/config/aarch64/cygming.h
  d008e1068480bd3433dc32f0c9200ab1  gcc/config/aarch64/driver-aarch64.cc
  f713d33fdaee532813b56547dd070c8c  gcc/config/aarch64/fractional-cost.h
--- 3498,3504 ----
  ae88170d2d567105865813bb4b77d91f  gcc/config/aarch64/biarchlp64.h
  124d7f2adedfdccecd86bb0274dfc7aa  gcc/config/aarch64/check-sve-md.awk
  e1f047783d6854d48a65e26806d1340b  gcc/config/aarch64/constraints.md
! dd76583202434d2161c8668396b95079  gcc/config/aarch64/cortex-a57-fma-steering.cc
  034ef57fb17f601ded123d7a43b51d02  gcc/config/aarch64/cygming.h
  d008e1068480bd3433dc32f0c9200ab1  gcc/config/aarch64/driver-aarch64.cc
  f713d33fdaee532813b56547dd070c8c  gcc/config/aarch64/fractional-cost.h
*************** dc9cd2299212581b55dc79c754b1f032  gcc/co
*** 3992,3998 ****
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  23106fa0b82354400a9c82b82a9af33a  gcc/config/gcn/gcn-tree.cc
  25e18c4eee940de72eb16aff9b3dba27  gcc/config/gcn/gcn-valu.md
! 08dbf475f72b246fcf2f326412546b15  gcc/config/gcn/gcn.cc
  c588bbc37daa440397eb034026bd06f5  gcc/config/gcn/gcn.h
  02941219664b5bf4a7b3308e467c4c65  gcc/config/gcn/gcn.md
  ea362cc71f1b9679e105d57822167b51  gcc/config/gcn/gcn.opt
--- 3992,3998 ----
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  23106fa0b82354400a9c82b82a9af33a  gcc/config/gcn/gcn-tree.cc
  25e18c4eee940de72eb16aff9b3dba27  gcc/config/gcn/gcn-valu.md
! 626e7ab2853e82361ba5fa0667ac3188  gcc/config/gcn/gcn.cc
  c588bbc37daa440397eb034026bd06f5  gcc/config/gcn/gcn.h
  02941219664b5bf4a7b3308e467c4c65  gcc/config/gcn/gcn.md
  ea362cc71f1b9679e105d57822167b51  gcc/config/gcn/gcn.opt
*************** ef36db0d824c1fce287aecb1ac5cb1e1  gcc/co
*** 4781,4803 ****
  90d1151ce76e074965b7dd19b41dee77  gcc/config/newlib-stdint.h
  1d229323b064da931d6ff210f6032910  gcc/config/nvptx/gen-copyright.sh
  6d78d2b28f8642186a82b3e9097dfab1  gcc/config/nvptx/gen-h.sh
! 5c4eb992f8cc08467bb557015c8edd61  gcc/config/nvptx/gen-multilib-matches-tests
  2f6253172cebc299090eb3ff21bce59d  gcc/config/nvptx/gen-multilib-matches.sh
  a675b50ac99c3589fbc9347a2c8b267f  gcc/config/nvptx/gen-omp-device-properties.sh
  4fa4386427965e8b1d155fd9e24a7b2e  gcc/config/nvptx/gen-opt.sh
! 30ef320ec8a8c6a2c2cb2c7249e847d4  gcc/config/nvptx/mkoffload.cc
  5bdd02ea89901317102b35ecc453fb67  gcc/config/nvptx/nvptx-c.cc
! 1625a257c06503b0e90277a2b1f6bb35  gcc/config/nvptx/nvptx-gen.h
! e3fa2b71ca4e2b274332797169d9cc6b  gcc/config/nvptx/nvptx-gen.opt
  bbb2a2cf5c79743f967571a1b148fa76  gcc/config/nvptx/nvptx-gen.opt.urls
  83dfca9e2eb78c0e3ab66a3ff9681ad3  gcc/config/nvptx/nvptx-modes.def
! 50f24986303ef2c5a2007408005d7c05  gcc/config/nvptx/nvptx-opts.h
  1f3aa1665145f0388933dc9ee8296ad2  gcc/config/nvptx/nvptx-protos.h
! 4e3e09c3aa0f7484ff7ec5e5138fb4bf  gcc/config/nvptx/nvptx-sm.def
! 8b90c0d2ed6f3be9bd4b29e48c10952e  gcc/config/nvptx/nvptx.cc
! 531b64adb9fcd853596d40ff52c855bd  gcc/config/nvptx/nvptx.h
  787ea1be2367cf809e1f013766e965cd  gcc/config/nvptx/nvptx.md
! 58c376bb6ed1d0b00c3dfd224327d295  gcc/config/nvptx/nvptx.opt
  53bbd40023718a97e82988becbb44969  gcc/config/nvptx/nvptx.opt.urls
  d83f4112ba6c9557b88879d66412590e  gcc/config/nvptx/offload.h
  e5b7e572a77f7a504a29fda1e6e163d9  gcc/config/nvptx/t-nvptx
--- 4781,4803 ----
  90d1151ce76e074965b7dd19b41dee77  gcc/config/newlib-stdint.h
  1d229323b064da931d6ff210f6032910  gcc/config/nvptx/gen-copyright.sh
  6d78d2b28f8642186a82b3e9097dfab1  gcc/config/nvptx/gen-h.sh
! ddd6087651a73d039e839dcd0722283c  gcc/config/nvptx/gen-multilib-matches-tests
  2f6253172cebc299090eb3ff21bce59d  gcc/config/nvptx/gen-multilib-matches.sh
  a675b50ac99c3589fbc9347a2c8b267f  gcc/config/nvptx/gen-omp-device-properties.sh
  4fa4386427965e8b1d155fd9e24a7b2e  gcc/config/nvptx/gen-opt.sh
! 0eea18c51a73946711e7c25a61515f3f  gcc/config/nvptx/mkoffload.cc
  5bdd02ea89901317102b35ecc453fb67  gcc/config/nvptx/nvptx-c.cc
! c3a62cd55d11c3d62d77946f40fa616a  gcc/config/nvptx/nvptx-gen.h
! 562c1684f8b31591ceaad426aade9a27  gcc/config/nvptx/nvptx-gen.opt
  bbb2a2cf5c79743f967571a1b148fa76  gcc/config/nvptx/nvptx-gen.opt.urls
  83dfca9e2eb78c0e3ab66a3ff9681ad3  gcc/config/nvptx/nvptx-modes.def
! dee36f7421044be0b935f6af7f99d925  gcc/config/nvptx/nvptx-opts.h
  1f3aa1665145f0388933dc9ee8296ad2  gcc/config/nvptx/nvptx-protos.h
! baa310414bc4fbed87b67a42c0a547cc  gcc/config/nvptx/nvptx-sm.def
! 5b6e6a31635c60f72ac369529bbbc40b  gcc/config/nvptx/nvptx.cc
! d0e846d8e5d86b55f946852f2529639f  gcc/config/nvptx/nvptx.h
  787ea1be2367cf809e1f013766e965cd  gcc/config/nvptx/nvptx.md
! 20cbac6e3f6e6deeb540b78ec54a413a  gcc/config/nvptx/nvptx.opt
  53bbd40023718a97e82988becbb44969  gcc/config/nvptx/nvptx.opt.urls
  d83f4112ba6c9557b88879d66412590e  gcc/config/nvptx/offload.h
  e5b7e572a77f7a504a29fda1e6e163d9  gcc/config/nvptx/t-nvptx
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5496,5502 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! adef1c5e51b4593956a5671b5992359f  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5496,5502 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 6b21fd95851de5bd57bd895a76244a99  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** fce8de27014c109814b3f69be6a5d4f6  gcc/cp
*** 5537,5543 ****
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  bfc0a4cea2b61e7ae38934b220f84e85  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! d3e0520cc8281a0fcfb1aa4f33f529c2  gcc/cp/constexpr.cc
  d132f7f4c080ce3048977e23e33b9b1c  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
--- 5537,5543 ----
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  bfc0a4cea2b61e7ae38934b220f84e85  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! 412671f1c527300315c6baa785d08c07  gcc/cp/constexpr.cc
  d132f7f4c080ce3048977e23e33b9b1c  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
*************** aaf76a9b03fd0532d2904aef004fd66a  gcc/cp
*** 5575,5582 ****
  936bd061907a7a899c3285cf17b17674  gcc/cp/mapper-client.cc
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
! 2a25642ff43728ad2b4093c3713d76cc  gcc/cp/method.cc
! 59dbc383eb615bbbed245dd0bdd20120  gcc/cp/module.cc
  4191315bfa6c793b37107497c36d367f  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
--- 5575,5582 ----
  936bd061907a7a899c3285cf17b17674  gcc/cp/mapper-client.cc
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
! 1fb77a33ed1eaaf5ffbe1fc992f353ff  gcc/cp/method.cc
! 5139fb9da079aeb4211d5605568c1ec9  gcc/cp/module.cc
  4191315bfa6c793b37107497c36d367f  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
*************** ee4c7654f733cefcb73d4fd24f3e1b82  gcc/do
*** 5948,5954 ****
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  4cf31ce9dc9e7079c1c99e7dd07215ae  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 56b8a86d0bf8a6254f6d6d61d52b2a18  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 5948,5954 ----
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  4cf31ce9dc9e7079c1c99e7dd07215ae  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! f3e416a05ee6ea0661a3a72eb0c11efb  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** c98feb0a43876ed3ef2fca3c8448e8f8  gcc/do
*** 5992,5998 ****
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! f9adce8594a3cc85c067479e286bb190  gcc/doc/sourcebuild.texi
  14e3ed780980c4fff09173b869e850ed  gcc/doc/standards.texi
  bcede1ca08c149d6b7a9ad7cfc846f85  gcc/doc/tm.texi
  06d0869eb2bec892f989f31bcd7da233  gcc/doc/tm.texi.in
--- 5992,5998 ----
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! dac5d7b3efd1f6082fdf8445128a8c67  gcc/doc/sourcebuild.texi
  14e3ed780980c4fff09173b869e850ed  gcc/doc/standards.texi
  bcede1ca08c149d6b7a9ad7cfc846f85  gcc/doc/tm.texi
  06d0869eb2bec892f989f31bcd7da233  gcc/doc/tm.texi.in
*************** b5fa845ff578d70e8ceae655d6affc51  gcc/ex
*** 6039,6045 ****
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
  bc438860c6c9b2d1d32fad8eb6040ccd  gcc/expr.cc
  5480b0f834e382e22c92192d7f5a4744  gcc/expr.h
! 6630556dbcf078aded04b116429a3077  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
  4e78fbbdb0a8c835b984d732a6d97a7b  gcc/fibonacci_heap.h
  ee644c05e4a3461a8c2f5a4a5ea285bd  gcc/file-find.cc
--- 6039,6045 ----
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
  bc438860c6c9b2d1d32fad8eb6040ccd  gcc/expr.cc
  5480b0f834e382e22c92192d7f5a4744  gcc/expr.h
! 7117d2d0dde87eaf1ab2853b5bfd62e2  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
  4e78fbbdb0a8c835b984d732a6d97a7b  gcc/fibonacci_heap.h
  ee644c05e4a3461a8c2f5a4a5ea285bd  gcc/file-find.cc
*************** a798cdca802a57ffa3473ab610b37c86  gcc/fo
*** 6056,6062 ****
  4b1bef753dda2d19671f35332c69a0f7  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 6f96bd2e6d28cc0ae7d72a24301e3b73  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6056,6062 ----
  4b1bef753dda2d19671f35332c69a0f7  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! cbd2a8bda7b6996dae4c5d9d3f61fd13  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** a4f5f15bbfd3cf3b780e3a8875ebf0df  gcc/fo
*** 6149,6155 ****
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  ba1a270a0735e8dd213da50ccb70ea32  gcc/fortran/trans-decl.cc
! 6128f79195fff9b0987836a492736069  gcc/fortran/trans-expr.cc
  4409efd13e205fa6886f73e55cc425bb  gcc/fortran/trans-intrinsic.cc
  9cf7c294c06fdaea67dcd2b9ff2cf5ad  gcc/fortran/trans-io.cc
  b1027c10f4a35d0040a0da3b22a13d59  gcc/fortran/trans-openmp.cc
--- 6149,6155 ----
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  ba1a270a0735e8dd213da50ccb70ea32  gcc/fortran/trans-decl.cc
! e5e7102933a854ebc51d0ba2c6fb28aa  gcc/fortran/trans-expr.cc
  4409efd13e205fa6886f73e55cc425bb  gcc/fortran/trans-intrinsic.cc
  9cf7c294c06fdaea67dcd2b9ff2cf5ad  gcc/fortran/trans-io.cc
  b1027c10f4a35d0040a0da3b22a13d59  gcc/fortran/trans-openmp.cc
*************** b9ae583911b0dfc11e96e21548fad63d  gcc/gc
*** 6188,6194 ****
  f269d02900a77fe74111832833bf535c  gcc/gcov.cc
  2a8393570ec2f0f06d815562e3e84f78  gcc/gcse-common.cc
  592e70d614695b5fba65cd68c9112587  gcc/gcse-common.h
! 7078a71e12a0dab8d83016b3f1948bf4  gcc/gcse.cc
  e5a3a3a1ad466d441c8c2f6c2ac6c208  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
  73e9039221d34e77933a5626ce0294a5  gcc/gdbhooks.py
--- 6188,6194 ----
  f269d02900a77fe74111832833bf535c  gcc/gcov.cc
  2a8393570ec2f0f06d815562e3e84f78  gcc/gcse-common.cc
  592e70d614695b5fba65cd68c9112587  gcc/gcse-common.h
! afe13e4cb6e4bb9b9e64e59d1e72dbc4  gcc/gcse.cc
  e5a3a3a1ad466d441c8c2f6c2ac6c208  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
  73e9039221d34e77933a5626ce0294a5  gcc/gdbhooks.py
*************** c541f395499a535c0ea6a8bffe113196  gcc/lt
*** 6650,6656 ****
  f2a9985147f87fd566d4ae2dd8fceabc  gcc/lto-section-names.h
  92ad85d667fb88ca0d727d1081d5a438  gcc/lto-section-out.cc
  022eda68922792984b6370af859619e4  gcc/lto-streamer-in.cc
! 6949f7b0408d00da6a8fb188c3d5dcd9  gcc/lto-streamer-out.cc
  8caf9a68892d64dc294b20c27291b749  gcc/lto-streamer.cc
  78ea6d3e135322dfe8157d78aba82074  gcc/lto-streamer.h
  8acdefc9fffd53b3f4f16af933640084  gcc/lto-wrapper.cc
--- 6650,6656 ----
  f2a9985147f87fd566d4ae2dd8fceabc  gcc/lto-section-names.h
  92ad85d667fb88ca0d727d1081d5a438  gcc/lto-section-out.cc
  022eda68922792984b6370af859619e4  gcc/lto-streamer-in.cc
! dfa3caf86a8bb6ea08cabdee56e570e9  gcc/lto-streamer-out.cc
  8caf9a68892d64dc294b20c27291b749  gcc/lto-streamer.cc
  78ea6d3e135322dfe8157d78aba82074  gcc/lto-streamer.h
  8acdefc9fffd53b3f4f16af933640084  gcc/lto-wrapper.cc
*************** b347f8b97c2042773c008adffe4e54d9  gcc/m2
*** 6804,6822 ****
  602cc39ece2e20e647562bea41cf5716  gcc/m2/gm2-compiler/P1Build.bnf
  7f0d77f27044b69065c97e7e1f2f361b  gcc/m2/gm2-compiler/P1Build.def
  022dddb1d109a1c84112ee601cb7e4fb  gcc/m2/gm2-compiler/P1SymBuild.def
! f84c328e57949cf1d3f9714ac54e6423  gcc/m2/gm2-compiler/P1SymBuild.mod
  dfc36d5f0832b9dd188d6557ffef76d3  gcc/m2/gm2-compiler/P2Build.bnf
  5d3aa3c32f62966992c31b5bd6fe9bdb  gcc/m2/gm2-compiler/P2Build.def
  7d034c383eee29111871cfe944a77b96  gcc/m2/gm2-compiler/P2SymBuild.def
! caa873bb1109b87a03db4edde0bca2dc  gcc/m2/gm2-compiler/P2SymBuild.mod
  3fd9aa5301c284bb3b4ee2d6479b711b  gcc/m2/gm2-compiler/P3Build.bnf
  41f585d1e8e6fd1786dd36cb69cf3e82  gcc/m2/gm2-compiler/P3Build.def
  ad7a010b25f95dc012f12d3c97133a4b  gcc/m2/gm2-compiler/P3SymBuild.def
! feac1271dd2de34f953140b4b62a2c73  gcc/m2/gm2-compiler/P3SymBuild.mod
  e00cf6ed8d0c099ab8f33394bfeb4dc3  gcc/m2/gm2-compiler/PCBuild.bnf
  428e2092f5708fd9cf986ae14771fff1  gcc/m2/gm2-compiler/PCBuild.def
  333e3b954ec138cdfb9ac52c7fc37ee9  gcc/m2/gm2-compiler/PCSymBuild.def
! e524773f84b80cb2ecbe501fc5711e67  gcc/m2/gm2-compiler/PCSymBuild.mod
  08d1991abfb4f71b76010396a93251eb  gcc/m2/gm2-compiler/PHBuild.bnf
  08361e38dfa7f065be723afaa04d8986  gcc/m2/gm2-compiler/PHBuild.def
  b521bc37b844fd46fdfddcf3d2287f13  gcc/m2/gm2-compiler/PathName.def
--- 6804,6822 ----
  602cc39ece2e20e647562bea41cf5716  gcc/m2/gm2-compiler/P1Build.bnf
  7f0d77f27044b69065c97e7e1f2f361b  gcc/m2/gm2-compiler/P1Build.def
  022dddb1d109a1c84112ee601cb7e4fb  gcc/m2/gm2-compiler/P1SymBuild.def
! a034245ef0e759dd251bf062c90dbfb4  gcc/m2/gm2-compiler/P1SymBuild.mod
  dfc36d5f0832b9dd188d6557ffef76d3  gcc/m2/gm2-compiler/P2Build.bnf
  5d3aa3c32f62966992c31b5bd6fe9bdb  gcc/m2/gm2-compiler/P2Build.def
  7d034c383eee29111871cfe944a77b96  gcc/m2/gm2-compiler/P2SymBuild.def
! d6ca7bf00d339b38b18c4a9d412f0d77  gcc/m2/gm2-compiler/P2SymBuild.mod
  3fd9aa5301c284bb3b4ee2d6479b711b  gcc/m2/gm2-compiler/P3Build.bnf
  41f585d1e8e6fd1786dd36cb69cf3e82  gcc/m2/gm2-compiler/P3Build.def
  ad7a010b25f95dc012f12d3c97133a4b  gcc/m2/gm2-compiler/P3SymBuild.def
! 565aff18ea212b1dd1543f9c271ad130  gcc/m2/gm2-compiler/P3SymBuild.mod
  e00cf6ed8d0c099ab8f33394bfeb4dc3  gcc/m2/gm2-compiler/PCBuild.bnf
  428e2092f5708fd9cf986ae14771fff1  gcc/m2/gm2-compiler/PCBuild.def
  333e3b954ec138cdfb9ac52c7fc37ee9  gcc/m2/gm2-compiler/PCSymBuild.def
! 7204921904868e8be413f561906f6f54  gcc/m2/gm2-compiler/PCSymBuild.mod
  08d1991abfb4f71b76010396a93251eb  gcc/m2/gm2-compiler/PHBuild.bnf
  08361e38dfa7f065be723afaa04d8986  gcc/m2/gm2-compiler/PHBuild.def
  b521bc37b844fd46fdfddcf3d2287f13  gcc/m2/gm2-compiler/PathName.def
*************** fabfc816f99fb184266e92ed4a85b7a4  gcc/m2
*** 6828,6835 ****
  134ce3e4731c6306ad3c640bab2b256d  gcc/m2/gm2-compiler/SymbolConversion.mod
  7e7c5313b631435b03f974e72c20d104  gcc/m2/gm2-compiler/SymbolKey.def
  be245258e0123a45bbd9a47e859deb50  gcc/m2/gm2-compiler/SymbolKey.mod
! cf0941f82ecf4cf575e26e963235b675  gcc/m2/gm2-compiler/SymbolTable.def
! a0b7d3f4130fcfabdf1ce7311a3c9c7c  gcc/m2/gm2-compiler/SymbolTable.mod
  4e5bbaec9cd1341e4e14b9951485e75b  gcc/m2/gm2-compiler/bnflex.def
  34956a3ca2f84a677fbf711642452563  gcc/m2/gm2-compiler/bnflex.mod
  3ba721399af75ed8db2b223d9947d26d  gcc/m2/gm2-compiler/cflex.def
--- 6828,6835 ----
  134ce3e4731c6306ad3c640bab2b256d  gcc/m2/gm2-compiler/SymbolConversion.mod
  7e7c5313b631435b03f974e72c20d104  gcc/m2/gm2-compiler/SymbolKey.def
  be245258e0123a45bbd9a47e859deb50  gcc/m2/gm2-compiler/SymbolKey.mod
! 74520973769eed309d975fde57dfd937  gcc/m2/gm2-compiler/SymbolTable.def
! 020a16ce4cfedb7743487867d50fff0b  gcc/m2/gm2-compiler/SymbolTable.mod
  4e5bbaec9cd1341e4e14b9951485e75b  gcc/m2/gm2-compiler/bnflex.def
  34956a3ca2f84a677fbf711642452563  gcc/m2/gm2-compiler/bnflex.mod
  3ba721399af75ed8db2b223d9947d26d  gcc/m2/gm2-compiler/cflex.def
*************** c7eadbee0c5ae61a47b11bbb7c04941d  gcc/m2
*** 7200,7206 ****
  3d47773d0b2a2e842bc90ce1817ec304  gcc/m2/gm2-libs/M2Dependent.def
  3c65d10228392609f0596c9f655c18aa  gcc/m2/gm2-libs/M2Dependent.mod
  503afc422ba450b5d8f2bdb4b84b9ada  gcc/m2/gm2-libs/M2EXCEPTION.def
! 8f10171e5a0b0d8546348cb398a55250  gcc/m2/gm2-libs/M2EXCEPTION.mod
  8cd96743ee1f96df6f01c98df07854c3  gcc/m2/gm2-libs/M2RTS.def
  12f5ce990d5817b569dc48a1a3d2d37e  gcc/m2/gm2-libs/M2RTS.mod
  155b41f4ed2007e7f7eeb0df24463acf  gcc/m2/gm2-libs/MathLib0.def
--- 7200,7206 ----
  3d47773d0b2a2e842bc90ce1817ec304  gcc/m2/gm2-libs/M2Dependent.def
  3c65d10228392609f0596c9f655c18aa  gcc/m2/gm2-libs/M2Dependent.mod
  503afc422ba450b5d8f2bdb4b84b9ada  gcc/m2/gm2-libs/M2EXCEPTION.def
! 314fd76d36f9918545cd6932a994432f  gcc/m2/gm2-libs/M2EXCEPTION.mod
  8cd96743ee1f96df6f01c98df07854c3  gcc/m2/gm2-libs/M2RTS.def
  12f5ce990d5817b569dc48a1a3d2d37e  gcc/m2/gm2-libs/M2RTS.mod
  155b41f4ed2007e7f7eeb0df24463acf  gcc/m2/gm2-libs/MathLib0.def
*************** f441ac6601a5a1f6ba5ca39bef20c13a  gcc/om
*** 7685,7691 ****
  73fb62acbdd74e28aff8cc147ee7fa11  gcc/omp-low.h
  bf774332919d8fc6ad76372ccefd0aa2  gcc/omp-oacc-kernels-decompose.cc
  51e7c46004876244d3f23ab786112c1a  gcc/omp-oacc-neuter-broadcast.cc
! 42390815a426f073b94d3b1ab2aeb263  gcc/omp-offload.cc
  63335117e85d88f9866c3d00e2c1c163  gcc/omp-offload.h
  d5704680057b6bdba79f8e9d433cc12c  gcc/omp-selectors.h
  c82a0618eb76ff551736f55281d0c66c  gcc/omp-simd-clone.cc
--- 7685,7691 ----
  73fb62acbdd74e28aff8cc147ee7fa11  gcc/omp-low.h
  bf774332919d8fc6ad76372ccefd0aa2  gcc/omp-oacc-kernels-decompose.cc
  51e7c46004876244d3f23ab786112c1a  gcc/omp-oacc-neuter-broadcast.cc
! e5f5c700eae6affedb70e80bd1956763  gcc/omp-offload.cc
  63335117e85d88f9866c3d00e2c1c163  gcc/omp-offload.h
  d5704680057b6bdba79f8e9d433cc12c  gcc/omp-selectors.h
  c82a0618eb76ff551736f55281d0c66c  gcc/omp-simd-clone.cc
*************** e1edfa2841ce0f9e30db7b34a3a5a6d7  gcc/ra
*** 7795,7801 ****
  e1ebdb36533cc50099a4b487e7c70c49  gcc/range.h
  fbf6cd31aa699eaf7943473f49a25df6  gcc/read-md.cc
  e8038f0b65555e326f704a4460123122  gcc/read-md.h
! 3dd0d65025f58dfce5d6c65cbf460d0a  gcc/read-rtl-function.cc
  cd83aae447be541259a39119965eecb3  gcc/read-rtl-function.h
  9682aead4a158a567da54b3f2e28b405  gcc/read-rtl.cc
  89ebe9b9c5342412d37a6014678c865b  gcc/real.cc
--- 7795,7801 ----
  e1ebdb36533cc50099a4b487e7c70c49  gcc/range.h
  fbf6cd31aa699eaf7943473f49a25df6  gcc/read-md.cc
  e8038f0b65555e326f704a4460123122  gcc/read-md.h
! 488f534f7176b25680f44ff969c4758b  gcc/read-rtl-function.cc
  cd83aae447be541259a39119965eecb3  gcc/read-rtl-function.h
  9682aead4a158a567da54b3f2e28b405  gcc/read-rtl.cc
  89ebe9b9c5342412d37a6014678c865b  gcc/real.cc
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8443,8449 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 9e6a71a4fa7145fec9e58e0f19f3e540  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8443,8449 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! aeb564de47c1424fd3683ee3ed7dbf01  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** c0b015cd02e07242444c2700f64e070a  gcc/te
*** 21530,21535 ****
--- 21530,21536 ----
  5fd97c22b2996faaa87a3aa20de08243  gcc/testsuite/g++.dg/cpp2a/constexpr-union6.C
  22d0d1f2f3c677d12d0e844ae12fd688  gcc/testsuite/g++.dg/cpp2a/constexpr-union7.C
  e94cea4fa4255420603d88768e70b36c  gcc/testsuite/g++.dg/cpp2a/constexpr-union8.C
+ b00a4635a4c11366be17b4b6a45910f7  gcc/testsuite/g++.dg/cpp2a/constexpr-union9.C
  4e80378ab3af70b20b34dcf87e46941d  gcc/testsuite/g++.dg/cpp2a/constexpr-vector1.C
  6d84a7bd78f9867ce0a07e6b0d26241b  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual1.C
  974c3f89c0f3ffa8993db35751b7f993  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual10.C
*************** ebb1df191bcea60ed6342dad182b8901  gcc/te
*** 23471,23476 ****
--- 23472,23478 ----
  0da83314cec6d313a123af04a33e386b  gcc/testsuite/g++.dg/ext/is_invocable2.C
  a880bbf4a2491686f32ef99587f1d5d7  gcc/testsuite/g++.dg/ext/is_invocable3.C
  3bff0f23c0ea407c9137e25bbedce11c  gcc/testsuite/g++.dg/ext/is_invocable4.C
+ a2e288b15b5abf2aaab268a242e72400  gcc/testsuite/g++.dg/ext/is_invocable5.C
  d97310b12ece2c21881785f78f44e64a  gcc/testsuite/g++.dg/ext/is_literal_type1.C
  cce82a97f2d80557fc2ee719db6afda2  gcc/testsuite/g++.dg/ext/is_literal_type2.C
  70b8167d4c887f159d75bd15861c519b  gcc/testsuite/g++.dg/ext/is_literal_type3.C
*************** e6b16a33fb2c85abf4f99ad0d5ad33bb  gcc/te
*** 26417,26422 ****
--- 26419,26427 ----
  f521d5e26375a6db232f71e6ef7b21f5  gcc/testsuite/g++.dg/modules/internal-12_a.C
  271d623e43c91425c2bf224100933996  gcc/testsuite/g++.dg/modules/internal-12_b.C
  c087af9321ac0e24731d2a4d1bb3e319  gcc/testsuite/g++.dg/modules/internal-13.C
+ 4fffea4cdfd477df735c06f198229d8f  gcc/testsuite/g++.dg/modules/internal-14_a.C
+ 10a79d90c63564fa8794a477cbcaed50  gcc/testsuite/g++.dg/modules/internal-14_b.C
+ f3dc43a1a76c9644a2c2a98b1094e62a  gcc/testsuite/g++.dg/modules/internal-14_c.C
  c66d17d0fb2dc80371978510d0cc1f0f  gcc/testsuite/g++.dg/modules/internal-2_a.H
  21bb55995bb6fa8ed6a8fa69368f7f36  gcc/testsuite/g++.dg/modules/internal-2_b.H
  ba3bc4f8f333742fb78f03db052c4ffa  gcc/testsuite/g++.dg/modules/internal-2_c.C
*************** ae883844cdffe266994223192fd8cd35  gcc/te
*** 31455,31460 ****
--- 31460,31466 ----
  f298eddbaaad3dfdc15f6cf9683ff08a  gcc/testsuite/g++.dg/torture/pr11911.C
  9df51f0b5a7e716286f2e97dfd28d477  gcc/testsuite/g++.dg/torture/pr119610.C
  9cede7e8b587157ccdf0f9f6667d6cc8  gcc/testsuite/g++.dg/torture/pr119778.C
+ 34ccf862a19942e4a76e7409c03669c6  gcc/testsuite/g++.dg/torture/pr120119-1.C
  161154ed9f6193a2a7da119e068c3f3f  gcc/testsuite/g++.dg/torture/pr27218.C
  a84e9fff95df4801f8e582fbc33303b8  gcc/testsuite/g++.dg/torture/pr30252.C
  e980bf95890544d46879b89f7aa98df6  gcc/testsuite/g++.dg/torture/pr30567.C
*************** cb7b5505103ef079e746dd619a21ee86  gcc/te
*** 49475,49480 ****
--- 49481,49487 ----
  9444444b4f048eadd4b6a2d7592f5fca  gcc/testsuite/gcc.dg/pr120480.c
  4a9d9632d82cf6c4f4f4acbad8ab018d  gcc/testsuite/gcc.dg/pr120638.c
  c57884e34f257e33d206372fc675b716  gcc/testsuite/gcc.dg/pr121035.c
+ d602fec0c129037ce49acd7cccfd6266  gcc/testsuite/gcc.dg/pr121202.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** b76f25a5e2a39d0da6541a73b5cd3e32  gcc/te
*** 51654,51659 ****
--- 51661,51668 ----
  770cae6014d989d238db251906e1d55c  gcc/testsuite/gcc.dg/rtl/aarch64/subs_adds_sp.c
  4a0f9ca943ba4d51c36cafc0f05585af  gcc/testsuite/gcc.dg/rtl/aarch64/test-epilogue-set.c
  a107a9eae4cd59d68f55abfc11da7cec  gcc/testsuite/gcc.dg/rtl/aarch64/unspecified-pass-error.c
+ 560692a2bc864a930149d9f437e36585  gcc/testsuite/gcc.dg/rtl/aarch64/vec-series-1.c
+ 899aae496eafc03cb5cd35b5a213c4dd  gcc/testsuite/gcc.dg/rtl/aarch64/vec-series-2.c
  11f67722ecba2413562ea4a88d064a75  gcc/testsuite/gcc.dg/rtl/aarch64/vector-eq.c
  a9069345cbc40d488766c1fbf34c5555  gcc/testsuite/gcc.dg/rtl/arm/ldrd-peepholes.c
  85baf2f4880c1f6892aac66e29e93d7a  gcc/testsuite/gcc.dg/rtl/arm/mve-vxbi.c
*************** c63db0d7b0286fa5d6126a140d4d11e4  gcc/te
*** 55498,55503 ****
--- 55507,55513 ----
  2d7373f628fe9cdb0e85e3b348618627  gcc/testsuite/gcc.dg/tree-ssa/pr116406.c
  5dd2285e0a64c83e08b6d68b6cd36eba  gcc/testsuite/gcc.dg/tree-ssa/pr117142.c
  f0d353ee8a84646d78fc80b6dd84a990  gcc/testsuite/gcc.dg/tree-ssa/pr117420.c
+ 5f36d3d6eda4211f506ed2e65fc779c4  gcc/testsuite/gcc.dg/tree-ssa/pr117423.c
  ec2377e16f3af2ba261ea020faa3f718  gcc/testsuite/gcc.dg/tree-ssa/pr117692.c
  e91a50025559d9a809c8a2fcfde46c2e  gcc/testsuite/gcc.dg/tree-ssa/pr117892.c
  3097c3d4bb30c35ef14a5afc79ceb420  gcc/testsuite/gcc.dg/tree-ssa/pr117927.c
*************** db016c873ed206041bc50ac092ce545d  gcc/te
*** 57861,57867 ****
  ea3272b0a6fbd82aefd459202d8b2afc  gcc/testsuite/gcc.dg/vect/pr115841.c
  f4dccafbd979e394e9963f12d52ce1c2  gcc/testsuite/gcc.dg/vect/pr115843.c
  1f0dd6165a23cae6ea231f351632f121  gcc/testsuite/gcc.dg/vect/pr115959.c
! 3617874dc8f0f764b079db5c7e0fa79b  gcc/testsuite/gcc.dg/vect/pr116125.c
  a57032340d085147bd51078386a121d7  gcc/testsuite/gcc.dg/vect/pr116352.c
  fe47826bbf472c7e1ba0157e8f200635  gcc/testsuite/gcc.dg/vect/pr116575.c
  125b0e9fa6165f1885391cf7f88611b5  gcc/testsuite/gcc.dg/vect/pr116628.c
--- 57871,57877 ----
  ea3272b0a6fbd82aefd459202d8b2afc  gcc/testsuite/gcc.dg/vect/pr115841.c
  f4dccafbd979e394e9963f12d52ce1c2  gcc/testsuite/gcc.dg/vect/pr115843.c
  1f0dd6165a23cae6ea231f351632f121  gcc/testsuite/gcc.dg/vect/pr115959.c
! 02a606070b271bd007173d3b9f5551b9  gcc/testsuite/gcc.dg/vect/pr116125.c
  a57032340d085147bd51078386a121d7  gcc/testsuite/gcc.dg/vect/pr116352.c
  fe47826bbf472c7e1ba0157e8f200635  gcc/testsuite/gcc.dg/vect/pr116575.c
  125b0e9fa6165f1885391cf7f88611b5  gcc/testsuite/gcc.dg/vect/pr116628.c
*************** fbcf30f134e1f525bca176a6f7f969ad  gcc/te
*** 65324,65332 ****
  031b72e29159a4e91bbc8c052d96d350  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_10.c
  60aaa4e9d487bd6a45aa3bf0af5e8a64  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_11.c
  745fd0887732daddba57f4a7433ad4d1  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_12.c
! 9ea3d7ce421ee57976811e0d8fff7a07  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_2.c
  0936add06a30e2393cebcf86fef22d59  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_3.c
! 01ee95c619919e2e7bd0cb9e3de8fbb8  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_4.c
  d1b6ffd93379744e84b1e20517c2a8ee  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_5.c
  25c9afc168aa4280373525ba6a0fb422  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_6.c
  261e8d974cfe6e108fbd2fca3d149de3  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_7.c
--- 65334,65342 ----
  031b72e29159a4e91bbc8c052d96d350  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_10.c
  60aaa4e9d487bd6a45aa3bf0af5e8a64  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_11.c
  745fd0887732daddba57f4a7433ad4d1  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_12.c
! 114ed394614bf74c8e525a8cb9b78390  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_2.c
  0936add06a30e2393cebcf86fef22d59  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_3.c
! 22a321f22dfb836a546f0c91f6823e8a  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_4.c
  d1b6ffd93379744e84b1e20517c2a8ee  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_5.c
  25c9afc168aa4280373525ba6a0fb422  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_6.c
  261e8d974cfe6e108fbd2fca3d149de3  gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_7.c
*************** ae44d68f203e7d5a17d19738cfbc53a0  gcc/te
*** 65365,65370 ****
--- 65375,65381 ----
  23037c19fa0b1b3f5bcac32c8d73393c  gcc/testsuite/gcc.target/aarch64/sve/acle/general/nrv_1.c
  618eed08c799209fcc7e876e7bc1f5a9  gcc/testsuite/gcc.target/aarch64/sve/acle/general/orn_1.c
  c43619dc0345cb75df63193d4ecf32a5  gcc/testsuite/gcc.target/aarch64/sve/acle/general/orr_1.c
+ f467f9ddc87398511c12147760e80eb4  gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_1.c
  bb3a7f2587d8584d185738649f93a6f6  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pfirst_1.c
  4a5457bf98a3061b6c949b777ceca410  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pnext_1.c
  6d3b0cbb6b0b88e0030fbf0003faa4c9  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pnext_2.c
*************** b4cb26f77cb994700c2bb96898529353  gcc/te
*** 66168,66214 ****
  b5319325441276b5db5345444a2b12be  gcc/testsuite/gcc.target/aarch64/sve/permute_3.c
  36e648b173341a667222ac3c42297585  gcc/testsuite/gcc.target/aarch64/sve/permute_4.c
  ff1d2ab6ed17740cc59f1590798ec48d  gcc/testsuite/gcc.target/aarch64/sve/permute_5.c
! 149a821506c3d6267ac2c962fe8e9432  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary.c
! 163460e8723e41b7f7bf42089520b53f  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_int_opt_n.c
! 30c4db5e78d2325a3d3e7f2904462524  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_opt_n.c
! 369ade8a3466f234ce1d42f6926156d1  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_opt_single_n.c
! 3903abab0cfabf79c3721c914ee7074b  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_rotate.c
! 2568d3806c2b88998d1707e66cfbd28d  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_uint64_opt_n.c
! b49dc529a2aa71eea17b32a9b8143d35  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_uint_opt_n.c
! 815321d46720ec9b6b515534292461f6  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binaryxn.c
! c297be393e36d5278037c11fc34d5791  gcc/testsuite/gcc.target/aarch64/sve/pfalse-clast.c
! 42ab6b1e1de40da8a551c5aec5692165  gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_opt_n.c
! 5df9e4bdebd6ba06c36b175ae7de88c7  gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_wide_opt_n.c
! 026c73b69d5d52e78083cf3728adfa81  gcc/testsuite/gcc.target/aarch64/sve/pfalse-count_pred.c
! adf8ed56ba51882114c22dd109a7ae7a  gcc/testsuite/gcc.target/aarch64/sve/pfalse-fold_left.c
! d4a9410cbc49fc66fb3027173bf78e50  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load.c
! 415964205aa16e2ebaaa75074d2ff2bf  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext.c
! b58edcde5b72d3bd8f306e1ae17abb3b  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext_gather_index.c
! 412f167931aaf8c500a3337f7804d4b1  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext_gather_offset.c
! 5190d6fccce9740f4770108a7ef6a1c3  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_gather_sv.c
! 89234f236c6c7cbd436cd9f7cf6872a4  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_gather_vs.c
! 5b9f719acd1cf98014441d4c4447f902  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_replicate.c
! 28ebab713c6d2a452214845be17675f3  gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch.c
! e497943180b641c77f9291beafdb4ef7  gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch_gather_index.c
! 5cc31e4363d67165941d7d977ebe9e98  gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch_gather_offset.c
! 347ebd191abee0a242a8cb00d1017101  gcc/testsuite/gcc.target/aarch64/sve/pfalse-ptest.c
! 65a150d1561af25eec73b6d70dae2996  gcc/testsuite/gcc.target/aarch64/sve/pfalse-rdffr.c
! 25a1d42d053de97645f2f85f1523c0ad  gcc/testsuite/gcc.target/aarch64/sve/pfalse-reduction.c
! 7168509f7e96d845be8c7ee348847e42  gcc/testsuite/gcc.target/aarch64/sve/pfalse-reduction_wide.c
! 1072e1ffa908fafc0fc4ab97b8cfb8a0  gcc/testsuite/gcc.target/aarch64/sve/pfalse-shift_right_imm.c
! 780324ce8c98be926f2c11780cd137ab  gcc/testsuite/gcc.target/aarch64/sve/pfalse-store.c
! e4260509c6ddd1047efadfdf58964031  gcc/testsuite/gcc.target/aarch64/sve/pfalse-store_scatter_index.c
! 2e40798bba2a2bd89f35ce7263d4dd24  gcc/testsuite/gcc.target/aarch64/sve/pfalse-store_scatter_offset.c
! 209a68333dc42f2fde3b458a96924ffc  gcc/testsuite/gcc.target/aarch64/sve/pfalse-storexn.c
! 6ef5eab71eb6a453f3827af21503b1e2  gcc/testsuite/gcc.target/aarch64/sve/pfalse-ternary_opt_n.c
! ad37caa6c772445ba953ed0494149ab7  gcc/testsuite/gcc.target/aarch64/sve/pfalse-ternary_rotate.c
! 4e16df2aea3b0c82b852962193210ada  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary.c
! 4d3c78659c5151aff68905abb16f4def  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_convert_narrowt.c
! 21e3c27616659f5b38538f3351bffe36  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_convertxn.c
! e992a498e8d813ced3975cf0fdf8a577  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_n.c
! 8724cc385ac21506d5ade9c1a79e8192  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_pred.c
! 8719babde3a8a497232127e561848291  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_to_uint.c
! 523e29afa093757b750624ee5c575bbb  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unaryxn.c
  58779ff2ec8df7f5f3f3b93f444f0617  gcc/testsuite/gcc.target/aarch64/sve/popcount_1.c
  43e7bc10a42a3debf5d1ccecc4464720  gcc/testsuite/gcc.target/aarch64/sve/popcount_1_run.c
  12ecad870dc3cdd512c314f6e0ba3c08  gcc/testsuite/gcc.target/aarch64/sve/pr100048.c
--- 66179,66225 ----
  b5319325441276b5db5345444a2b12be  gcc/testsuite/gcc.target/aarch64/sve/permute_3.c
  36e648b173341a667222ac3c42297585  gcc/testsuite/gcc.target/aarch64/sve/permute_4.c
  ff1d2ab6ed17740cc59f1590798ec48d  gcc/testsuite/gcc.target/aarch64/sve/permute_5.c
! 1416f75bd9a03ecf3b2dd26528ac3ff3  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary.c
! ca1eb421b4b7b9c04b6d73f46e1d9107  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_int_opt_n.c
! 6ec62fbd77906647a756f1225496d43e  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_opt_n.c
! 9a8deda1aee85e628515984edd395723  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_opt_single_n.c
! 4d83138a7de85705ba5323c0d9371346  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_rotate.c
! cf1e31d86ea35bf64d1fc0c0d41f4784  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_uint64_opt_n.c
! 1a5bb4d2009f54071b12383349242ce3  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_uint_opt_n.c
! 2038e04bf91c734b4b47e638ba5193a0  gcc/testsuite/gcc.target/aarch64/sve/pfalse-binaryxn.c
! 818cc5792252309e9298c3170c6120a5  gcc/testsuite/gcc.target/aarch64/sve/pfalse-clast.c
! 0f0656798d3d0baa65f6683e820f0cc7  gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_opt_n.c
! 264d49e0f73e5e65409b957c1db3f6e4  gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_wide_opt_n.c
! 72ed2a71c8fcd65f9d3290573a793b6a  gcc/testsuite/gcc.target/aarch64/sve/pfalse-count_pred.c
! 02b2bc34734215e7a392ad462e1a11d0  gcc/testsuite/gcc.target/aarch64/sve/pfalse-fold_left.c
! 0961ee1b90ed132141201b720ebd239f  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load.c
! baae1f5bb8c38ef2ca2546ba0a310f21  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext.c
! 89ded3dab62b8594d85b96a3bf15dda9  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext_gather_index.c
! b64ddeae57880afd73daca34d91d317f  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext_gather_offset.c
! 74859b83c348cde10f71f9eb9bb50382  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_gather_sv.c
! 306fc093fa252bd7da27ac0314f77bdd  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_gather_vs.c
! e62c54b0ae4e3e986e7823ed5e341f6a  gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_replicate.c
! 869da60e0a2f2ca15f9baaa22eb4cc2c  gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch.c
! 34081e48b86399f40f2084f8dc18148f  gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch_gather_index.c
! 1c394e62d7250e6514650a214cd35482  gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch_gather_offset.c
! dd3e101cb045787be845e9304a8e7712  gcc/testsuite/gcc.target/aarch64/sve/pfalse-ptest.c
! 0049448d65418817cbc53cd23ce37608  gcc/testsuite/gcc.target/aarch64/sve/pfalse-rdffr.c
! 4926ec7d3490e08069b61317f82b1b8a  gcc/testsuite/gcc.target/aarch64/sve/pfalse-reduction.c
! 3814331ee6720cedc5a8dfcac60d00cd  gcc/testsuite/gcc.target/aarch64/sve/pfalse-reduction_wide.c
! f39127ce179dc24aa6d22b4e592f8aea  gcc/testsuite/gcc.target/aarch64/sve/pfalse-shift_right_imm.c
! c8a2e98f22c98163c6c8effa275cae7c  gcc/testsuite/gcc.target/aarch64/sve/pfalse-store.c
! 21411e023bc24bbb15125db9398cebfb  gcc/testsuite/gcc.target/aarch64/sve/pfalse-store_scatter_index.c
! f07c3cdd899cd5b59fde4f3d94e83812  gcc/testsuite/gcc.target/aarch64/sve/pfalse-store_scatter_offset.c
! d599ad800782107a46820288dae6e455  gcc/testsuite/gcc.target/aarch64/sve/pfalse-storexn.c
! 9d8fb598c9ac5e02c3a8ab397603988b  gcc/testsuite/gcc.target/aarch64/sve/pfalse-ternary_opt_n.c
! 5adfa6ebf8a665a531a49cbc99f20245  gcc/testsuite/gcc.target/aarch64/sve/pfalse-ternary_rotate.c
! 72ccc5428a006da80277911cfe1416bd  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary.c
! 9f0b9ac89c496204133bfd02d740956d  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_convert_narrowt.c
! 48f3a561b4f93c3fc0963c6eeab0a7c2  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_convertxn.c
! f9f072642c6eb693b501cd3dbe994915  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_n.c
! 007909b7799c55dc1f21778968899ba2  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_pred.c
! c47652a0825cec1c925d5ce9dcb9eeff  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_to_uint.c
! 6ae4dc7c7f37f5e40c7f8b150b919577  gcc/testsuite/gcc.target/aarch64/sve/pfalse-unaryxn.c
  58779ff2ec8df7f5f3f3b93f444f0617  gcc/testsuite/gcc.target/aarch64/sve/popcount_1.c
  43e7bc10a42a3debf5d1ccecc4464720  gcc/testsuite/gcc.target/aarch64/sve/popcount_1_run.c
  12ecad870dc3cdd512c314f6e0ba3c08  gcc/testsuite/gcc.target/aarch64/sve/pr100048.c
*************** ad03609f7c5910d8e0ee4d989acbb564  gcc/te
*** 66594,66600 ****
  fede82c538ecebf82ae0f495a35f66db  gcc/testsuite/gcc.target/aarch64/sve/vec_init_1.c
  008cae7eaa9cd6f41b5955cdd2b3f709  gcc/testsuite/gcc.target/aarch64/sve/vec_init_1_run.c
  2502162497eb48d665e7c376dccae0df  gcc/testsuite/gcc.target/aarch64/sve/vec_init_2.c
! 9fde45bbc25e8a9c33cdac0a306c5054  gcc/testsuite/gcc.target/aarch64/sve/vec_init_3.c
  ad5ce34e9e891872cc75c0ffed59addd  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1.c
  a26f50223dec145aaa01ffa81756d9be  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1_overrange_run.c
  51117843fdfadbfc8dedd0fee643b4fb  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1_run.c
--- 66605,66612 ----
  fede82c538ecebf82ae0f495a35f66db  gcc/testsuite/gcc.target/aarch64/sve/vec_init_1.c
  008cae7eaa9cd6f41b5955cdd2b3f709  gcc/testsuite/gcc.target/aarch64/sve/vec_init_1_run.c
  2502162497eb48d665e7c376dccae0df  gcc/testsuite/gcc.target/aarch64/sve/vec_init_2.c
! 4bc986ea41d65424e0c6997ea24e7b74  gcc/testsuite/gcc.target/aarch64/sve/vec_init_3.c
! 7326fab600b933872ff79bc8e4ed6c2f  gcc/testsuite/gcc.target/aarch64/sve/vec_init_4.c
  ad5ce34e9e891872cc75c0ffed59addd  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1.c
  a26f50223dec145aaa01ffa81756d9be  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1_overrange_run.c
  51117843fdfadbfc8dedd0fee643b4fb  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1_run.c
*************** f138a3da42d63bd49959d9ace6c814ab  gcc/te
*** 68010,68043 ****
  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
! 0fb5bea81042b3145e52f4e90a557a04  gcc/testsuite/gcc.target/aarch64/sve2/dupq_1.c
  601e2a51cde2e0a9fd3515f4fbdf4eb7  gcc/testsuite/gcc.target/aarch64/sve2/eor3_1.c
! 7e11899eebfd050dd47b225de91b59bd  gcc/testsuite/gcc.target/aarch64/sve2/extq_1.c
  6699c8d574b87c7018fc5b494c65cb7f  gcc/testsuite/gcc.target/aarch64/sve2/gather_earlyclobber.c
  34c844ca053b9c871341786139fbf872  gcc/testsuite/gcc.target/aarch64/sve2/mulhrs_1.c
  b360e0ac1da1500645df64fce4fab7dd  gcc/testsuite/gcc.target/aarch64/sve2/nlogic_1.c
  4446107d252cac5778f692095515b222  gcc/testsuite/gcc.target/aarch64/sve2/nlogic_2.c
! c7b786f01d84f2d7e603d6a43e876c22  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary.c
! 02d75b42d49e20b0d62f8cc71bf564fd  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_int_opt_n.c
! 0398cf52887bb6fced0d07d6a74e4cf6  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_int_opt_single_n.c
! d4ac5f0cd544a257724c38f19cbcf90f  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_opt_n.c
! 83853507dec67ccd18edb5ae920b3cdc  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_opt_single_n.c
! b956634e9c2b1ff458cb4799c8c434a8  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_to_uint.c
! f4f829603d0c0ccb43eef6398037ecf0  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_uint_opt_n.c
! c29a08ad9971f39bd21407397a2464dd  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_wide.c
! caa209ec03322b27ed7e2f921275eb1b  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-compare.c
! 5c14162bb0a5f5d0b4e5b3e0bc208bd3  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_ext_gather_index_restricted.c
! 01bda29fa3e3116b8d9e04dc77401740  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_ext_gather_offset_restricted.c
! ffe52b654b1bed290e682a570e4e2f2c  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_gather_sv_restricted.c
! 7e3a7aed02502868adadf72e5511e4d6  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_gather_vs.c
! 041f0a0d6a42b3a6860642ee643582f2  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-shift_left_imm_to_uint.c
! 257e03d7adb3ca35f141df5b4de3de69  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-shift_right_imm.c
! 9257c8162b6cc66828379e18e4c4a1a2  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-store_scatter_index_restricted.c
! a001f81828ab73d9f7a29b0c061f2cc9  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-store_scatter_offset_restricted.c
! cacf1e249f8fdfc2a3a5a553c679f1a1  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary.c
! 6129e158aa336ecdd3b69990ac8fb353  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_convert.c
! dd39a5e2157a8a0459e05ebd9667fd83  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_convert_narrowt.c
! d5c7985c957a203ace14885eae7f502b  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_to_int.c
  f6df41d6d0c00a657a60617993e7fd37  gcc/testsuite/gcc.target/aarch64/sve2/pr107717.c
  10614e0cbb3e88c95f34ea133bf8898e  gcc/testsuite/gcc.target/aarch64/sve2/pr107830-1.c
  f5f6f291e9c1c848a46c8ef91ca99f58  gcc/testsuite/gcc.target/aarch64/sve2/pr107830-2.c
--- 68022,68057 ----
  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
! 4c1f47b22f95b90c917c3c6e70530e4e  gcc/testsuite/gcc.target/aarch64/sve2/dupq_1.c
! 89d5827d6649de87899d14beeaa9a82b  gcc/testsuite/gcc.target/aarch64/sve2/dupq_1_run.c
  601e2a51cde2e0a9fd3515f4fbdf4eb7  gcc/testsuite/gcc.target/aarch64/sve2/eor3_1.c
! c2a0ae9f14c1928de3aea64ee37d1b25  gcc/testsuite/gcc.target/aarch64/sve2/extq_1.c
! 15b722686c47673716a78737275cada5  gcc/testsuite/gcc.target/aarch64/sve2/extq_1_run.c
  6699c8d574b87c7018fc5b494c65cb7f  gcc/testsuite/gcc.target/aarch64/sve2/gather_earlyclobber.c
  34c844ca053b9c871341786139fbf872  gcc/testsuite/gcc.target/aarch64/sve2/mulhrs_1.c
  b360e0ac1da1500645df64fce4fab7dd  gcc/testsuite/gcc.target/aarch64/sve2/nlogic_1.c
  4446107d252cac5778f692095515b222  gcc/testsuite/gcc.target/aarch64/sve2/nlogic_2.c
! d58c6c7544d2d10908ad86e2a7eb5617  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary.c
! ea89dcc53ed5cc0872494b6e084babd1  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_int_opt_n.c
! 6a0f3e79e9d9562cad3e689554df24b2  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_int_opt_single_n.c
! ad25369c21bb0fd879e3705c16919ef9  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_opt_n.c
! 2c9ee03fc9a496a4a787142e8501af56  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_opt_single_n.c
! c579c8c22d55ed29406b02d7ffb5629e  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_to_uint.c
! f511a9d9da8e8e119fe0ba0e77ed40e6  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_uint_opt_n.c
! 2e980bbfa904373d00efb6c997511be1  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_wide.c
! e6301e3c6a3df10f895517121d1c8f89  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-compare.c
! ed1319e7442b560c3bc8ca3d8afc3b71  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_ext_gather_index_restricted.c
! 3fe57947403ee74a055a5d04958ffb29  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_ext_gather_offset_restricted.c
! c54d0627664d98c87dd17475530748ec  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_gather_sv_restricted.c
! 5605a38df40460f8320fe4e043e53d2b  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_gather_vs.c
! e432efc218965bde7e49eea36962667e  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-shift_left_imm_to_uint.c
! ec69f4acc6192d18a764ed3620ac27a2  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-shift_right_imm.c
! 59b9f14f0ae91f4e47982ddd0d181f24  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-store_scatter_index_restricted.c
! 70e1de269c0ae033695386f9c8bba6c8  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-store_scatter_offset_restricted.c
! f0a3dc959216bf0a95555445829eebf5  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary.c
! 88e8c235bf937d8939f9ed739ae750fc  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_convert.c
! f42531541a13618e37c4014de7719c22  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_convert_narrowt.c
! c0db20b5c8bf98f9a1940cec0a5cdc45  gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_to_int.c
  f6df41d6d0c00a657a60617993e7fd37  gcc/testsuite/gcc.target/aarch64/sve2/pr107717.c
  10614e0cbb3e88c95f34ea133bf8898e  gcc/testsuite/gcc.target/aarch64/sve2/pr107830-1.c
  f5f6f291e9c1c848a46c8ef91ca99f58  gcc/testsuite/gcc.target/aarch64/sve2/pr107830-2.c
*************** b1f13471701b0335894317ae214cc68c  gcc/te
*** 68046,68056 ****
  3fcc51d99dc7ff15a8bb60da25dc470e  gcc/testsuite/gcc.target/aarch64/sve2/pr120999.c
  3ddfd16fcbf89890fd9785fec8f0c081  gcc/testsuite/gcc.target/aarch64/sve2/shracc_1.c
  8cd4d6e010de57b57d5d8fb325fa79bb  gcc/testsuite/gcc.target/aarch64/sve2/unpred_mul_1.c
! 5305258327c11f42a3de08b7708ebd76  gcc/testsuite/gcc.target/aarch64/sve2/uzpq_1.c
  253ea1793d85a6047e9fc6e69f5a62af  gcc/testsuite/gcc.target/aarch64/sve2/whilerw_1.c
  42ba6aece1381e39342dd7cf99a96910  gcc/testsuite/gcc.target/aarch64/sve2/whilewr_1.c
  d807c78d9b80a1f49bc50cb0cae86706  gcc/testsuite/gcc.target/aarch64/sve2/whilewr_2.c
! 090ee6240c811fb8e04d0966d321b41b  gcc/testsuite/gcc.target/aarch64/sve2/zipq_1.c
  7edd975b42fef37f221ec76013222098  gcc/testsuite/gcc.target/aarch64/swar_to_vec_cmp.c
  c1ccdcf1821a2a9f689561bfc74f48dc  gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c
  b10293e89ee2df8eb55e37a5c18f3bd5  gcc/testsuite/gcc.target/aarch64/symbol-range.c
--- 68060,68072 ----
  3fcc51d99dc7ff15a8bb60da25dc470e  gcc/testsuite/gcc.target/aarch64/sve2/pr120999.c
  3ddfd16fcbf89890fd9785fec8f0c081  gcc/testsuite/gcc.target/aarch64/sve2/shracc_1.c
  8cd4d6e010de57b57d5d8fb325fa79bb  gcc/testsuite/gcc.target/aarch64/sve2/unpred_mul_1.c
! 826ee7c8b41bb7da016220e1f67b1306  gcc/testsuite/gcc.target/aarch64/sve2/uzpq_1.c
! 5134e1ecddf13468387f1e159bbe0f42  gcc/testsuite/gcc.target/aarch64/sve2/uzpq_1_run.c
  253ea1793d85a6047e9fc6e69f5a62af  gcc/testsuite/gcc.target/aarch64/sve2/whilerw_1.c
  42ba6aece1381e39342dd7cf99a96910  gcc/testsuite/gcc.target/aarch64/sve2/whilewr_1.c
  d807c78d9b80a1f49bc50cb0cae86706  gcc/testsuite/gcc.target/aarch64/sve2/whilewr_2.c
! ba34d67f4c6f36f6b5dc39f0c28dcd45  gcc/testsuite/gcc.target/aarch64/sve2/zipq_1.c
! 17262018079c9e93fbde6be04318f416  gcc/testsuite/gcc.target/aarch64/sve2/zipq_1_run.c
  7edd975b42fef37f221ec76013222098  gcc/testsuite/gcc.target/aarch64/swar_to_vec_cmp.c
  c1ccdcf1821a2a9f689561bfc74f48dc  gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c
  b10293e89ee2df8eb55e37a5c18f3bd5  gcc/testsuite/gcc.target/aarch64/symbol-range.c
*************** c032157cf6f27e3a2694462a9e6f23bd  gcc/te
*** 84394,84401 ****
  86877c9cc61dfcd3221d295fe39283b7  gcc/testsuite/gcc.target/nvptx/abi-knr-ret.c
  db33baf84613090251fc255b0eec20d9  gcc/testsuite/gcc.target/nvptx/abi-scalar-arg.c
  76d119f01b5b6a6d59659841410498b7  gcc/testsuite/gcc.target/nvptx/abi-scalar-ret.c
! 4aa817a05665d1357479a6ad2386f84b  gcc/testsuite/gcc.target/nvptx/abi-struct-arg.c
! cf7722359f965eab6fa8fbc9bc9a46a2  gcc/testsuite/gcc.target/nvptx/abi-struct-ret.c
  a130181e569520d8ec50ce126d257deb  gcc/testsuite/gcc.target/nvptx/abi-vararg-1.c
  5c482150fb6b35fd485e1d16dfc98fd8  gcc/testsuite/gcc.target/nvptx/abi-vararg-2.c
  7a09552864da1203b2b1381f3961bfb4  gcc/testsuite/gcc.target/nvptx/abi-vararg-3.c
--- 84410,84417 ----
  86877c9cc61dfcd3221d295fe39283b7  gcc/testsuite/gcc.target/nvptx/abi-knr-ret.c
  db33baf84613090251fc255b0eec20d9  gcc/testsuite/gcc.target/nvptx/abi-scalar-arg.c
  76d119f01b5b6a6d59659841410498b7  gcc/testsuite/gcc.target/nvptx/abi-scalar-ret.c
! d701cfdd0facd50fa388b13e7afab5b8  gcc/testsuite/gcc.target/nvptx/abi-struct-arg.c
! 9cc0f7302300cdfae3f76dfd2b0428ff  gcc/testsuite/gcc.target/nvptx/abi-struct-ret.c
  a130181e569520d8ec50ce126d257deb  gcc/testsuite/gcc.target/nvptx/abi-vararg-1.c
  5c482150fb6b35fd485e1d16dfc98fd8  gcc/testsuite/gcc.target/nvptx/abi-vararg-2.c
  7a09552864da1203b2b1381f3961bfb4  gcc/testsuite/gcc.target/nvptx/abi-vararg-3.c
*************** dd4a33d1caf27318327d409066e8853f  gcc/te
*** 84484,84491 ****
  a378f672c1826c23c1560c1af3c74cde  gcc/testsuite/gcc.target/nvptx/march-map=sm_52.c
  0ab192ba0546c180702780a3ba66044b  gcc/testsuite/gcc.target/nvptx/march-map=sm_53.c
  9e08e53476d54bf63a1c5ca677191ea9  gcc/testsuite/gcc.target/nvptx/march-map=sm_60.c
! fd68802dbe55b8545103f9ae1f1c0b23  gcc/testsuite/gcc.target/nvptx/march-map=sm_61.c
! a8ba705dd681c1c1324166ecd4c46fc7  gcc/testsuite/gcc.target/nvptx/march-map=sm_62.c
  e65d0546814f094a5fd5a9dc08ff6a97  gcc/testsuite/gcc.target/nvptx/march-map=sm_70.c
  c2d8a97746e819cbcd1ea76ca595f59f  gcc/testsuite/gcc.target/nvptx/march-map=sm_72.c
  f946b7c1cfe33fcf72971bc3a68c8f6f  gcc/testsuite/gcc.target/nvptx/march-map=sm_75.c
--- 84500,84507 ----
  a378f672c1826c23c1560c1af3c74cde  gcc/testsuite/gcc.target/nvptx/march-map=sm_52.c
  0ab192ba0546c180702780a3ba66044b  gcc/testsuite/gcc.target/nvptx/march-map=sm_53.c
  9e08e53476d54bf63a1c5ca677191ea9  gcc/testsuite/gcc.target/nvptx/march-map=sm_60.c
! 43d10b0199ee0fcbb5ec708a1a873dd4  gcc/testsuite/gcc.target/nvptx/march-map=sm_61.c
! d8ad62f4c3d97fbd06b929a70135a2ff  gcc/testsuite/gcc.target/nvptx/march-map=sm_62.c
  e65d0546814f094a5fd5a9dc08ff6a97  gcc/testsuite/gcc.target/nvptx/march-map=sm_70.c
  c2d8a97746e819cbcd1ea76ca595f59f  gcc/testsuite/gcc.target/nvptx/march-map=sm_72.c
  f946b7c1cfe33fcf72971bc3a68c8f6f  gcc/testsuite/gcc.target/nvptx/march-map=sm_75.c
*************** d5dff4229bf2002ee105ec2e9c8ca63b  gcc/te
*** 84500,84505 ****
--- 84516,84522 ----
  b5d58d84e57c5cfe9d7ce93a40665b7e  gcc/testsuite/gcc.target/nvptx/march=sm_37.c
  cb9d8e8835055f77639301fe42459f14  gcc/testsuite/gcc.target/nvptx/march=sm_52.c
  0601021f45410aa7fa56ed7ea27904ff  gcc/testsuite/gcc.target/nvptx/march=sm_53.c
+ a1d50cdd7bd07553ee378e39a75aa675  gcc/testsuite/gcc.target/nvptx/march=sm_61.c
  ea7e7665df27eebcf186519e2077269b  gcc/testsuite/gcc.target/nvptx/march=sm_70.c
  086af00fb5d74ef9fabd5265379230b1  gcc/testsuite/gcc.target/nvptx/march=sm_75.c
  ef504f274b79cad064bc5f0eab4dccbe  gcc/testsuite/gcc.target/nvptx/march=sm_80.c
*************** afd0dac0c935c0eb1fb80b9fae2b1c4e  gcc/te
*** 84507,84512 ****
--- 84524,84530 ----
  3acbb14b9172e6aa7e2fafacc82dd835  gcc/testsuite/gcc.target/nvptx/mptx=3.1.c
  9ea9acf5f9e1658066ce2f6c50b8b163  gcc/testsuite/gcc.target/nvptx/mptx=4.1.c
  a5dde36e4466d98be79cade6931a198c  gcc/testsuite/gcc.target/nvptx/mptx=4.2.c
+ 0eb02595b9f938776de42a71f317c938  gcc/testsuite/gcc.target/nvptx/mptx=5.0.c
  19131c4c116b5adfafc8c6ddeedf1f6a  gcc/testsuite/gcc.target/nvptx/mptx=6.0.c
  19b6ba4e745ea51faf8b07b0be9a573c  gcc/testsuite/gcc.target/nvptx/mptx=6.3.c
  3456be09c7440492bf6d4c2a16058579  gcc/testsuite/gcc.target/nvptx/mptx=7.0.c
*************** c4ff958c7424124b0ee823af5b303872  gcc/te
*** 102229,102234 ****
--- 102247,102253 ----
  4d6a30403727d33b5324687b0cf26a2b  gcc/testsuite/gfortran.dg/function_charlen_1.f90
  d7737217545ebcdba2eec10ee6151f38  gcc/testsuite/gfortran.dg/function_charlen_2.f90
  4a958755730ebf90567051f0b55b3b6b  gcc/testsuite/gfortran.dg/function_charlen_3.f
+ 5dd72dfb4b021f28dfb067c720b04502  gcc/testsuite/gfortran.dg/function_charlen_4.f90
  c71397aec804c0b5ce001a1d5dbdb76e  gcc/testsuite/gfortran.dg/function_kinds_1.f90
  cbb70c4ec8b88d436fb61acf9486c6bf  gcc/testsuite/gfortran.dg/function_kinds_2.f90
  9d6188e05d3cc7589bb0f30729072f80  gcc/testsuite/gfortran.dg/function_kinds_3.f90
*************** eb194938d2c2fe84d215ede719f501c0  gcc/te
*** 104957,104962 ****
--- 104976,104982 ----
  4db68e1eec67942dd893a17d7e547d6e  gcc/testsuite/gfortran.dg/pointer_check_12.f90
  ccf9944fa34b0e93e5415a91ad21e966  gcc/testsuite/gfortran.dg/pointer_check_13.f90
  1c6366ef774f50102935b627497ffda0  gcc/testsuite/gfortran.dg/pointer_check_14.f90
+ 95c3fc2b08b12abf7b0b8eede20fee74  gcc/testsuite/gfortran.dg/pointer_check_15.f90
  7fd59810205e453c2a75b8a7f1ed13b0  gcc/testsuite/gfortran.dg/pointer_check_2.f90
  9e0a1ed208d6678d1a32750be9c66ce8  gcc/testsuite/gfortran.dg/pointer_check_3.f90
  24e0ade37dff0f1eb6006ee3395e17a6  gcc/testsuite/gfortran.dg/pointer_check_4.f90
*************** e64523b7502cc4a326c69a5fb2bb632b  gcc/te
*** 109931,109936 ****
--- 109951,109958 ----
  04893bced6e84ae01eff30822adc8c39  gcc/testsuite/gm2/switches/optimization/run/pass/switches-optimization-run-pass.exp
  57f079fe3fae85c31093c689467ddf5c  gcc/testsuite/gm2/switches/pedantic-params/fail/a.def
  d083f2149e966c7f4a3cf7a592213e6e  gcc/testsuite/gm2/switches/pedantic-params/fail/a.mod
+ a6e8cb2a9ab54e9865ad3892aa0b5941  gcc/testsuite/gm2/switches/pedantic-params/fail/arrayofchar.def
+ 6c859878e0873eb436e217b7385b4881  gcc/testsuite/gm2/switches/pedantic-params/fail/arrayofchar.mod
  8a73f7d6d7f60bc44b16a61e8159d6d2  gcc/testsuite/gm2/switches/pedantic-params/fail/switches-pedantic-params-fail.exp
  fcbe31b3d4560713715a841f8730d29d  gcc/testsuite/gm2/switches/pedantic-params/pass/Strings.def
  fd422a739cead1ddd9341f7ffef6c32a  gcc/testsuite/gm2/switches/pedantic-params/pass/Strings.mod
*************** eb1595e729e2eaac81c7ffe330d8f24e  gcc/te
*** 114895,114901 ****
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! 13b6e1e897d9eeff92cfafe69b891ea2  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
--- 114917,114923 ----
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! 135dd50be05ca691d7b072c5db5ee68c  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
*************** ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tr
*** 117371,117377 ****
  809e077fea6aa1e38be693ae0a16dee1  gcc/tree-loop-distribution.cc
  62502d6fd9aa927353d7437dc2a6da17  gcc/tree-nested.cc
  b9bad013f5186a6cf78fe8adbe457945  gcc/tree-nested.h
! b32d8d9d2ed18752b632ccafa2e29737  gcc/tree-nrv.cc
  a94299d98262f49dd0caf9ecb3dbb2ef  gcc/tree-object-size.cc
  2726009c7d301c88845d73276d4dc3b9  gcc/tree-object-size.h
  d6f70ceb8f53d3be86548b178e50c8e0  gcc/tree-outof-ssa.cc
--- 117393,117399 ----
  809e077fea6aa1e38be693ae0a16dee1  gcc/tree-loop-distribution.cc
  62502d6fd9aa927353d7437dc2a6da17  gcc/tree-nested.cc
  b9bad013f5186a6cf78fe8adbe457945  gcc/tree-nested.h
! 45fa4d8e792d6ddd01efa95b7e6dd98e  gcc/tree-nrv.cc
  a94299d98262f49dd0caf9ecb3dbb2ef  gcc/tree-object-size.cc
  2726009c7d301c88845d73276d4dc3b9  gcc/tree-object-size.h
  d6f70ceb8f53d3be86548b178e50c8e0  gcc/tree-outof-ssa.cc
*************** fd4dd1219acc650a4f7855faa0097964  gcc/tr
*** 117388,117394 ****
  f2fea638426d89fe9ea58081e5c46b3a  gcc/tree-profile.cc
  b2ea6fc51eae4a47de35dc40a3f0235c  gcc/tree-scalar-evolution.cc
  dddd950fe463803c41bc0c7cddf0fe44  gcc/tree-scalar-evolution.h
! f0f89902e3fb65efd0cee6aa170c1d13  gcc/tree-sra.cc
  c022e816e38c8f399e6a16163c56d6db  gcc/tree-sra.h
  3e42023ef3fe5187ffffddbbb5740208  gcc/tree-ssa-address.cc
  c724c8becbea9eec0f806e3335942c32  gcc/tree-ssa-address.h
--- 117410,117416 ----
  f2fea638426d89fe9ea58081e5c46b3a  gcc/tree-profile.cc
  b2ea6fc51eae4a47de35dc40a3f0235c  gcc/tree-scalar-evolution.cc
  dddd950fe463803c41bc0c7cddf0fe44  gcc/tree-scalar-evolution.h
! 0f2a9168426ad250817cbabd3ff1a336  gcc/tree-sra.cc
  c022e816e38c8f399e6a16163c56d6db  gcc/tree-sra.h
  3e42023ef3fe5187ffffddbbb5740208  gcc/tree-ssa-address.cc
  c724c8becbea9eec0f806e3335942c32  gcc/tree-ssa-address.h
*************** bf137326f0a436ec66b505f490068cd7  gcc/tr
*** 117459,117466 ****
  339bce59375d7679ec019cf010b6bcbc  gcc/tree-ssanames.h
  5fa0d7c6143cd9e39c30840b9996fa30  gcc/tree-stdarg.cc
  9817789b6289e73955015beb57c609b1  gcc/tree-stdarg.h
! 3036d8f359941475e5cb3cfdd715cab2  gcc/tree-streamer-in.cc
! 58d5ce00761a2f46b9daffbc63a9b1d3  gcc/tree-streamer-out.cc
  22cddc57dea71a3e5c57e033b6f86476  gcc/tree-streamer.cc
  6714826bb9cd5f171a08cbabcb1da8e6  gcc/tree-streamer.h
  899a002f8aec509c2457b02d6c7634d9  gcc/tree-switch-conversion.cc
--- 117481,117488 ----
  339bce59375d7679ec019cf010b6bcbc  gcc/tree-ssanames.h
  5fa0d7c6143cd9e39c30840b9996fa30  gcc/tree-stdarg.cc
  9817789b6289e73955015beb57c609b1  gcc/tree-stdarg.h
! af4c63760c432f66b1c6c8e7e7666699  gcc/tree-streamer-in.cc
! 629c2d175128efb2809d4ed7e08f1a18  gcc/tree-streamer-out.cc
  22cddc57dea71a3e5c57e033b6f86476  gcc/tree-streamer.cc
  6714826bb9cd5f171a08cbabcb1da8e6  gcc/tree-streamer.h
  899a002f8aec509c2457b02d6c7634d9  gcc/tree-switch-conversion.cc
*************** cc0bdf3f684b251509b8552d2d8549a3  gcc/tr
*** 117472,117479 ****
  7ea120edfd69e73498dd90e3a1dfc0fc  gcc/tree-vect-loop.cc
  77240c08cea454c2d4a449206f7930c3  gcc/tree-vect-patterns.cc
  baa70369c21f662d5e61d1296052d231  gcc/tree-vect-slp-patterns.cc
! 09d798b4fe50daf2514eca382d37c9ae  gcc/tree-vect-slp.cc
! 9810ddfe1a934f6f705279bd433cd763  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  6a5457c324d4279acbd82f147f1dd823  gcc/tree-vectorizer.cc
--- 117494,117501 ----
  7ea120edfd69e73498dd90e3a1dfc0fc  gcc/tree-vect-loop.cc
  77240c08cea454c2d4a449206f7930c3  gcc/tree-vect-patterns.cc
  baa70369c21f662d5e61d1296052d231  gcc/tree-vect-slp-patterns.cc
! ab9bcf6e6a2121e20b6e65fff17d0f2e  gcc/tree-vect-slp.cc
! 2590b0485a03c281bd6f19e91eaaea64  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  6a5457c324d4279acbd82f147f1dd823  gcc/tree-vectorizer.cc
*************** a3eb5dee2788fe0a6c42502ba658eddd  libffi
*** 118334,118340 ****
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! 61aef5364339a36d566373efd59e64e7  libgcc/ChangeLog
  b1229d68a3a67c6e30daf30379e7bb8f  libgcc/Makefile.in
  0f39724f440135be7a62bbd4e67e6840  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
--- 118356,118362 ----
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! 83173704469db6c668fec8a23bf51370  libgcc/ChangeLog
  b1229d68a3a67c6e30daf30379e7bb8f  libgcc/Makefile.in
  0f39724f440135be7a62bbd4e67e6840  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
*************** fd43d6ac7bf2546f0be1ff27b92cf494  libgcc
*** 118613,118619 ****
  de53de7ae179ee6c1472a52a63fffec9  libgcc/config/ft32/t-ft32
  787f73bb268370989706ff63429572a0  libgcc/config/gcn/amdgcn_veclib.h
  c7eba6e6adeda2a8b7c9a948d9b2a63e  libgcc/config/gcn/atomic.c
! 2d88828185bb2adae0135f0ee8ae7db8  libgcc/config/gcn/crt0.c
  808400d4ce93aa0151a92eac6f15a87c  libgcc/config/gcn/gthr-gcn.h
  4be9965291734f95b84a15c0c688cfbc  libgcc/config/gcn/lib2-bswapti2.c
  a753f47f2e2c7f8ac29823a32abfe828  libgcc/config/gcn/lib2-divmod-di.c
--- 118635,118641 ----
  de53de7ae179ee6c1472a52a63fffec9  libgcc/config/ft32/t-ft32
  787f73bb268370989706ff63429572a0  libgcc/config/gcn/amdgcn_veclib.h
  c7eba6e6adeda2a8b7c9a948d9b2a63e  libgcc/config/gcn/atomic.c
! 7e51a1ff89544ba0d4dc166c5e38f360  libgcc/config/gcn/crt0.c
  808400d4ce93aa0151a92eac6f15a87c  libgcc/config/gcn/gthr-gcn.h
  4be9965291734f95b84a15c0c688cfbc  libgcc/config/gcn/lib2-bswapti2.c
  a753f47f2e2c7f8ac29823a32abfe828  libgcc/config/gcn/lib2-divmod-di.c
*************** ec92cffa46d4d29b40309d537f263c3d  libgcc
*** 119311,119317 ****
  99a3b68ba37dc9686f3d0fa2197f1c7a  libgcc/config/nvptx/alloca.c
  2bdd9a454391a1df99bf3768cd3df318  libgcc/config/nvptx/atomic.c
  93eb0a145bb1b9177c7cac0d24f143e3  libgcc/config/nvptx/crt0.c
! 25309a7524dd33c7e701ba6adddbcdce  libgcc/config/nvptx/gbl-ctors.c
  ba27b09b944db26218cdbfd8e8eb91e1  libgcc/config/nvptx/mgomp.c
  c4c8a0e707da7ed006a0e4c92ba16770  libgcc/config/nvptx/nvptx-malloc.h
  771d66571807f37e90e005d41c391398  libgcc/config/nvptx/reduction.c
--- 119333,119339 ----
  99a3b68ba37dc9686f3d0fa2197f1c7a  libgcc/config/nvptx/alloca.c
  2bdd9a454391a1df99bf3768cd3df318  libgcc/config/nvptx/atomic.c
  93eb0a145bb1b9177c7cac0d24f143e3  libgcc/config/nvptx/crt0.c
! 1c10dac5e780600ed16f9a4cac413e0c  libgcc/config/nvptx/gbl-ctors.c
  ba27b09b944db26218cdbfd8e8eb91e1  libgcc/config/nvptx/mgomp.c
  c4c8a0e707da7ed006a0e4c92ba16770  libgcc/config/nvptx/nvptx-malloc.h
  771d66571807f37e90e005d41c391398  libgcc/config/nvptx/reduction.c
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 126484,126493 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 84815e5e5f352b9a4ca2ec1599dcc403  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
! a732cc940d0d19d8091745ee2a77daee  libgomp/Makefile.am
! a1cd9225f663ff9380c1e51eee8c4b14  libgomp/Makefile.in
  f931a90a01b7668928d9f7fcd5c7f3fb  libgomp/acc_prof.h
  d45f3b20f1be5d95a6c06fb81bedafe9  libgomp/acinclude.m4
  30a64ccfecfa60e8b5098e9fe26ea707  libgomp/aclocal.m4
--- 126506,126515 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 34c389ada5d744bba2e0487c26bf0247  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
! 883cfea6de23904b83d6bd58a729c866  libgomp/Makefile.am
! 54c7bc8277669e3bf5f1a3db179ae206  libgomp/Makefile.in
  f931a90a01b7668928d9f7fcd5c7f3fb  libgomp/acc_prof.h
  d45f3b20f1be5d95a6c06fb81bedafe9  libgomp/acinclude.m4
  30a64ccfecfa60e8b5098e9fe26ea707  libgomp/aclocal.m4
*************** d41d8cd98f00b204e9800998ecf8427e  libgom
*** 126517,126522 ****
--- 126539,126545 ----
  86ef0ecdd0892d6dc1c11f050e413147  libgomp/config/accel/ptrlock.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/sem.c
  e4e15589f222c2aec21754e3e5a46b08  libgomp/config/accel/sem.h
+ 203c8c66029647420306a896dff09683  libgomp/config/accel/target-cxa-dso-dtor.c
  79cd9b5789e0ce828dabd7fac2c70478  libgomp/config/accel/target-indirect.c
  967a256c3675ff0b33580d16d9c4d3fc  libgomp/config/accel/thread-stacksize.h
  917b1d0f3380a24511e6dcd14130b388  libgomp/config/bsd/proc.c
*************** f1eee47026bb1c516cd1b3a9b9c1c5fa  libgom
*** 126664,126669 ****
--- 126687,126693 ----
  1a659741443df556b83c96cee6a23405  libgomp/single.c
  6197f832f373fba082a73a413e58be94  libgomp/splay-tree.c
  6562eda8ef1a1fd0a2a0a9e5621f684b  libgomp/splay-tree.h
+ 1775f6ebbed5a9aef1882e66136d9e2b  libgomp/target-cxa-dso-dtor.c
  a8a23ca7c25ca51062b636b0c099096a  libgomp/target-indirect.c
  e10777c5b3796fb8a332899a2d7eb38a  libgomp/target.c
  8f03749b5187ce4fb4dce3f7d5b2d9f7  libgomp/task.c
*************** cf8630c02b905d98e08a439066bb9815  libgom
*** 126740,126745 ****
--- 126764,126770 ----
  0bd7fe39119bfc0574561c1e381edc5b  libgomp/testsuite/libgomp.c++/ctor-9.C
  23c42bd29433374ffd8ef4b669c3ab98  libgomp/testsuite/libgomp.c++/declare-target-indirect-1.C
  69326cfd40097e393a1bdb2e95e9052d  libgomp/testsuite/libgomp.c++/declare_target-1.C
+ a571dcf473210e7664f748b4e44d47f5  libgomp/testsuite/libgomp.c++/declare_target-2.C
  9680d8fd6dafdcd73ddfb70fce9898b5  libgomp/testsuite/libgomp.c++/default-1.C
  01456b503209d46ee61ee8a1877c839c  libgomp/testsuite/libgomp.c++/depend-1.C
  5ddffb7f236c9b7b81760cac311649f6  libgomp/testsuite/libgomp.c++/depend-iterator-1.C
*************** f707c9b8a0f7005cc93bc19e863bbd02  libgom
*** 126821,126828 ****
  8801d963ce68c757ce130916d88cfb17  libgomp/testsuite/libgomp.c++/pr119692-1-1.C
  6fc97c0ff0901911f7091f8eca32d1dd  libgomp/testsuite/libgomp.c++/pr119692-1-2.C
  a728b6c3c12ff1bb22774ab07d33b777  libgomp/testsuite/libgomp.c++/pr119692-1-3.C
! 64964da5710749d5a1691aa6e6bc4615  libgomp/testsuite/libgomp.c++/pr119692-1-4.C
! efdbbfaf57e173262a8a65f272a81691  libgomp/testsuite/libgomp.c++/pr119692-1-5.C
  c57d4e906a72b08e5f49bef40306b63f  libgomp/testsuite/libgomp.c++/pr24455-1.C
  54c6e1c645042b8c18d27e04190d4816  libgomp/testsuite/libgomp.c++/pr24455.C
  ebbf9a13ba035141ba01b3281fd27fea  libgomp/testsuite/libgomp.c++/pr26691.C
--- 126846,126853 ----
  8801d963ce68c757ce130916d88cfb17  libgomp/testsuite/libgomp.c++/pr119692-1-1.C
  6fc97c0ff0901911f7091f8eca32d1dd  libgomp/testsuite/libgomp.c++/pr119692-1-2.C
  a728b6c3c12ff1bb22774ab07d33b777  libgomp/testsuite/libgomp.c++/pr119692-1-3.C
! 22afbe762f0bfd78bd8ebfdb9ae544d2  libgomp/testsuite/libgomp.c++/pr119692-1-4.C
! b9bea55653edd95a419c1fac4dc913e8  libgomp/testsuite/libgomp.c++/pr119692-1-5.C
  c57d4e906a72b08e5f49bef40306b63f  libgomp/testsuite/libgomp.c++/pr24455-1.C
  54c6e1c645042b8c18d27e04190d4816  libgomp/testsuite/libgomp.c++/pr24455.C
  ebbf9a13ba035141ba01b3281fd27fea  libgomp/testsuite/libgomp.c++/pr26691.C
*************** ab3063f8b6682d372e65d063a35a406d  libgom
*** 126935,126956 ****
  131b2ab5b78c2725e33c4249f59e5799  libgomp/testsuite/libgomp.c++/target-7.C
  1a7862ad9a2af6943f9928a670bcaf16  libgomp/testsuite/libgomp.c++/target-8.C
  e8abd1a92868914a2a5307268ef4b3d8  libgomp/testsuite/libgomp.c++/target-9.C
! 41a06298f49599123721886f94ac2b15  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C
  64bd4e898ee85afe93f6f182b3a479fc  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2-offload-sorry-GCN.C
  2ab3f03a68f64f25cb39af3017726c7c  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2-offload-sorry-nvptx.C
! eba6e28f5d005b8ebb2c31fda54646bf  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2.C
  9468d6f7c442b38e2a9f23b34f45e7c4  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-3.C
! ae7bb9c1c480c291e9d0f9d010476738  libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C
! f5d2aeeed3e81bd4e9eacea87c4fa70d  libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C
! dd1839e84036f0ba4f78b08448f90bd6  libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1.C
  ec937bfca18dd06fec284c99ab526c23  libgomp/testsuite/libgomp.c++/target-exceptions-throw-1-O0.C
! b2a2c436f2c5b1abfffbda3ddc7902d5  libgomp/testsuite/libgomp.c++/target-exceptions-throw-1.C
  961f7fc05699b3948bbe43bf3cf3ea79  libgomp/testsuite/libgomp.c++/target-exceptions-throw-2-O0.C
  4ab0764b2ec0cc045b4a335a07bb8627  libgomp/testsuite/libgomp.c++/target-exceptions-throw-2-offload-sorry-GCN.C
  3520cefeeb0a8970211ae1a36941c0ba  libgomp/testsuite/libgomp.c++/target-exceptions-throw-2-offload-sorry-nvptx.C
! 7ffb227695b66888f5076dda8f80c836  libgomp/testsuite/libgomp.c++/target-exceptions-throw-2.C
  488d32eeb21a3eeda82ddf89a2bfa708  libgomp/testsuite/libgomp.c++/target-exceptions-throw-3.C
  3e34525fadfa0f7d151d5ffe7f6c0f3d  libgomp/testsuite/libgomp.c++/target-exit-data-reftoptr-1.C
  4f1a5a6faf4e4b1e94a99f3df7f59dfd  libgomp/testsuite/libgomp.c++/target-has-device-addr-2.C
  c2ea975d3e14f144e2ade23a720b62bd  libgomp/testsuite/libgomp.c++/target-has-device-addr-4.C
  e259056e47b1dc505accadfe5b89d17a  libgomp/testsuite/libgomp.c++/target-has-device-addr-5.C
--- 126960,127006 ----
  131b2ab5b78c2725e33c4249f59e5799  libgomp/testsuite/libgomp.c++/target-7.C
  1a7862ad9a2af6943f9928a670bcaf16  libgomp/testsuite/libgomp.c++/target-8.C
  e8abd1a92868914a2a5307268ef4b3d8  libgomp/testsuite/libgomp.c++/target-9.C
! 0c3cc98689bf759beba23798d61ce4b1  libgomp/testsuite/libgomp.c++/target-cdtor-1.C
! 457b919f3ef79b72a20a5deb55a33a8e  libgomp/testsuite/libgomp.c++/target-cdtor-2.C
! 3d15e0d44019185d8004a4d4b87851de  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C
  64bd4e898ee85afe93f6f182b3a479fc  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2-offload-sorry-GCN.C
  2ab3f03a68f64f25cb39af3017726c7c  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2-offload-sorry-nvptx.C
! 0424d59b26219363ec3fa97fae4490f5  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2.C
  9468d6f7c442b38e2a9f23b34f45e7c4  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-3.C
! 7069b3bc6e85976fa473b1a8c6a77b4d  libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C
! ea58e4396f7b4543713eff88bb835931  libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C
! f360bf094d0ee257d2bc41ac57e0bd74  libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1.C
  ec937bfca18dd06fec284c99ab526c23  libgomp/testsuite/libgomp.c++/target-exceptions-throw-1-O0.C
! 9c16595bfa2971faf6c916e14c975554  libgomp/testsuite/libgomp.c++/target-exceptions-throw-1.C
  961f7fc05699b3948bbe43bf3cf3ea79  libgomp/testsuite/libgomp.c++/target-exceptions-throw-2-O0.C
  4ab0764b2ec0cc045b4a335a07bb8627  libgomp/testsuite/libgomp.c++/target-exceptions-throw-2-offload-sorry-GCN.C
  3520cefeeb0a8970211ae1a36941c0ba  libgomp/testsuite/libgomp.c++/target-exceptions-throw-2-offload-sorry-nvptx.C
! 1b7a2eb974fffd17e48fc15d7d3f22f9  libgomp/testsuite/libgomp.c++/target-exceptions-throw-2.C
  488d32eeb21a3eeda82ddf89a2bfa708  libgomp/testsuite/libgomp.c++/target-exceptions-throw-3.C
  3e34525fadfa0f7d151d5ffe7f6c0f3d  libgomp/testsuite/libgomp.c++/target-exit-data-reftoptr-1.C
+ b83d91a3813efbf02b55efe0117eff39  libgomp/testsuite/libgomp.c++/target-flex-10.C
+ 1990d65ffda2ff57200ec61c5027c0bd  libgomp/testsuite/libgomp.c++/target-flex-100.C
+ 8b43f813306c222879f3b03bd3e728cc  libgomp/testsuite/libgomp.c++/target-flex-101.C
+ fe4d74edf4ec5a3375e54ddd28a8796a  libgomp/testsuite/libgomp.c++/target-flex-11.C
+ 0a4ab3e4091f832114123d88913f8a70  libgomp/testsuite/libgomp.c++/target-flex-12.C
+ 5ff5527ae7d116bd8013ae15730da4b2  libgomp/testsuite/libgomp.c++/target-flex-2000.C
+ 3d7f92c220984f9b5df143d83454b2d9  libgomp/testsuite/libgomp.c++/target-flex-2001.C
+ 954995091329c954f03416c9d68fcd53  libgomp/testsuite/libgomp.c++/target-flex-2002.C
+ 77f35f53669a7226e09fcbe543d61a78  libgomp/testsuite/libgomp.c++/target-flex-2003.C
+ 79ba21f64aded5953ed95cdb188656e1  libgomp/testsuite/libgomp.c++/target-flex-30.C
+ 563f2c38d177db2c2abb6025bf23e8dd  libgomp/testsuite/libgomp.c++/target-flex-300.C
+ f11b154ef2f8af567a2bba1f78f3422b  libgomp/testsuite/libgomp.c++/target-flex-31.C
+ 2e210834ba5b83143580624d7853e294  libgomp/testsuite/libgomp.c++/target-flex-32.C
+ 74c1c725cb1b123cf394d2d4f68e97f6  libgomp/testsuite/libgomp.c++/target-flex-33.C
+ 972b82f01a6edf4943dc9782cdfb5dde  libgomp/testsuite/libgomp.c++/target-flex-41.C
+ 7aa950ef84725f2baef1cbe81d116606  libgomp/testsuite/libgomp.c++/target-flex-60.C
+ 35f9209b4dd56a2cac6e72ee9e1cdd56  libgomp/testsuite/libgomp.c++/target-flex-61.C
+ b5f6d6ba64189d7870c4b4912d2af06b  libgomp/testsuite/libgomp.c++/target-flex-62.C
+ 78f769fdafe753971a11ba1f544862d6  libgomp/testsuite/libgomp.c++/target-flex-70.C
+ 819954da74d83a55a001d86b6644a0fc  libgomp/testsuite/libgomp.c++/target-flex-80.C
+ 54a02975b37691efc1c05ed51a76557a  libgomp/testsuite/libgomp.c++/target-flex-81.C
+ d241074614c759c57e84e4b52f049edc  libgomp/testsuite/libgomp.c++/target-flex-90.C
+ 868cc196b1bcad33d596bb9de56108d6  libgomp/testsuite/libgomp.c++/target-flex-common.h
  4f1a5a6faf4e4b1e94a99f3df7f59dfd  libgomp/testsuite/libgomp.c++/target-has-device-addr-2.C
  c2ea975d3e14f144e2ade23a720b62bd  libgomp/testsuite/libgomp.c++/target-has-device-addr-4.C
  e259056e47b1dc505accadfe5b89d17a  libgomp/testsuite/libgomp.c++/target-has-device-addr-5.C
*************** d60133477ad2d5ea3c1aca648a09ac9f  libgom
*** 126969,126974 ****
--- 127019,127061 ----
  d01f6cd5771f7784c8ce461cf8b60255  libgomp/testsuite/libgomp.c++/target-same-name-2-a.C
  b0372bd118a07b6674371887148186be  libgomp/testsuite/libgomp.c++/target-same-name-2-b.C
  e20a8ae264dd60aac921ec743e8b6ef6  libgomp/testsuite/libgomp.c++/target-same-name-2.C
+ 49bec1188a7f331490fd1a884f5ffe7d  libgomp/testsuite/libgomp.c++/target-std__array-concurrent-usm.C
+ 3b233a453c3bb44b7fe238e719baaab0  libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C
+ abc1f024f366b278405b58df17afe0cd  libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C
+ 8bcc7935a48ea91610acb80b5099cfcf  libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C
+ 46a820315e87c64c2043cfe42375298c  libgomp/testsuite/libgomp.c++/target-std__cmath.C
+ 31a5c6ae9e1ebbc7d44b7d279bd40b98  libgomp/testsuite/libgomp.c++/target-std__complex.C
+ 983898d3a6fba310a33cc99a690e61cd  libgomp/testsuite/libgomp.c++/target-std__deque-concurrent-usm.C
+ 38a9fa8246afedbc1c1efbe0e9ec1e36  libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C
+ 004d662871b98820d0b7077a8db62a9f  libgomp/testsuite/libgomp.c++/target-std__flat_map-concurrent.C
+ 9284d636ffccb124c0191ed0a94dfb39  libgomp/testsuite/libgomp.c++/target-std__flat_multimap-concurrent.C
+ 1f377677e5b07bccd785fa7f52568e33  libgomp/testsuite/libgomp.c++/target-std__flat_multiset-concurrent.C
+ d9a8a0d044e2015bfbdf791ead014021  libgomp/testsuite/libgomp.c++/target-std__flat_set-concurrent.C
+ 35f877f9bcff198b68b3c7adbe76cc90  libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C
+ fdec3ba1b0908da4a102cb7c82a03a71  libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C
+ f957ac83f08d36891003338813dcd03d  libgomp/testsuite/libgomp.c++/target-std__list-concurrent-usm.C
+ 9ae571f820c7288512759c98e324522e  libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C
+ 9215d28cde00a16495049615bac940cb  libgomp/testsuite/libgomp.c++/target-std__map-concurrent-usm.C
+ aafa0a49328d827ce7bd9ef6ad8f9e4d  libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C
+ 5e320404381ef41bf4828273a4162e96  libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C
+ f365edc7dfad2127e50ef850bdf70310  libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C
+ 02fbac6f0c9f081d4eb14d7a2f7a0041  libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C
+ 870d16f297d84c8add772ed331876a43  libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C
+ 733f4878044be0e7b75ce52065c6cd77  libgomp/testsuite/libgomp.c++/target-std__numbers.C
+ 5c629252d916db885e993c42be0fa90e  libgomp/testsuite/libgomp.c++/target-std__set-concurrent-usm.C
+ 7d6db87f2bf1a8af87fa7c2bd2510cee  libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C
+ 85fcbd49d3999b48d99d829e637b8eac  libgomp/testsuite/libgomp.c++/target-std__span-concurrent-usm.C
+ 71ab4f627e6d304b2b607c5f1a8b714f  libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C
+ 07a67441f7fdd81abbf6c76f9adb48f7  libgomp/testsuite/libgomp.c++/target-std__unordered_map-concurrent.C
+ 2f3a1c1a1d16e63b8d4ec3e87fb3b3c4  libgomp/testsuite/libgomp.c++/target-std__unordered_multimap-concurrent.C
+ c6ffcb486ca72e20c5b5a8aa4e218c32  libgomp/testsuite/libgomp.c++/target-std__unordered_multiset-concurrent.C
+ 6b57b6d8473c3645b2bf7ed07ac18605  libgomp/testsuite/libgomp.c++/target-std__unordered_set-concurrent.C
+ 8183c34ab1e3da10e4d19400ad68a32c  libgomp/testsuite/libgomp.c++/target-std__valarray-1.C
+ 94b5f7b92b7c4edffc6cfe54dfd4fdee  libgomp/testsuite/libgomp.c++/target-std__valarray-1.output
+ 965d40172dd9afb6a0a83d60c260bfbb  libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C
+ 606c20e786b4a247245b41b2c684700c  libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C
+ 22adb89598c33012dbbc8c38c19501ce  libgomp/testsuite/libgomp.c++/target-std__vector-concurrent-usm.C
+ 50720f2d9b3b20280c020df7032e9281  libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C
  dd3ce96eb6e1a02d995c05804baf3219  libgomp/testsuite/libgomp.c++/target-this-1.C
  7ecd542ef8fc4d3c7a2e77af16f33ddc  libgomp/testsuite/libgomp.c++/target-this-2.C
  b259a40bb59294ea9e4a97ffe6189132  libgomp/testsuite/libgomp.c++/target-this-3.C
*************** e590f10fae9bf053ed7123777b03bf32  libgom
*** 127269,127274 ****
--- 127356,127364 ----
  c1475af16cfcc82bec0d85875d542fdb  libgomp/testsuite/libgomp.c-c++-common/target-41.c
  d87524b525b7f424e584af640f4b038b  libgomp/testsuite/libgomp.c-c++-common/target-42.c
  ae24e1c7b9fc9100ef17c4595417ef54  libgomp/testsuite/libgomp.c-c++-common/target-45.c
+ 4d80e900b1dc39b9c34d4f6576cfd9be  libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1-O0.c
+ 6814c54bc25aa3da74822d5d4717c414  libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1.c
+ 606f84c99a4efc1405feef5c9b230de4  libgomp/testsuite/libgomp.c-c++-common/target-cdtor-1.c
  1120f9e50460c0396d1ae405ffd3e780  libgomp/testsuite/libgomp.c-c++-common/target-has-device-addr-1.c
  038d0072f445d0120f15c605ec76e54a  libgomp/testsuite/libgomp.c-c++-common/target-imperfect-transform-1.c
  923df9fb10163f8d97c25a33b74c5b70  libgomp/testsuite/libgomp.c-c++-common/target-imperfect-transform-2.c
*************** d9c383822eb3728cd6eba3775b3e04bc  libgom
*** 127451,127462 ****
  30b6bbbc024fc68fa9e69677007dbae3  libgomp/testsuite/libgomp.c/declare-variant-3-sm37.c
  4ea99858cb964012c477b246b7693494  libgomp/testsuite/libgomp.c/declare-variant-3-sm52.c
  24ce05bd1621e2283a45e5631d7fd074  libgomp/testsuite/libgomp.c/declare-variant-3-sm53.c
  a30c653b4c75613a04461c9dd4693f7c  libgomp/testsuite/libgomp.c/declare-variant-3-sm70.c
  c7e4450d857de7de3db653040f28ea54  libgomp/testsuite/libgomp.c/declare-variant-3-sm75.c
  f2efa95bfb9ba9e454c38688371551c9  libgomp/testsuite/libgomp.c/declare-variant-3-sm80.c
  0315cdf9221c890fcd6f827cf70b030e  libgomp/testsuite/libgomp.c/declare-variant-3-sm89.c
  07f0d7a64507218c809e5e271bdb674b  libgomp/testsuite/libgomp.c/declare-variant-3.c
! 4d7956a5fddbef82f0e6b3a34255fa81  libgomp/testsuite/libgomp.c/declare-variant-3.h
  9d4e38bf8232dbd3d2be1dac08f82dce  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c
  60f1694019edecc52984a1baf24bc84a  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1036.c
  c345d04dc352b555cd84bcebe00359d4  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c
--- 127541,127553 ----
  30b6bbbc024fc68fa9e69677007dbae3  libgomp/testsuite/libgomp.c/declare-variant-3-sm37.c
  4ea99858cb964012c477b246b7693494  libgomp/testsuite/libgomp.c/declare-variant-3-sm52.c
  24ce05bd1621e2283a45e5631d7fd074  libgomp/testsuite/libgomp.c/declare-variant-3-sm53.c
+ 4d500a885d06d0e35ed7237c9155fcdc  libgomp/testsuite/libgomp.c/declare-variant-3-sm61.c
  a30c653b4c75613a04461c9dd4693f7c  libgomp/testsuite/libgomp.c/declare-variant-3-sm70.c
  c7e4450d857de7de3db653040f28ea54  libgomp/testsuite/libgomp.c/declare-variant-3-sm75.c
  f2efa95bfb9ba9e454c38688371551c9  libgomp/testsuite/libgomp.c/declare-variant-3-sm80.c
  0315cdf9221c890fcd6f827cf70b030e  libgomp/testsuite/libgomp.c/declare-variant-3-sm89.c
  07f0d7a64507218c809e5e271bdb674b  libgomp/testsuite/libgomp.c/declare-variant-3.c
! 990725ec4ad0102414e463c434143f4f  libgomp/testsuite/libgomp.c/declare-variant-3.h
  9d4e38bf8232dbd3d2be1dac08f82dce  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c
  60f1694019edecc52984a1baf24bc84a  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1036.c
  c345d04dc352b555cd84bcebe00359d4  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c
*************** a9b2ad991bd60cd4cd6ef4a68071bee6  libgom
*** 127838,127844 ****
  d7cbe25f5829f4d664a461d6ef7327f5  libgomp/testsuite/libgomp.c/target-has-device-addr-3.c
  2c67f32f623ae7d4b5ad5c7688a6acb1  libgomp/testsuite/libgomp.c/target-link-1.c
  2615e18884995f596aab452699d4a70a  libgomp/testsuite/libgomp.c/target-map-zero-sized-2.c
! 6074fd0ddba8cd7a81233a0377d223c0  libgomp/testsuite/libgomp.c/target-map-zero-sized-3.c
  24c08630e1dc6f184073f42ff7c1bb73  libgomp/testsuite/libgomp.c/target-map-zero-sized.c
  7d9530ec8677e1a90e6b3d38859fc1b2  libgomp/testsuite/libgomp.c/target-print-1.c
  ec5b58aca4cfce9a6dafce47f592cdc3  libgomp/testsuite/libgomp.c/target-simd-clone-1.c
--- 127929,127935 ----
  d7cbe25f5829f4d664a461d6ef7327f5  libgomp/testsuite/libgomp.c/target-has-device-addr-3.c
  2c67f32f623ae7d4b5ad5c7688a6acb1  libgomp/testsuite/libgomp.c/target-link-1.c
  2615e18884995f596aab452699d4a70a  libgomp/testsuite/libgomp.c/target-map-zero-sized-2.c
! 68edfd581475a06b17e8a98d85c86022  libgomp/testsuite/libgomp.c/target-map-zero-sized-3.c
  24c08630e1dc6f184073f42ff7c1bb73  libgomp/testsuite/libgomp.c/target-map-zero-sized.c
  7d9530ec8677e1a90e6b3d38859fc1b2  libgomp/testsuite/libgomp.c/target-print-1.c
  ec5b58aca4cfce9a6dafce47f592cdc3  libgomp/testsuite/libgomp.c/target-simd-clone-1.c
*************** d4976186c6059f98d3a33b36f5c4d896  libgom
*** 128458,128472 ****
  d0be357251fa9b81f47dc517c6dcf8d4  libgomp/testsuite/libgomp.oacc-c++/deep-copy-12.C
  a924aab65a7c7201de2adf4968e8e2e6  libgomp/testsuite/libgomp.oacc-c++/deep-copy-13.C
  121dfc93f39c716edacdd5ec8cff3ceb  libgomp/testsuite/libgomp.oacc-c++/deep-copy-17.C
! 7f7ef578a77055ce4ee324fc4a6ec4b1  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C
  44a27cda6a0c94185e1eb7e1fa55e9b3  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2-offload-sorry-GCN.C
  d0c153796cda95778b802ac4d3590e73  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2-offload-sorry-nvptx.C
! 814bbf1d6553b2bee54f0d29dbccdbec  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C
  e962cf32862ac6bcb2b6ea398edfdd50  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-3.C
! 1aa1c3391668558aede2dda89558df14  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-1.C
  1e0f321f082f24b85dbeb1f3cfa75053  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-2-offload-sorry-GCN.C
  540859b8772d35083fbdd37b9ef0fa7a  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-2-offload-sorry-nvptx.C
! ee1a268c7fe34ad56245419b00297722  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-2.C
  7f4bae64b52c943b334dac88f571e845  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-3.C
  15c29e5b997581e16ab18ae5944430d9  libgomp/testsuite/libgomp.oacc-c++/firstprivate-mappings-1.C
  a336b372fbba053cbc1902f7a2bf87d7  libgomp/testsuite/libgomp.oacc-c++/non-scalar-data.C
--- 128549,128563 ----
  d0be357251fa9b81f47dc517c6dcf8d4  libgomp/testsuite/libgomp.oacc-c++/deep-copy-12.C
  a924aab65a7c7201de2adf4968e8e2e6  libgomp/testsuite/libgomp.oacc-c++/deep-copy-13.C
  121dfc93f39c716edacdd5ec8cff3ceb  libgomp/testsuite/libgomp.oacc-c++/deep-copy-17.C
! 74167e029b90996fdb288c2a268f09bf  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C
  44a27cda6a0c94185e1eb7e1fa55e9b3  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2-offload-sorry-GCN.C
  d0c153796cda95778b802ac4d3590e73  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2-offload-sorry-nvptx.C
! a347b6c10e8ffde13749932cd368af3b  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C
  e962cf32862ac6bcb2b6ea398edfdd50  libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-3.C
! 86ffda628d80c63da915bbbe9a869eed  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-1.C
  1e0f321f082f24b85dbeb1f3cfa75053  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-2-offload-sorry-GCN.C
  540859b8772d35083fbdd37b9ef0fa7a  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-2-offload-sorry-nvptx.C
! c49ea90546516b6f0dd47d0b35fd0932  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-2.C
  7f4bae64b52c943b334dac88f571e845  libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-3.C
  15c29e5b997581e16ab18ae5944430d9  libgomp/testsuite/libgomp.oacc-c++/firstprivate-mappings-1.C
  a336b372fbba053cbc1902f7a2bf87d7  libgomp/testsuite/libgomp.oacc-c++/non-scalar-data.C
*************** b4fc04813771a8801e90ced112679b03  libgom
*** 128487,128492 ****
--- 128578,128584 ----
  de42c25c26112c8021572c2875414fe1  libgomp/testsuite/libgomp.oacc-c++/routine-1-trailing-return-type.C
  e791213d5152b9450d6c3d86211b78cd  libgomp/testsuite/libgomp.oacc-c++/template-reduction.C
  c3cc3d873e54843cfbb40f4c262b6b98  libgomp/testsuite/libgomp.oacc-c++/this.C
+ 84f65adec018c9bfca203adf6992e2f9  libgomp/testsuite/libgomp.oacc-c-c++-common/abi-struct-1.c
  451978dda3b58f6a597aa1b515da90e7  libgomp/testsuite/libgomp.oacc-c-c++-common/abort-1.c
  2187ea0d1f3ce15e1d66e17ed2fecfc6  libgomp/testsuite/libgomp.oacc-c-c++-common/abort-2.c
  659c1e7c321078b832a4fe638bb81184  libgomp/testsuite/libgomp.oacc-c-c++-common/abort-3.c
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 131444,131450 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 3acfcc29fb0c969014bf8623ef20c710  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 131536,131542 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 81388b138c1db8d6e6db99822de9a248  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** e03c583ee7c5891df1c7b190275435c9  libstd
*** 132866,132872 ****
  0f1bf0fdfc91c5159496ce06fc478adc  libstdc++-v3/include/std/print
  317c818ab1030cf117c8d8ef03df06aa  libstdc++-v3/include/std/queue
  01746ff9db8573f15b943b0c36cce6a8  libstdc++-v3/include/std/random
! c6665422c4d30802eb800b4bed33b200  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
  400d95a1fd416911b5c47562d7a586cf  libstdc++-v3/include/std/regex
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
--- 132958,132964 ----
  0f1bf0fdfc91c5159496ce06fc478adc  libstdc++-v3/include/std/print
  317c818ab1030cf117c8d8ef03df06aa  libstdc++-v3/include/std/queue
  01746ff9db8573f15b943b0c36cce6a8  libstdc++-v3/include/std/random
! e5f5a518f9ac990695882278e1955777  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
  400d95a1fd416911b5c47562d7a586cf  libstdc++-v3/include/std/regex
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
*************** d6f43aa2aa28ccf6f02960749550aac6  libstd
*** 142357,142365 ****
  3f44f7941efe01ca6d9866ad6a152776  libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
  40e31845569daf0829a17a44a8ee56a0  libstdc++-v3/testsuite/std/ranges/adaptors/enumerate/1.cc
  98b483f4295fbf685f4fe582088c3473  libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc
! a4f9ebbafc46d31afc253713a37fc230  libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
! 037c6e0dbd2e478a74843d86dddc6737  libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc
! b1323cdec1760609fd69bd805ad3e54d  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
  54271889e88b8f08f76cff98d9dfb68b  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split_neg.cc
  52a7e19aa4c7f3a80c76630b6c935fd3  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3286.cc
  09fc4e2885ef672deb76aa23b85e9bc0  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3313_neg.cc
--- 142449,142457 ----
  3f44f7941efe01ca6d9866ad6a152776  libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
  40e31845569daf0829a17a44a8ee56a0  libstdc++-v3/testsuite/std/ranges/adaptors/enumerate/1.cc
  98b483f4295fbf685f4fe582088c3473  libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc
! 6ce4d9d01be4defd04026414dbac0d5b  libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
! 326917eee6123d6a19d60b706ad52413  libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc
! 284143a02c085fd30e15e55c66cfde20  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
  54271889e88b8f08f76cff98d9dfb68b  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split_neg.cc
  52a7e19aa4c7f3a80c76630b6c935fd3  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3286.cc
  09fc4e2885ef672deb76aa23b85e9bc0  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3313_neg.cc
diff -Nrcpad gcc-15-20250719/gcc/ChangeLog gcc-15-20250726/gcc/ChangeLog
*** gcc-15-20250719/gcc/ChangeLog	Sat Jul 19 22:32:13 2025
--- gcc-15-20250726/gcc/ChangeLog	Sat Jul 26 22:32:09 2025
***************
*** 1,3 ****
--- 1,198 ----
+ 2025-07-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121202
+ 	* tree-vect-slp.cc (vect_schedule_slp_node): Do not take
+ 	an out-of-region stmt as "last".
+ 
+ 2025-07-23  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2025-07-18  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/117423
+ 	* tree-sra.cc (analyze_access_subtree): Fix computation of grp_covered
+ 	flag.
+ 
+ 2025-07-22  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-06-17  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* omp-offload.cc (omp_discover_declare_target_tgt_fn_r): Also
+ 	walk external functions that are declare inline (and have a
+ 	DECL_SAVED_TREE).
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-06-04  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* config/nvptx/mkoffload.cc (process): Use an 'auto_vec' for
+ 	'file_idx'.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-30  Thomas Schwinge  <tschwinge@baylibre.com>
+ 		    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/119835
+ 	* tree-nrv.cc (pass_nrv::execute): Defuse 'RESULT_DECL' check.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-19  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR lto/120308
+ 	* lto-streamer-out.cc (hash_tree): Don't handle 'TYPE_EMPTY_P' for
+ 	'lto_stream_offload_p'.
+ 	* tree-streamer-in.cc (unpack_ts_type_common_value_fields):
+ 	Likewise.
+ 	* tree-streamer-out.cc (pack_ts_type_common_value_fields):
+ 	Likewise.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* config/nvptx/nvptx-sm.def: Add '61'.
+ 	* config/nvptx/nvptx-gen.h: Regenerate.
+ 	* config/nvptx/nvptx-gen.opt: Likewise.
+ 	* config/nvptx/nvptx.cc (first_ptx_version_supporting_sm): Adjust.
+ 	* config/nvptx/nvptx.opt (-march-map=sm_61, -march-map=sm_62):
+ 	Likewise.
+ 	* config.gcc: Likewise.
+ 	* doc/invoke.texi (Nvidia PTX Options): Document '-march=sm_61'.
+ 	* config/nvptx/gen-multilib-matches-tests: Extend.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* config/nvptx/nvptx-opts.h (enum ptx_version): Add
+ 	'PTX_VERSION_5_0'.
+ 	* config/nvptx/nvptx.cc (ptx_version_to_string)
+ 	(ptx_version_to_number): Adjust.
+ 	* config/nvptx/nvptx.h (TARGET_PTX_5_0): New.
+ 	* config/nvptx/nvptx.opt (Enum(ptx_version)): Add 'EnumValue'
+ 	'5.0' for 'PTX_VERSION_5_0'.
+ 	* doc/invoke.texi (Nvidia PTX Options): Document '-mptx=5.0'.
+ 
+ 2025-07-22  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	Backported from master:
+ 	2025-04-25  Andrew Pinski  <quic_apinski@quicinc.com>
+ 		    Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR target/119737
+ 	* config/gcn/gcn.cc (gcn_hsa_declare_function_name): Properly
+ 	switch sections.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-11  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/121027
+ 	* config/aarch64/aarch64.cc (aarch64_evpc_sve_tbl): Punt on 2-input
+ 	operations that can be handled by vec_perm.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve2.md (aarch64_gather_ld1q): Replace with...
+ 	(@aarch64_gather_ld1q<mode>): ...this, parameterizing based on mode.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.cc
+ 	(svld1q_gather_impl::expand): Update accordingly.
+ 	(svst1q_scatter_impl::expand): Use aarch64_sve_reinterpret
+ 	instead of force_lowpart_subreg.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/sourcebuild.texi (aarch64_sve2_hw, aarch64_sve2p1_hw): Document.
+ 	* config/aarch64/aarch64.cc (aarch64_evpc_hvla): Extend to
+ 	BYTES_BIG_ENDIAN.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_simd_valid_imm): Account
+ 	for FLOAT_WORDS_BIG_ENDIAN when building a floating-point value.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_sve_index_series_p): New
+ 	function, split out from...
+ 	(aarch64_simd_valid_imm): ...here.  Account for the different
+ 	SVE and Advanced SIMD element orders on big-endian targets.
+ 	Check each vector in a structure mode.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* read-rtl-function.cc (function_reader::read_rtx_operand_r): Use
+ 	hard_regno_nregs to work out REG_NREGS for hard registers.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* ext-dce.cc (ext_dce_process_uses): Apply is_constant directly
+ 	to the subreg_lsb.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-07  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/118891
+ 	* config/aarch64/aarch64.cc (aarch64_expand_vector_init): Fix the
+ 	ZIP1 operand order for big-endian targets.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-07  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md (@aarch64_sve_set_neonq_<mode>):
+ 	Use %Z instead of lowpart_subreg.  Tweak formatting.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-07  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* ext-dce.cc (ext_dce_process_uses): Apply is_constant directly
+ 	to the subreg_lsb.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-07  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/118891
+ 	* tree-vect-stmts.cc (supportable_widening_operation): Swap the
+ 	hi and lo internal functions on big-endian targets.
+ 
  2025-07-18  Hans-Peter Nilsson  <hp@bitrange.com>
  	    Pietro Monteiro  <pietro@sociotechnical.xyz>
  
diff -Nrcpad gcc-15-20250719/gcc/DATESTAMP gcc-15-20250726/gcc/DATESTAMP
*** gcc-15-20250719/gcc/DATESTAMP	Sat Jul 19 22:32:13 2025
--- gcc-15-20250726/gcc/DATESTAMP	Sat Jul 26 22:32:09 2025
***************
*** 1 ****
! 20250719
--- 1 ----
! 20250726
diff -Nrcpad gcc-15-20250719/gcc/ada/ChangeLog gcc-15-20250726/gcc/ada/ChangeLog
*** gcc-15-20250719/gcc/ada/ChangeLog	Sat Jul 19 22:32:13 2025
--- gcc-15-20250726/gcc/ada/ChangeLog	Sat Jul 26 22:32:09 2025
***************
*** 1,3 ****
--- 1,54 ----
+ 2025-07-25  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch12.adb (Check_Formal_Package_Instance):
+ 	Do nothing in case of E_Subprogram_Body.
+ 
+ 2025-07-25  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Record_Type): Set flag appropriately.
+ 
+ 2025-07-22  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* gen_il-fields.ads (Is_Implicit_Full_View): New field.
+ 	* gen_il-gen-gen_entities.adb (Type_Kind): Use new field.
+ 	* einfo.ads (Is_Implicit_Full_View): Document new field.
+ 	* exp_ch7.adb (Make_Adjust_Call, Make_Init_Call, Make_Final_Call): Use
+ 	new field.
+ 	* exp_util.adb (Finalize_Address): Likewise.
+ 	* sem_ch3.adb (Copy_And_Build): Set new field.
+ 
+ 2025-07-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.ads (May_Generate_Large_Temp): Delete.
+ 	* exp_util.adb (May_Generate_Large_Temp): Likewise.
+ 	(Safe_Unchecked_Type_Conversion): Do not take stack checking into
+ 	account to compute the result.
+ 
+ 2025-07-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Safe_Unchecked_Type_Conversion): Always return True
+ 	if the expression is the prefix of an N_Selected_Component.
+ 
+ 2025-07-22  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Get_Actual_Subtype): Do the same for GCC and GNATprove
+ 	backends.
+ 
+ 2025-07-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (Get_Actual_Subtype): Only create a new subtype when
+ 	the expander is active.  Remove a useless test of type inequality,
+ 	as well as a useless call to Set_Has_Delayed_Freeze on the subtype.
+ 
+ 2025-07-22  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* exp_util.adb (Finalize_Address): Prevent infinite loop
+ 
+ 2025-07-21  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	PR ada/121184
+ 	* styleg.adb (Check_Comment): Use consistent warning message.
+ 
  2025-07-14  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR ada/121056
diff -Nrcpad gcc-15-20250719/gcc/ada/einfo.ads gcc-15-20250726/gcc/ada/einfo.ads
*** gcc-15-20250719/gcc/ada/einfo.ads	Sat Jul 19 22:32:13 2025
--- gcc-15-20250726/gcc/ada/einfo.ads	Sat Jul 26 22:32:09 2025
*************** package Einfo is
*** 2781,2786 ****
--- 2781,2790 ----
  --       identifiers in standard library packages, and to implement the
  --       restriction No_Implementation_Identifiers.
  
+ --    Is_Implicit_Full_View
+ --       Defined in types. Set on types that the compiler generates to act as
+ --       full views of types that are derivations of private types.
+ 
  --    Is_Imported
  --       Defined in all entities. Set if the entity is imported. For now we
  --       only allow the import of exceptions, functions, procedures, packages,
diff -Nrcpad gcc-15-20250719/gcc/ada/exp_ch7.adb gcc-15-20250726/gcc/ada/exp_ch7.adb
*** gcc-15-20250719/gcc/ada/exp_ch7.adb	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/ada/exp_ch7.adb	Sat Jul 26 22:32:09 2025
*************** package body Exp_Ch7 is
*** 5598,5604 ****
  
        --  Deal with untagged derivation of private views
  
!       if Present (Utyp) and then Is_Untagged_Derivation (Typ) then
           Utyp := Underlying_Type (Root_Type (Base_Type (Typ)));
           Ref  := Unchecked_Convert_To (Utyp, Ref);
           Set_Assignment_OK (Ref);
--- 5598,5607 ----
  
        --  Deal with untagged derivation of private views
  
!       if Present (Utyp)
!         and then Is_Untagged_Derivation (Typ)
!         and then Is_Implicit_Full_View (Utyp)
!       then
           Utyp := Underlying_Type (Root_Type (Base_Type (Typ)));
           Ref  := Unchecked_Convert_To (Utyp, Ref);
           Set_Assignment_OK (Ref);
*************** package body Exp_Ch7 is
*** 7906,7921 ****
        if Is_Untagged_Derivation (Typ) then
           if Is_Protected_Type (Typ) then
              Utyp := Corresponding_Record_Type (Root_Type (Base_Type (Typ)));
  
!          else
!             declare
!                Root : constant Entity_Id :=
!                  Underlying_Type (Root_Type (Base_Type (Typ)));
!             begin
!                if Is_Protected_Type (Root) then
!                   Utyp := Corresponding_Record_Type (Root);
!                end if;
!             end;
           end if;
  
           Ref := Unchecked_Convert_To (Utyp, Ref);
--- 7909,7920 ----
        if Is_Untagged_Derivation (Typ) then
           if Is_Protected_Type (Typ) then
              Utyp := Corresponding_Record_Type (Root_Type (Base_Type (Typ)));
+          elsif Is_Implicit_Full_View (Utyp) then
+             Utyp := Underlying_Type (Root_Type (Base_Type (Typ)));
  
!             if Is_Protected_Type (Utyp) then
!                Utyp := Corresponding_Record_Type (Utyp);
!             end if;
           end if;
  
           Ref := Unchecked_Convert_To (Utyp, Ref);
*************** package body Exp_Ch7 is
*** 8480,8486 ****
  
        --  Deal with untagged derivation of private views
  
!       if Is_Untagged_Derivation (Typ) and then not Is_Conc then
           Utyp := Underlying_Type (Root_Type (Base_Type (Typ)));
           Ref  := Unchecked_Convert_To (Utyp, Ref);
  
--- 8479,8488 ----
  
        --  Deal with untagged derivation of private views
  
!       if Is_Untagged_Derivation (Typ)
!         and then not Is_Conc
!         and then Is_Implicit_Full_View (Utyp)
!       then
           Utyp := Underlying_Type (Root_Type (Base_Type (Typ)));
           Ref  := Unchecked_Convert_To (Utyp, Ref);
  
diff -Nrcpad gcc-15-20250719/gcc/ada/exp_util.adb gcc-15-20250726/gcc/ada/exp_util.adb
*** gcc-15-20250719/gcc/ada/exp_util.adb	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/ada/exp_util.adb	Sat Jul 26 22:32:09 2025
*************** package body Exp_Util is
*** 6079,6096 ****
           if Is_Protected_Type (Btyp) then
              Utyp := Corresponding_Record_Type (Root_Type (Btyp));
  
!          else
!             declare
!                Root : constant Entity_Id := Underlying_Type (Root_Type (Btyp));
!             begin
!                if Is_Protected_Type (Root) then
!                   Utyp := Corresponding_Record_Type (Root);
!                else
!                   while No (TSS (Utyp, TSS_Finalize_Address)) loop
!                      Utyp := Underlying_Type (Base_Type (Etype (Utyp)));
!                   end loop;
!                end if;
!             end;
           end if;
        end if;
  
--- 6079,6090 ----
           if Is_Protected_Type (Btyp) then
              Utyp := Corresponding_Record_Type (Root_Type (Btyp));
  
!          elsif Is_Implicit_Full_View (Utyp) then
!             Utyp := Underlying_Type (Root_Type (Btyp));
! 
!             if Is_Protected_Type (Utyp) then
!                Utyp := Corresponding_Record_Type (Utyp);
!             end if;
           end if;
        end if;
  
*************** package body Exp_Util is
*** 11627,11660 ****
        end if;
     end Matching_Standard_Type;
  
-    -----------------------------
-    -- May_Generate_Large_Temp --
-    -----------------------------
- 
-    --  At the current time, the only types that we return False for (i.e. where
-    --  we decide we know they cannot generate large temps) are ones where we
-    --  know the size is 256 bits or less at compile time, and we are still not
-    --  doing a thorough job on arrays and records.
- 
-    function May_Generate_Large_Temp (Typ : Entity_Id) return Boolean is
-    begin
-       if not Size_Known_At_Compile_Time (Typ) then
-          return False;
-       end if;
- 
-       if Known_Esize (Typ) and then Esize (Typ) <= 256 then
-          return False;
-       end if;
- 
-       if Is_Array_Type (Typ)
-         and then Present (Packed_Array_Impl_Type (Typ))
-       then
-          return May_Generate_Large_Temp (Packed_Array_Impl_Type (Typ));
-       end if;
- 
-       return True;
-    end May_Generate_Large_Temp;
- 
     ---------------------------------------
     -- Move_To_Initialization_Statements --
     ---------------------------------------
--- 11621,11626 ----
*************** package body Exp_Util is
*** 13657,13667 ****
     --  The above requirements should be documented in Sinfo ???
  
     function Safe_Unchecked_Type_Conversion (Exp : Node_Id) return Boolean is
        Otyp   : Entity_Id;
        Ityp   : Entity_Id;
        Oalign : Uint;
        Ialign : Uint;
-       Pexp   : constant Node_Id := Parent (Exp);
  
     begin
        --  If the expression is the RHS of an assignment or object declaration
--- 13623,13634 ----
     --  The above requirements should be documented in Sinfo ???
  
     function Safe_Unchecked_Type_Conversion (Exp : Node_Id) return Boolean is
+       Pexp : constant Node_Id := Parent (Exp);
+ 
        Otyp   : Entity_Id;
        Ityp   : Entity_Id;
        Oalign : Uint;
        Ialign : Uint;
  
     begin
        --  If the expression is the RHS of an assignment or object declaration
*************** package body Exp_Util is
*** 13679,13696 ****
           return True;
  
        --  If the expression is the prefix of an N_Selected_Component we should
!       --  also be OK because GCC knows to look inside the conversion except if
!       --  the type is discriminated. We assume that we are OK anyway if the
!       --  type is not set yet or if it is controlled since we can't afford to
!       --  introduce a temporary in this case.
  
        elsif Nkind (Pexp) = N_Selected_Component
          and then Prefix (Pexp) = Exp
        then
!          return No (Etype (Pexp))
!            or else not Is_Type (Etype (Pexp))
!            or else not Has_Discriminants (Etype (Pexp))
!            or else Is_Constrained (Etype (Pexp));
        end if;
  
        --  Set the output type, this comes from Etype if it is set, otherwise we
--- 13646,13657 ----
           return True;
  
        --  If the expression is the prefix of an N_Selected_Component we should
!       --  also be OK because GCC knows to look inside the conversion.
  
        elsif Nkind (Pexp) = N_Selected_Component
          and then Prefix (Pexp) = Exp
        then
!          return True;
        end if;
  
        --  Set the output type, this comes from Etype if it is set, otherwise we
*************** package body Exp_Util is
*** 13763,13776 ****
        --  known size, but we can't consider them that way here, because we are
        --  talking about the actual size of the object.
  
-       --  We also make sure that in addition to the size being known, we do not
-       --  have a case which might generate an embarrassingly large temp in
-       --  stack checking mode.
- 
        elsif Size_Known_At_Compile_Time (Otyp)
-         and then
-           (not Stack_Checking_Enabled
-             or else not May_Generate_Large_Temp (Otyp))
          and then not (Is_Record_Type (Otyp) and then not Is_Constrained (Otyp))
        then
           return True;
--- 13724,13730 ----
diff -Nrcpad gcc-15-20250719/gcc/ada/exp_util.ads gcc-15-20250726/gcc/ada/exp_util.ads
*** gcc-15-20250719/gcc/ada/exp_util.ads	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/ada/exp_util.ads	Sat Jul 26 22:32:09 2025
*************** package Exp_Util is
*** 1064,1079 ****
     --  typically return Standard_Short_Integer. For fixed-point types, this
     --  will return integer types of the corresponding size.
  
-    function May_Generate_Large_Temp (Typ : Entity_Id) return Boolean;
-    --  Determines if the given type, Typ, may require a large temporary of the
-    --  kind that causes back-end trouble if stack checking is enabled. The
-    --  result is True only the size of the type is known at compile time and
-    --  large, where large is defined heuristically by the body of this routine.
-    --  The purpose of this routine is to help avoid generating troublesome
-    --  temporaries that interfere with stack checking mechanism. Note that the
-    --  caller has to check whether stack checking is actually enabled in order
-    --  to guide the expansion (typically of a function call).
- 
     procedure Move_To_Initialization_Statements (Decl, Stop : Node_Id);
     --  Decl is an N_Object_Declaration node and Stop is a node past Decl in
     --  the same list. Move all the nodes on the list between Decl and Stop
--- 1064,1069 ----
diff -Nrcpad gcc-15-20250719/gcc/ada/gen_il-fields.ads gcc-15-20250726/gcc/ada/gen_il-fields.ads
*** gcc-15-20250719/gcc/ada/gen_il-fields.ads	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/ada/gen_il-fields.ads	Sat Jul 26 22:32:09 2025
*************** package Gen_IL.Fields is
*** 729,734 ****
--- 729,735 ----
        Is_Ignored_Ghost_Entity,
        Is_Immediately_Visible,
        Is_Implementation_Defined,
+       Is_Implicit_Full_View,
        Is_Imported,
        Is_Independent,
        Is_Initial_Condition_Procedure,
diff -Nrcpad gcc-15-20250719/gcc/ada/gen_il-gen-gen_entities.adb gcc-15-20250726/gcc/ada/gen_il-gen-gen_entities.adb
*** gcc-15-20250719/gcc/ada/gen_il-gen-gen_entities.adb	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/ada/gen_il-gen-gen_entities.adb	Sat Jul 26 22:32:09 2025
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 505,510 ****
--- 505,511 ----
          Sm (Is_Fixed_Lower_Bound_Array_Subtype, Flag),
          Sm (Is_Fixed_Lower_Bound_Index_Subtype, Flag),
          Sm (Is_Generic_Actual_Type, Flag),
+         Sm (Is_Implicit_Full_View, Flag),
          Sm (Is_Mutably_Tagged_Type, Flag),
          Sm (Is_Non_Static_Subtype, Flag),
          Sm (Is_Private_Composite, Flag),
diff -Nrcpad gcc-15-20250719/gcc/ada/sem_ch12.adb gcc-15-20250726/gcc/ada/sem_ch12.adb
*** gcc-15-20250719/gcc/ada/sem_ch12.adb	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/ada/sem_ch12.adb	Sat Jul 26 22:32:10 2025
*************** package body Sem_Ch12 is
*** 7542,7547 ****
--- 7542,7553 ----
                      or else not Same_Instantiated_Function (E1, E2));
              end if;
  
+          --  No check is needed if this is the body of a subprogram that is
+          --  implicitly created in the case of class-wide predefined functions.
+ 
+          elsif Ekind (E1) = E_Subprogram_Body then
+             null;
+ 
           else
              raise Program_Error;
           end if;
diff -Nrcpad gcc-15-20250719/gcc/ada/sem_ch3.adb gcc-15-20250726/gcc/ada/sem_ch3.adb
*** gcc-15-20250719/gcc/ada/sem_ch3.adb	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/ada/sem_ch3.adb	Sat Jul 26 22:32:10 2025
*************** package body Sem_Ch3 is
*** 8387,8401 ****
           Set_Has_Private_Declaration (Full_Der);
           Set_Has_Private_Declaration (Derived_Type);
  
!          Set_Scope                (Full_Der, Scope (Derived_Type));
!          Set_Is_First_Subtype     (Full_Der, Is_First_Subtype (Derived_Type));
!          Set_Has_Size_Clause      (Full_Der, False);
!          Set_Has_Alignment_Clause (Full_Der, False);
!          Set_Has_Delayed_Freeze   (Full_Der);
!          Set_Is_Frozen            (Full_Der, False);
!          Set_Freeze_Node          (Full_Der, Empty);
!          Set_Depends_On_Private   (Full_Der, Has_Private_Component (Full_Der));
!          Set_Is_Public            (Full_Der, Is_Public (Derived_Type));
  
           --  The convention on the base type may be set in the private part
           --  and not propagated to the subtype until later, so we obtain the
--- 8387,8403 ----
           Set_Has_Private_Declaration (Full_Der);
           Set_Has_Private_Declaration (Derived_Type);
  
!          Set_Scope                 (Full_Der, Scope (Derived_Type));
!          Set_Is_First_Subtype      (Full_Der, Is_First_Subtype (Derived_Type));
!          Set_Has_Size_Clause       (Full_Der, False);
!          Set_Has_Alignment_Clause  (Full_Der, False);
!          Set_Has_Delayed_Freeze    (Full_Der);
!          Set_Is_Frozen             (Full_Der, False);
!          Set_Freeze_Node           (Full_Der, Empty);
!          Set_Depends_On_Private
!            (Full_Der, Has_Private_Component (Full_Der));
!          Set_Is_Public             (Full_Der, Is_Public (Derived_Type));
!          Set_Is_Implicit_Full_View (Full_Der);
  
           --  The convention on the base type may be set in the private part
           --  and not propagated to the subtype until later, so we obtain the
*************** package body Sem_Ch3 is
*** 9593,9598 ****
--- 9595,9602 ----
             (New_Decl, Parent_Base, New_Base,
              Is_Completion => False, Derive_Subps => False);
  
+          Set_Is_Implicit_Full_View (New_Base);
+ 
           --  ??? This needs re-examination to determine whether the
           --  following call can simply be replaced by a call to Analyze.
  
diff -Nrcpad gcc-15-20250719/gcc/ada/sem_util.adb gcc-15-20250726/gcc/ada/sem_util.adb
*** gcc-15-20250719/gcc/ada/sem_util.adb	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/ada/sem_util.adb	Sat Jul 26 22:32:10 2025
*************** package body Sem_Util is
*** 9990,10005 ****
             and then not Has_Unknown_Discriminants (Utyp)
             and then not (Ekind (Utyp) = E_String_Literal_Subtype)
        then
!          --  Nothing to do if in spec expression (why not???)
  
!          if In_Spec_Expression then
              return Typ;
  
!          elsif Is_Private_Type (Typ) and then not Has_Discriminants (Typ) then
! 
!             --  If the type has no discriminants, there is no subtype to
!             --  build, even if the underlying type is discriminated.
  
              return Typ;
  
           --  Else build the actual subtype
--- 9990,10008 ----
             and then not Has_Unknown_Discriminants (Utyp)
             and then not (Ekind (Utyp) = E_String_Literal_Subtype)
        then
!          --  If the type has no discriminants, there is no subtype to build,
!          --  even if the underlying type is discriminated.
  
!          if Is_Private_Type (Typ) and then not Has_Discriminants (Typ) then
              return Typ;
  
!          --  If we are performing preanalysis on a conjured-up copy of a name
!          --  (see calls to Preanalyze_Range in sem_ch5.adb) then we don't want
!          --  to freeze Atyp, now or ever. In this case, the tree we eventually
!          --  pass to the back end should contain no references to Atyp (and a
!          --  freeze node would contain such a reference).
  
+          elsif not (Expander_Active or GNATprove_Mode) then
              return Typ;
  
           --  Else build the actual subtype
*************** package body Sem_Util is
*** 10015,10056 ****
  
              Atyp := Defining_Identifier (Decl);
  
!             --  If Build_Actual_Subtype generated a new declaration then use it
! 
!             if Atyp /= Typ then
! 
!                --  The actual subtype is an Itype, so analyze the declaration,
!                --  but do not attach it to the tree, to get the type defined.
! 
!                Set_Parent (Decl, N);
!                Set_Is_Itype (Atyp);
!                Analyze (Decl, Suppress => All_Checks);
!                Set_Associated_Node_For_Itype (Atyp, N);
!                if Expander_Active then
!                   Set_Has_Delayed_Freeze (Atyp, False);
! 
!                   --  We need to freeze the actual subtype immediately. This is
!                   --  needed because otherwise this Itype will not get frozen
!                   --  at all; it is always safe to freeze on creation because
!                   --  any associated types must be frozen at this point.
! 
!                   --  On the other hand, if we are performing preanalysis on
!                   --  a conjured-up copy of a name (see calls to
!                   --  Preanalyze_Range in sem_ch5.adb) then we don't want
!                   --  to freeze Atyp, now or ever. In this case, the tree
!                   --  we eventually pass to the back end should contain no
!                   --  references to Atyp (and a freeze node would contain
!                   --  such a reference). That's why Expander_Active is tested.
  
!                   Freeze_Itype (Atyp, N);
!                end if;
!                return Atyp;
  
!             --  Otherwise we did not build a declaration, so return original
  
!             else
!                return Typ;
!             end if;
           end if;
  
        --  For all remaining cases, the actual subtype is the same as
--- 10018,10038 ----
  
              Atyp := Defining_Identifier (Decl);
  
!             --  The actual subtype is an Itype, so analyze the declaration
!             --  after attaching it to the tree, to get the type defined.
  
!             Set_Parent (Decl, N);
!             Set_Is_Itype (Atyp);
!             Analyze (Decl, Suppress => All_Checks);
!             Set_Associated_Node_For_Itype (Atyp, N);
  
!             --  We need to freeze the actual subtype immediately. This is
!             --  needed because otherwise this Itype will not get frozen
!             --  at all; it is always safe to freeze on creation because
!             --  any associated types must be frozen at this point.
  
!             Freeze_Itype (Atyp, N);
!             return Atyp;
           end if;
  
        --  For all remaining cases, the actual subtype is the same as
diff -Nrcpad gcc-15-20250719/gcc/ada/styleg.adb gcc-15-20250726/gcc/ada/styleg.adb
*** gcc-15-20250719/gcc/ada/styleg.adb	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/ada/styleg.adb	Sat Jul 26 22:32:10 2025
*************** package body Styleg is
*** 499,505 ****
                    if Is_Box_Comment
                      or else Style_Check_Comments_Spacing = 1
                    then
!                      Error_Space_Required (Scan_Ptr + 2);
                    else
                       Error_Msg -- CODEFIX
                         ("(style) two spaces required?c?", Scan_Ptr + 2);
--- 499,506 ----
                    if Is_Box_Comment
                      or else Style_Check_Comments_Spacing = 1
                    then
!                      Error_Msg -- CODEFIX
!                        ("(style) space required?c?", Scan_Ptr + 2);
                    else
                       Error_Msg -- CODEFIX
                         ("(style) two spaces required?c?", Scan_Ptr + 2);
*************** package body Styleg is
*** 526,532 ****
           --  box comment.
  
           elsif not Is_Box_Comment then
!             Error_Space_Required (Scan_Ptr + 3);
           end if;
        end if;
     end Check_Comment;
--- 527,534 ----
           --  box comment.
  
           elsif not Is_Box_Comment then
!             Error_Msg -- CODEFIX
!               ("(style) space required?c?", Scan_Ptr + 3);
           end if;
        end if;
     end Check_Comment;
diff -Nrcpad gcc-15-20250719/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc gcc-15-20250726/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
*** gcc-15-20250719/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc	Sat Jul 26 22:32:10 2025
*************** public:
*** 316,322 ****
    expand (function_expander &e) const override
    {
      e.prepare_gather_address_operands (1, false);
!     return e.use_exact_insn (CODE_FOR_aarch64_gather_ld1q);
    }
  };
  
--- 316,323 ----
    expand (function_expander &e) const override
    {
      e.prepare_gather_address_operands (1, false);
!     auto icode = code_for_aarch64_gather_ld1q (e.tuple_mode (0));
!     return e.use_exact_insn (icode);
    }
  };
  
*************** public:
*** 722,728 ****
    expand (function_expander &e) const override
    {
      rtx data = e.args.last ();
!     e.args.last () = force_lowpart_subreg (VNx2DImode, data, GET_MODE (data));
      e.prepare_gather_address_operands (1, false);
      return e.use_exact_insn (CODE_FOR_aarch64_scatter_st1q);
    }
--- 723,729 ----
    expand (function_expander &e) const override
    {
      rtx data = e.args.last ();
!     e.args.last () = aarch64_sve_reinterpret (VNx2DImode, data);
      e.prepare_gather_address_operands (1, false);
      return e.use_exact_insn (CODE_FOR_aarch64_scatter_st1q);
    }
diff -Nrcpad gcc-15-20250719/gcc/config/aarch64/aarch64-sve.md gcc-15-20250726/gcc/config/aarch64/aarch64-sve.md
*** gcc-15-20250719/gcc/config/aarch64/aarch64-sve.md	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/aarch64/aarch64-sve.md	Sat Jul 26 22:32:10 2025
***************
*** 11163,11178 ****
  
  (define_insn "@aarch64_sve_set_neonq_<mode>"
    [(set (match_operand:SVE_FULL 0 "register_operand" "=w")
!       (unspec:SVE_FULL
! 	[(match_operand:SVE_FULL 1 "register_operand" "w")
! 	(match_operand:<V128> 2 "register_operand" "w")
! 	(match_operand:<VPRED> 3 "register_operand" "Upl")]
! 	UNSPEC_SET_NEONQ))]
    "TARGET_SVE
     && BYTES_BIG_ENDIAN"
!   {
!     operands[2] = lowpart_subreg (<MODE>mode, operands[2],
!                                   GET_MODE (operands[2]));
!     return "sel\t%0.<Vetype>, %3, %2.<Vetype>, %1.<Vetype>";
!   }
  )
--- 11163,11174 ----
  
  (define_insn "@aarch64_sve_set_neonq_<mode>"
    [(set (match_operand:SVE_FULL 0 "register_operand" "=w")
! 	(unspec:SVE_FULL
! 	  [(match_operand:SVE_FULL 1 "register_operand" "w")
! 	   (match_operand:<V128> 2 "register_operand" "w")
! 	   (match_operand:<VPRED> 3 "register_operand" "Upl")]
! 	  UNSPEC_SET_NEONQ))]
    "TARGET_SVE
     && BYTES_BIG_ENDIAN"
!   "sel\t%0.<Vetype>, %3, %Z2.<Vetype>, %1.<Vetype>"
  )
diff -Nrcpad gcc-15-20250719/gcc/config/aarch64/aarch64-sve2.md gcc-15-20250726/gcc/config/aarch64/aarch64-sve2.md
*** gcc-15-20250719/gcc/config/aarch64/aarch64-sve2.md	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/aarch64/aarch64-sve2.md	Sat Jul 26 22:32:10 2025
***************
*** 334,345 ****
  ;; - LD1Q (SVE2p1)
  ;; -------------------------------------------------------------------------
  
! ;; Model this as operating on the largest valid element size, which is DI.
! ;; This avoids having to define move patterns & more for VNx1TI, which would
! ;; be difficult without a non-gather form of LD1Q.
! (define_insn "aarch64_gather_ld1q"
!   [(set (match_operand:VNx2DI 0 "register_operand")
! 	(unspec:VNx2DI
  	  [(match_operand:VNx2BI 1 "register_operand")
  	   (match_operand:DI 2 "aarch64_reg_or_zero")
  	   (match_operand:VNx2DI 3 "register_operand")
--- 334,354 ----
  ;; - LD1Q (SVE2p1)
  ;; -------------------------------------------------------------------------
  
! ;; For little-endian targets, it would be enough to use a single pattern,
! ;; with a subreg to bitcast the result to whatever mode is needed.
! ;; However, on big-endian targets, the bitcast would need to be an
! ;; aarch64_sve_reinterpret instruction.  That would interact badly
! ;; with the "&" and "?" constraints in this pattern: if the result
! ;; of the reinterpret needs to be in the same register as the index,
! ;; the RA would tend to prefer to allocate a separate register for the
! ;; intermediate (uncast) result, even if the reinterpret prefers tying.
! ;;
! ;; The index is logically VNx1DI rather than VNx2DI, but introducing
! ;; and using VNx1DI would just create more bitcasting.  The ACLE intrinsic
! ;; uses svuint64_t, which corresponds to VNx2DI.
! (define_insn "@aarch64_gather_ld1q<mode>"
!   [(set (match_operand:SVE_FULL 0 "register_operand")
! 	(unspec:SVE_FULL
  	  [(match_operand:VNx2BI 1 "register_operand")
  	   (match_operand:DI 2 "aarch64_reg_or_zero")
  	   (match_operand:VNx2DI 3 "register_operand")
diff -Nrcpad gcc-15-20250719/gcc/config/aarch64/aarch64.cc gcc-15-20250726/gcc/config/aarch64/aarch64.cc
*** gcc-15-20250719/gcc/config/aarch64/aarch64.cc	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/aarch64/aarch64.cc	Sat Jul 26 22:32:10 2025
*************** aarch64_sve_index_immediate_p (rtx base_
*** 22918,22923 ****
--- 22918,22975 ----
  	  && IN_RANGE (INTVAL (base_or_step), -16, 15));
  }
  
+ /* Return true if SERIES is a constant vector that can be loaded using
+    an immediate SVE INDEX, considering both SVE and Advanced SIMD modes.
+    When returning true, store the base in *BASE_OUT and the step
+    in *STEP_OUT.  */
+ 
+ static bool
+ aarch64_sve_index_series_p (rtx series, rtx *base_out, rtx *step_out)
+ {
+   rtx base, step;
+   if (!const_vec_series_p (series, &base, &step)
+       || !CONST_INT_P (base)
+       || !CONST_INT_P (step))
+     return false;
+ 
+   auto mode = GET_MODE (series);
+   auto elt_mode = as_a<scalar_int_mode> (GET_MODE_INNER (mode));
+   unsigned int vec_flags = aarch64_classify_vector_mode (mode);
+   if (BYTES_BIG_ENDIAN && (vec_flags & VEC_ADVSIMD))
+     {
+       /* On big-endian targets, architectural lane 0 holds the last element
+ 	 for Advanced SIMD and the first element for SVE; see the comment at
+ 	 the head of aarch64-sve.md for details.  This means that, from an SVE
+ 	 point of view, an Advanced SIMD series goes from the last element to
+ 	 the first.  */
+       auto i = GET_MODE_NUNITS (mode).to_constant () - 1;
+       base = gen_int_mode (UINTVAL (base) + i * UINTVAL (step), elt_mode);
+       step = gen_int_mode (-UINTVAL (step), elt_mode);
+     }
+ 
+   if (!aarch64_sve_index_immediate_p (base)
+       || !aarch64_sve_index_immediate_p (step))
+     return false;
+ 
+   /* If the mode spans multiple registers, check that each subseries is
+      in range.  */
+   unsigned int nvectors = aarch64_ldn_stn_vectors (mode);
+   if (nvectors != 1)
+     {
+       unsigned int nunits;
+       if (!GET_MODE_NUNITS (mode).is_constant (&nunits))
+ 	return false;
+       nunits /= nvectors;
+       for (unsigned int i = 1; i < nvectors; ++i)
+ 	if (!IN_RANGE (INTVAL (base) + i * nunits * INTVAL (step), -16, 15))
+ 	  return false;
+     }
+ 
+   *base_out = base;
+   *step_out = step;
+   return true;
+ }
+ 
  /* Return true if X is a valid immediate for the SVE ADD and SUB instructions
     when applied to mode MODE.  Negate X first if NEGATE_P is true.  */
  
*************** aarch64_simd_valid_imm (rtx op, simd_imm
*** 23366,23378 ****
      n_elts = CONST_VECTOR_NPATTERNS (op);
    else if (which == AARCH64_CHECK_MOV
  	   && TARGET_SVE
! 	   && const_vec_series_p (op, &base, &step))
      {
-       gcc_assert (GET_MODE_CLASS (mode) == MODE_VECTOR_INT);
-       if (!aarch64_sve_index_immediate_p (base)
- 	  || !aarch64_sve_index_immediate_p (step))
- 	return false;
- 
        if (info)
  	{
  	  /* Get the corresponding container mode.  E.g. an INDEX on V2SI
--- 23418,23425 ----
      n_elts = CONST_VECTOR_NPATTERNS (op);
    else if (which == AARCH64_CHECK_MOV
  	   && TARGET_SVE
! 	   && aarch64_sve_index_series_p (op, &base, &step))
      {
        if (info)
  	{
  	  /* Get the corresponding container mode.  E.g. an INDEX on V2SI
*************** aarch64_simd_valid_imm (rtx op, simd_imm
*** 23484,23489 ****
--- 23531,23538 ----
        long int as_long_ints[2];
        as_long_ints[0] = ival & 0xFFFFFFFF;
        as_long_ints[1] = (ival >> 32) & 0xFFFFFFFF;
+       if (imode == DImode && FLOAT_WORDS_BIG_ENDIAN)
+ 	std::swap (as_long_ints[0], as_long_ints[1]);
  
        REAL_VALUE_TYPE r;
        real_from_target (&r, as_long_ints, fmode);
*************** aarch64_expand_vector_init (rtx target,
*** 24567,24572 ****
--- 24616,24628 ----
        emit_insn (rec_seq);
      }
  
+   /* The two halves should (by induction) be individually endian-correct.
+      However, in the memory layout provided by VALS, the nth element of
+      HALVES[0] comes immediately before the nth element HALVES[1].
+      This means that, on big-endian targets, the nth element of HALVES[0]
+      is more significant than the nth element HALVES[1].  */
+   if (BYTES_BIG_ENDIAN)
+     std::swap (halves[0], halves[1]);
    rtvec v = gen_rtvec (2, halves[0], halves[1]);
    rtx_insn *zip1_insn
      = emit_set_insn (target, gen_rtx_UNSPEC (mode, v, UNSPEC_ZIP1));
*************** aarch64_evpc_hvla (struct expand_vec_per
*** 26462,26468 ****
    machine_mode vmode = d->vmode;
    if (!TARGET_SVE2p1
        || !TARGET_NON_STREAMING
-       || BYTES_BIG_ENDIAN
        || d->vec_flags != VEC_SVE_DATA
        || GET_MODE_UNIT_BITSIZE (vmode) > 64)
      return false;
--- 26518,26523 ----
*************** aarch64_evpc_tbl (struct expand_vec_perm
*** 26622,26633 ****
  static bool
  aarch64_evpc_sve_tbl (struct expand_vec_perm_d *d)
  {
!   unsigned HOST_WIDE_INT nelt;
  
!   /* Permuting two variable-length vectors could overflow the
!      index range.  */
!   if (!d->one_vector_p && !d->perm.length ().is_constant (&nelt))
!     return false;
  
    if (d->testing_p)
      return true;
--- 26677,26699 ----
  static bool
  aarch64_evpc_sve_tbl (struct expand_vec_perm_d *d)
  {
!   if (!d->one_vector_p)
!     {
!       /* aarch64_expand_sve_vec_perm does not yet handle variable-length
! 	 vectors.  */
!       if (!d->perm.length ().is_constant ())
! 	return false;
  
!       /* This permutation reduces to the vec_perm optab if the elements are
! 	 large enough to hold all selector indices.  Do not handle that case
! 	 here, since the general TBL+SUB+TBL+ORR sequence is too expensive to
! 	 be considered a "native" constant permutation.
! 
! 	 Not doing this would undermine code that queries can_vec_perm_const_p
! 	 with allow_variable_p set to false.  See PR121027.  */
!       if (selector_fits_mode_p (d->vmode, d->perm))
! 	return false;
!     }
  
    if (d->testing_p)
      return true;
diff -Nrcpad gcc-15-20250719/gcc/config/aarch64/cortex-a57-fma-steering.cc gcc-15-20250726/gcc/config/aarch64/cortex-a57-fma-steering.cc
*** gcc-15-20250719/gcc/config/aarch64/cortex-a57-fma-steering.cc	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/aarch64/cortex-a57-fma-steering.cc	Sat Jul 26 22:32:10 2025
*************** func_fma_steering::analyze ()
*** 948,953 ****
--- 948,958 ----
  
  	  /* Search the chain where this instruction is (one of) the root.  */
  	  dest_op_info = insn_rr[INSN_UID (insn)].op_info;
+ 
+ 	  /* Register rename could fail. */
+ 	  if (!dest_op_info)
+ 	    continue;
+ 
  	  dest_regno = REGNO (SET_DEST (PATTERN (insn)));
  	  for (i = 0; i < dest_op_info->n_chains; i++)
  	    {
diff -Nrcpad gcc-15-20250719/gcc/config/gcn/gcn.cc gcc-15-20250726/gcc/config/gcn/gcn.cc
*** gcc-15-20250719/gcc/config/gcn/gcn.cc	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/gcn/gcn.cc	Sat Jul 26 22:32:10 2025
*************** gcn_hsa_declare_function_name (FILE *fil
*** 6587,6594 ****
    if (avgpr % vgpr_block_size)
      avgpr += vgpr_block_size - (avgpr % vgpr_block_size);
  
!   fputs ("\t.rodata\n"
! 	 "\t.p2align\t6\n"
  	 "\t.amdhsa_kernel\t", file);
    assemble_name (file, name);
    fputs ("\n", file);
--- 6587,6594 ----
    if (avgpr % vgpr_block_size)
      avgpr += vgpr_block_size - (avgpr % vgpr_block_size);
  
!   switch_to_section (readonly_data_section);
!   fputs ("\t.p2align\t6\n"
  	 "\t.amdhsa_kernel\t", file);
    assemble_name (file, name);
    fputs ("\n", file);
*************** gcn_hsa_declare_function_name (FILE *fil
*** 6707,6713 ****
    fputs ("        .end_amdgpu_metadata\n", file);
  #endif
  
!   fputs ("\t.text\n", file);
    fputs ("\t.align\t256\n", file);
    fputs ("\t.type\t", file);
    assemble_name (file, name);
--- 6707,6713 ----
    fputs ("        .end_amdgpu_metadata\n", file);
  #endif
  
!   switch_to_section (current_function_section ());
    fputs ("\t.align\t256\n", file);
    fputs ("\t.type\t", file);
    assemble_name (file, name);
diff -Nrcpad gcc-15-20250719/gcc/config/nvptx/gen-multilib-matches-tests gcc-15-20250726/gcc/config/nvptx/gen-multilib-matches-tests
*** gcc-15-20250719/gcc/config/nvptx/gen-multilib-matches-tests	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/nvptx/gen-multilib-matches-tests	Sat Jul 26 22:32:11 2025
*************** AEMM .=misa?sm_35
*** 18,23 ****
--- 18,24 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM .=misa?sm_35
*** 32,45 ****
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
  CMMC
  
! BEGIN '--with-arch=sm_30', '--with-multilib-list=sm_30,sm_35,sm_37,sm_52,sm_53,sm_70,sm_75,sm_80,sm_89'
  SMOID sm_30
! SMOIL sm_30 sm_35 sm_37 sm_52 sm_53 sm_70 sm_75 sm_80 sm_89
  AEMM .=misa?sm_30
  CMMC
  
--- 33,47 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
  CMMC
  
! BEGIN '--with-arch=sm_30', '--with-multilib-list=sm_30,sm_35,sm_37,sm_52,sm_53,sm_61,sm_70,sm_75,sm_80,sm_89'
  SMOID sm_30
! SMOIL sm_30 sm_35 sm_37 sm_52 sm_53 sm_61 sm_70 sm_75 sm_80 sm_89
  AEMM .=misa?sm_30
  CMMC
  
*************** AEMM .=misa?sm_35
*** 52,57 ****
--- 54,60 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM .=misa?sm_35
*** 65,70 ****
--- 68,74 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_30=misa?sm_35
*** 79,84 ****
--- 83,89 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_35=misa?sm_30
*** 93,98 ****
--- 98,104 ----
  AEMM misa?sm_35=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM misa?sm_75=misa?sm_80
  AEMM misa?sm_75=misa?sm_89
*************** AEMM misa?sm_30=misa?sm_35
*** 106,111 ****
--- 112,118 ----
  AEMM misa?sm_30=misa?sm_37
  AEMM misa?sm_30=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_37=misa?sm_30
*** 119,137 ****
  AEMM misa?sm_37=misa?sm_35
  AEMM misa?sm_37=misa?sm_52
  AEMM .=misa?sm_53
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
  AEMM .=misa?sm_89
  CMMC
  
! BEGIN '--with-arch=sm_53', '--with-multilib-list=sm_53=sm_30,sm_35,sm_37,sm_52,sm_70,sm_75,sm_80,sm_89'
  SMOID sm_53
! SMOIL sm_53 sm_30 sm_35 sm_37 sm_52 sm_70 sm_75 sm_80 sm_89
  AEMM .=misa?sm_53
  CMMC
  
  
  BEGIN '--with-arch=sm_70', '--with-multilib-list=sm_70'
  SMOID sm_70
  SMOIL sm_70
--- 126,180 ----
  AEMM misa?sm_37=misa?sm_35
  AEMM misa?sm_37=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
  AEMM .=misa?sm_89
  CMMC
  
! BEGIN '--with-arch=sm_53', '--with-multilib-list=sm_30,sm_35,sm_37,sm_52,sm_61,sm_70,sm_75,sm_80,sm_89'
  SMOID sm_53
! SMOIL sm_53 sm_30 sm_35 sm_37 sm_52 sm_61 sm_70 sm_75 sm_80 sm_89
  AEMM .=misa?sm_53
  CMMC
  
  
+ BEGIN '--with-arch=sm_61', '--with-multilib-list=sm_61,sm_30'
+ SMOID sm_61
+ SMOIL sm_61 sm_30
+ AEMM misa?sm_30=misa?sm_35
+ AEMM misa?sm_30=misa?sm_37
+ AEMM misa?sm_30=misa?sm_52
+ AEMM misa?sm_30=misa?sm_53
+ AEMM .=misa?sm_61
+ AEMM .=misa?sm_70
+ AEMM .=misa?sm_75
+ AEMM .=misa?sm_80
+ AEMM .=misa?sm_89
+ CMMC
+ 
+ BEGIN '--with-arch=sm_61', '--with-multilib-list=sm_61,sm_37'
+ SMOID sm_61
+ SMOIL sm_61 sm_37
+ AEMM misa?sm_37=misa?sm_30
+ AEMM misa?sm_37=misa?sm_35
+ AEMM misa?sm_37=misa?sm_52
+ AEMM misa?sm_37=misa?sm_53
+ AEMM .=misa?sm_61
+ AEMM .=misa?sm_70
+ AEMM .=misa?sm_75
+ AEMM .=misa?sm_80
+ AEMM .=misa?sm_89
+ CMMC
+ 
+ BEGIN '--with-arch=sm_61', '--with-multilib-list=sm_30,sm_35,sm_37,sm_52,sm_61,sm_70,sm_75,sm_80,sm_89'
+ SMOID sm_61
+ SMOIL sm_61 sm_30 sm_35 sm_37 sm_52 sm_53 sm_70 sm_75 sm_80 sm_89
+ AEMM .=misa?sm_61
+ CMMC
+ 
+ 
  BEGIN '--with-arch=sm_70', '--with-multilib-list=sm_70'
  SMOID sm_70
  SMOIL sm_70
*************** AEMM .=misa?sm_35
*** 140,145 ****
--- 183,189 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_30=misa?sm_35
*** 153,158 ****
--- 197,203 ----
  AEMM misa?sm_30=misa?sm_37
  AEMM misa?sm_30=misa?sm_52
  AEMM misa?sm_30=misa?sm_53
+ AEMM misa?sm_30=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_53=misa?sm_30
*** 166,171 ****
--- 211,217 ----
  AEMM misa?sm_53=misa?sm_35
  AEMM misa?sm_53=misa?sm_37
  AEMM misa?sm_53=misa?sm_52
+ AEMM misa?sm_53=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** SMOIL sm_70 sm_53 sm_30
*** 178,183 ****
--- 224,230 ----
  AEMM misa?sm_30=misa?sm_35
  AEMM misa?sm_30=misa?sm_37
  AEMM misa?sm_30=misa?sm_52
+ AEMM misa?sm_53=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_30=misa?sm_35
*** 192,197 ****
--- 239,245 ----
  AEMM misa?sm_30=misa?sm_37
  AEMM misa?sm_30=misa?sm_52
  AEMM misa?sm_30=misa?sm_53
+ AEMM misa?sm_30=misa?sm_61
  AEMM misa?sm_30=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_53=misa?sm_30
*** 205,210 ****
--- 253,259 ----
  AEMM misa?sm_53=misa?sm_35
  AEMM misa?sm_53=misa?sm_37
  AEMM misa?sm_53=misa?sm_52
+ AEMM misa?sm_53=misa?sm_61
  AEMM misa?sm_53=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** SMOIL sm_75 sm_30 sm_53
*** 217,222 ****
--- 266,272 ----
  AEMM misa?sm_30=misa?sm_35
  AEMM misa?sm_30=misa?sm_37
  AEMM misa?sm_30=misa?sm_52
+ AEMM misa?sm_53=misa?sm_61
  AEMM misa?sm_53=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM .=misa?sm_35
*** 232,237 ****
--- 282,288 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_30=misa?sm_35
*** 245,250 ****
--- 296,302 ----
  AEMM misa?sm_30=misa?sm_37
  AEMM misa?sm_30=misa?sm_52
  AEMM misa?sm_30=misa?sm_53
+ AEMM misa?sm_30=misa?sm_61
  AEMM misa?sm_30=misa?sm_70
  AEMM misa?sm_30=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_75=misa?sm_35
*** 259,264 ****
--- 311,317 ----
  AEMM misa?sm_75=misa?sm_37
  AEMM misa?sm_75=misa?sm_52
  AEMM misa?sm_75=misa?sm_53
+ AEMM misa?sm_75=misa?sm_61
  AEMM misa?sm_75=misa?sm_70
  AEMM .=misa?sm_80
  AEMM .=misa?sm_89
*************** AEMM .=misa?sm_35
*** 273,278 ****
--- 326,332 ----
  AEMM .=misa?sm_37
  AEMM .=misa?sm_52
  AEMM .=misa?sm_53
+ AEMM .=misa?sm_61
  AEMM .=misa?sm_70
  AEMM .=misa?sm_75
  AEMM .=misa?sm_80
*************** AEMM misa?sm_52=misa?sm_30
*** 286,291 ****
--- 340,346 ----
  AEMM misa?sm_52=misa?sm_35
  AEMM misa?sm_52=misa?sm_37
  AEMM misa?sm_52=misa?sm_53
+ AEMM misa?sm_52=misa?sm_61
  AEMM misa?sm_52=misa?sm_70
  AEMM misa?sm_52=misa?sm_75
  AEMM misa?sm_52=misa?sm_80
*************** AEMM .=misa?sm_89
*** 293,300 ****
  CMMC
  
  
! BEGIN '--with-arch=sm_89', '--with-multilib-list=sm_89,sm_30,sm_35,sm_37,sm_52,sm_53,sm_70,sm_75,sm_80'
  SMOID sm_89
! SMOIL sm_89 sm_30 sm_35 sm_37 sm_52 sm_53 sm_70 sm_75 sm_80
  AEMM .=misa?sm_89
  CMMC
--- 348,355 ----
  CMMC
  
  
! BEGIN '--with-arch=sm_89', '--with-multilib-list=sm_89,sm_30,sm_35,sm_37,sm_52,sm_53,sm_61,sm_70,sm_75,sm_80'
  SMOID sm_89
! SMOIL sm_89 sm_30 sm_35 sm_37 sm_52 sm_53 sm_61 sm_70 sm_75 sm_80
  AEMM .=misa?sm_89
  CMMC
diff -Nrcpad gcc-15-20250719/gcc/config/nvptx/mkoffload.cc gcc-15-20250726/gcc/config/nvptx/mkoffload.cc
*** gcc-15-20250719/gcc/config/nvptx/mkoffload.cc	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/nvptx/mkoffload.cc	Sat Jul 26 22:32:11 2025
*************** process (FILE *in, FILE *out, uint32_t o
*** 260,267 ****
    unsigned ix;
    const char *sm_ver = NULL, *version = NULL;
    const char *sm_ver2 = NULL, *version2 = NULL;
!   size_t file_cnt = 0;
!   size_t *file_idx = XALLOCAVEC (size_t, len);
  
    fprintf (out, "#include <stdint.h>\n\n");
  
--- 260,269 ----
    unsigned ix;
    const char *sm_ver = NULL, *version = NULL;
    const char *sm_ver2 = NULL, *version2 = NULL;
!   /* To reduce the number of reallocations for 'file_idx', guess 'file_cnt'
!      (very roughly...), based on 'len'.  */
!   const size_t file_cnt_guessed = 13 + len / 27720;
!   auto_vec<size_t> file_idx (file_cnt_guessed);
  
    fprintf (out, "#include <stdint.h>\n\n");
  
*************** process (FILE *in, FILE *out, uint32_t o
*** 269,277 ****
       terminated by a NUL.  */
    for (size_t i = 0; i != len;)
      {
        char c;
        bool output_fn_ptr = false;
-       file_idx[file_cnt++] = i;
  
        fprintf (out, "static const char ptx_code_%u[] =\n\t\"", obj_count++);
        while ((c = input[i++]))
--- 271,280 ----
       terminated by a NUL.  */
    for (size_t i = 0; i != len;)
      {
+       file_idx.safe_push (i);
+ 
        char c;
        bool output_fn_ptr = false;
  
        fprintf (out, "static const char ptx_code_%u[] =\n\t\"", obj_count++);
        while ((c = input[i++]))
*************** process (FILE *in, FILE *out, uint32_t o
*** 349,354 ****
--- 352,360 ----
  	}
      }
  
+   const size_t file_cnt = file_idx.length ();
+   gcc_checking_assert (file_cnt == obj_count);
+ 
    /* Create function-pointer array, required for reverse
       offload function-pointer lookup.  */
  
diff -Nrcpad gcc-15-20250719/gcc/config/nvptx/nvptx-gen.h gcc-15-20250726/gcc/config/nvptx/nvptx-gen.h
*** gcc-15-20250719/gcc/config/nvptx/nvptx-gen.h	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/nvptx/nvptx-gen.h	Sat Jul 26 22:32:11 2025
***************
*** 26,31 ****
--- 26,32 ----
  #define TARGET_SM37 (ptx_isa_option >= PTX_ISA_SM37)
  #define TARGET_SM52 (ptx_isa_option >= PTX_ISA_SM52)
  #define TARGET_SM53 (ptx_isa_option >= PTX_ISA_SM53)
+ #define TARGET_SM61 (ptx_isa_option >= PTX_ISA_SM61)
  #define TARGET_SM70 (ptx_isa_option >= PTX_ISA_SM70)
  #define TARGET_SM75 (ptx_isa_option >= PTX_ISA_SM75)
  #define TARGET_SM80 (ptx_isa_option >= PTX_ISA_SM80)
diff -Nrcpad gcc-15-20250719/gcc/config/nvptx/nvptx-gen.opt gcc-15-20250726/gcc/config/nvptx/nvptx-gen.opt
*** gcc-15-20250719/gcc/config/nvptx/nvptx-gen.opt	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/nvptx/nvptx-gen.opt	Sat Jul 26 22:32:11 2025
*************** EnumValue
*** 39,44 ****
--- 39,47 ----
  Enum(ptx_isa) String(sm_53) Value(PTX_ISA_SM53)
  
  EnumValue
+ Enum(ptx_isa) String(sm_61) Value(PTX_ISA_SM61)
+ 
+ EnumValue
  Enum(ptx_isa) String(sm_70) Value(PTX_ISA_SM70)
  
  EnumValue
diff -Nrcpad gcc-15-20250719/gcc/config/nvptx/nvptx-opts.h gcc-15-20250726/gcc/config/nvptx/nvptx-opts.h
*** gcc-15-20250719/gcc/config/nvptx/nvptx-opts.h	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/nvptx/nvptx-opts.h	Sat Jul 26 22:32:11 2025
*************** enum ptx_version
*** 40,45 ****
--- 40,46 ----
    PTX_VERSION_3_1,
    PTX_VERSION_4_1,
    PTX_VERSION_4_2,
+   PTX_VERSION_5_0,
    PTX_VERSION_6_0,
    PTX_VERSION_6_3,
    PTX_VERSION_7_0,
diff -Nrcpad gcc-15-20250719/gcc/config/nvptx/nvptx-sm.def gcc-15-20250726/gcc/config/nvptx/nvptx-sm.def
*** gcc-15-20250719/gcc/config/nvptx/nvptx-sm.def	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/nvptx/nvptx-sm.def	Sat Jul 26 22:32:11 2025
*************** NVPTX_SM (35, NVPTX_SM_SEP)
*** 25,30 ****
--- 25,31 ----
  NVPTX_SM (37, NVPTX_SM_SEP)
  NVPTX_SM (52, NVPTX_SM_SEP)
  NVPTX_SM (53, NVPTX_SM_SEP)
+ NVPTX_SM (61, NVPTX_SM_SEP)
  NVPTX_SM (70, NVPTX_SM_SEP)
  NVPTX_SM (75, NVPTX_SM_SEP)
  NVPTX_SM (80, NVPTX_SM_SEP)
diff -Nrcpad gcc-15-20250719/gcc/config/nvptx/nvptx.cc gcc-15-20250726/gcc/config/nvptx/nvptx.cc
*** gcc-15-20250719/gcc/config/nvptx/nvptx.cc	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/nvptx/nvptx.cc	Sat Jul 26 22:32:11 2025
*************** first_ptx_version_supporting_sm (enum pt
*** 220,225 ****
--- 220,227 ----
        return PTX_VERSION_4_1;
      case PTX_ISA_SM53:
        return PTX_VERSION_4_2;
+     case PTX_ISA_SM61:
+       return PTX_VERSION_5_0;
      case PTX_ISA_SM70:
        return PTX_VERSION_6_0;
      case PTX_ISA_SM75:
*************** ptx_version_to_string (enum ptx_version
*** 268,273 ****
--- 270,277 ----
        return "4.1";
      case PTX_VERSION_4_2:
        return "4.2";
+     case PTX_VERSION_5_0:
+       return "5.0";
      case PTX_VERSION_6_0:
        return "6.0";
      case PTX_VERSION_6_3:
*************** ptx_version_to_number (enum ptx_version
*** 294,299 ****
--- 298,305 ----
        return major_p ? 4 : 1;
      case PTX_VERSION_4_2:
        return major_p ? 4 : 2;
+     case PTX_VERSION_5_0:
+       return major_p ? 5 : 0;
      case PTX_VERSION_6_0:
        return major_p ? 6 : 0;
      case PTX_VERSION_6_3:
diff -Nrcpad gcc-15-20250719/gcc/config/nvptx/nvptx.h gcc-15-20250726/gcc/config/nvptx/nvptx.h
*** gcc-15-20250719/gcc/config/nvptx/nvptx.h	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/nvptx/nvptx.h	Sat Jul 26 22:32:11 2025
***************
*** 101,106 ****
--- 101,107 ----
     PTX ISA Version 3.1.  */
  #define TARGET_PTX_4_1 (ptx_version_option >= PTX_VERSION_4_1)
  #define TARGET_PTX_4_2 (ptx_version_option >= PTX_VERSION_4_2)
+ #define TARGET_PTX_5_0 (ptx_version_option >= PTX_VERSION_5_0)
  #define TARGET_PTX_6_0 (ptx_version_option >= PTX_VERSION_6_0)
  #define TARGET_PTX_6_3 (ptx_version_option >= PTX_VERSION_6_3)
  #define TARGET_PTX_7_0 (ptx_version_option >= PTX_VERSION_7_0)
diff -Nrcpad gcc-15-20250719/gcc/config/nvptx/nvptx.opt gcc-15-20250726/gcc/config/nvptx/nvptx.opt
*** gcc-15-20250719/gcc/config/nvptx/nvptx.opt	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config/nvptx/nvptx.opt	Sat Jul 26 22:32:11 2025
*************** march-map=sm_60
*** 88,97 ****
  Target RejectNegative Alias(misa=,sm_53)
  
  march-map=sm_61
! Target RejectNegative Alias(misa=,sm_53)
  
  march-map=sm_62
! Target RejectNegative Alias(misa=,sm_53)
  
  march-map=sm_70
  Target RejectNegative Alias(misa=,sm_70)
--- 88,97 ----
  Target RejectNegative Alias(misa=,sm_53)
  
  march-map=sm_61
! Target RejectNegative Alias(misa=,sm_61)
  
  march-map=sm_62
! Target RejectNegative Alias(misa=,sm_61)
  
  march-map=sm_70
  Target RejectNegative Alias(misa=,sm_70)
*************** EnumValue
*** 134,139 ****
--- 134,142 ----
  Enum(ptx_version) String(4.2) Value(PTX_VERSION_4_2)
  
  EnumValue
+ Enum(ptx_version) String(5.0) Value(PTX_VERSION_5_0)
+ 
+ EnumValue
  Enum(ptx_version) String(6.0) Value(PTX_VERSION_6_0)
  
  EnumValue
diff -Nrcpad gcc-15-20250719/gcc/config.gcc gcc-15-20250726/gcc/config.gcc
*** gcc-15-20250719/gcc/config.gcc	Sat Jul 19 22:32:14 2025
--- gcc-15-20250726/gcc/config.gcc	Sat Jul 26 22:32:10 2025
*************** case "${target}" in
*** 5641,5646 ****
--- 5641,5647 ----
  			#TODO 'sm_[...]' list per 'nvptx-sm.def'.
  			sm_30 | sm_35 | sm_37 \
  			| sm_52 | sm_53 \
+ 			| sm_61 \
  			| sm_70 | sm_75 \
  			| sm_80 | sm_89 )
  				TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG $nvptx_multilib"
diff -Nrcpad gcc-15-20250719/gcc/cp/ChangeLog gcc-15-20250726/gcc/cp/ChangeLog
*** gcc-15-20250719/gcc/cp/ChangeLog	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/cp/ChangeLog	Sat Jul 26 22:32:11 2025
***************
*** 1,3 ****
--- 1,32 ----
+ 2025-07-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120577
+ 	* constexpr.cc (cxx_eval_call_expression): Set
+ 	CONSTRUCTOR_NO_CLEARING on initial value for ctor.
+ 	(cxx_eval_component_reference): Make value-initialization
+ 	of an aggregate member explicit.
+ 
+ 2025-07-24  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-23  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121055
+ 	* method.cc (build_invoke): Correct reference_wrapper handling.
+ 
+ 2025-07-24  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-07-24  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/120412
+ 	* module.cc (trees_out::core_vals): Write TU_LOCAL_ENTITY bits.
+ 	(trees_in::core_vals): Read it.
+ 	(trees_in::tree_node): Handle TU_LOCAL_ENTITY typedefs.
+ 
  2025-07-11  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250719/gcc/cp/constexpr.cc gcc-15-20250726/gcc/cp/constexpr.cc
*** gcc-15-20250719/gcc/cp/constexpr.cc	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/cp/constexpr.cc	Sat Jul 26 22:32:11 2025
*************** cxx_eval_call_expression (const constexp
*** 3363,3372 ****
  	      && TREE_CODE (new_obj) == COMPONENT_REF
  	      && TREE_CODE (TREE_TYPE (TREE_OPERAND (new_obj, 0))) == UNION_TYPE)
  	    {
  	      tree activate = build2 (INIT_EXPR, TREE_TYPE (new_obj),
! 				      new_obj,
! 				      build_constructor (TREE_TYPE (new_obj),
! 							 NULL));
  	      cxx_eval_constant_expression (ctx, activate,
  					    lval, non_constant_p, overflow_p);
  	      ggc_free (activate);
--- 3363,3372 ----
  	      && TREE_CODE (new_obj) == COMPONENT_REF
  	      && TREE_CODE (TREE_TYPE (TREE_OPERAND (new_obj, 0))) == UNION_TYPE)
  	    {
+ 	      tree ctor = build_constructor (TREE_TYPE (new_obj), NULL);
+ 	      CONSTRUCTOR_NO_CLEARING (ctor) = true;
  	      tree activate = build2 (INIT_EXPR, TREE_TYPE (new_obj),
! 				      new_obj, ctor);
  	      cxx_eval_constant_expression (ctx, activate,
  					    lval, non_constant_p, overflow_p);
  	      ggc_free (activate);
*************** cxx_eval_component_reference (const cons
*** 4876,4881 ****
--- 4876,4893 ----
      }
  
    /* If there's no explicit init for this field, it's value-initialized.  */
+ 
+   if (AGGREGATE_TYPE_P (TREE_TYPE (t)))
+     {
+       /* As in cxx_eval_store_expression, insert an empty CONSTRUCTOR
+ 	 and copy the flags.  */
+       constructor_elt *e = get_or_insert_ctor_field (whole, part);
+       e->value = value = build_constructor (TREE_TYPE (part), NULL);
+       CONSTRUCTOR_ZERO_PADDING_BITS (value)
+ 	= CONSTRUCTOR_ZERO_PADDING_BITS (whole);
+       return value;
+     }
+ 
    value = build_value_init (TREE_TYPE (t), tf_warning_or_error);
    return cxx_eval_constant_expression (ctx, value,
  				       lval,
diff -Nrcpad gcc-15-20250719/gcc/cp/method.cc gcc-15-20250726/gcc/cp/method.cc
*** gcc-15-20250719/gcc/cp/method.cc	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/cp/method.cc	Sat Jul 26 22:32:11 2025
*************** build_invoke (tree fn_type, const_tree a
*** 2036,2045 ****
  	      const_tree name = DECL_NAME (datum_decl);
  	      if (name && (id_equal (name, "reference_wrapper")))
  		{
! 		  /* 1.2 & 1.5: Retrieve T from std::reference_wrapper<T>,
  		     i.e., decltype(datum.get()).  */
  		  datum_type =
  		    TREE_VEC_ELT (TYPE_TI_ARGS (non_ref_datum_type), 0);
  		  datum_is_refwrap = true;
  		}
  	    }
--- 2036,2046 ----
  	      const_tree name = DECL_NAME (datum_decl);
  	      if (name && (id_equal (name, "reference_wrapper")))
  		{
! 		  /* 1.2 & 1.5: Retrieve T& from std::reference_wrapper<T>,
  		     i.e., decltype(datum.get()).  */
  		  datum_type =
  		    TREE_VEC_ELT (TYPE_TI_ARGS (non_ref_datum_type), 0);
+ 		  datum_type = cp_build_reference_type (datum_type, false);
  		  datum_is_refwrap = true;
  		}
  	    }
diff -Nrcpad gcc-15-20250719/gcc/cp/module.cc gcc-15-20250726/gcc/cp/module.cc
*** gcc-15-20250719/gcc/cp/module.cc	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/cp/module.cc	Sat Jul 26 22:32:11 2025
*************** trees_out::core_vals (tree t)
*** 6784,6789 ****
--- 6784,6796 ----
        if (streaming_p ())
  	WU (((lang_tree_node *)t)->trait_expression.kind);
        break;
+ 
+     case TU_LOCAL_ENTITY:
+       WT (((lang_tree_node *)t)->tu_local_entity.name);
+       if (state)
+ 	state->write_location
+ 	  (*this, ((lang_tree_node *)t)->tu_local_entity.loc);
+       break;
      }
  
    if (CODE_CONTAINS_STRUCT (code, TS_TYPED))
*************** trees_in::core_vals (tree t)
*** 7327,7332 ****
--- 7334,7344 ----
        RT (((lang_tree_node *)t)->trait_expression.type2);
        RUC (cp_trait_kind, ((lang_tree_node *)t)->trait_expression.kind);
        break;
+ 
+     case TU_LOCAL_ENTITY:
+       RT (((lang_tree_node *)t)->tu_local_entity.name);
+       ((lang_tree_node *)t)->tu_local_entity.loc
+ 	= state->read_location (*this);
      }
  
    if (CODE_CONTAINS_STRUCT (code, TS_TYPED))
*************** trees_in::tree_node (bool is_use)
*** 10135,10141 ****
  	    && dump ("Read %stypedef %C:%N",
  		     DECL_IMPLICIT_TYPEDEF_P (res) ? "implicit " : "",
  		     TREE_CODE (res), res);
! 	  res = TREE_TYPE (res);
  	}
        break;
  
--- 10147,10154 ----
  	    && dump ("Read %stypedef %C:%N",
  		     DECL_IMPLICIT_TYPEDEF_P (res) ? "implicit " : "",
  		     TREE_CODE (res), res);
! 	  if (TREE_CODE (res) != TU_LOCAL_ENTITY)
! 	    res = TREE_TYPE (res);
  	}
        break;
  
diff -Nrcpad gcc-15-20250719/gcc/doc/invoke.texi gcc-15-20250726/gcc/doc/invoke.texi
*** gcc-15-20250719/gcc/doc/invoke.texi	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/doc/invoke.texi	Sat Jul 26 22:32:11 2025
*************** Generate code for the specified PTX ISA
*** 30659,30664 ****
--- 30659,30665 ----
  Valid architecture strings are
  @samp{sm_30}, @samp{sm_35}, @samp{sm_37},
  @samp{sm_52}, @samp{sm_53},
+ @samp{sm_61},
  @samp{sm_70}, @samp{sm_75},
  @samp{sm_80}, and @samp{sm_89}.
  The default depends on how the compiler has been configured, see
*************** Generate code for the specified PTX ISA
*** 30685,30690 ****
--- 30686,30692 ----
  Valid version strings are
  @samp{3.1},
  @samp{4.1}, @samp{4.2},
+ @samp{5.0},
  @samp{6.0}, @samp{6.3},
  @samp{7.0}, @samp{7.3}, and @samp{7.8}.
  The default PTX ISA version is the one that added support for the
diff -Nrcpad gcc-15-20250719/gcc/doc/sourcebuild.texi gcc-15-20250726/gcc/doc/sourcebuild.texi
*** gcc-15-20250719/gcc/doc/sourcebuild.texi	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/doc/sourcebuild.texi	Sat Jul 26 22:32:12 2025
*************** whether it does so by default).
*** 2373,2378 ****
--- 2373,2384 ----
  @itemx aarch64_sve1024_hw
  @itemx aarch64_sve2048_hw
  Like @code{aarch64_sve_hw}, but also test for an exact hardware vector length.
+ @item aarch64_sve2_hw
+ AArch64 target that is able to generate and execute SVE2 code (regardless of
+ whether it does so by default).
+ @item aarch64_sve2p1_hw
+ AArch64 target that is able to generate and execute SVE2.1 code (regardless of
+ whether it does so by default).
  
  @item aarch64_fjcvtzs_hw
  AArch64 target that is able to generate and execute armv8.3-a FJCVTZS
diff -Nrcpad gcc-15-20250719/gcc/ext-dce.cc gcc-15-20250726/gcc/ext-dce.cc
*** gcc-15-20250719/gcc/ext-dce.cc	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/ext-dce.cc	Sat Jul 26 22:32:12 2025
*************** ext_dce_process_uses (rtx_insn *insn, rt
*** 651,659 ****
  
  	  /* ?!? How much of this should mirror SET handling, potentially
  	     being shared?   */
! 	  if (SUBREG_P (dst) && SUBREG_BYTE (dst).is_constant ())
  	    {
- 	      bit = subreg_lsb (dst).to_constant ();
  	      if (bit >= HOST_BITS_PER_WIDE_INT)
  		bit = HOST_BITS_PER_WIDE_INT - 1;
  	      dst = SUBREG_REG (dst);
--- 651,658 ----
  
  	  /* ?!? How much of this should mirror SET handling, potentially
  	     being shared?   */
! 	  if (SUBREG_P (dst) && subreg_lsb (dst).is_constant (&bit))
  	    {
  	      if (bit >= HOST_BITS_PER_WIDE_INT)
  		bit = HOST_BITS_PER_WIDE_INT - 1;
  	      dst = SUBREG_REG (dst);
*************** ext_dce_process_uses (rtx_insn *insn, rt
*** 758,764 ****
  		     and process the inner object.  */
  		  if (paradoxical_subreg_p (y))
  		    y = XEXP (y, 0);
! 		  else if (SUBREG_P (y) && SUBREG_BYTE (y).is_constant ())
  		    {
  		      /* If !TRULY_NOOP_TRUNCATION_MODES_P, the mode
  			 change performed by Y would normally need to be a
--- 757,763 ----
  		     and process the inner object.  */
  		  if (paradoxical_subreg_p (y))
  		    y = XEXP (y, 0);
! 		  else if (SUBREG_P (y) && subreg_lsb (y).is_constant (&bit))
  		    {
  		      /* If !TRULY_NOOP_TRUNCATION_MODES_P, the mode
  			 change performed by Y would normally need to be a
*************** ext_dce_process_uses (rtx_insn *insn, rt
*** 775,782 ****
  				    GET_MODE (SUBREG_REG (y))))))
  			break;
  
- 		      bit = subreg_lsb (y).to_constant ();
- 
  		      /* If this is a wide object (more bits than we can fit
  			 in a HOST_WIDE_INT), then just break from the SET
  			 context.   That will cause the iterator to walk down
--- 774,779 ----
diff -Nrcpad gcc-15-20250719/gcc/fortran/ChangeLog gcc-15-20250726/gcc/fortran/ChangeLog
*** gcc-15-20250719/gcc/fortran/ChangeLog	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/fortran/ChangeLog	Sat Jul 26 22:32:12 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-07-20  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-07-18  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/121145
+ 	* trans-expr.cc (gfc_conv_procedure_call): Do not create pointer
+ 	check for proc-pointer actual passed to optional dummy.
+ 
  2025-07-16  Paul Thomas  <pault@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250719/gcc/fortran/trans-expr.cc gcc-15-20250726/gcc/fortran/trans-expr.cc
*** gcc-15-20250719/gcc/fortran/trans-expr.cc	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/fortran/trans-expr.cc	Sat Jul 26 22:32:12 2025
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 7900,7920 ****
  	  se->ss->info->class_container = arg1_cntnr;
  	}
  
!       if (fsym && e)
  	{
! 	  /* Obtain the character length of an assumed character length
! 	     length procedure from the typespec.  */
! 	  if (fsym->ts.type == BT_CHARACTER
! 	      && parmse.string_length == NULL_TREE
! 	      && e->ts.type == BT_PROCEDURE
! 	      && e->symtree->n.sym->ts.type == BT_CHARACTER
! 	      && e->symtree->n.sym->ts.u.cl->length != NULL
! 	      && e->symtree->n.sym->ts.u.cl->length->expr_type == EXPR_CONSTANT)
! 	    {
! 	      gfc_conv_const_charlen (e->symtree->n.sym->ts.u.cl);
! 	      parmse.string_length = e->symtree->n.sym->ts.u.cl->backend_decl;
! 	    }
  
  	  /* Obtain the character length for a NULL() actual with a character
  	     MOLD argument.  Otherwise substitute a suitable dummy length.
  	     Here we handle non-optional dummies of non-bind(c) procedures.  */
--- 7900,7920 ----
  	  se->ss->info->class_container = arg1_cntnr;
  	}
  
!       /* Obtain the character length of an assumed character length procedure
! 	 from the typespec of the actual argument.  */
!       if (e
! 	  && parmse.string_length == NULL_TREE
! 	  && e->ts.type == BT_PROCEDURE
! 	  && e->symtree->n.sym->ts.type == BT_CHARACTER
! 	  && e->symtree->n.sym->ts.u.cl->length != NULL
! 	  && e->symtree->n.sym->ts.u.cl->length->expr_type == EXPR_CONSTANT)
  	{
! 	  gfc_conv_const_charlen (e->symtree->n.sym->ts.u.cl);
! 	  parmse.string_length = e->symtree->n.sym->ts.u.cl->backend_decl;
! 	}
  
+       if (fsym && e)
+ 	{
  	  /* Obtain the character length for a NULL() actual with a character
  	     MOLD argument.  Otherwise substitute a suitable dummy length.
  	     Here we handle non-optional dummies of non-bind(c) procedures.  */
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 8150,8156 ****
  		msg = xasprintf ("Pointer actual argument '%s' is not "
  				 "associated", e->symtree->n.sym->name);
  	      else if (attr.proc_pointer && !e->value.function.actual
! 		       && (fsym == NULL || !fsym_attr.proc_pointer))
  		msg = xasprintf ("Proc-pointer actual argument '%s' is not "
  				 "associated", e->symtree->n.sym->name);
  	      else
--- 8150,8157 ----
  		msg = xasprintf ("Pointer actual argument '%s' is not "
  				 "associated", e->symtree->n.sym->name);
  	      else if (attr.proc_pointer && !e->value.function.actual
! 		       && (fsym == NULL
! 			   || (!fsym_attr.proc_pointer && !fsym_attr.optional)))
  		msg = xasprintf ("Proc-pointer actual argument '%s' is not "
  				 "associated", e->symtree->n.sym->name);
  	      else
diff -Nrcpad gcc-15-20250719/gcc/gcse.cc gcc-15-20250726/gcc/gcse.cc
*** gcc-15-20250719/gcc/gcse.cc	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/gcse.cc	Sat Jul 26 22:32:12 2025
*************** execute_hardreg_pre (void)
*** 4239,4246 ****
      {
        int changed;
        current_hardreg_regno = regnos[i];
        if (dump_file)
! 	fprintf(dump_file, "Entering hardreg PRE for regno %d\n",
  		current_hardreg_regno);
        delete_unreachable_blocks ();
        df_analyze ();
--- 4239,4253 ----
      {
        int changed;
        current_hardreg_regno = regnos[i];
+       if (!df_regs_ever_live_p (current_hardreg_regno))
+ 	{
+ 	  if (dump_file)
+ 	    fprintf (dump_file, "Skipping hardreg PRE for regno %d, which is never live\n",
+ 		     current_hardreg_regno);
+ 	  continue;
+ 	}
        if (dump_file)
! 	fprintf (dump_file, "Entering hardreg PRE for regno %d\n",
  		current_hardreg_regno);
        delete_unreachable_blocks ();
        df_analyze ();
diff -Nrcpad gcc-15-20250719/gcc/lto-streamer-out.cc gcc-15-20250726/gcc/lto-streamer-out.cc
*** gcc-15-20250719/gcc/lto-streamer-out.cc	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/lto-streamer-out.cc	Sat Jul 26 22:32:12 2025
*************** hash_tree (struct streamer_tree_cache_d
*** 1376,1382 ****
        hstate.commit_flag ();
        hstate.add_int (TYPE_PRECISION_RAW (t));
        hstate.add_int (TYPE_ALIGN (t));
!       hstate.add_int (TYPE_EMPTY_P (t));
      }
  
    if (CODE_CONTAINS_STRUCT (code, TS_TRANSLATION_UNIT_DECL))
--- 1376,1383 ----
        hstate.commit_flag ();
        hstate.add_int (TYPE_PRECISION_RAW (t));
        hstate.add_int (TYPE_ALIGN (t));
!       if (!lto_stream_offload_p)
! 	hstate.add_int (TYPE_EMPTY_P (t));
      }
  
    if (CODE_CONTAINS_STRUCT (code, TS_TRANSLATION_UNIT_DECL))
diff -Nrcpad gcc-15-20250719/gcc/m2/gm2-compiler/P1SymBuild.mod gcc-15-20250726/gcc/m2/gm2-compiler/P1SymBuild.mod
*** gcc-15-20250719/gcc/m2/gm2-compiler/P1SymBuild.mod	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/m2/gm2-compiler/P1SymBuild.mod	Sat Jul 26 22:32:12 2025
*************** FROM SymbolTable IMPORT NulSym,
*** 79,85 ****
                          MakeSubscript, PutSubscript,
                          PutArray, GetType, IsArray,
                          IsProcType, MakeProcType,
-                         PutProcTypeVarParam, PutProcTypeParam,
                          PutProcedureBuiltin, PutProcedureInline,
                          GetSymName,
                          ResolveImports, PutDeclared,
--- 79,84 ----
*************** VAR
*** 109,150 ****
  
  
  (*
-    CheckFileName - checks to see that the module name matches the file name.
- *)
- 
- (*
- PROCEDURE CheckFileName (tok: CARDINAL; name: Name; ModuleType: ARRAY OF CHAR) ;
- VAR
-    ext,
-    basename: INTEGER ;
-    s,
-    FileName: String ;
- BEGIN
-    FileName := GetFileName() ;
-    basename := RIndex(FileName, '/', 0) ;
-    IF basename=-1
-    THEN
-       basename := 0
-    END ;
-    ext := RIndex(FileName, '.', 0) ;
-    IF ext=-1
-    THEN
-       ext := 0
-    END ;
-    FileName := Slice(FileName, basename, ext) ;
-    IF EqualCharStar(FileName, KeyToCharStar(name))
-    THEN
-       FileName := KillString(FileName)
-    ELSE
-       s := ConCat (InitString (ModuleType),
-                    Mark (InitString (" module name {%1Ea} is inconsistant with the filename {%F{%2a}}"))) ;
-       MetaErrorString2 (s, MakeError (tok, name), MakeErrorS (tok, FileName))
-    END
- END CheckFileName ;
- *)
- 
- 
- (*
     StartBuildDefinitionModule - Creates a definition module and starts
                                  a new scope.
  
--- 108,113 ----
*************** BEGIN
*** 227,233 ****
     END ;
     IF NameStart#NameEnd
     THEN
!       MetaError1 ('inconsistant definition module name {%1Wa}', MakeError (start, NameStart))
     END ;
     LeaveBlock
  END P1EndBuildDefinitionModule ;
--- 190,196 ----
     END ;
     IF NameStart#NameEnd
     THEN
!       MetaError1 ('inconsistent definition module name {%1Wa}', MakeError (start, NameStart))
     END ;
     LeaveBlock
  END P1EndBuildDefinitionModule ;
*************** BEGIN
*** 301,307 ****
     IF NameStart#NameEnd
     THEN
        MetaErrorT1 (end,
!                    'inconsistant implementation module name {%1Wa}', MakeError (start, NameStart))
     END ;
     LeaveBlock
  END P1EndBuildImplementationModule ;
--- 264,270 ----
     IF NameStart#NameEnd
     THEN
        MetaErrorT1 (end,
!                    'inconsistent implementation module name {%1Wa}', MakeError (start, NameStart))
     END ;
     LeaveBlock
  END P1EndBuildImplementationModule ;
*************** BEGIN
*** 381,387 ****
     IF NameStart#NameEnd
     THEN
        MetaErrorT1 (end,
!                    'inconsistant program module name {%1Wa}', MakeError (start, NameStart))
     END ;
     LeaveBlock
  END P1EndBuildProgramModule ;
--- 344,350 ----
     IF NameStart#NameEnd
     THEN
        MetaErrorT1 (end,
!                    'inconsistent program module name {%1Wa}', MakeError (start, NameStart))
     END ;
     LeaveBlock
  END P1EndBuildProgramModule ;
*************** BEGIN
*** 446,452 ****
     IF NameStart#NameEnd
     THEN
        MetaErrorT1 (end,
!                    'inconsistant inner module name {%1Wa}', MakeError (start, NameStart))
     END ;
     LeaveBlock
  END EndBuildInnerModule ;
--- 409,415 ----
     IF NameStart#NameEnd
     THEN
        MetaErrorT1 (end,
!                    'inconsistent inner module name {%1Wa}', MakeError (start, NameStart))
     END ;
     LeaveBlock
  END EndBuildInnerModule ;
diff -Nrcpad gcc-15-20250719/gcc/m2/gm2-compiler/P2SymBuild.mod gcc-15-20250726/gcc/m2/gm2-compiler/P2SymBuild.mod
*** gcc-15-20250719/gcc/m2/gm2-compiler/P2SymBuild.mod	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/m2/gm2-compiler/P2SymBuild.mod	Sat Jul 26 22:32:12 2025
*************** BEGIN
*** 356,362 ****
     END ;
     IF NameStart#NameEnd
     THEN
!       WriteFormat2('inconsistant definition module name, module began as (%a) and ended with (%a)', NameStart, NameEnd)
     END ;
     M2Error.LeaveErrorScope
  END P2EndBuildDefModule ;
--- 356,362 ----
     END ;
     IF NameStart#NameEnd
     THEN
!       WriteFormat2('inconsistent definition module name, module began as (%a) and ended with (%a)', NameStart, NameEnd)
     END ;
     M2Error.LeaveErrorScope
  END P2EndBuildDefModule ;
*************** BEGIN
*** 425,431 ****
     PopT (NameEnd) ;
     IF NameStart#NameEnd
     THEN
!       WriteFormat1('inconsistant implementation module name %a', NameStart)
     END ;
     M2Error.LeaveErrorScope
  END P2EndBuildImplementationModule ;
--- 425,431 ----
     PopT (NameEnd) ;
     IF NameStart#NameEnd
     THEN
!       WriteFormat1('inconsistent implementation module name %a', NameStart)
     END ;
     M2Error.LeaveErrorScope
  END P2EndBuildImplementationModule ;
*************** BEGIN
*** 499,505 ****
     END ;
     IF NameStart#NameEnd
     THEN
!       WriteFormat2('inconsistant program module name %a does not match %a', NameStart, NameEnd)
     END ;
     M2Error.LeaveErrorScope
  END P2EndBuildProgramModule ;
--- 499,505 ----
     END ;
     IF NameStart#NameEnd
     THEN
!       WriteFormat2('inconsistent program module name %a does not match %a', NameStart, NameEnd)
     END ;
     M2Error.LeaveErrorScope
  END P2EndBuildProgramModule ;
*************** BEGIN
*** 564,570 ****
     PopT(NameEnd) ;
     IF NameStart#NameEnd
     THEN
!       WriteFormat2('inconsistant inner module name %a does not match %a',
                     NameStart, NameEnd)
     END ;
     M2Error.LeaveErrorScope
--- 564,570 ----
     PopT(NameEnd) ;
     IF NameStart#NameEnd
     THEN
!       WriteFormat2('inconsistent inner module name %a does not match %a',
                     NameStart, NameEnd)
     END ;
     M2Error.LeaveErrorScope
*************** BEGIN
*** 1835,1847 ****
           (* WarnStringAt (InitString ('parampos?'), OperandTok (pi)) ;  *)
           IF Unbounded AND (NOT IsUnboundedParam (ProcSym, prevkind, ParamTotal+i))
           THEN
!             ParameterError ('declaration of procedure {%%1a} in the %s differs from the %s, {%%2N} parameter is inconsistant, %s',
                              'the parameter {%3EHa} was not declared as an ARRAY OF type',
                              'the parameter {%3EVa} was declared as an ARRAY OF type',
                              ParamTotal+i, ProcSym, curkind, prevkind)
           ELSIF (NOT Unbounded) AND IsUnboundedParam (ProcSym, prevkind, ParamTotal+i)
           THEN
!             ParameterError ('declaration of procedure {%%1a} in the %s differs from the %s, {%%2N} parameter is inconsistant, %s',
                              'the parameter {%3EHa} was declared as an ARRAY OF type',
                              'the parameter {%3EVa} was not declared as an ARRAY OF type',
                              ParamTotal+i, ProcSym, curkind, prevkind)
--- 1835,1847 ----
           (* WarnStringAt (InitString ('parampos?'), OperandTok (pi)) ;  *)
           IF Unbounded AND (NOT IsUnboundedParam (ProcSym, prevkind, ParamTotal+i))
           THEN
!             ParameterError ('declaration of procedure {%%1a} in the %s differs from the %s, {%%2N} parameter is inconsistent, %s',
                              'the parameter {%3EHa} was not declared as an ARRAY OF type',
                              'the parameter {%3EVa} was declared as an ARRAY OF type',
                              ParamTotal+i, ProcSym, curkind, prevkind)
           ELSIF (NOT Unbounded) AND IsUnboundedParam (ProcSym, prevkind, ParamTotal+i)
           THEN
!             ParameterError ('declaration of procedure {%%1a} in the %s differs from the %s, {%%2N} parameter is inconsistent, %s',
                              'the parameter {%3EHa} was declared as an ARRAY OF type',
                              'the parameter {%3EVa} was not declared as an ARRAY OF type',
                              ParamTotal+i, ProcSym, curkind, prevkind)
*************** BEGIN
*** 1850,1856 ****
           THEN
              IF GetDimension (GetNthParam (ProcSym, prevkind, ParamTotal+1)) # ndim
              THEN
!                ParameterError ('declaration of procedure {%%1a} in the %s differs from the %s, {%%2N} parameter is inconsistant, %s',
                                 'the dynamic array parameter {%3EHa} was declared with a different of dimensions',
                                 'the dynamic array parameter {%3EVa} was declared with a different of dimensions',
                                 ParamTotal+i, ProcSym, curkind, prevkind)
--- 1850,1856 ----
           THEN
              IF GetDimension (GetNthParam (ProcSym, prevkind, ParamTotal+1)) # ndim
              THEN
!                ParameterError ('declaration of procedure {%%1a} in the %s differs from the %s, {%%2N} parameter is inconsistent, %s',
                                 'the dynamic array parameter {%3EHa} was declared with a different of dimensions',
                                 'the dynamic array parameter {%3EVa} was declared with a different of dimensions',
                                 ParamTotal+i, ProcSym, curkind, prevkind)
*************** BEGIN
*** 1859,1872 ****
           IF isVarParam AND (NOT IsVarParam (ProcSym, prevkind, ParamTotal+i))
           THEN
              (* Expecting non VAR parameter.  *)
!             ParameterError ('declaration of procedure {%%1a} in the %s differs from the %s, {%%2N} parameter is inconsistant, %s',
                              '{%3EHa} was not declared as a {%kVAR} parameter',
                              '{%3EVa} was declared as a {%kVAR} parameter',
                              ParamTotal+i, ProcSym, curkind, prevkind)
           ELSIF (NOT isVarParam) AND IsVarParam (ProcSym, prevkind, ParamTotal+i)
           THEN
              (* Expecting VAR pamarater.  *)
!             ParameterError ('declaration of procedure {%%1a} in the %s differs from the %s, {%%2N} parameter is inconsistant, %s',
                              '{%3EHa} was declared as a {%kVAR} parameter',
                              '{%3EVa} was not declared as a {%kVAR} parameter',
                              ParamTotal+i, ProcSym, curkind, prevkind)
--- 1859,1872 ----
           IF isVarParam AND (NOT IsVarParam (ProcSym, prevkind, ParamTotal+i))
           THEN
              (* Expecting non VAR parameter.  *)
!             ParameterError ('declaration of procedure {%%1a} in the %s differs from the %s, {%%2N} parameter is inconsistent, %s',
                              '{%3EHa} was not declared as a {%kVAR} parameter',
                              '{%3EVa} was declared as a {%kVAR} parameter',
                              ParamTotal+i, ProcSym, curkind, prevkind)
           ELSIF (NOT isVarParam) AND IsVarParam (ProcSym, prevkind, ParamTotal+i)
           THEN
              (* Expecting VAR pamarater.  *)
!             ParameterError ('declaration of procedure {%%1a} in the %s differs from the %s, {%%2N} parameter is inconsistent, %s',
                              '{%3EHa} was declared as a {%kVAR} parameter',
                              '{%3EVa} was not declared as a {%kVAR} parameter',
                              ParamTotal+i, ProcSym, curkind, prevkind)
*************** BEGIN
*** 1877,1883 ****
              IF GetSymName (ParamI) # OperandT (pi)
              THEN
                 (* Different parameter names.  *)
!                ParameterError ('procedure {%%1a} in the %s differs from the %s, {%%2N} parameter name is inconsistant, %s',
                              'named as {%3EVa}',
                              'named as {%3EVa}',
                              ParamTotal+i, ProcSym, curkind, prevkind)
--- 1877,1883 ----
              IF GetSymName (ParamI) # OperandT (pi)
              THEN
                 (* Different parameter names.  *)
!                ParameterError ('procedure {%%1a} in the %s differs from the %s, {%%2N} parameter name is inconsistent, %s',
                              'named as {%3EVa}',
                              'named as {%3EVa}',
                              ParamTotal+i, ProcSym, curkind, prevkind)
*************** BEGIN
*** 1897,1903 ****
              (NOT IsUnknown(SkipType(ParamIType)))
           THEN
              (* Different parameter types.  *)
!             ParameterError ('declaration in the %s differs from the %s, {%%2N} parameter is inconsistant, %s',
                              'the parameter {%3EHa} was declared with a different type',
                              'the parameter {%3EVa} was declared with a different type',
                              ParamTotal+i, ProcSym, curkind, prevkind)
--- 1897,1903 ----
              (NOT IsUnknown(SkipType(ParamIType)))
           THEN
              (* Different parameter types.  *)
!             ParameterError ('declaration in the %s differs from the %s, {%%2N} parameter is inconsistent, %s',
                              'the parameter {%3EHa} was declared with a different type',
                              'the parameter {%3EVa} was declared with a different type',
                              ParamTotal+i, ProcSym, curkind, prevkind)
*************** BEGIN
*** 3072,3081 ****
     IF Var=VarTok
     THEN
        (* VAR parameter *)
!       PutProcTypeVarParam(ProcTypeSym, TypeSym, IsUnbounded(TypeSym))
     ELSE
        (* Non VAR parameter *)
!       PutProcTypeParam(ProcTypeSym, TypeSym, IsUnbounded(TypeSym))
     END ;
     PushT(ProcTypeSym) ;
     Annotate("%1s(%1d)||proc type")
--- 3072,3081 ----
     IF Var=VarTok
     THEN
        (* VAR parameter *)
!       PutProcTypeVarParam (tok, ProcTypeSym, TypeSym, IsUnbounded (TypeSym))
     ELSE
        (* Non VAR parameter *)
!       PutProcTypeParam (tok, ProcTypeSym, TypeSym, IsUnbounded (TypeSym))
     END ;
     PushT(ProcTypeSym) ;
     Annotate("%1s(%1d)||proc type")
diff -Nrcpad gcc-15-20250719/gcc/m2/gm2-compiler/P3SymBuild.mod gcc-15-20250726/gcc/m2/gm2-compiler/P3SymBuild.mod
*** gcc-15-20250719/gcc/m2/gm2-compiler/P3SymBuild.mod	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/m2/gm2-compiler/P3SymBuild.mod	Sat Jul 26 22:32:12 2025
*************** BEGIN
*** 126,132 ****
     PopT(NameStart) ;
     IF NameStart#NameEnd
     THEN
!       WriteFormat2('inconsistant definition module was named (%a) and concluded as (%a)',
                     NameStart, NameEnd)
     END ;
     M2Error.LeaveErrorScope
--- 126,132 ----
     PopT(NameStart) ;
     IF NameStart#NameEnd
     THEN
!       WriteFormat2('inconsistent definition module was named (%a) and concluded as (%a)',
                     NameStart, NameEnd)
     END ;
     M2Error.LeaveErrorScope
diff -Nrcpad gcc-15-20250719/gcc/m2/gm2-compiler/PCSymBuild.mod gcc-15-20250726/gcc/m2/gm2-compiler/PCSymBuild.mod
*** gcc-15-20250719/gcc/m2/gm2-compiler/PCSymBuild.mod	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/m2/gm2-compiler/PCSymBuild.mod	Sat Jul 26 22:32:12 2025
*************** BEGIN
*** 269,275 ****
     PopT(NameStart) ;
     IF NameStart#NameEnd
     THEN
!       WriteFormat2('inconsistant definition module was named (%a) and concluded as (%a)',
                     NameStart, NameEnd)
     END ;
     M2Error.LeaveErrorScope
--- 269,275 ----
     PopT(NameStart) ;
     IF NameStart#NameEnd
     THEN
!       WriteFormat2('inconsistent definition module was named (%a) and concluded as (%a)',
                     NameStart, NameEnd)
     END ;
     M2Error.LeaveErrorScope
*************** BEGIN
*** 1168,1176 ****
           par := GetParam (p, i) ;
           IF IsParameterVar (par)
           THEN
!             PutProcTypeVarParam (t, GetType (par), IsParameterUnbounded (par))
           ELSE
!             PutProcTypeParam (t, GetType (par), IsParameterUnbounded (par))
           END ;
           INC(i)
        END ;
--- 1168,1176 ----
           par := GetParam (p, i) ;
           IF IsParameterVar (par)
           THEN
!             PutProcTypeVarParam (tok, t, GetType (par), IsParameterUnbounded (par))
           ELSE
!             PutProcTypeParam (tok, t, GetType (par), IsParameterUnbounded (par))
           END ;
           INC(i)
        END ;
diff -Nrcpad gcc-15-20250719/gcc/m2/gm2-compiler/SymbolTable.def gcc-15-20250726/gcc/m2/gm2-compiler/SymbolTable.def
*** gcc-15-20250719/gcc/m2/gm2-compiler/SymbolTable.def	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/m2/gm2-compiler/SymbolTable.def	Sat Jul 26 22:32:12 2025
*************** PROCEDURE MakeProcType (tok: CARDINAL; P
*** 2650,2656 ****
                        ParamType into ProcType Sym.
  *)
  
! PROCEDURE PutProcTypeParam (Sym: CARDINAL;
                              ParamType: CARDINAL; isUnbounded: BOOLEAN) ;
  
  
--- 2650,2657 ----
                        ParamType into ProcType Sym.
  *)
  
! PROCEDURE PutProcTypeParam (tok: CARDINAL;
!                             Sym: CARDINAL;
                              ParamType: CARDINAL; isUnbounded: BOOLEAN) ;
  
  
*************** PROCEDURE PutProcTypeParam (Sym: CARDINA
*** 2659,2665 ****
                           ParamType into ProcType Sym.
  *)
  
! PROCEDURE PutProcTypeVarParam (Sym: CARDINAL;
                                 ParamType: CARDINAL; isUnbounded: BOOLEAN) ;
  
  
--- 2660,2667 ----
                           ParamType into ProcType Sym.
  *)
  
! PROCEDURE PutProcTypeVarParam (tok: CARDINAL;
!                                Sym: CARDINAL;
                                 ParamType: CARDINAL; isUnbounded: BOOLEAN) ;
  
  
diff -Nrcpad gcc-15-20250719/gcc/m2/gm2-compiler/SymbolTable.mod gcc-15-20250726/gcc/m2/gm2-compiler/SymbolTable.mod
*** gcc-15-20250719/gcc/m2/gm2-compiler/SymbolTable.mod	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/m2/gm2-compiler/SymbolTable.mod	Sat Jul 26 22:32:12 2025
*************** TYPE
*** 463,471 ****
                                                (* of param.                   *)
                   Type          : CARDINAL ;   (* Index to the type of param. *)
                   IsUnbounded   : BOOLEAN ;    (* Is it an ARRAY OF Type?     *)
                   ShadowVar     : CARDINAL ;   (* The local variable used to  *)
                                                (* shadow this parameter.      *)
!                  At            : Where ;      (* Where was sym declared/used *)
                END ;
  
     SymVarParam = RECORD
--- 463,473 ----
                                                (* of param.                   *)
                   Type          : CARDINAL ;   (* Index to the type of param. *)
                   IsUnbounded   : BOOLEAN ;    (* Is it an ARRAY OF Type?     *)
+                  Scope         : CARDINAL ;   (* Procedure declaration.      *)
                   ShadowVar     : CARDINAL ;   (* The local variable used to  *)
                                                (* shadow this parameter.      *)
!                  FullTok,                     (* name: type virtual token.   *)
!                  At            : CARDINAL ;   (* Where was sym declared.     *)
                END ;
  
     SymVarParam = RECORD
*************** TYPE
*** 476,484 ****
                      HeapVar       : CARDINAL ;(* The pointer value on heap.  *)
                                                (* Only used by static         *)
                                                (* analysis.                   *)
                      ShadowVar     : CARDINAL ;(* The local variable used to  *)
                                                (* shadow this parameter.      *)
!                     At            : Where ;   (* Where was sym declared/used *)
                   END ;
  
     ConstStringVariant = (m2str, cstr, m2nulstr, cnulstr) ;
--- 478,488 ----
                      HeapVar       : CARDINAL ;(* The pointer value on heap.  *)
                                                (* Only used by static         *)
                                                (* analysis.                   *)
+                     Scope         : CARDINAL ;(* Procedure declaration.      *)
                      ShadowVar     : CARDINAL ;(* The local variable used to  *)
                                                (* shadow this parameter.      *)
!                     FullTok,                  (* name: type virtual token.   *)
!                     At            : CARDINAL ;(* Where was sym declared.     *)
                   END ;
  
     ConstStringVariant = (m2str, cstr, m2nulstr, cnulstr) ;
*************** BEGIN
*** 4456,4464 ****
        pSym := GetPsym (sym) ;
        IF IsParameterVar (sym)
        THEN
!          RETURN GetVarDeclTok (pSym^.VarParam.ShadowVar)
        ELSE
!          RETURN GetVarDeclTok (pSym^.Param.ShadowVar)
        END
     ELSIF IsVar (sym)
     THEN
--- 4460,4478 ----
        pSym := GetPsym (sym) ;
        IF IsParameterVar (sym)
        THEN
!          IF pSym^.VarParam.ShadowVar = NulSym
!          THEN
!             RETURN pSym^.VarParam.At
!          ELSE
!             RETURN GetVarDeclTok (pSym^.VarParam.ShadowVar)
!          END
        ELSE
!          IF pSym^.Param.ShadowVar = NulSym
!          THEN
!             RETURN pSym^.Param.At
!          ELSE
!             RETURN GetVarDeclTok (pSym^.Param.ShadowVar)
!          END
        END
     ELSIF IsVar (sym)
     THEN
*************** BEGIN
*** 4549,4557 ****
     THEN
        IF IsParameterVar (sym)
        THEN
!          RETURN GetVarDeclFullTok (pSym^.VarParam.ShadowVar)
        ELSE
!          RETURN GetVarDeclFullTok (pSym^.Param.ShadowVar)
        END
     ELSIF IsVar (sym)
     THEN
--- 4563,4571 ----
     THEN
        IF IsParameterVar (sym)
        THEN
!          RETURN pSym^.VarParam.FullTok
        ELSE
!          RETURN pSym^.Param.FullTok
        END
     ELSIF IsVar (sym)
     THEN
*************** BEGIN
*** 10651,10658 ****
              name := ParamName ;
              Type := ParamType ;
              IsUnbounded := isUnbounded ;
              ShadowVar := NulSym ;
!             InitWhereDeclaredTok(tok, At)
           END
        END ;
        AddParameter (Sym, kind, ParSym) ;
--- 10665,10674 ----
              name := ParamName ;
              Type := ParamType ;
              IsUnbounded := isUnbounded ;
+             Scope := Sym ;
              ShadowVar := NulSym ;
!             FullTok := MakeVirtual2Tok (tok, typetok) ;
!             At := tok
           END
        END ;
        AddParameter (Sym, kind, ParSym) ;
*************** BEGIN
*** 10671,10677 ****
              pSym^.Param.ShadowVar := VariableSym
           END
        END ;
!       AddProcedureProcTypeParam (Sym, ParamType, isUnbounded, FALSE)
     END ;
     RETURN( TRUE )
  END PutParam ;
--- 10687,10693 ----
              pSym^.Param.ShadowVar := VariableSym
           END
        END ;
!       AddProcedureProcTypeParam (tok, Sym, ParamType, isUnbounded, FALSE)
     END ;
     RETURN( TRUE )
  END PutParam ;
*************** BEGIN
*** 10708,10716 ****
              name := ParamName ;
              Type := ParamType ;
              IsUnbounded := isUnbounded ;
              ShadowVar := NulSym ;
              HeapVar := NulSym ;  (* Will contain a pointer value.  *)
!             InitWhereDeclaredTok(tok, At)
           END
        END ;
        AddParameter (Sym, kind, ParSym) ;
--- 10724,10734 ----
              name := ParamName ;
              Type := ParamType ;
              IsUnbounded := isUnbounded ;
+             Scope := Sym ;
              ShadowVar := NulSym ;
              HeapVar := NulSym ;  (* Will contain a pointer value.  *)
!             FullTok := MakeVirtual2Tok (tok, typetok) ;
!             At := tok
           END
        END ;
        AddParameter (Sym, kind, ParSym) ;
*************** BEGIN
*** 10729,10735 ****
              pSym^.VarParam.ShadowVar := VariableSym
           END
        END ;
!       AddProcedureProcTypeParam (Sym, ParamType, isUnbounded, TRUE)
     END ;
     RETURN( TRUE )
  END PutVarParam ;
--- 10747,10753 ----
              pSym^.VarParam.ShadowVar := VariableSym
           END
        END ;
!       AddProcedureProcTypeParam (tok, Sym, ParamType, isUnbounded, TRUE)
     END ;
     RETURN( TRUE )
  END PutVarParam ;
*************** END AddParameter ;
*** 10816,10822 ****
                                 associated with procedure Sym.
  *)
  
! PROCEDURE AddProcedureProcTypeParam (Sym, ParamType: CARDINAL;
                                       isUnbounded, isVarParam: BOOLEAN) ;
  VAR
     pSym: PtrToSymbol ;
--- 10834,10841 ----
                                 associated with procedure Sym.
  *)
  
! PROCEDURE AddProcedureProcTypeParam (tok: CARDINAL;
!                                      Sym, ParamType: CARDINAL;
                                       isUnbounded, isVarParam: BOOLEAN) ;
  VAR
     pSym: PtrToSymbol ;
*************** BEGIN
*** 10829,10838 ****
                      THEN
                         IF isVarParam
                         THEN
!                           PutProcTypeVarParam (Procedure.ProcedureType,
                                                 ParamType, isUnbounded)
                         ELSE
!                           PutProcTypeParam (Procedure.ProcedureType,
                                              ParamType, isUnbounded)
                         END
                      END
--- 10848,10859 ----
                      THEN
                         IF isVarParam
                         THEN
!                           PutProcTypeVarParam (tok,
!                                                Procedure.ProcedureType,
                                                 ParamType, isUnbounded)
                         ELSE
!                           PutProcTypeParam (tok,
!                                             Procedure.ProcedureType,
                                              ParamType, isUnbounded)
                         END
                      END
*************** BEGIN
*** 13027,13044 ****
        ConstLitSym        : RETURN( ConstLit.Scope ) |
        ConstStringSym     : RETURN( ConstString.Scope ) |
        ConstVarSym        : RETURN( ConstVar.Scope ) |
!       ParamSym           : IF Param.ShadowVar = NulSym
!                            THEN
!                               RETURN NulSym
!                            ELSE
!                               RETURN( GetScope (Param.ShadowVar) )
!                            END |
!       VarParamSym        : IF VarParam.ShadowVar = NulSym
!                            THEN
!                               RETURN NulSym
!                            ELSE
!                               RETURN( GetScope (VarParam.ShadowVar) )
!                            END |
        UndefinedSym       : RETURN( NulSym ) |
        PartialUnboundedSym: InternalError ('should not be requesting the scope of a PartialUnbounded symbol')
  
--- 13048,13055 ----
        ConstLitSym        : RETURN( ConstLit.Scope ) |
        ConstStringSym     : RETURN( ConstString.Scope ) |
        ConstVarSym        : RETURN( ConstVar.Scope ) |
!       ParamSym           : RETURN( Param.Scope ) |
!       VarParamSym        : RETURN( VarParam.Scope ) |
        UndefinedSym       : RETURN( NulSym ) |
        PartialUnboundedSym: InternalError ('should not be requesting the scope of a PartialUnbounded symbol')
  
*************** END MakeProcType ;
*** 13186,13192 ****
                        ParamType into ProcType Sym.
  *)
  
! PROCEDURE PutProcTypeParam (Sym: CARDINAL;
                              ParamType: CARDINAL; isUnbounded: BOOLEAN) ;
  VAR
     pSym  : PtrToSymbol ;
--- 13197,13204 ----
                        ParamType into ProcType Sym.
  *)
  
! PROCEDURE PutProcTypeParam (tok: CARDINAL;
!                             Sym: CARDINAL;
                              ParamType: CARDINAL; isUnbounded: BOOLEAN) ;
  VAR
     pSym  : PtrToSymbol ;
*************** BEGIN
*** 13201,13207 ****
           Type := ParamType ;
           IsUnbounded := isUnbounded ;
           ShadowVar := NulSym ;
!          InitWhereDeclared(At)
        END
     END ;
     AddParameter (Sym, ProperProcedure, ParSym)
--- 13213,13220 ----
           Type := ParamType ;
           IsUnbounded := isUnbounded ;
           ShadowVar := NulSym ;
!          FullTok := tok ;
!          At := tok
        END
     END ;
     AddParameter (Sym, ProperProcedure, ParSym)
*************** END PutProcTypeParam ;
*** 13213,13219 ****
                           ParamType into ProcType Sym.
  *)
  
! PROCEDURE PutProcTypeVarParam (Sym: CARDINAL;
                                 ParamType: CARDINAL; isUnbounded: BOOLEAN) ;
  VAR
     pSym  : PtrToSymbol ;
--- 13226,13233 ----
                           ParamType into ProcType Sym.
  *)
  
! PROCEDURE PutProcTypeVarParam (tok: CARDINAL;
!                                Sym: CARDINAL;
                                 ParamType: CARDINAL; isUnbounded: BOOLEAN) ;
  VAR
     pSym  : PtrToSymbol ;
*************** BEGIN
*** 13228,13234 ****
           Type := ParamType ;
           IsUnbounded := isUnbounded ;
           ShadowVar := NulSym ;
!          InitWhereDeclared(At)
        END
     END ;
     AddParameter (Sym, ProperProcedure, ParSym)
--- 13242,13249 ----
           Type := ParamType ;
           IsUnbounded := isUnbounded ;
           ShadowVar := NulSym ;
!          FullTok := tok ;
!          At := tok
        END
     END ;
     AddParameter (Sym, ProperProcedure, ParSym)
*************** BEGIN
*** 13918,13925 ****
        UnboundedSym       : RETURN( Unbounded.At.DefDeclared ) |
        ProcedureSym       : RETURN( Procedure.At.DefDeclared ) |
        ProcTypeSym        : RETURN( ProcType.At.DefDeclared ) |
!       ParamSym           : RETURN( Param.At.DefDeclared ) |
!       VarParamSym        : RETURN( VarParam.At.DefDeclared ) |
        ConstStringSym     : RETURN( ConstString.At.DefDeclared ) |
        ConstLitSym        : RETURN( ConstLit.At.DefDeclared ) |
        ConstVarSym        : RETURN( ConstVar.At.DefDeclared ) |
--- 13933,13940 ----
        UnboundedSym       : RETURN( Unbounded.At.DefDeclared ) |
        ProcedureSym       : RETURN( Procedure.At.DefDeclared ) |
        ProcTypeSym        : RETURN( ProcType.At.DefDeclared ) |
!       ParamSym           : RETURN( Param.At ) |
!       VarParamSym        : RETURN( VarParam.At ) |
        ConstStringSym     : RETURN( ConstString.At.DefDeclared ) |
        ConstLitSym        : RETURN( ConstLit.At.DefDeclared ) |
        ConstVarSym        : RETURN( ConstVar.At.DefDeclared ) |
*************** BEGIN
*** 13968,13975 ****
        UnboundedSym       : RETURN( Unbounded.At.ModDeclared ) |
        ProcedureSym       : RETURN( Procedure.At.ModDeclared ) |
        ProcTypeSym        : RETURN( ProcType.At.ModDeclared ) |
!       ParamSym           : RETURN( Param.At.ModDeclared ) |
!       VarParamSym        : RETURN( VarParam.At.ModDeclared ) |
        ConstStringSym     : RETURN( ConstString.At.ModDeclared ) |
        ConstLitSym        : RETURN( ConstLit.At.ModDeclared ) |
        ConstVarSym        : RETURN( ConstVar.At.ModDeclared ) |
--- 13983,13990 ----
        UnboundedSym       : RETURN( Unbounded.At.ModDeclared ) |
        ProcedureSym       : RETURN( Procedure.At.ModDeclared ) |
        ProcTypeSym        : RETURN( ProcType.At.ModDeclared ) |
!       ParamSym           : RETURN( Param.At ) |
!       VarParamSym        : RETURN( VarParam.At ) |
        ConstStringSym     : RETURN( ConstString.At.ModDeclared ) |
        ConstLitSym        : RETURN( ConstLit.At.ModDeclared ) |
        ConstVarSym        : RETURN( ConstVar.At.ModDeclared ) |
*************** BEGIN
*** 14019,14026 ****
        UnboundedSym       : Unbounded.At.DefDeclared := tok |
        ProcedureSym       : Procedure.At.DefDeclared := tok |
        ProcTypeSym        : ProcType.At.DefDeclared := tok |
-       ParamSym           : Param.At.DefDeclared := tok |
-       VarParamSym        : VarParam.At.DefDeclared := tok |
        ConstStringSym     : ConstString.At.DefDeclared := tok |
        ConstLitSym        : ConstLit.At.DefDeclared := tok |
        ConstVarSym        : ConstVar.At.DefDeclared := tok |
--- 14034,14039 ----
*************** BEGIN
*** 14067,14074 ****
        UnboundedSym       : Unbounded.At.ModDeclared := tok |
        ProcedureSym       : Procedure.At.ModDeclared := tok |
        ProcTypeSym        : ProcType.At.ModDeclared := tok |
-       ParamSym           : Param.At.ModDeclared := tok |
-       VarParamSym        : VarParam.At.ModDeclared := tok |
        ConstStringSym     : ConstString.At.ModDeclared := tok |
        ConstLitSym        : ConstLit.At.ModDeclared := tok |
        ConstVarSym        : ConstVar.At.ModDeclared := tok |
--- 14080,14085 ----
*************** BEGIN
*** 14323,14330 ****
--- 14334,14343 ----
        UnboundedSym       : RETURN( Unbounded.At.FirstUsed ) |
        ProcedureSym       : RETURN( Procedure.At.FirstUsed ) |
        ProcTypeSym        : RETURN( ProcType.At.FirstUsed ) |
+       (*
        ParamSym           : RETURN( Param.At.FirstUsed ) |
        VarParamSym        : RETURN( VarParam.At.FirstUsed ) |
+       *)
        ConstStringSym     : RETURN( ConstString.At.FirstUsed ) |
        ConstLitSym        : RETURN( ConstLit.At.FirstUsed ) |
        ConstVarSym        : RETURN( ConstVar.At.FirstUsed ) |
diff -Nrcpad gcc-15-20250719/gcc/m2/gm2-libs/M2EXCEPTION.mod gcc-15-20250726/gcc/m2/gm2-libs/M2EXCEPTION.mod
*** gcc-15-20250719/gcc/m2/gm2-libs/M2EXCEPTION.mod	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/m2/gm2-libs/M2EXCEPTION.mod	Sat Jul 26 22:32:13 2025
*************** FROM RTExceptions IMPORT EHBlock, GetExc
*** 33,39 ****
  
  (* If the program or coroutine is in the exception state then return the enumeration
     value representing the exception cause.  If it is not in the exception state then
!    raises and exception (exException).  *)
  
  PROCEDURE M2Exception () : M2Exceptions;
  VAR
--- 33,39 ----
  
  (* If the program or coroutine is in the exception state then return the enumeration
     value representing the exception cause.  If it is not in the exception state then
!    raises an exException exception.  *)
  
  PROCEDURE M2Exception () : M2Exceptions;
  VAR
*************** BEGIN
*** 45,51 ****
     IF n = MAX (CARDINAL)
     THEN
        Raise (ORD (exException), ADR (__FILE__), __LINE__, __COLUMN__, ADR (__FUNCTION__),
!              ADR ('current coroutine is not in the exceptional execution state'))
     ELSE
        RETURN VAL (M2Exceptions, n)
     END
--- 45,52 ----
     IF n = MAX (CARDINAL)
     THEN
        Raise (ORD (exException), ADR (__FILE__), __LINE__, __COLUMN__, ADR (__FUNCTION__),
!              ADR ('current coroutine is not in the exceptional execution state')) ;
!       RETURN exException
     ELSE
        RETURN VAL (M2Exceptions, n)
     END
diff -Nrcpad gcc-15-20250719/gcc/omp-offload.cc gcc-15-20250726/gcc/omp-offload.cc
*** gcc-15-20250719/gcc/omp-offload.cc	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/omp-offload.cc	Sat Jul 26 22:32:13 2025
*************** omp_discover_declare_target_tgt_fn_r (tr
*** 261,267 ****
  			       DECL_ATTRIBUTES (decl)))
  	return NULL_TREE;
  
!       if (!DECL_EXTERNAL (decl) && DECL_SAVED_TREE (decl))
  	((vec<tree> *) data)->safe_push (decl);
        DECL_ATTRIBUTES (decl) = tree_cons (id, NULL_TREE,
  					  DECL_ATTRIBUTES (decl));
--- 261,268 ----
  			       DECL_ATTRIBUTES (decl)))
  	return NULL_TREE;
  
!       if (DECL_SAVED_TREE (decl)
! 	  && (!DECL_EXTERNAL (decl) || DECL_DECLARED_INLINE_P (decl)))
  	((vec<tree> *) data)->safe_push (decl);
        DECL_ATTRIBUTES (decl) = tree_cons (id, NULL_TREE,
  					  DECL_ATTRIBUTES (decl));
diff -Nrcpad gcc-15-20250719/gcc/read-rtl-function.cc gcc-15-20250726/gcc/read-rtl-function.cc
*** gcc-15-20250719/gcc/read-rtl-function.cc	Sat Jul 19 22:32:15 2025
--- gcc-15-20250726/gcc/read-rtl-function.cc	Sat Jul 26 22:32:14 2025
*************** function_reader::read_rtx_operand_r (rtx
*** 1065,1071 ****
    if (regno == -1)
      fatal_at (loc, "unrecognized register: '%s'", name.string);
  
!   set_regno_raw (x, regno, 1);
  
    /* Consolidate singletons.  */
    x = consolidate_singletons (x);
--- 1065,1074 ----
    if (regno == -1)
      fatal_at (loc, "unrecognized register: '%s'", name.string);
  
!   int nregs = 1;
!   if (HARD_REGISTER_NUM_P (regno))
!     nregs = hard_regno_nregs (regno, GET_MODE (x));
!   set_regno_raw (x, regno, nregs);
  
    /* Consolidate singletons.  */
    x = consolidate_singletons (x);
diff -Nrcpad gcc-15-20250719/gcc/testsuite/ChangeLog gcc-15-20250726/gcc/testsuite/ChangeLog
*** gcc-15-20250719/gcc/testsuite/ChangeLog	Sat Jul 19 22:32:16 2025
--- gcc-15-20250726/gcc/testsuite/ChangeLog	Sat Jul 26 22:32:14 2025
***************
*** 1,3 ****
--- 1,193 ----
+ 2025-07-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120577
+ 	* g++.dg/cpp2a/constexpr-union9.C: New test.
+ 
+ 2025-07-24  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-23  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121055
+ 	* g++.dg/ext/is_invocable5.C: New test.
+ 
+ 2025-07-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121202
+ 	* gcc.dg/pr121202.c: New testcase.
+ 
+ 2025-07-24  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-07-24  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/120412
+ 	* g++.dg/modules/internal-14_a.C: New test.
+ 	* g++.dg/modules/internal-14_b.C: New test.
+ 	* g++.dg/modules/internal-14_c.C: New test.
+ 
+ 2025-07-23  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2025-07-18  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/117423
+ 	* gcc.dg/tree-ssa/pr117423.c: New test.
+ 
+ 2025-07-23  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	Backported from master:
+ 	2025-07-23  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	* gcc.dg/vect/pr116125.c (mem_overlap): Expand A to 10 members.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-19  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR lto/120308
+ 	* gcc.target/nvptx/abi-struct-arg.c: Add empty structure testing.
+ 	* gcc.target/nvptx/abi-struct-ret.c: Likewise.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* gcc.target/nvptx/march-map=sm_61.c: Adjust.
+ 	* gcc.target/nvptx/march-map=sm_62.c: Likewise.
+ 	* gcc.target/nvptx/march=sm_61.c: New.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* gcc.target/nvptx/mptx=5.0.c: New.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-11  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/121027
+ 	* gcc.target/aarch64/sve/acle/general/perm_1.c: New test.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* gcc.target/aarch64/sve/pfalse-binary.c: Add -funwind-tables.
+ 	* gcc.target/aarch64/sve/pfalse-binary_int_opt_n.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-binary_opt_n.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-binary_opt_single_n.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-binary_rotate.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-binary_uint64_opt_n.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-binary_uint_opt_n.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-binaryxn.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-clast.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-compare_opt_n.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-compare_wide_opt_n.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-count_pred.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-fold_left.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-load.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-load_ext.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-load_ext_gather_index.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-load_ext_gather_offset.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-load_gather_sv.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-load_gather_vs.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-load_replicate.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-prefetch.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-prefetch_gather_index.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-prefetch_gather_offset.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-ptest.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-rdffr.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-reduction.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-reduction_wide.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-shift_right_imm.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-store.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-store_scatter_index.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-store_scatter_offset.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-storexn.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-ternary_opt_n.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-ternary_rotate.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-unary.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-unary_convert_narrowt.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-unary_convertxn.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-unary_n.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-unary_pred.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-unary_to_uint.c: Likewise.
+ 	* gcc.target/aarch64/sve/pfalse-unaryxn.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-binary.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-binary_int_opt_n.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-binary_int_opt_single_n.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-binary_opt_n.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-binary_opt_single_n.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-binary_to_uint.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-binary_uint_opt_n.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-binary_wide.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-compare.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-load_ext_gather_index_restricted.c,
+ 	* gcc.target/aarch64/sve2/pfalse-load_ext_gather_offset_restricted.c,
+ 	* gcc.target/aarch64/sve2/pfalse-load_gather_sv_restricted.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-load_gather_vs.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-shift_left_imm_to_uint.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-shift_right_imm.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-store_scatter_index_restricted.c,
+ 	* gcc.target/aarch64/sve2/pfalse-store_scatter_offset_restricted.c,
+ 	* gcc.target/aarch64/sve2/pfalse-unary.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-unary_convert.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-unary_convert_narrowt.c: Likewise.
+ 	* gcc.target/aarch64/sve2/pfalse-unary_to_int.c: Likewise.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* lib/target-supports.exp (check_effective_target_aarch64_sve2p1_hw):
+ 	New proc.
+ 	* gcc.target/aarch64/sve2/dupq_1.c: Extend to big-endian.  Add
+ 	noipa attributes.
+ 	* gcc.target/aarch64/sve2/extq_1.c: Likewise.
+ 	* gcc.target/aarch64/sve2/uzpq_1.c: Likewise.
+ 	* gcc.target/aarch64/sve2/zipq_1.c: Likewise.
+ 	* gcc.target/aarch64/sve2/dupq_1_run.c: New test.
+ 	* gcc.target/aarch64/sve2/extq_1_run.c: Likewise.
+ 	* gcc.target/aarch64/sve2/uzpq_1_run.c: Likewise.
+ 	* gcc.target/aarch64/sve2/zipq_1_run.c: Likewise.
+ 
+ 2025-07-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* gcc.dg/rtl/aarch64/vec-series-1.c: New test.
+ 	* gcc.dg/rtl/aarch64/vec-series-2.c: Likewise.
+ 	* gcc.target/aarch64/sve/acle/general/dupq_2.c: Fix expected
+ 	output for this big-endian test.
+ 	* gcc.target/aarch64/sve/acle/general/dupq_4.c: Likewise.
+ 	* gcc.target/aarch64/sve/vec_init_3.c: Restrict to little-endian
+ 	targets and add more tests.
+ 	* gcc.target/aarch64/sve/vec_init_4.c: New big-endian version
+ 	of vec_init_3.c.
+ 
+ 2025-07-20  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-07-18  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/121145
+ 	* gfortran.dg/pointer_check_15.f90: New test.
+ 
  2025-07-18  Thomas Schwinge  <tschwinge@baylibre.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250719/gcc/testsuite/g++.dg/cpp2a/constexpr-union9.C gcc-15-20250726/gcc/testsuite/g++.dg/cpp2a/constexpr-union9.C
*** gcc-15-20250719/gcc/testsuite/g++.dg/cpp2a/constexpr-union9.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/g++.dg/cpp2a/constexpr-union9.C	Sat Jul 26 22:32:24 2025
***************
*** 0 ****
--- 1,33 ----
+ // PR c++/120577
+ // { dg-do compile { target c++20 } }
+ 
+ template <class _Tp> struct optional {
+   union {
+     _Tp __val_;
+   };
+   template <class... _Args>
+   constexpr optional(_Args... __args)
+       : __val_(__args...) {}
+ };
+ template <class _Tp, class... _Args>
+ constexpr optional<_Tp> make_optional(_Args... __args) {
+   return optional<_Tp>(__args...);
+ }
+ 
+ struct __non_trivial_if {
+   constexpr __non_trivial_if() {}
+ };
+ struct allocator : __non_trivial_if {};
+ struct __padding {};
+ struct __short {
+   [[__no_unique_address__]] __padding __padding_;
+   int __data_;
+ };
+ struct basic_string {
+   union {
+     __short __s;
+   };
+   [[__no_unique_address__]] allocator __alloc_;
+   constexpr basic_string(int, int) {}
+ };
+ auto opt = make_optional<basic_string>(4, 'X');
diff -Nrcpad gcc-15-20250719/gcc/testsuite/g++.dg/ext/is_invocable5.C gcc-15-20250726/gcc/testsuite/g++.dg/ext/is_invocable5.C
*** gcc-15-20250719/gcc/testsuite/g++.dg/ext/is_invocable5.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/g++.dg/ext/is_invocable5.C	Sat Jul 26 22:32:25 2025
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/121055
+ // { dg-do compile { target c++11 } }
+ // { dg-skip-if "requires hosted libstdc++ for functional function" { ! hostedlib } }
+ 
+ #include <functional>
+ 
+ #define SA(X) static_assert((X),#X)
+ 
+ struct F;
+ 
+ SA( __is_invocable(void (F::*)() &, std::reference_wrapper<F>) );
+ SA( ! __is_invocable(void (F::*)() &&, std::reference_wrapper<F>) );
+ 
+ SA( __is_invocable(void (F::*)(int) &, std::reference_wrapper<F>, int) );
+ SA( ! __is_invocable(void (F::*)(int) &&, std::reference_wrapper<F>, int) );
diff -Nrcpad gcc-15-20250719/gcc/testsuite/g++.dg/modules/internal-14_a.C gcc-15-20250726/gcc/testsuite/g++.dg/modules/internal-14_a.C
*** gcc-15-20250719/gcc/testsuite/g++.dg/modules/internal-14_a.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/g++.dg/modules/internal-14_a.C	Sat Jul 26 22:32:27 2025
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/120412
+ // { dg-additional-options "-fmodules -std=c++20 -Wtemplate-names-tu-local" }
+ // { dg-module-cmi m:part }
+ 
+ export module m:part;
+ 
+ export template <typename F>
+ auto fun1(F) {
+   return true;
+ }
+ 
+ using Dodgy = decltype([]{});
+ 
+ export template <typename T>
+ auto fun2(T&&) {  // { dg-warning "TU-local" }
+   return fun1(Dodgy{});
+ }
diff -Nrcpad gcc-15-20250719/gcc/testsuite/g++.dg/modules/internal-14_b.C gcc-15-20250726/gcc/testsuite/g++.dg/modules/internal-14_b.C
*** gcc-15-20250719/gcc/testsuite/g++.dg/modules/internal-14_b.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/g++.dg/modules/internal-14_b.C	Sat Jul 26 22:32:27 2025
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/120412
+ // { dg-additional-options "-fmodules -std=c++20 -Wtemplate-names-tu-local" }
+ // { dg-module-cmi m }
+ 
+ export module m;
+ export import :part;
diff -Nrcpad gcc-15-20250719/gcc/testsuite/g++.dg/modules/internal-14_c.C gcc-15-20250726/gcc/testsuite/g++.dg/modules/internal-14_c.C
*** gcc-15-20250719/gcc/testsuite/g++.dg/modules/internal-14_c.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/g++.dg/modules/internal-14_c.C	Sat Jul 26 22:32:27 2025
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/120412
+ // { dg-additional-options "-fmodules -std=c++20" }
+ 
+ import m;
+ 
+ int main() {
+   // { dg-error "instantiation exposes TU-local entity '(fun1|Dodgy)'" "" { target *-*-* } 0 }
+   fun2(123);  // { dg-message "required from here" }
+ }
diff -Nrcpad gcc-15-20250719/gcc/testsuite/g++.dg/torture/pr120119-1.C gcc-15-20250726/gcc/testsuite/g++.dg/torture/pr120119-1.C
*** gcc-15-20250719/gcc/testsuite/g++.dg/torture/pr120119-1.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/g++.dg/torture/pr120119-1.C	Sat Jul 26 22:32:30 2025
***************
*** 0 ****
--- 1,15 ----
+ // { dg-do compile }
+ // { dg-additional-options "-mcpu=cortex-a57" { target aarch64*-*-* } }
+ 
+ // PR target/120119
+ 
+ struct a {
+   float operator()(int b, int c) { return d[c * 4 + b]; }
+   float *d;
+ };
+ float e(float *);
+ auto f(a b) {
+   float g[]{b(1, 1), b(2, 1), b(3, 1), b(1, 2), b(2, 2), b(3, 2), b(1, 3),
+             b(2, 3), b(3, 3), b(3, 2), b(1, 3), b(2, 3), b(3, 3)};
+   return b.d[0] * e(g);
+ }
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.dg/pr121202.c gcc-15-20250726/gcc/testsuite/gcc.dg/pr121202.c
*** gcc-15-20250719/gcc/testsuite/gcc.dg/pr121202.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gcc.dg/pr121202.c	Sat Jul 26 22:32:46 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fno-tree-copy-prop" } */
+ 
+ int a, b, c;
+ int e(int f, int g) { return f >> g; }
+ int h(int f) { return a > 1 ? 0 : f << a; }
+ int main() {
+   while (c--)
+     b = e(h(1), a);
+   return 0;
+ }
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.dg/rtl/aarch64/vec-series-1.c gcc-15-20250726/gcc/testsuite/gcc.dg/rtl/aarch64/vec-series-1.c
*** gcc-15-20250719/gcc/testsuite/gcc.dg/rtl/aarch64/vec-series-1.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gcc.dg/rtl/aarch64/vec-series-1.c	Sat Jul 26 22:32:46 2025
***************
*** 0 ****
--- 1,35 ----
+ /* { dg-do compile { target aarch64*-*-* } } */
+ /* { dg-options "-O2 -msve-vector-bits=256 -mlittle-endian" } */
+ 
+ #include <arm_sve.h>
+ 
+ #pragma GCC target "+sve"
+ 
+ svint64x2_t __RTL (startwith ("vregs")) foo ()
+ {
+   (function "foo"
+     (insn-chain
+       (block 2
+ 	(edge-from entry (flags "FALLTHRU"))
+ 	(cnote 1 [bb 2] NOTE_INSN_BASIC_BLOCK)
+         (cnote 2 NOTE_INSN_FUNCTION_BEG)
+ 	(insn 3 (set (reg:VNx4DI <0>)
+ 		     (const_vector:VNx4DI [(const_int 11)
+ 					   (const_int 12)
+ 					   (const_int 13)
+ 					   (const_int 14)
+ 					   (const_int 15)
+ 					   (const_int 16)
+ 					   (const_int 17)
+ 					   (const_int 18)])))
+ 	(insn 4 (set (reg:VNx4DI v0) (reg:VNx4DI <0>)))
+         (insn 5 (use (reg:VNx4DI v0)))
+ 	(edge-to exit (flags "FALLTHRU"))
+       ) ;; block 2
+     ) ;; insn-chain
+     (crtl (return_rtx (reg:VNx4DI v0)))
+   ) ;; function
+ }
+ 
+ /* { dg-final { scan-assembler {\tindex\tz0\.d, #11, #1\n} } } */
+ /* { dg-final { scan-assembler {\tindex\tz1\.d, #15, #1\n} } } */
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.dg/rtl/aarch64/vec-series-2.c gcc-15-20250726/gcc/testsuite/gcc.dg/rtl/aarch64/vec-series-2.c
*** gcc-15-20250719/gcc/testsuite/gcc.dg/rtl/aarch64/vec-series-2.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gcc.dg/rtl/aarch64/vec-series-2.c	Sat Jul 26 22:32:46 2025
***************
*** 0 ****
--- 1,35 ----
+ /* { dg-do compile { target aarch64*-*-* } } */
+ /* { dg-options "-O2 -msve-vector-bits=256 -mlittle-endian" } */
+ 
+ #include <arm_sve.h>
+ 
+ #pragma GCC target "+sve"
+ 
+ svint64x2_t __RTL (startwith ("vregs")) foo ()
+ {
+   (function "foo"
+     (insn-chain
+       (block 2
+ 	(edge-from entry (flags "FALLTHRU"))
+ 	(cnote 1 [bb 2] NOTE_INSN_BASIC_BLOCK)
+         (cnote 2 NOTE_INSN_FUNCTION_BEG)
+ 	(insn 3 (set (reg:VNx4DI <0>)
+ 		     (const_vector:VNx4DI [(const_int -16)
+ 					   (const_int -15)
+ 					   (const_int -14)
+ 					   (const_int -13)
+ 					   (const_int -12)
+ 					   (const_int -11)
+ 					   (const_int -10)
+ 					   (const_int -9)])))
+ 	(insn 4 (set (reg:VNx4DI v0) (reg:VNx4DI <0>)))
+         (insn 5 (use (reg:VNx4DI v0)))
+ 	(edge-to exit (flags "FALLTHRU"))
+       ) ;; block 2
+     ) ;; insn-chain
+     (crtl (return_rtx (reg:VNx4DI v0)))
+   ) ;; function
+ }
+ 
+ /* { dg-final { scan-assembler {\tindex\tz0\.d, #-16, #1\n} } } */
+ /* { dg-final { scan-assembler {\tindex\tz1\.d, #-12, #1\n} } } */
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.dg/tree-ssa/pr117423.c gcc-15-20250726/gcc/testsuite/gcc.dg/tree-ssa/pr117423.c
*** gcc-15-20250719/gcc/testsuite/gcc.dg/tree-ssa/pr117423.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gcc.dg/tree-ssa/pr117423.c	Sat Jul 26 22:32:51 2025
***************
*** 0 ****
--- 1,49 ----
+ /* { dg-do run } */
+ /* { dg-options "-O1" } */
+ 
+ struct s4 {
+     int _0;
+ };
+ struct s1 {
+     unsigned char _4;
+     long _1;
+ };
+ struct s2 {
+     union {
+         struct s3 {
+             unsigned char _1;
+             struct s4 _0;
+         } var_0;
+         struct s1 var_1;
+     } DATA;
+ };
+ int f1(int arg0) { return arg0 > 12345; }
+ __attribute__((noinline))
+ struct s4 f2(int arg0) {
+     struct s4 rv = {arg0};
+     return rv;
+ }
+ struct s2 f3(int arg0) {
+     struct s2 rv;
+     struct s1 var6 = {0};
+     struct s4 var7;
+     if (f1(arg0)) {
+         rv.DATA.var_1 = var6;
+         return rv;
+     } else {
+         rv.DATA.var_0._1 = 2;
+         var7 = f2(arg0);
+         rv.DATA.var_0._0 = var7;
+         return rv;
+     }
+ }
+ int main() {
+   if (f3(12345).DATA.var_0._0._0 == 12345)
+     ;
+   else
+     __builtin_abort();
+   if (f3(12344).DATA.var_0._0._0 == 12344)
+     ;
+   else
+     __builtin_abort();
+ }
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.dg/vect/pr116125.c gcc-15-20250726/gcc/testsuite/gcc.dg/vect/pr116125.c
*** gcc-15-20250719/gcc/testsuite/gcc.dg/vect/pr116125.c	Sat Jul 19 22:32:25 2025
--- gcc-15-20250726/gcc/testsuite/gcc.dg/vect/pr116125.c	Sat Jul 26 22:32:52 2025
*************** main (void)
*** 17,28 ****
  {
    check_vect ();
  
!   struct st a[9] = {};
  
!   // input a = 0, 0, 0, 0, 0, 0, 0, 0, 0
    mem_overlap (&a[1], a);
  
!   // output a = 0, 1, 2, 3, 4, 5, 6, 7, 8
    if (a[2].num == 2)
      return 0;
    else
--- 17,28 ----
  {
    check_vect ();
  
!   struct st a[10] = {};
  
!   // input a = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
    mem_overlap (&a[1], a);
  
!   // output a = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    if (a[2].num == 2)
      return 0;
    else
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_2.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_2.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_2.c	Sat Jul 19 22:32:39 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_2.c	Sat Jul 26 22:32:58 2025
*************** dupq (int x)
*** 10,15 ****
    return svdupq_s32 (x, 1, 2, 3);
  }
  
! /* { dg-final { scan-assembler {\tindex\tz[0-9]+\.s, #3, #-1} } } */
  /* { dg-final { scan-assembler {\tins\tv[0-9]+\.s\[0\], w0\n} } } */
  /* { dg-final { scan-assembler {\tdup\tz[0-9]+\.q, z[0-9]+\.q\[0\]\n} } } */
--- 10,15 ----
    return svdupq_s32 (x, 1, 2, 3);
  }
  
! /* { dg-final { scan-assembler {\tindex\tz[0-9]+\.s, #0, #1\n} } } */
  /* { dg-final { scan-assembler {\tins\tv[0-9]+\.s\[0\], w0\n} } } */
  /* { dg-final { scan-assembler {\tdup\tz[0-9]+\.q, z[0-9]+\.q\[0\]\n} } } */
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_4.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_4.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_4.c	Sat Jul 19 22:32:39 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/acle/general/dupq_4.c	Sat Jul 26 22:32:58 2025
*************** dupq (int x)
*** 10,15 ****
    return svdupq_s32 (0, 1, x, 3);
  }
  
! /* { dg-final { scan-assembler {\tindex\tz[0-9]+\.s, #3, #-1} } } */
  /* { dg-final { scan-assembler {\tins\tv[0-9]+\.s\[2\], w0\n} } } */
  /* { dg-final { scan-assembler {\tdup\tz[0-9]+\.q, z[0-9]+\.q\[0\]\n} } } */
--- 10,15 ----
    return svdupq_s32 (0, 1, x, 3);
  }
  
! /* { dg-final { scan-assembler {\tindex\tz[0-9]+\.s, #0, #1\n} } } */
  /* { dg-final { scan-assembler {\tins\tv[0-9]+\.s\[2\], w0\n} } } */
  /* { dg-final { scan-assembler {\tdup\tz[0-9]+\.q, z[0-9]+\.q\[0\]\n} } } */
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_1.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_1.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_1.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_1.c	Sat Jul 26 22:32:58 2025
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-options "-O2 -msve-vector-bits=256" } */
+ 
+ #include <arm_sve.h>
+ typedef svbfloat16_t vls_bfloat16_t __attribute__((arm_sve_vector_bits(32 * 8)));
+ svbfloat16_t foo(vls_bfloat16_t a, vls_bfloat16_t b)
+ {
+   svbfloat16_t zero = svreinterpret_bf16_f32 (svdup_n_f32 (0.0f));
+   return svzip2_bf16(zero, svuzp1_bf16(a,b));
+ }
+ 
+ 
+ /* { dg-final { scan-assembler-times {\tuzp1\t} 1 } } */
+ /* { dg-final { scan-assembler-times {\tzip2\t} 1 } } */
+ /* { dg-final { scan-assembler-not {\ttbl\t} } } */
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_int_opt_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_int_opt_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_int_opt_n.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_int_opt_n.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_opt_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_opt_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_opt_n.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_opt_n.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_opt_single_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_opt_single_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_opt_single_n.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_opt_single_n.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_rotate.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_rotate.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_rotate.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_rotate.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_uint64_opt_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_uint64_opt_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_uint64_opt_n.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_uint64_opt_n.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_uint_opt_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_uint_opt_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_uint_opt_n.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binary_uint_opt_n.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binaryxn.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binaryxn.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binaryxn.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-binaryxn.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-clast.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-clast.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-clast.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-clast.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_opt_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_opt_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_opt_n.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_opt_n.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_wide_opt_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_wide_opt_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_wide_opt_n.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-compare_wide_opt_n.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-count_pred.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-count_pred.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-count_pred.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-count_pred.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-unary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-unary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-fold_left.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-fold_left.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-fold_left.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-fold_left.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext_gather_index.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext_gather_index.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext_gather_index.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext_gather_index.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext_gather_offset.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext_gather_offset.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext_gather_offset.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_ext_gather_offset.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_gather_sv.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_gather_sv.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_gather_sv.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_gather_sv.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_gather_vs.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_gather_vs.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_gather_vs.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_gather_vs.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_replicate.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_replicate.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_replicate.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-load_replicate.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -march=armv8.2-a+sve+f64mm" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -march=armv8.2-a+sve+f64mm -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch_gather_index.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch_gather_index.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch_gather_index.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch_gather_index.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch_gather_offset.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch_gather_offset.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch_gather_offset.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-prefetch_gather_offset.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-ptest.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-ptest.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-ptest.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-ptest.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-unary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-unary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-rdffr.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-rdffr.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-rdffr.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-rdffr.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-reduction.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-reduction.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-reduction.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-reduction.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -fdump-tree-optimized" } */
  
  #include "../pfalse-unary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -fdump-tree-optimized -funwind-tables" } */
  
  #include "../pfalse-unary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-reduction_wide.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-reduction_wide.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-reduction_wide.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-reduction_wide.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-unary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-unary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-shift_right_imm.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-shift_right_imm.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-shift_right_imm.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-shift_right_imm.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-store.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-store.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-store.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-store.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-store_scatter_index.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-store_scatter_index.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-store_scatter_index.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-store_scatter_index.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-store_scatter_offset.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-store_scatter_offset.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-store_scatter_offset.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-store_scatter_offset.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-storexn.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-storexn.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-storexn.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-storexn.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-ternary_opt_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-ternary_opt_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-ternary_opt_n.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-ternary_opt_n.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-ternary_rotate.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-ternary_rotate.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-ternary_rotate.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-ternary_rotate.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-unary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-unary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_convert_narrowt.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_convert_narrowt.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_convert_narrowt.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_convert_narrowt.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -march=armv8.2-a+sve+bf16" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -march=armv8.2-a+sve+bf16 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_convertxn.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_convertxn.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_convertxn.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_convertxn.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -march=armv8.2-a+sve+bf16" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -march=armv8.2-a+sve+bf16 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_n.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_n.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_pred.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_pred.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_pred.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_pred.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-unary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-unary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_to_uint.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_to_uint.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_to_uint.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unary_to_uint.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-unary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-unary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unaryxn.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unaryxn.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unaryxn.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/pfalse-unaryxn.c	Sat Jul 26 22:32:58 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-unary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-unary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/vec_init_3.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/vec_init_3.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/vec_init_3.c	Sat Jul 19 22:32:40 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/vec_init_3.c	Sat Jul 26 22:32:58 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2" } */
  /* { dg-final { check-function-bodies "**" "" "" } } */
  
  typedef char v16qi __attribute__ ((vector_size (16)));
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mlittle-endian" } */
  /* { dg-final { check-function-bodies "**" "" "" } } */
  
  typedef char v16qi __attribute__ ((vector_size (16)));
*************** typedef short v8hi __attribute__ ((vecto
*** 8,14 ****
  typedef short v4hi __attribute__ ((vector_size (8)));
  typedef int v4si __attribute__ ((vector_size (16)));
  typedef int v2si __attribute__ ((vector_size (8)));
! typedef long v2di __attribute__ ((vector_size (16)));
  
  /*
  ** f_v16qi:
--- 8,14 ----
  typedef short v4hi __attribute__ ((vector_size (8)));
  typedef int v4si __attribute__ ((vector_size (16)));
  typedef int v2si __attribute__ ((vector_size (8)));
! typedef long long v2di __attribute__ ((vector_size (16)));
  
  /*
  ** f_v16qi:
*************** g_v4si (void)
*** 97,99 ****
--- 97,209 ----
  {
    return (v4si){ 3, -1, -5, -9 };
  }
+ 
+ /*
+ ** g_min_1:
+ **	index	z0\.s, #-16, #1
+ **	ret
+ */
+ v4si
+ g_min_1 (void)
+ {
+   return (v4si){ -16, -15, -14, -13 };
+ }
+ 
+ /*
+ ** g_min_min:
+ **	index	z0\.s, #-16, #-16
+ **	ret
+ */
+ v4si
+ g_min_min (void)
+ {
+   return (v4si){ -16, -32, -48, -64 };
+ }
+ 
+ /*
+ ** g_min_max:
+ **	index	z0\.s, #-16, #15
+ **	ret
+ */
+ v4si
+ g_min_max (void)
+ {
+   return (v4si){ -16, -1, 14, 29 };
+ }
+ 
+ /*
+ ** g_max_1:
+ **	index	z0\.s, #15, #1
+ **	ret
+ */
+ v4si
+ g_max_1 (void)
+ {
+   return (v4si){ 15, 16, 17, 18 };
+ }
+ 
+ /*
+ ** g_max_min:
+ **	index	z0\.s, #15, #-16
+ **	ret
+ */
+ v4si
+ g_max_min (void)
+ {
+   return (v4si){ 15, -1, -17, -33 };
+ }
+ 
+ /*
+ ** g_max_max:
+ **	index	z0\.s, #15, #15
+ **	ret
+ */
+ v4si
+ g_max_max (void)
+ {
+   return (v4si){ 15, 30, 45, 60 };
+ }
+ 
+ /*
+ ** g_ob_1:
+ **	((?!index).)*
+ **	ret
+ */
+ v4si
+ g_ob_1 (void)
+ {
+   return (v4si){ -17, -16, -15, -14 };
+ }
+ 
+ /*
+ ** g_ob_2:
+ **	((?!index).)*
+ **	ret
+ */
+ v4si
+ g_ob_2 (void)
+ {
+   return (v4si){ 16, 17, 18, 19 };
+ }
+ 
+ /*
+ ** g_ob_3:
+ **	((?!index).)*
+ **	ret
+ */
+ v4si
+ g_ob_3 (void)
+ {
+   return (v4si){ 0, -17, -34, -51 };
+ }
+ 
+ /*
+ ** g_ob_4:
+ **	((?!index).)*
+ **	ret
+ */
+ v4si
+ g_ob_4 (void)
+ {
+   return (v4si){ 0, 16, 32, 48 };
+ }
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/vec_init_4.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/vec_init_4.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve/vec_init_4.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve/vec_init_4.c	Sat Jul 26 22:32:58 2025
***************
*** 0 ****
--- 1,209 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mbig-endian" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ typedef char v16qi __attribute__ ((vector_size (16)));
+ typedef char v8qi __attribute__ ((vector_size (8)));
+ typedef short v8hi __attribute__ ((vector_size (16)));
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef int v4si __attribute__ ((vector_size (16)));
+ typedef int v2si __attribute__ ((vector_size (8)));
+ typedef long long v2di __attribute__ ((vector_size (16)));
+ 
+ /*
+ ** f_v16qi:
+ **	index	z0\.b, #15, #-1
+ **	ret
+ */
+ v16qi
+ f_v16qi (void)
+ {
+   return (v16qi){ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
+ }
+ 
+ /*
+ ** f_v8qi:
+ **	index	z0\.b, #7, #-1
+ **	ret
+ */
+ v8qi
+ f_v8qi (void)
+ {
+   return (v8qi){ 0, 1, 2, 3, 4, 5, 6, 7 };
+ }
+ 
+ /*
+ ** f_v8hi:
+ **	index	z0\.h, #7, #-1
+ **	ret
+ */
+ v8hi
+ f_v8hi (void)
+ {
+   return (v8hi){ 0, 1, 2, 3, 4, 5, 6, 7 };
+ }
+ 
+ /*
+ ** f_v4hi:
+ **	index	z0\.h, #3, #-1
+ **	ret
+ */
+ v4hi
+ f_v4hi (void)
+ {
+   return (v4hi){ 0, 1, 2, 3 };
+ }
+ 
+ /*
+ ** f_v4si:
+ **	index	z0\.s, #3, #-1
+ **	ret
+ */
+ v4si
+ f_v4si (void)
+ {
+   return (v4si){ 0, 1, 2, 3 };
+ }
+ 
+ /*
+ ** f_v2si:
+ **	index	z0\.s, #1, #-1
+ **	ret
+ */
+ v2si
+ f_v2si (void)
+ {
+   return (v2si){ 0, 1 };
+ }
+ 
+ /*
+ ** f_v2di:
+ **	index	z0\.d, #1, #-1
+ **	ret
+ */
+ v2di
+ f_v2di (void)
+ {
+   return (v2di){ 0, 1 };
+ }
+ 
+ /*
+ ** g_v4si:
+ **	index	z0\.s, #-9, #4
+ **	ret
+ */
+ v4si
+ g_v4si (void)
+ {
+   return (v4si){ 3, -1, -5, -9 };
+ }
+ 
+ /*
+ ** g_min_1:
+ **	index	z0\.s, #-16, #1
+ **	ret
+ */
+ v4si
+ g_min_1 (void)
+ {
+   return (v4si){ -13, -14, -15, -16 };
+ }
+ 
+ /*
+ ** g_min_min:
+ **	index	z0\.s, #-16, #-16
+ **	ret
+ */
+ v4si
+ g_min_min (void)
+ {
+   return (v4si){ -64, -48, -32, -16 };
+ }
+ 
+ /*
+ ** g_min_max:
+ **	index	z0\.s, #-16, #15
+ **	ret
+ */
+ v4si
+ g_min_max (void)
+ {
+   return (v4si){ 29, 14, -1, -16 };
+ }
+ 
+ /*
+ ** g_max_1:
+ **	index	z0\.s, #15, #1
+ **	ret
+ */
+ v4si
+ g_max_1 (void)
+ {
+   return (v4si){ 18, 17, 16, 15 };
+ }
+ 
+ /*
+ ** g_max_min:
+ **	index	z0\.s, #15, #-16
+ **	ret
+ */
+ v4si
+ g_max_min (void)
+ {
+   return (v4si){ -33, -17, -1, 15 };
+ }
+ 
+ /*
+ ** g_max_max:
+ **	index	z0\.s, #15, #15
+ **	ret
+ */
+ v4si
+ g_max_max (void)
+ {
+   return (v4si){ 60, 45, 30, 15 };
+ }
+ 
+ /*
+ ** g_ob_1:
+ **	((?!index).)*
+ **	ret
+ */
+ v4si
+ g_ob_1 (void)
+ {
+   return (v4si){ -14, -15, -16, -17 };
+ }
+ 
+ /*
+ ** g_ob_2:
+ **	((?!index).)*
+ **	ret
+ */
+ v4si
+ g_ob_2 (void)
+ {
+   return (v4si){ 19, 18, 17, 16 };
+ }
+ 
+ /*
+ ** g_ob_3:
+ **	((?!index).)*
+ **	ret
+ */
+ v4si
+ g_ob_3 (void)
+ {
+   return (v4si){ -51, -34, -17, 0 };
+ }
+ 
+ /*
+ ** g_ob_4:
+ **	((?!index).)*
+ **	ret
+ */
+ v4si
+ g_ob_4 (void)
+ {
+   return (v4si){ 48, 32, 16, 0 };
+ }
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/dupq_1.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/dupq_1.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/dupq_1.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/dupq_1.c	Sat Jul 26 22:32:59 2025
***************
*** 1,5 ****
  /* { dg-options "-O2 -msve-vector-bits=256" } */
! /* { dg-final { check-function-bodies "**" "" "" { target { le } } } } */
  
  #include <arm_sve.h>
  
--- 1,5 ----
  /* { dg-options "-O2 -msve-vector-bits=256" } */
! /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include <arm_sve.h>
  
*************** typedef svuint64_t fixed_uint64_t __attr
*** 15,21 ****
  **	trn1	z0\.d, z0\.d, z0\.d
  **	ret
  */
! fixed_uint64_t
  f1 (fixed_uint64_t z0)
  {
    return __builtin_shufflevector (z0, z0, 0, 0, 2, 2);
--- 15,21 ----
  **	trn1	z0\.d, z0\.d, z0\.d
  **	ret
  */
! [[gnu::noipa]] fixed_uint64_t
  f1 (fixed_uint64_t z0)
  {
    return __builtin_shufflevector (z0, z0, 0, 0, 2, 2);
*************** f1 (fixed_uint64_t z0)
*** 26,32 ****
  **	trn2	z0\.d, z0\.d, z0\.d
  **	ret
  */
! fixed_uint64_t
  f2 (fixed_uint64_t z0)
  {
    return __builtin_shufflevector (z0, z0, 1, 1, 3, 3);
--- 26,32 ----
  **	trn2	z0\.d, z0\.d, z0\.d
  **	ret
  */
! [[gnu::noipa]] fixed_uint64_t
  f2 (fixed_uint64_t z0)
  {
    return __builtin_shufflevector (z0, z0, 1, 1, 3, 3);
*************** f2 (fixed_uint64_t z0)
*** 37,43 ****
  **	dupq	z0\.s, z0\.s\[0\]
  **	ret
  */
! fixed_int32_t
  f3 (fixed_int32_t z0)
  {
    return __builtin_shufflevector (z0, z0, 0, 0, 0, 0, 4, 4, 4, 4);
--- 37,43 ----
  **	dupq	z0\.s, z0\.s\[0\]
  **	ret
  */
! [[gnu::noipa]] fixed_int32_t
  f3 (fixed_int32_t z0)
  {
    return __builtin_shufflevector (z0, z0, 0, 0, 0, 0, 4, 4, 4, 4);
*************** f3 (fixed_int32_t z0)
*** 48,54 ****
  **	dupq	z0\.s, z0\.s\[1\]
  **	ret
  */
! fixed_int32_t
  f4 (fixed_int32_t z0)
  {
    return __builtin_shufflevector (z0, z0, 1, 1, 1, 1, 5, 5, 5, 5);
--- 48,54 ----
  **	dupq	z0\.s, z0\.s\[1\]
  **	ret
  */
! [[gnu::noipa]] fixed_int32_t
  f4 (fixed_int32_t z0)
  {
    return __builtin_shufflevector (z0, z0, 1, 1, 1, 1, 5, 5, 5, 5);
*************** f4 (fixed_int32_t z0)
*** 59,65 ****
  **	dupq	z0\.s, z0\.s\[2\]
  **	ret
  */
! fixed_int32_t
  f5 (fixed_int32_t z0)
  {
    return __builtin_shufflevector (z0, z0, 2, 2, 2, 2, 6, 6, 6, 6);
--- 59,65 ----
  **	dupq	z0\.s, z0\.s\[2\]
  **	ret
  */
! [[gnu::noipa]] fixed_int32_t
  f5 (fixed_int32_t z0)
  {
    return __builtin_shufflevector (z0, z0, 2, 2, 2, 2, 6, 6, 6, 6);
*************** f5 (fixed_int32_t z0)
*** 70,76 ****
  **	dupq	z0\.s, z0\.s\[3\]
  **	ret
  */
! fixed_int32_t
  f6 (fixed_int32_t z0)
  {
    return __builtin_shufflevector (z0, z0, 3, 3, 3, 3, 7, 7, 7, 7);
--- 70,76 ----
  **	dupq	z0\.s, z0\.s\[3\]
  **	ret
  */
! [[gnu::noipa]] fixed_int32_t
  f6 (fixed_int32_t z0)
  {
    return __builtin_shufflevector (z0, z0, 3, 3, 3, 3, 7, 7, 7, 7);
*************** f6 (fixed_int32_t z0)
*** 81,87 ****
  **	dupq	z0\.h, z0\.h\[0\]
  **	ret
  */
! fixed_uint16_t
  f7 (fixed_uint16_t z0)
  {
    return __builtin_shufflevector (z0, z0,
--- 81,87 ----
  **	dupq	z0\.h, z0\.h\[0\]
  **	ret
  */
! [[gnu::noipa]] fixed_uint16_t
  f7 (fixed_uint16_t z0)
  {
    return __builtin_shufflevector (z0, z0,
*************** f7 (fixed_uint16_t z0)
*** 95,101 ****
  **	dupq	z0\.h, z0\.h\[5\]
  **	ret
  */
! fixed_uint16_t
  f8 (fixed_uint16_t z0)
  {
    return __builtin_shufflevector (z0, z0,
--- 95,101 ----
  **	dupq	z0\.h, z0\.h\[5\]
  **	ret
  */
! [[gnu::noipa]] fixed_uint16_t
  f8 (fixed_uint16_t z0)
  {
    return __builtin_shufflevector (z0, z0,
*************** f8 (fixed_uint16_t z0)
*** 108,114 ****
  **	dupq	z0\.h, z0\.h\[7\]
  **	ret
  */
! fixed_uint16_t
  f9 (fixed_uint16_t z0)
  {
    return __builtin_shufflevector (z0, z0,
--- 108,114 ----
  **	dupq	z0\.h, z0\.h\[7\]
  **	ret
  */
! [[gnu::noipa]] fixed_uint16_t
  f9 (fixed_uint16_t z0)
  {
    return __builtin_shufflevector (z0, z0,
*************** f9 (fixed_uint16_t z0)
*** 121,127 ****
  **	dupq	z0\.b, z0\.b\[0\]
  **	ret
  */
! fixed_uint8_t
  f10 (fixed_uint8_t z0)
  {
    return __builtin_shufflevector (z0, z0,
--- 121,127 ----
  **	dupq	z0\.b, z0\.b\[0\]
  **	ret
  */
! [[gnu::noipa]] fixed_uint8_t
  f10 (fixed_uint8_t z0)
  {
    return __builtin_shufflevector (z0, z0,
*************** f10 (fixed_uint8_t z0)
*** 136,142 ****
  **	dupq	z0\.b, z0\.b\[13\]
  **	ret
  */
! fixed_uint8_t
  f11 (fixed_uint8_t z0)
  {
    return __builtin_shufflevector (z0, z0,
--- 136,142 ----
  **	dupq	z0\.b, z0\.b\[13\]
  **	ret
  */
! [[gnu::noipa]] fixed_uint8_t
  f11 (fixed_uint8_t z0)
  {
    return __builtin_shufflevector (z0, z0,
*************** f11 (fixed_uint8_t z0)
*** 151,157 ****
  **	dupq	z0\.b, z0\.b\[15\]
  **	ret
  */
! fixed_uint8_t
  f12 (fixed_uint8_t z0)
  {
    return __builtin_shufflevector (z0, z0,
--- 151,157 ----
  **	dupq	z0\.b, z0\.b\[15\]
  **	ret
  */
! [[gnu::noipa]] fixed_uint8_t
  f12 (fixed_uint8_t z0)
  {
    return __builtin_shufflevector (z0, z0,
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/dupq_1_run.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/dupq_1_run.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/dupq_1_run.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/dupq_1_run.c	Sat Jul 26 22:32:59 2025
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do run { target { aarch64_sve256_hw && aarch64_sve2p1_hw } } } */
+ /* { dg-options "-O2 -msve-vector-bits=256" } */
+ 
+ #include "dupq_1.c"
+ 
+ #define TEST(A, B)							\
+   do {									\
+     typeof(B) actual_ = (A);						\
+     if (__builtin_memcmp (&actual_, &(B), sizeof (actual_)) != 0)	\
+       __builtin_abort ();						\
+   } while (0)
+ 
+ int
+ main ()
+ {
+   fixed_uint64_t a64 = { 0x1122, -1, 0x5566, -2 };
+   fixed_int32_t a32 = { 0x1122, -0x3344, 0x5566, -0x7788,
+ 			0x99aa, -0xbbcc, 0xddee, -0xff00 };
+   fixed_uint16_t a16 = { 0x9a12, 0xbc34, 0xde56, 0xf078,
+ 			 0x00ff, 0x11ee, 0x22dd, 0x33cc,
+ 			 0x44bb, 0x55aa, 0x6699, 0x7788,
+ 			 0xfe01, 0xdc23, 0xba45, 0x9867 };
+   fixed_uint8_t a8 = { 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x70,
+ 		       0x89, 0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef, 0xf8,
+ 		       0xfe, 0xed, 0xdc, 0xcb, 0xba, 0xa9, 0x98, 0x8f,
+ 		       0x76, 0x65, 0x54, 0x43, 0x32, 0x21, 0x10, 0x07 };
+ 
+   fixed_uint64_t expected1 = { 0x1122, 0x1122, 0x5566, 0x5566 };
+   TEST (f1 (a64), expected1);
+ 
+   fixed_uint64_t expected2 = { -1, -1, -2, -2 };
+   TEST (f2 (a64), expected2);
+ 
+   fixed_int32_t expected3 = { 0x1122, 0x1122, 0x1122, 0x1122,
+                               0x99aa, 0x99aa, 0x99aa, 0x99aa };
+   TEST (f3 (a32), expected3);
+ 
+   fixed_int32_t expected4 = { -0x3344, -0x3344, -0x3344, -0x3344,
+ 			      -0xbbcc, -0xbbcc, -0xbbcc, -0xbbcc };
+   TEST (f4 (a32), expected4);
+ 
+   fixed_int32_t expected5 = { 0x5566, 0x5566, 0x5566, 0x5566,
+                               0xddee, 0xddee, 0xddee, 0xddee };
+   TEST (f5 (a32), expected5);
+ 
+   fixed_int32_t expected6 = { -0x7788, -0x7788, -0x7788, -0x7788,
+ 			      -0xff00, -0xff00, -0xff00, -0xff00 };
+   TEST (f6 (a32), expected6);
+ 
+   fixed_uint16_t expected7 = { 0x9a12, 0x9a12, 0x9a12, 0x9a12,
+ 			       0x9a12, 0x9a12, 0x9a12, 0x9a12,
+ 			       0x44bb, 0x44bb, 0x44bb, 0x44bb,
+ 			       0x44bb, 0x44bb, 0x44bb, 0x44bb };
+   TEST (f7 (a16), expected7);
+ 
+   fixed_uint16_t expected8 = { 0x11ee, 0x11ee, 0x11ee, 0x11ee,
+ 			       0x11ee, 0x11ee, 0x11ee, 0x11ee,
+ 			       0xdc23, 0xdc23, 0xdc23, 0xdc23,
+ 			       0xdc23, 0xdc23, 0xdc23, 0xdc23 };
+   TEST (f8 (a16), expected8);
+ 
+   fixed_uint16_t expected9 = { 0x33cc, 0x33cc, 0x33cc, 0x33cc,
+ 			       0x33cc, 0x33cc, 0x33cc, 0x33cc,
+ 			       0x9867, 0x9867, 0x9867, 0x9867,
+ 			       0x9867, 0x9867, 0x9867, 0x9867 };
+   TEST (f9 (a16), expected9);
+ 
+   fixed_uint8_t expected10 = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 			       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 			       0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 			       0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe };
+   TEST (f10 (a8), expected10);
+ 
+   fixed_uint8_t expected11 = { 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde,
+ 			       0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde,
+ 			       0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
+ 			       0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21 };
+   TEST (f11 (a8), expected11);
+ 
+   fixed_uint8_t expected12 = { 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
+ 			       0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
+ 			       0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 			       0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07 };
+   TEST (f12 (a8), expected12);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/extq_1.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/extq_1.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/extq_1.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/extq_1.c	Sat Jul 26 22:32:59 2025
***************
*** 1,5 ****
  /* { dg-options "-O2 -msve-vector-bits=256" } */
! /* { dg-final { check-function-bodies "**" "" "" { target { le } } } } */
  
  #include <arm_sve.h>
  
--- 1,5 ----
  /* { dg-options "-O2 -msve-vector-bits=256" } */
! /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include <arm_sve.h>
  
*************** typedef svfloat64_t fixed_float64_t __at
*** 15,21 ****
  **	extq	z0\.b, z0\.b, z1\.b, #8
  **	ret
  */
! fixed_float64_t
  f1 (fixed_float64_t z0, fixed_float64_t z1)
  {
    return __builtin_shufflevector (z0, z1, 1, 4, 3, 6);
--- 15,21 ----
  **	extq	z0\.b, z0\.b, z1\.b, #8
  **	ret
  */
! [[gnu::noipa]] fixed_float64_t
  f1 (fixed_float64_t z0, fixed_float64_t z1)
  {
    return __builtin_shufflevector (z0, z1, 1, 4, 3, 6);
*************** f1 (fixed_float64_t z0, fixed_float64_t
*** 26,32 ****
  **	extq	z0\.b, z0\.b, z1\.b, #4
  **	ret
  */
! fixed_uint32_t
  f2 (fixed_uint32_t z0, fixed_uint32_t z1)
  {
    return __builtin_shufflevector (z0, z1, 1, 2, 3, 8, 5, 6, 7, 12);
--- 26,32 ----
  **	extq	z0\.b, z0\.b, z1\.b, #4
  **	ret
  */
! [[gnu::noipa]] fixed_uint32_t
  f2 (fixed_uint32_t z0, fixed_uint32_t z1)
  {
    return __builtin_shufflevector (z0, z1, 1, 2, 3, 8, 5, 6, 7, 12);
*************** f2 (fixed_uint32_t z0, fixed_uint32_t z1
*** 37,43 ****
  **	extq	z0\.b, z0\.b, z1\.b, #12
  **	ret
  */
! fixed_uint32_t
  f3 (fixed_uint32_t z0, fixed_uint32_t z1)
  {
    return __builtin_shufflevector (z0, z1, 3, 8, 9, 10, 7, 12, 13, 14);
--- 37,43 ----
  **	extq	z0\.b, z0\.b, z1\.b, #12
  **	ret
  */
! [[gnu::noipa]] fixed_uint32_t
  f3 (fixed_uint32_t z0, fixed_uint32_t z1)
  {
    return __builtin_shufflevector (z0, z1, 3, 8, 9, 10, 7, 12, 13, 14);
*************** f3 (fixed_uint32_t z0, fixed_uint32_t z1
*** 48,54 ****
  **	extq	z0\.b, z0\.b, z1\.b, #2
  **	ret
  */
! fixed_float16_t
  f4 (fixed_float16_t z0, fixed_float16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 48,54 ----
  **	extq	z0\.b, z0\.b, z1\.b, #2
  **	ret
  */
! [[gnu::noipa]] fixed_float16_t
  f4 (fixed_float16_t z0, fixed_float16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
*************** f4 (fixed_float16_t z0, fixed_float16_t
*** 61,67 ****
  **	extq	z0\.b, z0\.b, z1\.b, #10
  **	ret
  */
! fixed_float16_t
  f5 (fixed_float16_t z0, fixed_float16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 61,67 ----
  **	extq	z0\.b, z0\.b, z1\.b, #10
  **	ret
  */
! [[gnu::noipa]] fixed_float16_t
  f5 (fixed_float16_t z0, fixed_float16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
*************** f5 (fixed_float16_t z0, fixed_float16_t
*** 74,80 ****
  **	extq	z0\.b, z0\.b, z1\.b, #14
  **	ret
  */
! fixed_float16_t
  f6 (fixed_float16_t z0, fixed_float16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 74,80 ----
  **	extq	z0\.b, z0\.b, z1\.b, #14
  **	ret
  */
! [[gnu::noipa]] fixed_float16_t
  f6 (fixed_float16_t z0, fixed_float16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
*************** f6 (fixed_float16_t z0, fixed_float16_t
*** 87,93 ****
  **	extq	z0\.b, z0\.b, z1\.b, #1
  **	ret
  */
! fixed_int8_t
  f7 (fixed_int8_t z0, fixed_int8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 87,93 ----
  **	extq	z0\.b, z0\.b, z1\.b, #1
  **	ret
  */
! [[gnu::noipa]] fixed_int8_t
  f7 (fixed_int8_t z0, fixed_int8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
*************** f7 (fixed_int8_t z0, fixed_int8_t z1)
*** 102,108 ****
  **	extq	z0\.b, z0\.b, z1\.b, #11
  **	ret
  */
! fixed_int8_t
  f8 (fixed_int8_t z0, fixed_int8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 102,108 ----
  **	extq	z0\.b, z0\.b, z1\.b, #11
  **	ret
  */
! [[gnu::noipa]] fixed_int8_t
  f8 (fixed_int8_t z0, fixed_int8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
*************** f8 (fixed_int8_t z0, fixed_int8_t z1)
*** 117,123 ****
  **	extq	z0\.b, z0\.b, z1\.b, #15
  **	ret
  */
! fixed_int8_t
  f9 (fixed_int8_t z0, fixed_int8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 117,123 ----
  **	extq	z0\.b, z0\.b, z1\.b, #15
  **	ret
  */
! [[gnu::noipa]] fixed_int8_t
  f9 (fixed_int8_t z0, fixed_int8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/extq_1_run.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/extq_1_run.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/extq_1_run.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/extq_1_run.c	Sat Jul 26 22:32:59 2025
***************
*** 0 ****
--- 1,73 ----
+ /* { dg-do run { target { aarch64_sve256_hw && aarch64_sve2p1_hw } } } */
+ /* { dg-options "-O2 -msve-vector-bits=256" } */
+ 
+ #include "extq_1.c"
+ 
+ #define TEST(A, B)							\
+   do {									\
+     typeof(B) actual_ = (A);						\
+     if (__builtin_memcmp (&actual_, &(B), sizeof (actual_)) != 0)	\
+       __builtin_abort ();						\
+   } while (0)
+ 
+ int
+ main ()
+ {
+   fixed_float64_t a64 = { 1.5, 3.75, -5.25, 9 };
+   fixed_float64_t b64 = { -2, 4.125, -6.375, 11.5 };
+   fixed_float64_t expected1 = { 3.75, -2, 9, -6.375 };
+   TEST (f1 (a64, b64), expected1);
+ 
+   fixed_uint32_t a32 = { 0x1122, -0x3344, 0x5566, -0x7788,
+ 			 0x99aa, -0xbbcc, 0xddee, -0xff00 };
+   fixed_uint32_t b32 = { 1 << 20, 1 << 21, 1 << 22, 1 << 23,
+ 			 5 << 6, 5 << 7, 5 << 8, 5 << 9 };
+   fixed_uint32_t expected2 = { -0x3344, 0x5566, -0x7788, 1 << 20,
+ 			       -0xbbcc, 0xddee, -0xff00, 5 << 6 };
+   fixed_uint32_t expected3 = { -0x7788, 1 << 20, 1 << 21, 1 << 22,
+ 			       -0xff00, 5 << 6, 5 << 7, 5 << 8 };
+   TEST (f2 (a32, b32), expected2);
+   TEST (f3 (a32, b32), expected3);
+ 
+   fixed_float16_t a16 = { 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25,
+ 			  2.5, 2.75, 3, 3.25, 3.5, 3.75, 4, 4.25 };
+   fixed_float16_t b16 = { -0.5, -0.75, -1, -1.25, -1.5, -1.75, -2, -2.25,
+ 			  -2.5, -2.75, -3, -3.25, -3.5, -3.75, -4, -4.25 };
+   fixed_float16_t expected4 = { 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, -0.5,
+ 				2.75, 3, 3.25, 3.5, 3.75, 4, 4.25, -2.5 };
+   fixed_float16_t expected5 = { 1.75, 2, 2.25, -0.5, -0.75, -1, -1.25, -1.5,
+ 				3.75, 4, 4.25, -2.5, -2.75, -3, -3.25, -3.5 };
+   fixed_float16_t expected6 = { 2.25, -0.5, -0.75, -1,
+ 				-1.25, -1.5, -1.75, -2,
+ 				4.25, -2.5, -2.75, -3,
+ 				-3.25, -3.5, -3.75, -4 };
+   TEST (f4 (a16, b16), expected4);
+   TEST (f5 (a16, b16), expected5);
+   TEST (f6 (a16, b16), expected6);
+ 
+   fixed_int8_t a8 = { 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x70,
+ 		      0x89, 0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef, 0xf8,
+ 		      0xfe, 0xed, 0xdc, 0xcb, 0xba, 0xa9, 0x98, 0x8f,
+ 		      0x76, 0x65, 0x54, 0x43, 0x32, 0x21, 0x10, 0x07 };
+   fixed_int8_t b8 = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
+ 		      0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00,
+ 		      0x13, 0x24, 0x35, 0x46, 0x57, 0x68, 0x79, 0x8a,
+ 		      0x9b, 0xac, 0xbd, 0xce, 0xdf, 0xe0, 0xf1, 0x02 };
+   fixed_int8_t expected7 = { 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x70, 0x89,
+ 			     0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef, 0xf8, 0x11,
+ 			     0xed, 0xdc, 0xcb, 0xba, 0xa9, 0x98, 0x8f, 0x76,
+ 			     0x65, 0x54, 0x43, 0x32, 0x21, 0x10, 0x07, 0x13 };
+   fixed_int8_t expected8 = { 0xbc, 0xcd, 0xde, 0xef, 0xf8, 0x11, 0x22, 0x33,
+ 			     0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb,
+ 			     0x43, 0x32, 0x21, 0x10, 0x07, 0x13, 0x24, 0x35,
+ 			     0x46, 0x57, 0x68, 0x79, 0x8a, 0x9b, 0xac, 0xbd };
+   fixed_int8_t expected9 = { 0xf8, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
+ 			     0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
+ 			     0x07, 0x13, 0x24, 0x35, 0x46, 0x57, 0x68, 0x79,
+ 			     0x8a, 0x9b, 0xac, 0xbd, 0xce, 0xdf, 0xe0, 0xf1 };
+   TEST (f7 (a8, b8), expected7);
+   TEST (f8 (a8, b8), expected8);
+   TEST (f9 (a8, b8), expected9);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_int_opt_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_int_opt_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_int_opt_n.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_int_opt_n.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_int_opt_single_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_int_opt_single_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_int_opt_single_n.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_int_opt_single_n.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_opt_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_opt_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_opt_n.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_opt_n.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_opt_single_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_opt_single_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_opt_single_n.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_opt_single_n.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -march=armv8.2-a+sve2+faminmax" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -march=armv8.2-a+sve2+faminmax -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_to_uint.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_to_uint.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_to_uint.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_to_uint.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_uint_opt_n.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_uint_opt_n.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_uint_opt_n.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_uint_opt_n.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_wide.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_wide.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_wide.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-binary_wide.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-compare.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-compare.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-compare.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-compare.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-binary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-binary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_ext_gather_index_restricted.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_ext_gather_index_restricted.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_ext_gather_index_restricted.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_ext_gather_index_restricted.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_ext_gather_offset_restricted.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_ext_gather_offset_restricted.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_ext_gather_offset_restricted.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_ext_gather_offset_restricted.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_gather_sv_restricted.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_gather_sv_restricted.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_gather_sv_restricted.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_gather_sv_restricted.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_gather_vs.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_gather_vs.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_gather_vs.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-load_gather_vs.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-shift_left_imm_to_uint.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-shift_left_imm_to_uint.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-shift_left_imm_to_uint.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-shift_left_imm_to_uint.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-shift_right_imm.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-shift_right_imm.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-shift_right_imm.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-shift_right_imm.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-store_scatter_index_restricted.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-store_scatter_index_restricted.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-store_scatter_index_restricted.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-store_scatter_index_restricted.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-store_scatter_offset_restricted.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-store_scatter_offset_restricted.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-store_scatter_offset_restricted.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-store_scatter_offset_restricted.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -march=armv9.2-a+sve+sme" } */
  
  #include "../pfalse-unary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -march=armv9.2-a+sve+sme -funwind-tables" } */
  
  #include "../pfalse-unary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_convert.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_convert.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_convert.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_convert.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_convert_narrowt.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_convert_narrowt.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_convert_narrowt.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_convert_narrowt.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include <arm_sve.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include <arm_sve.h>
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_to_int.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_to_int.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_to_int.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/pfalse-unary_to_int.c	Sat Jul 26 22:32:59 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2" } */
  
  #include "../pfalse-unary_0.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target elf } */
! /* { dg-options "-O2 -funwind-tables" } */
  
  #include "../pfalse-unary_0.h"
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/uzpq_1.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/uzpq_1.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/uzpq_1.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/uzpq_1.c	Sat Jul 26 22:32:59 2025
***************
*** 1,5 ****
  /* { dg-options "-O2 -msve-vector-bits=256" } */
! /* { dg-final { check-function-bodies "**" "" "" { target { le } } } } */
  
  #include <arm_sve.h>
  
--- 1,5 ----
  /* { dg-options "-O2 -msve-vector-bits=256" } */
! /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include <arm_sve.h>
  
*************** typedef svint64_t fixed_int64_t __attrib
*** 15,21 ****
  **	trn1	z0\.d, z0\.d, z1\.d
  **	ret
  */
! fixed_int64_t
  f1 (fixed_int64_t z0, fixed_int64_t z1)
  {
    return __builtin_shufflevector (z0, z1, 0, 4, 2, 6);
--- 15,21 ----
  **	trn1	z0\.d, z0\.d, z1\.d
  **	ret
  */
! [[gnu::noipa]] fixed_int64_t
  f1 (fixed_int64_t z0, fixed_int64_t z1)
  {
    return __builtin_shufflevector (z0, z1, 0, 4, 2, 6);
*************** f1 (fixed_int64_t z0, fixed_int64_t z1)
*** 26,32 ****
  **	trn2	z0\.d, z0\.d, z1\.d
  **	ret
  */
! fixed_int64_t
  f2 (fixed_int64_t z0, fixed_int64_t z1)
  {
    return __builtin_shufflevector (z0, z1, 1, 5, 3, 7);
--- 26,32 ----
  **	trn2	z0\.d, z0\.d, z1\.d
  **	ret
  */
! [[gnu::noipa]] fixed_int64_t
  f2 (fixed_int64_t z0, fixed_int64_t z1)
  {
    return __builtin_shufflevector (z0, z1, 1, 5, 3, 7);
*************** f2 (fixed_int64_t z0, fixed_int64_t z1)
*** 37,43 ****
  **	uzpq1	z0\.s, z0\.s, z1\.s
  **	ret
  */
! fixed_float32_t
  f3 (fixed_float32_t z0, fixed_float32_t z1)
  {
    return __builtin_shufflevector (z0, z1, 0, 2, 8, 10, 4, 6, 12, 14);
--- 37,43 ----
  **	uzpq1	z0\.s, z0\.s, z1\.s
  **	ret
  */
! [[gnu::noipa]] fixed_float32_t
  f3 (fixed_float32_t z0, fixed_float32_t z1)
  {
    return __builtin_shufflevector (z0, z1, 0, 2, 8, 10, 4, 6, 12, 14);
*************** f3 (fixed_float32_t z0, fixed_float32_t
*** 48,54 ****
  **	uzpq2	z0\.s, z0\.s, z1\.s
  **	ret
  */
! fixed_float32_t
  f4 (fixed_float32_t z0, fixed_float32_t z1)
  {
    return __builtin_shufflevector (z0, z1, 1, 3, 9, 11, 5, 7, 13, 15);
--- 48,54 ----
  **	uzpq2	z0\.s, z0\.s, z1\.s
  **	ret
  */
! [[gnu::noipa]] fixed_float32_t
  f4 (fixed_float32_t z0, fixed_float32_t z1)
  {
    return __builtin_shufflevector (z0, z1, 1, 3, 9, 11, 5, 7, 13, 15);
*************** f4 (fixed_float32_t z0, fixed_float32_t
*** 59,65 ****
  **	uzpq1	z0\.h, z0\.h, z1\.h
  **	ret
  */
! fixed_bfloat16_t
  f5 (fixed_bfloat16_t z0, fixed_bfloat16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 59,65 ----
  **	uzpq1	z0\.h, z0\.h, z1\.h
  **	ret
  */
! [[gnu::noipa]] fixed_bfloat16_t
  f5 (fixed_bfloat16_t z0, fixed_bfloat16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
*************** f5 (fixed_bfloat16_t z0, fixed_bfloat16_
*** 72,78 ****
  **	uzpq2	z0\.h, z0\.h, z1\.h
  **	ret
  */
! fixed_bfloat16_t
  f6 (fixed_bfloat16_t z0, fixed_bfloat16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 72,78 ----
  **	uzpq2	z0\.h, z0\.h, z1\.h
  **	ret
  */
! [[gnu::noipa]] fixed_bfloat16_t
  f6 (fixed_bfloat16_t z0, fixed_bfloat16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
*************** f6 (fixed_bfloat16_t z0, fixed_bfloat16_
*** 85,91 ****
  **	uzpq1	z0\.b, z0\.b, z1\.b
  **	ret
  */
! fixed_uint8_t
  f7 (fixed_uint8_t z0, fixed_uint8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 85,91 ----
  **	uzpq1	z0\.b, z0\.b, z1\.b
  **	ret
  */
! [[gnu::noipa]] fixed_uint8_t
  f7 (fixed_uint8_t z0, fixed_uint8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
*************** f7 (fixed_uint8_t z0, fixed_uint8_t z1)
*** 100,106 ****
  **	uzpq2	z0\.b, z0\.b, z1\.b
  **	ret
  */
! fixed_uint8_t
  f8 (fixed_uint8_t z0, fixed_uint8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 100,106 ----
  **	uzpq2	z0\.b, z0\.b, z1\.b
  **	ret
  */
! [[gnu::noipa]] fixed_uint8_t
  f8 (fixed_uint8_t z0, fixed_uint8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/uzpq_1_run.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/uzpq_1_run.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/uzpq_1_run.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/uzpq_1_run.c	Sat Jul 26 22:32:59 2025
***************
*** 0 ****
--- 1,78 ----
+ /* { dg-do run { target { aarch64_sve256_hw && aarch64_sve2p1_hw } } } */
+ /* { dg-options "-O2 -msve-vector-bits=256" } */
+ 
+ #include "uzpq_1.c"
+ 
+ typedef svuint16_t fixed_uint16_t __attribute__((arm_sve_vector_bits(256)));
+ 
+ #define TEST(A, B)							\
+   do {									\
+     typeof(A) actual_ = (A);						\
+     if (__builtin_memcmp (&actual_, &(B), sizeof (actual_)) != 0)	\
+       __builtin_abort ();						\
+   } while (0)
+ 
+ int
+ main ()
+ {
+   fixed_int64_t a64 = { 0x1122LL << 31, -1LL << 47, 0x5566 << 15, -2 };
+   fixed_int64_t b64 = { 42, -0x3344LL << 19, 303, -0x7788LL << 27 };
+   fixed_int64_t expected1 = { 0x1122LL << 31, 42,
+ 			      0x5566 << 15, 303 };
+   fixed_int64_t expected2 = { -1LL << 47, -0x3344LL << 19,
+ 			      -2, -0x7788LL << 27 };
+   TEST (f1 (a64, b64), expected1);
+   TEST (f2 (a64, b64), expected2);
+ 
+   fixed_float32_t a32 = { 0.5, 0.75, 1, 1.25, 2.5, 2.75, 3, 3.25 };
+   fixed_float32_t b32 = { -0.5, -0.75, -1, -1.25, -2.5, -2.75, -3, -3.25 };
+   fixed_float32_t expected3 = { 0.5, 1, -0.5, -1,
+ 				2.5, 3, -2.5, -3 };
+   fixed_float32_t expected4 = { 0.75, 1.25, -0.75, -1.25,
+ 				2.75, 3.25, -2.75, -3.25 };
+   TEST (f3 (a32, b32), expected3);
+   TEST (f4 (a32, b32), expected4);
+ 
+   fixed_uint16_t a16_i = { 0x9a12, 0xbc34, 0xde56, 0xf078,
+ 			   0x00ff, 0x11ee, 0x22dd, 0x33cc,
+ 			   0x44bb, 0x55aa, 0x6699, 0x7788,
+ 			   0xfe01, 0xdc23, 0xba45, 0x9867 };
+   fixed_uint16_t b16_i = { 0x1010, 0x2020, 0x3030, 0x4040,
+ 			   0x5050, 0x6060, 0x7070, 0x8080,
+ 			   0x9090, 0xa0a0, 0xb0b0, 0xc0c0,
+ 			   0xd0d0, 0xe0e0, 0xf0f0, 0x0f0f };
+   fixed_uint16_t expected5 = { 0x9a12, 0xde56, 0x00ff, 0x22dd,
+ 			       0x1010, 0x3030, 0x5050, 0x7070,
+ 			       0x44bb, 0x6699, 0xfe01, 0xba45,
+ 			       0x9090, 0xb0b0, 0xd0d0, 0xf0f0 };
+   fixed_uint16_t expected6 = { 0xbc34, 0xf078, 0x11ee, 0x33cc,
+ 			       0x2020, 0x4040, 0x6060, 0x8080,
+ 			       0x55aa, 0x7788, 0xdc23, 0x9867,
+ 			       0xa0a0, 0xc0c0, 0xe0e0, 0x0f0f };
+   fixed_bfloat16_t a16, b16;
+   __builtin_memcpy (&a16, &a16_i, sizeof (a16));
+   __builtin_memcpy (&b16, &b16_i, sizeof (b16));
+   TEST (f5 (a16, b16), expected5);
+   TEST (f6 (a16, b16), expected6);
+ 
+   fixed_uint8_t a8 = { 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x70,
+ 		       0x89, 0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef, 0xf8,
+ 		       0xfe, 0xed, 0xdc, 0xcb, 0xba, 0xa9, 0x98, 0x8f,
+ 		       0x76, 0x65, 0x54, 0x43, 0x32, 0x21, 0x10, 0x07 };
+   fixed_uint8_t b8 = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
+ 		       0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00,
+ 		       0x13, 0x24, 0x35, 0x46, 0x57, 0x68, 0x79, 0x8a,
+ 		       0x9b, 0xac, 0xbd, 0xce, 0xdf, 0xe0, 0xf1, 0x02 };
+   fixed_uint8_t expected7 = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
+ 			      0x11, 0x33, 0x55, 0x77, 0x99, 0xbb, 0xdd, 0xff,
+ 			      0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
+ 			      0x13, 0x35, 0x57, 0x79, 0x9b, 0xbd, 0xdf, 0xf1 };
+   fixed_uint8_t expected8 = { 0x12, 0x34, 0x56, 0x70, 0x9a, 0xbc, 0xde, 0xf8,
+ 			      0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0x00,
+ 			      0xed, 0xcb, 0xa9, 0x8f, 0x65, 0x43, 0x21, 0x07,
+ 			      0x24, 0x46, 0x68, 0x8a, 0xac, 0xce, 0xe0, 0x02 };
+   TEST (f7 (a8, b8), expected7);
+   TEST (f8 (a8, b8), expected8);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/zipq_1.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/zipq_1.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/zipq_1.c	Sat Jul 19 22:32:41 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/zipq_1.c	Sat Jul 26 22:32:59 2025
***************
*** 1,5 ****
  /* { dg-options "-O2 -msve-vector-bits=256" } */
! /* { dg-final { check-function-bodies "**" "" "" { target { le } } } } */
  
  #include <arm_sve.h>
  
--- 1,5 ----
  /* { dg-options "-O2 -msve-vector-bits=256" } */
! /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include <arm_sve.h>
  
*************** typedef svint64_t fixed_int64_t __attrib
*** 15,21 ****
  **	trn1	z0\.d, z0\.d, z1\.d
  **	ret
  */
! fixed_int64_t
  f1 (fixed_int64_t z0, fixed_int64_t z1)
  {
    return __builtin_shufflevector (z0, z1, 0, 4, 2, 6);
--- 15,21 ----
  **	trn1	z0\.d, z0\.d, z1\.d
  **	ret
  */
! [[gnu::noipa]] fixed_int64_t
  f1 (fixed_int64_t z0, fixed_int64_t z1)
  {
    return __builtin_shufflevector (z0, z1, 0, 4, 2, 6);
*************** f1 (fixed_int64_t z0, fixed_int64_t z1)
*** 26,32 ****
  **	trn2	z0\.d, z0\.d, z1\.d
  **	ret
  */
! fixed_int64_t
  f2 (fixed_int64_t z0, fixed_int64_t z1)
  {
    return __builtin_shufflevector (z0, z1, 1, 5, 3, 7);
--- 26,32 ----
  **	trn2	z0\.d, z0\.d, z1\.d
  **	ret
  */
! [[gnu::noipa]] fixed_int64_t
  f2 (fixed_int64_t z0, fixed_int64_t z1)
  {
    return __builtin_shufflevector (z0, z1, 1, 5, 3, 7);
*************** f2 (fixed_int64_t z0, fixed_int64_t z1)
*** 37,43 ****
  **	zipq1	z0\.s, z0\.s, z1\.s
  **	ret
  */
! fixed_float32_t
  f3 (fixed_float32_t z0, fixed_float32_t z1)
  {
    return __builtin_shufflevector (z0, z1, 0, 8, 1, 9, 4, 12, 5, 13);
--- 37,43 ----
  **	zipq1	z0\.s, z0\.s, z1\.s
  **	ret
  */
! [[gnu::noipa]] fixed_float32_t
  f3 (fixed_float32_t z0, fixed_float32_t z1)
  {
    return __builtin_shufflevector (z0, z1, 0, 8, 1, 9, 4, 12, 5, 13);
*************** f3 (fixed_float32_t z0, fixed_float32_t
*** 48,54 ****
  **	zipq2	z0\.s, z0\.s, z1\.s
  **	ret
  */
! fixed_float32_t
  f4 (fixed_float32_t z0, fixed_float32_t z1)
  {
    return __builtin_shufflevector (z0, z1, 2, 10, 3, 11, 6, 14, 7, 15);
--- 48,54 ----
  **	zipq2	z0\.s, z0\.s, z1\.s
  **	ret
  */
! [[gnu::noipa]] fixed_float32_t
  f4 (fixed_float32_t z0, fixed_float32_t z1)
  {
    return __builtin_shufflevector (z0, z1, 2, 10, 3, 11, 6, 14, 7, 15);
*************** f4 (fixed_float32_t z0, fixed_float32_t
*** 59,65 ****
  **	zipq1	z0\.h, z0\.h, z1\.h
  **	ret
  */
! fixed_bfloat16_t
  f5 (fixed_bfloat16_t z0, fixed_bfloat16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 59,65 ----
  **	zipq1	z0\.h, z0\.h, z1\.h
  **	ret
  */
! [[gnu::noipa]] fixed_bfloat16_t
  f5 (fixed_bfloat16_t z0, fixed_bfloat16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
*************** f5 (fixed_bfloat16_t z0, fixed_bfloat16_
*** 72,78 ****
  **	zipq2	z0\.h, z0\.h, z1\.h
  **	ret
  */
! fixed_bfloat16_t
  f6 (fixed_bfloat16_t z0, fixed_bfloat16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 72,78 ----
  **	zipq2	z0\.h, z0\.h, z1\.h
  **	ret
  */
! [[gnu::noipa]] fixed_bfloat16_t
  f6 (fixed_bfloat16_t z0, fixed_bfloat16_t z1)
  {
    return __builtin_shufflevector (z0, z1,
*************** f6 (fixed_bfloat16_t z0, fixed_bfloat16_
*** 85,91 ****
  **	zipq1	z0\.b, z0\.b, z1\.b
  **	ret
  */
! fixed_uint8_t
  f7 (fixed_uint8_t z0, fixed_uint8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 85,91 ----
  **	zipq1	z0\.b, z0\.b, z1\.b
  **	ret
  */
! [[gnu::noipa]] fixed_uint8_t
  f7 (fixed_uint8_t z0, fixed_uint8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
*************** f7 (fixed_uint8_t z0, fixed_uint8_t z1)
*** 100,106 ****
  **	zipq2	z0\.b, z0\.b, z1\.b
  **	ret
  */
! fixed_uint8_t
  f8 (fixed_uint8_t z0, fixed_uint8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
--- 100,106 ----
  **	zipq2	z0\.b, z0\.b, z1\.b
  **	ret
  */
! [[gnu::noipa]] fixed_uint8_t
  f8 (fixed_uint8_t z0, fixed_uint8_t z1)
  {
    return __builtin_shufflevector (z0, z1,
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/zipq_1_run.c gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/zipq_1_run.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/aarch64/sve2/zipq_1_run.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gcc.target/aarch64/sve2/zipq_1_run.c	Sat Jul 26 22:32:59 2025
***************
*** 0 ****
--- 1,78 ----
+ /* { dg-do run { target { aarch64_sve256_hw && aarch64_sve2p1_hw } } } */
+ /* { dg-options "-O2 -msve-vector-bits=256" } */
+ 
+ #include "zipq_1.c"
+ 
+ typedef svuint16_t fixed_uint16_t __attribute__((arm_sve_vector_bits(256)));
+ 
+ #define TEST(A, B)							\
+   do {									\
+     typeof(A) actual_ = (A);						\
+     if (__builtin_memcmp (&actual_, &(B), sizeof (actual_)) != 0)	\
+       __builtin_abort ();						\
+   } while (0)
+ 
+ int
+ main ()
+ {
+   fixed_int64_t a64 = { 0x1122LL << 31, -1LL << 47, 0x5566 << 15, -2 };
+   fixed_int64_t b64 = { 42, -0x3344LL << 19, 303, -0x7788LL << 27 };
+   fixed_int64_t expected1 = { 0x1122LL << 31, 42,
+ 			      0x5566 << 15, 303 };
+   fixed_int64_t expected2 = { -1LL << 47, -0x3344LL << 19,
+ 			      -2, -0x7788LL << 27 };
+   TEST (f1 (a64, b64), expected1);
+   TEST (f2 (a64, b64), expected2);
+ 
+   fixed_float32_t a32 = { 0.5, 0.75, 1, 1.25, 2.5, 2.75, 3, 3.25 };
+   fixed_float32_t b32 = { -0.5, -0.75, -1, -1.25, -2.5, -2.75, -3, -3.25 };
+   fixed_float32_t expected3 = { 0.5, -0.5, 0.75, -0.75,
+ 				2.5, -2.5, 2.75, -2.75 };
+   fixed_float32_t expected4 = { 1, -1, 1.25, -1.25,
+ 				3, -3, 3.25, -3.25 };
+   TEST (f3 (a32, b32), expected3);
+   TEST (f4 (a32, b32), expected4);
+ 
+   fixed_uint16_t a16_i = { 0x9a12, 0xbc34, 0xde56, 0xf078,
+ 			   0x00ff, 0x11ee, 0x22dd, 0x33cc,
+ 			   0x44bb, 0x55aa, 0x6699, 0x7788,
+ 			   0xfe01, 0xdc23, 0xba45, 0x9867 };
+   fixed_uint16_t b16_i = { 0x1010, 0x2020, 0x3030, 0x4040,
+ 			   0x5050, 0x6060, 0x7070, 0x8080,
+ 			   0x9090, 0xa0a0, 0xb0b0, 0xc0c0,
+ 			   0xd0d0, 0xe0e0, 0xf0f0, 0x0f0f };
+   fixed_uint16_t expected5 = { 0x9a12, 0x1010, 0xbc34, 0x2020,
+ 			       0xde56, 0x3030, 0xf078, 0x4040,
+ 			       0x44bb, 0x9090, 0x55aa, 0xa0a0,
+ 			       0x6699, 0xb0b0, 0x7788, 0xc0c0 };
+   fixed_uint16_t expected6 = { 0x00ff, 0x5050, 0x11ee, 0x6060,
+ 			       0x22dd, 0x7070, 0x33cc, 0x8080,
+ 			       0xfe01, 0xd0d0, 0xdc23, 0xe0e0,
+ 			       0xba45, 0xf0f0, 0x9867, 0x0f0f };
+   fixed_bfloat16_t a16, b16;
+   __builtin_memcpy (&a16, &a16_i, sizeof (a16));
+   __builtin_memcpy (&b16, &b16_i, sizeof (b16));
+   TEST (f5 (a16, b16), expected5);
+   TEST (f6 (a16, b16), expected6);
+ 
+   fixed_uint8_t a8 = { 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x70,
+ 		       0x89, 0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef, 0xf8,
+ 		       0xfe, 0xed, 0xdc, 0xcb, 0xba, 0xa9, 0x98, 0x8f,
+ 		       0x76, 0x65, 0x54, 0x43, 0x32, 0x21, 0x10, 0x07 };
+   fixed_uint8_t b8 = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
+ 		       0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00,
+ 		       0x13, 0x24, 0x35, 0x46, 0x57, 0x68, 0x79, 0x8a,
+ 		       0x9b, 0xac, 0xbd, 0xce, 0xdf, 0xe0, 0xf1, 0x02 };
+   fixed_uint8_t expected7 = { 0x01, 0x11, 0x12, 0x22, 0x23, 0x33, 0x34, 0x44,
+ 			      0x45, 0x55, 0x56, 0x66, 0x67, 0x77, 0x70, 0x88,
+ 			      0xfe, 0x13, 0xed, 0x24, 0xdc, 0x35, 0xcb, 0x46,
+ 			      0xba, 0x57, 0xa9, 0x68, 0x98, 0x79, 0x8f, 0x8a };
+   fixed_uint8_t expected8 = { 0x89, 0x99, 0x9a, 0xaa, 0xab, 0xbb, 0xbc, 0xcc,
+ 			      0xcd, 0xdd, 0xde, 0xee, 0xef, 0xff, 0xf8, 0x00,
+ 			      0x76, 0x9b, 0x65, 0xac, 0x54, 0xbd, 0x43, 0xce,
+ 			      0x32, 0xdf, 0x21, 0xe0, 0x10, 0xf1, 0x07, 0x02 };
+   TEST (f7 (a8, b8), expected7);
+   TEST (f8 (a8, b8), expected8);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/nvptx/abi-struct-arg.c gcc-15-20250726/gcc/testsuite/gcc.target/nvptx/abi-struct-arg.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/nvptx/abi-struct-arg.c	Sat Jul 19 22:32:44 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/nvptx/abi-struct-arg.c	Sat Jul 26 22:33:28 2025
***************
*** 3,14 ****
--- 3,18 ----
  
  /* Struct arg.  Passed via pointer.  */
  
+ typedef struct {} empty;  /* See 'gcc/doc/extend.texi', "Empty Structures".  */
  typedef struct {char a;} one;
  typedef struct {short a;} two;
  typedef struct {int a;} four;
  typedef struct {long long a;} eight;
  typedef struct {int a, b[12];} big;
  
+ /* { dg-final { scan-assembler-times ".extern .func dcl_aempty \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
+ void dcl_aempty (empty);
+ 
  /* { dg-final { scan-assembler-times ".extern .func dcl_aone \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
  void dcl_aone (one);
  
*************** void dcl_abig (big);
*** 28,33 ****
--- 32,38 ----
  
  void test_1 (void)
  {
+   dcl_aempty (({empty t; t;}));
    dcl_aone (M (one, 1));
    dcl_atwo (M (two, 2));
    dcl_afour (M (four, 3));
*************** void test_1 (void)
*** 35,40 ****
--- 40,50 ----
    dcl_abig (M (big, 5));
  }
  
+ /* { dg-final { scan-assembler-times ".visible .func dfn_aempty \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
+ void dfn_aempty (empty empty)
+ {
+ }
+ 
  /* { dg-final { scan-assembler-times ".visible .func dfn_aone \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
  void dfn_aone (one one)
  {
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/nvptx/abi-struct-ret.c gcc-15-20250726/gcc/testsuite/gcc.target/nvptx/abi-struct-ret.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/nvptx/abi-struct-ret.c	Sat Jul 19 22:32:44 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/nvptx/abi-struct-ret.c	Sat Jul 26 22:33:28 2025
***************
*** 3,14 ****
--- 3,18 ----
  
  /* Struct return.  Returned via pointer.  */
  
+ typedef struct {} empty;  /* See 'gcc/doc/extend.texi', "Empty Structures".  */
  typedef struct {char a;} one;
  typedef struct {short a;} two;
  typedef struct {int a;} four;
  typedef struct {long long a;} eight;
  typedef struct {int a, b[12];} big;
  
+ /* { dg-final { scan-assembler-times ".extern .func dcl_rempty \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
+ empty dcl_rempty (void);
+ 
  /* { dg-final { scan-assembler-times ".extern .func dcl_rone \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
  one dcl_rone (void);
  
*************** big dcl_rbig (void);
*** 26,31 ****
--- 30,36 ----
  
  void test_1 (void)
  {
+   dcl_rempty ();
    dcl_rone ();
    dcl_rtwo ();
    dcl_rfour ();
*************** void test_1 (void)
*** 35,40 ****
--- 40,51 ----
  
  #define M(T, v) ({T t; t.a = v; t;})
  
+ /* { dg-final { scan-assembler-times ".visible .func dfn_rempty \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
+ empty dfn_rempty (void)
+ {
+   return ({empty t; t;});
+ }
+ 
  /* { dg-final { scan-assembler-times ".visible .func dfn_rone \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
  one dfn_rone (void)
  {
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/nvptx/march-map=sm_61.c gcc-15-20250726/gcc/testsuite/gcc.target/nvptx/march-map=sm_61.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/nvptx/march-map=sm_61.c	Sat Jul 19 22:32:44 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/nvptx/march-map=sm_61.c	Sat Jul 26 22:33:28 2025
***************
*** 2,8 ****
  /* { dg-options {-march-map=sm_61 -mptx=_} } */
  /* { dg-additional-options -save-temps } */
  /* { dg-final { scan-assembler-times {(?n)^	\.version	7\.3$} 1 } } */
! /* { dg-final { scan-assembler-times {(?n)^	\.target	sm_53$} 1 } } */
  
  #if __PTX_ISA_VERSION_MAJOR__ != 7
  #error wrong value for __PTX_ISA_VERSION_MAJOR__
--- 2,8 ----
  /* { dg-options {-march-map=sm_61 -mptx=_} } */
  /* { dg-additional-options -save-temps } */
  /* { dg-final { scan-assembler-times {(?n)^	\.version	7\.3$} 1 } } */
! /* { dg-final { scan-assembler-times {(?n)^	\.target	sm_61$} 1 } } */
  
  #if __PTX_ISA_VERSION_MAJOR__ != 7
  #error wrong value for __PTX_ISA_VERSION_MAJOR__
***************
*** 12,18 ****
  #error wrong value for __PTX_ISA_VERSION_MINOR__
  #endif
  
! #if __PTX_SM__ != 530
  #error wrong value for __PTX_SM__
  #endif
  
--- 12,18 ----
  #error wrong value for __PTX_ISA_VERSION_MINOR__
  #endif
  
! #if __PTX_SM__ != 610
  #error wrong value for __PTX_SM__
  #endif
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/nvptx/march-map=sm_62.c gcc-15-20250726/gcc/testsuite/gcc.target/nvptx/march-map=sm_62.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/nvptx/march-map=sm_62.c	Sat Jul 19 22:32:44 2025
--- gcc-15-20250726/gcc/testsuite/gcc.target/nvptx/march-map=sm_62.c	Sat Jul 26 22:33:28 2025
***************
*** 2,8 ****
  /* { dg-options {-march-map=sm_62 -mptx=_} } */
  /* { dg-additional-options -save-temps } */
  /* { dg-final { scan-assembler-times {(?n)^	\.version	7\.3$} 1 } } */
! /* { dg-final { scan-assembler-times {(?n)^	\.target	sm_53$} 1 } } */
  
  #if __PTX_ISA_VERSION_MAJOR__ != 7
  #error wrong value for __PTX_ISA_VERSION_MAJOR__
--- 2,8 ----
  /* { dg-options {-march-map=sm_62 -mptx=_} } */
  /* { dg-additional-options -save-temps } */
  /* { dg-final { scan-assembler-times {(?n)^	\.version	7\.3$} 1 } } */
! /* { dg-final { scan-assembler-times {(?n)^	\.target	sm_61$} 1 } } */
  
  #if __PTX_ISA_VERSION_MAJOR__ != 7
  #error wrong value for __PTX_ISA_VERSION_MAJOR__
***************
*** 12,18 ****
  #error wrong value for __PTX_ISA_VERSION_MINOR__
  #endif
  
! #if __PTX_SM__ != 530
  #error wrong value for __PTX_SM__
  #endif
  
--- 12,18 ----
  #error wrong value for __PTX_ISA_VERSION_MINOR__
  #endif
  
! #if __PTX_SM__ != 610
  #error wrong value for __PTX_SM__
  #endif
  
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/nvptx/march=sm_61.c gcc-15-20250726/gcc/testsuite/gcc.target/nvptx/march=sm_61.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/nvptx/march=sm_61.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gcc.target/nvptx/march=sm_61.c	Sat Jul 26 22:33:28 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble } */
+ /* { dg-options {-march=sm_61 -mptx=_} } */
+ /* { dg-additional-options -save-temps } */
+ /* { dg-final { scan-assembler-times {(?n)^	\.version	7\.3$} 1 } } */
+ /* { dg-final { scan-assembler-times {(?n)^	\.target	sm_61$} 1 } } */
+ 
+ #if __PTX_ISA_VERSION_MAJOR__ != 7
+ #error wrong value for __PTX_ISA_VERSION_MAJOR__
+ #endif
+ 
+ #if __PTX_ISA_VERSION_MINOR__ != 3
+ #error wrong value for __PTX_ISA_VERSION_MINOR__
+ #endif
+ 
+ #if __PTX_SM__ != 610
+ #error wrong value for __PTX_SM__
+ #endif
+ 
+ int dummy;
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gcc.target/nvptx/mptx=5.0.c gcc-15-20250726/gcc/testsuite/gcc.target/nvptx/mptx=5.0.c
*** gcc-15-20250719/gcc/testsuite/gcc.target/nvptx/mptx=5.0.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gcc.target/nvptx/mptx=5.0.c	Sat Jul 26 22:33:28 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble } */
+ /* { dg-options {-march=sm_30 -mptx=5.0} } */
+ /* { dg-additional-options -save-temps } */
+ /* { dg-final { scan-assembler-times {(?n)^	\.version	5\.0$} 1 } } */
+ /* { dg-final { scan-assembler-times {(?n)^	\.target	sm_30$} 1 } } */
+ 
+ #if __PTX_ISA_VERSION_MAJOR__ != 5
+ #error wrong value for __PTX_ISA_VERSION_MAJOR__
+ #endif
+ 
+ #if __PTX_ISA_VERSION_MINOR__ != 0
+ #error wrong value for __PTX_ISA_VERSION_MINOR__
+ #endif
+ 
+ #if __PTX_SM__ != 300
+ #error wrong value for __PTX_SM__
+ #endif
+ 
+ int dummy;
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gfortran.dg/function_charlen_4.f90 gcc-15-20250726/gcc/testsuite/gfortran.dg/function_charlen_4.f90
*** gcc-15-20250719/gcc/testsuite/gfortran.dg/function_charlen_4.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gfortran.dg/function_charlen_4.f90	Sat Jul 26 22:33:42 2025
***************
*** 0 ****
--- 1,34 ----
+ ! { dg-do run }
+ ! { dg-options "-O2 -std=legacy -fdump-tree-optimized" }
+ !
+ ! PR fortran/121203 - fix passing of character length of function to procedure
+ 
+ program p
+   character(10), external :: f
+   call eval (f,"abc")
+   call eval2(f,"abc")
+ contains
+   subroutine eval2(func,c_arg)
+     character(*) c_arg
+     character(*) func
+     external func
+     ! These tests should get optimized:
+     if (len      (c_arg)  /=  3) stop 1
+     if (len (func(c_arg)) /= 10) stop 2
+   end subroutine
+ end
+ 
+ character(10) function f(arg)
+   character(*) arg
+   f=arg
+ end
+ 
+ subroutine eval(func,c_arg)
+   character(*) c_arg
+   character(*) func
+   external func
+   if (len      (c_arg)  /=  3) error stop 3
+   if (len (func(c_arg)) /= 10) error stop 4
+ end subroutine
+ 
+ ! { dg-final { scan-tree-dump-not "_gfortran_stop_numeric" "optimized" } }
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gfortran.dg/pointer_check_15.f90 gcc-15-20250726/gcc/testsuite/gfortran.dg/pointer_check_15.f90
*** gcc-15-20250719/gcc/testsuite/gfortran.dg/pointer_check_15.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gfortran.dg/pointer_check_15.f90	Sat Jul 26 22:33:43 2025
***************
*** 0 ****
--- 1,46 ----
+ ! { dg-do run }
+ ! { dg-additional-options "-O -fcheck=pointer -fdump-tree-original" }
+ !
+ ! PR fortran/121145
+ ! Erroneous runtime error: Proc-pointer actual argument 'ptr' is not associated
+ !
+ ! Contributed by Federico Perini.
+ 
+ module m
+   implicit none
+ 
+   abstract interface
+      subroutine fun(x)
+        real, intent(in) :: x
+      end subroutine fun
+   end interface   
+ 
+ contains
+ 
+   subroutine with_fun(sub)
+     procedure(fun), optional :: sub
+     if (present(sub)) stop 1
+   end subroutine   
+ 
+   subroutine with_non_optional(sub)
+     procedure(fun) :: sub
+   end subroutine   
+ 
+ end module m
+ 
+ program p
+   use m
+   implicit none
+ 
+   procedure(fun), pointer :: ptr1 => null()
+   procedure(fun), pointer :: ptr2 => null()
+   
+   call with_fun()
+   call with_fun(sub=ptr1)               ! no runtime check here
+ 
+   if (associated (ptr2)) then
+      call with_non_optional(sub=ptr2)   ! runtime check here
+   end if
+ end  
+ 
+ ! { dg-final { scan-tree-dump-times "Proc-pointer actual argument .'ptr2.'" 1 "original" } }
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gm2/switches/pedantic-params/fail/arrayofchar.def gcc-15-20250726/gcc/testsuite/gm2/switches/pedantic-params/fail/arrayofchar.def
*** gcc-15-20250719/gcc/testsuite/gm2/switches/pedantic-params/fail/arrayofchar.def	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gm2/switches/pedantic-params/fail/arrayofchar.def	Sat Jul 26 22:33:44 2025
***************
*** 0 ****
--- 1,12 ----
+ DEFINITION MODULE arrayofchar ;
+ 
+ FROM FIO IMPORT File ;
+ 
+ (*
+    Description: provides write procedures for ARRAY OF CHAR.
+ *)
+ 
+ PROCEDURE Write (f: File; str: ARRAY OF CHAR) ;
+ PROCEDURE WriteLn (f: File) ;
+ 
+ END arrayofchar.
diff -Nrcpad gcc-15-20250719/gcc/testsuite/gm2/switches/pedantic-params/fail/arrayofchar.mod gcc-15-20250726/gcc/testsuite/gm2/switches/pedantic-params/fail/arrayofchar.mod
*** gcc-15-20250719/gcc/testsuite/gm2/switches/pedantic-params/fail/arrayofchar.mod	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/gcc/testsuite/gm2/switches/pedantic-params/fail/arrayofchar.mod	Sat Jul 26 22:33:44 2025
***************
*** 0 ****
--- 1,30 ----
+ IMPLEMENTATION MODULE arrayofchar ;
+ 
+ FROM FIO IMPORT WriteChar, WriteLine ;
+ IMPORT StrLib ;
+ 
+ 
+ (*
+    Write - writes a string to file f.
+ *)
+ 
+ PROCEDURE Write (f: File; a: ARRAY OF CHAR) ;
+ VAR
+    len, i: CARDINAL ;
+ BEGIN
+    len := StrLib.StrLen (a) ;
+    i := 0 ;
+    WHILE i < len DO
+       WriteChar (f, a[i]) ;
+       INC (i)
+    END
+ END Write ;
+ 
+ 
+ PROCEDURE WriteLn (f: File) ;
+ BEGIN
+    WriteLine (f)
+ END WriteLn ;
+ 
+ 
+ END arrayofchar.
diff -Nrcpad gcc-15-20250719/gcc/testsuite/lib/target-supports.exp gcc-15-20250726/gcc/testsuite/lib/target-supports.exp
*** gcc-15-20250719/gcc/testsuite/lib/target-supports.exp	Sat Jul 19 22:32:54 2025
--- gcc-15-20250726/gcc/testsuite/lib/target-supports.exp	Sat Jul 26 22:33:45 2025
*************** proc check_effective_target_aarch64_sve2
*** 6417,6422 ****
--- 6417,6439 ----
      }]
  }
  
+ # Return true if this is an AArch64 target that can run SVE2.1 code.
+ 
+ proc check_effective_target_aarch64_sve2p1_hw { } {
+     if { ![istarget aarch64*-*-*] } {
+ 	return 0
+     }
+     return [check_runtime aarch64_sve2p1_hw_available {
+ 	#pragma GCC target "+sve2p1"
+ 	int
+ 	main (void)
+ 	{
+ 	  asm volatile ("dupq z0.b, z0.b[0]");
+ 	  return 0;
+ 	}
+     }]
+ }
+ 
  # Return true if this is an AArch64 target that can run SVE code and
  # if its SVE vectors have exactly BITS bits.
  
diff -Nrcpad gcc-15-20250719/gcc/tree-nrv.cc gcc-15-20250726/gcc/tree-nrv.cc
*** gcc-15-20250719/gcc/tree-nrv.cc	Sat Jul 19 22:32:55 2025
--- gcc-15-20250726/gcc/tree-nrv.cc	Sat Jul 26 22:33:48 2025
*************** pass_nrv::execute (function *fun)
*** 167,182 ****
        for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
  	{
  	  gimple *stmt = gsi_stmt (gsi);
- 	  tree ret_val;
  
  	  if (greturn *return_stmt = dyn_cast <greturn *> (stmt))
  	    {
! 	      /* In a function with an aggregate return value, the
! 		 gimplifier has changed all non-empty RETURN_EXPRs to
! 		 return the RESULT_DECL.  */
! 	      ret_val = gimple_return_retval (return_stmt);
! 	      if (ret_val)
! 		gcc_assert (ret_val == result);
  	    }
  	  else if (gimple_has_lhs (stmt)
  		   && gimple_get_lhs (stmt) == result)
--- 167,187 ----
        for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
  	{
  	  gimple *stmt = gsi_stmt (gsi);
  
  	  if (greturn *return_stmt = dyn_cast <greturn *> (stmt))
  	    {
! 	      /* We cannot perform NRV optimizations in a function with an
! 		 aggregate return value if there is a return that does not
! 		 return RESULT_DECL.  We used to assert this scenario doesn't
! 		 happen: the gimplifier has changed all non-empty RETURN_EXPRs
! 		 to return the RESULT_DECL.  However, per PR119835 we may run
! 		 into this scenario for offloading compilation, and therefore
! 		 gracefully bail out.  */
! 	      if (tree ret_val = gimple_return_retval (return_stmt))
! 		{
! 		  if (ret_val != result)
! 		    return 0;
! 		}
  	    }
  	  else if (gimple_has_lhs (stmt)
  		   && gimple_get_lhs (stmt) == result)
diff -Nrcpad gcc-15-20250719/gcc/tree-sra.cc gcc-15-20250726/gcc/tree-sra.cc
*** gcc-15-20250719/gcc/tree-sra.cc	Sat Jul 19 22:32:55 2025
--- gcc-15-20250726/gcc/tree-sra.cc	Sat Jul 26 22:33:48 2025
*************** analyze_access_subtree (struct access *r
*** 2889,2895 ****
  
    for (child = root->first_child; child; child = child->next_sibling)
      {
!       hole |= covered_to < child->offset;
        sth_created |= analyze_access_subtree (child, root,
  					     allow_replacements && !scalar
  					     && !root->grp_partial_lhs,
--- 2889,2898 ----
  
    for (child = root->first_child; child; child = child->next_sibling)
      {
!       if (totally)
! 	covered_to = child->offset;
!       else
! 	hole |= covered_to < child->offset;
        sth_created |= analyze_access_subtree (child, root,
  					     allow_replacements && !scalar
  					     && !root->grp_partial_lhs,
*************** analyze_access_subtree (struct access *r
*** 2900,2905 ****
--- 2903,2910 ----
  	covered_to += child->size;
        else
  	hole = true;
+       if (totally && !hole)
+ 	covered_to = limit;
      }
  
    if (allow_replacements && scalar && !root->first_child
*************** analyze_access_subtree (struct access *r
*** 2972,2978 ****
  	root->grp_total_scalarization = 0;
      }
  
!   if (!hole || totally)
      root->grp_covered = 1;
    else if (root->grp_write || comes_initialized_p (root->base))
      root->grp_unscalarized_data = 1; /* not covered and written to */
--- 2977,2983 ----
  	root->grp_total_scalarization = 0;
      }
  
!   if (!hole)
      root->grp_covered = 1;
    else if (root->grp_write || comes_initialized_p (root->base))
      root->grp_unscalarized_data = 1; /* not covered and written to */
diff -Nrcpad gcc-15-20250719/gcc/tree-streamer-in.cc gcc-15-20250726/gcc/tree-streamer-in.cc
*** gcc-15-20250719/gcc/tree-streamer-in.cc	Sat Jul 19 22:32:55 2025
--- gcc-15-20250726/gcc/tree-streamer-in.cc	Sat Jul 26 22:33:48 2025
*************** along with GCC; see the file COPYING3.
*** 36,41 ****
--- 36,42 ----
  #include "asan.h"
  #include "opts.h"
  #include "stor-layout.h"
+ #include "hooks.h" /* For 'hook_bool_const_tree_false'.  */
  
  
  /* Read a STRING_CST from the string table in DATA_IN using input
*************** unpack_ts_type_common_value_fields (stru
*** 386,392 ****
      TYPE_STRING_FLAG (expr) = (unsigned) bp_unpack_value (bp, 1);
    if (AGGREGATE_TYPE_P (expr))
      TYPE_TYPELESS_STORAGE (expr) = (unsigned) bp_unpack_value (bp, 1);
!   TYPE_EMPTY_P (expr) = (unsigned) bp_unpack_value (bp, 1);
    if (FUNC_OR_METHOD_TYPE_P (expr))
      TYPE_NO_NAMED_ARGS_STDARG_P (expr) = (unsigned) bp_unpack_value (bp, 1);
    if (RECORD_OR_UNION_TYPE_P (expr))
--- 387,402 ----
      TYPE_STRING_FLAG (expr) = (unsigned) bp_unpack_value (bp, 1);
    if (AGGREGATE_TYPE_P (expr))
      TYPE_TYPELESS_STORAGE (expr) = (unsigned) bp_unpack_value (bp, 1);
!   if (!lto_stream_offload_p)
!     TYPE_EMPTY_P (expr) = (unsigned) bp_unpack_value (bp, 1);
!   else
!     {
!       /* All offload targets use the default ('false') 'TARGET_EMPTY_RECORD_P'.
! 	 If that ever changes, we'll have to properly initialize 'TYPE_EMPTY_P'
! 	 here, see 'stor-layout.cc:finalize_type_size' and PR120308.  */
!       gcc_assert (targetm.calls.empty_record_p == hook_bool_const_tree_false);
!       TYPE_EMPTY_P (expr) = 0;
!     }
    if (FUNC_OR_METHOD_TYPE_P (expr))
      TYPE_NO_NAMED_ARGS_STDARG_P (expr) = (unsigned) bp_unpack_value (bp, 1);
    if (RECORD_OR_UNION_TYPE_P (expr))
diff -Nrcpad gcc-15-20250719/gcc/tree-streamer-out.cc gcc-15-20250726/gcc/tree-streamer-out.cc
*** gcc-15-20250719/gcc/tree-streamer-out.cc	Sat Jul 19 22:32:55 2025
--- gcc-15-20250726/gcc/tree-streamer-out.cc	Sat Jul 26 22:33:48 2025
*************** pack_ts_type_common_value_fields (struct
*** 372,378 ****
      bp_pack_value (bp, TYPE_STRING_FLAG (expr), 1);
    if (AGGREGATE_TYPE_P (expr))
      bp_pack_value (bp, TYPE_TYPELESS_STORAGE (expr), 1);
!   bp_pack_value (bp, TYPE_EMPTY_P (expr), 1);
    if (FUNC_OR_METHOD_TYPE_P (expr))
      bp_pack_value (bp, TYPE_NO_NAMED_ARGS_STDARG_P (expr), 1);
    if (RECORD_OR_UNION_TYPE_P (expr))
--- 372,379 ----
      bp_pack_value (bp, TYPE_STRING_FLAG (expr), 1);
    if (AGGREGATE_TYPE_P (expr))
      bp_pack_value (bp, TYPE_TYPELESS_STORAGE (expr), 1);
!   if (!lto_stream_offload_p)
!     bp_pack_value (bp, TYPE_EMPTY_P (expr), 1);
    if (FUNC_OR_METHOD_TYPE_P (expr))
      bp_pack_value (bp, TYPE_NO_NAMED_ARGS_STDARG_P (expr), 1);
    if (RECORD_OR_UNION_TYPE_P (expr))
diff -Nrcpad gcc-15-20250719/gcc/tree-vect-slp.cc gcc-15-20250726/gcc/tree-vect-slp.cc
*** gcc-15-20250719/gcc/tree-vect-slp.cc	Sat Jul 19 22:32:55 2025
--- gcc-15-20250726/gcc/tree-vect-slp.cc	Sat Jul 26 22:33:48 2025
*************** vect_schedule_slp_node (vec_info *vinfo,
*** 11258,11264 ****
  		  && !SSA_NAME_IS_DEFAULT_DEF (def))
  		{
  		  gimple *stmt = SSA_NAME_DEF_STMT (def);
! 		  if (!last_stmt)
  		    last_stmt = stmt;
  		  else if (vect_stmt_dominates_stmt_p (last_stmt, stmt))
  		    last_stmt = stmt;
--- 11258,11268 ----
  		  && !SSA_NAME_IS_DEFAULT_DEF (def))
  		{
  		  gimple *stmt = SSA_NAME_DEF_STMT (def);
! 		  if (gimple_uid (stmt) == -1u)
! 		    /* If the stmt is not inside the region do not
! 		       use it as possible insertion point.  */
! 		    ;
! 		  else if (!last_stmt)
  		    last_stmt = stmt;
  		  else if (vect_stmt_dominates_stmt_p (last_stmt, stmt))
  		    last_stmt = stmt;
diff -Nrcpad gcc-15-20250719/gcc/tree-vect-stmts.cc gcc-15-20250726/gcc/tree-vect-stmts.cc
*** gcc-15-20250719/gcc/tree-vect-stmts.cc	Sat Jul 19 22:32:55 2025
--- gcc-15-20250726/gcc/tree-vect-stmts.cc	Sat Jul 26 22:33:48 2025
*************** supportable_widening_operation (vec_info
*** 15042,15047 ****
--- 15042,15049 ----
  
        internal_fn lo, hi, even, odd;
        lookup_hilo_internal_fn (ifn, &lo, &hi);
+       if (BYTES_BIG_ENDIAN)
+ 	std::swap (lo, hi);
        *code1 = as_combined_fn (lo);
        *code2 = as_combined_fn (hi);
        optab1 = direct_internal_fn_optab (lo, {vectype, vectype});
diff -Nrcpad gcc-15-20250719/libgcc/ChangeLog gcc-15-20250726/libgcc/ChangeLog
*** gcc-15-20250719/libgcc/ChangeLog	Sat Jul 19 22:33:59 2025
--- gcc-15-20250726/libgcc/ChangeLog	Sat Jul 26 22:33:49 2025
***************
*** 1,3 ****
--- 1,14 ----
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-04-25  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR target/119853
+ 	PR target/119854
+ 	* config/gcn/crt0.c (_fini_array): Call
+ 	'__GCC_offload___cxa_finalize'.
+ 	* config/nvptx/gbl-ctors.c (__static_do_global_dtors): Likewise.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250719/libgcc/config/gcn/crt0.c gcc-15-20250726/libgcc/config/gcn/crt0.c
*** gcc-15-20250719/libgcc/config/gcn/crt0.c	Sat Jul 19 22:33:59 2025
--- gcc-15-20250726/libgcc/config/gcn/crt0.c	Sat Jul 26 22:33:49 2025
*************** typedef long long size_t;
*** 24,29 ****
--- 24,51 ----
  /* Provide an entry point symbol to silence a linker warning.  */
  void _start() {}
  
+ 
+ #define PR119369_fixed 0
+ 
+ 
+ /* Host/device compatibility: '__cxa_finalize'.  Dummy; if necessary,
+    overridden via libgomp 'target-cxa-dso-dtor.c'.  */
+ 
+ #if PR119369_fixed
+ extern void __GCC_offload___cxa_finalize (void *) __attribute__((weak));
+ #else
+ void __GCC_offload___cxa_finalize (void *) __attribute__((weak));
+ 
+ void __attribute__((weak))
+ __GCC_offload___cxa_finalize (void *dso_handle __attribute__((unused)))
+ {
+ }
+ #endif
+ 
+ /* There are no DSOs; this is the main program.  */
+ static void * const __dso_handle = 0;
+ 
+ 
  #ifdef USE_NEWLIB_INITFINI
  
  extern void __libc_init_array (void) __attribute__((weak));
*************** void _init_array()
*** 38,43 ****
--- 60,70 ----
  __attribute__((amdgpu_hsa_kernel ()))
  void _fini_array()
  {
+ #if PR119369_fixed
+   if (__GCC_offload___cxa_finalize)
+ #endif
+     __GCC_offload___cxa_finalize (__dso_handle);
+ 
    __libc_fini_array ();
  }
  
*************** void _init_array()
*** 70,75 ****
--- 97,107 ----
  __attribute__((amdgpu_hsa_kernel ()))
  void _fini_array()
  {
+ #if PR119369_fixed
+   if (__GCC_offload___cxa_finalize)
+ #endif
+     __GCC_offload___cxa_finalize (__dso_handle);
+ 
    size_t count;
    size_t i;
  
diff -Nrcpad gcc-15-20250719/libgcc/config/nvptx/gbl-ctors.c gcc-15-20250726/libgcc/config/nvptx/gbl-ctors.c
*** gcc-15-20250719/libgcc/config/nvptx/gbl-ctors.c	Sat Jul 19 22:34:00 2025
--- gcc-15-20250726/libgcc/config/nvptx/gbl-ctors.c	Sat Jul 26 22:33:49 2025
***************
*** 31,36 ****
--- 31,50 ----
  extern int atexit (void (*function) (void));
  
  
+ /* Host/device compatibility: '__cxa_finalize'.  Dummy; if necessary,
+    overridden via libgomp 'target-cxa-dso-dtor.c'.  */
+ 
+ extern void __GCC_offload___cxa_finalize (void *);
+ 
+ void __attribute__((weak))
+ __GCC_offload___cxa_finalize (void *dso_handle __attribute__((unused)))
+ {
+ }
+ 
+ /* There are no DSOs; this is the main program.  */
+ static void * const __dso_handle = 0;
+ 
+ 
  /* Handler functions ('static', in contrast to the 'gbl-ctors.h'
     prototypes).  */
  
*************** static void __static_do_global_dtors (vo
*** 49,54 ****
--- 63,70 ----
  static void
  __static_do_global_dtors (void)
  {
+   __GCC_offload___cxa_finalize (__dso_handle);
+ 
    func_ptr *p = __DTOR_LIST__;
    ++p;
    for (; *p; ++p)
diff -Nrcpad gcc-15-20250719/libgomp/ChangeLog gcc-15-20250726/libgomp/ChangeLog
*** gcc-15-20250719/libgomp/ChangeLog	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/ChangeLog	Sat Jul 26 22:33:54 2025
***************
*** 1,3 ****
--- 1,244 ----
+ 2025-07-22  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-06-17  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* testsuite/libgomp.c++/declare_target-2.C: New test.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-30  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* testsuite/libgomp.c++/target-std__valarray-1.C: New.
+ 	* testsuite/libgomp.c++/target-std__valarray-1.output: Likewise.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-30  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* testsuite/libgomp.c++/target-std__array-concurrent-usm.C: New.
+ 	* testsuite/libgomp.c++/target-std__array-concurrent.C: Adjust.
+ 	* testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C: New.
+ 	* testsuite/libgomp.c++/target-std__bitset-concurrent.C: Adjust.
+ 	* testsuite/libgomp.c++/target-std__deque-concurrent-usm.C: New.
+ 	* testsuite/libgomp.c++/target-std__deque-concurrent.C: Adjust.
+ 	* testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C: New.
+ 	* testsuite/libgomp.c++/target-std__forward_list-concurrent.C: Adjust.
+ 	* testsuite/libgomp.c++/target-std__list-concurrent-usm.C: New.
+ 	* testsuite/libgomp.c++/target-std__list-concurrent.C: Adjust.
+ 	* testsuite/libgomp.c++/target-std__map-concurrent-usm.C: New.
+ 	* testsuite/libgomp.c++/target-std__map-concurrent.C: Adjust.
+ 	* testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C: New.
+ 	* testsuite/libgomp.c++/target-std__multimap-concurrent.C: Adjust.
+ 	* testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C: New.
+ 	* testsuite/libgomp.c++/target-std__multiset-concurrent.C: Adjust.
+ 	* testsuite/libgomp.c++/target-std__set-concurrent-usm.C: New.
+ 	* testsuite/libgomp.c++/target-std__set-concurrent.C: Adjust.
+ 	* testsuite/libgomp.c++/target-std__span-concurrent-usm.C: New.
+ 	* testsuite/libgomp.c++/target-std__span-concurrent.C: Adjust.
+ 	* testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C: New.
+ 	* testsuite/libgomp.c++/target-std__valarray-concurrent.C: Adjust.
+ 	* testsuite/libgomp.c++/target-std__vector-concurrent-usm.C: New.
+ 	* testsuite/libgomp.c++/target-std__vector-concurrent.C: Adjust.
+ 
+ 2025-07-22  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-30  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 		    Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* testsuite/libgomp.c++/target-std__array-concurrent.C: New.
+ 	* testsuite/libgomp.c++/target-std__bitset-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__deque-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__flat_map-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__flat_multimap-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__flat_multiset-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__flat_set-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__forward_list-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__list-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__map-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__multimap-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__multiset-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__set-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__span-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__unordered_map-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__unordered_multimap-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__unordered_multiset-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__unordered_set-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__valarray-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__vector-concurrent.C: Likewise.
+ 
+ 2025-07-22  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-30  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 
+ 	* testsuite/libgomp.c++/target-std__cmath.C: New.
+ 	* testsuite/libgomp.c++/target-std__complex.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__numbers.C: Likewise.
+ 
+ 2025-07-22  Waffl3x  <waffl3x@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-30  Waffl3x  <waffl3x@baylibre.com>
+ 		    Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* testsuite/libgomp.c++/target-flex-10.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-100.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-101.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-11.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-12.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-2000.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-2001.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-2002.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-2003.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-30.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-300.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-31.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-32.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-33.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-41.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-60.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-61.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-62.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-70.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-80.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-81.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-90.C: New test.
+ 	* testsuite/libgomp.c++/target-flex-common.h: New test.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-30  Thomas Schwinge  <tschwinge@baylibre.com>
+ 		    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/119835
+ 	* testsuite/libgomp.oacc-c-c++-common/abi-struct-1.c:
+ 	'#pragma GCC optimize "-fno-inline"'.
+ 	* testsuite/libgomp.c-c++-common/target-abi-struct-1.c: New.
+ 	* testsuite/libgomp.c-c++-common/target-abi-struct-1-O0.c: Adjust.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-19  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR lto/120308
+ 	* testsuite/libgomp.oacc-c-c++-common/abi-struct-1.c: Add empty
+ 	structure testing.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-19  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* testsuite/libgomp.c-c++-common/target-abi-struct-1-O0.c: New.
+ 	* testsuite/libgomp.oacc-c-c++-common/abi-struct-1.c: Likewise.
+ 
+ 2025-07-22  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-06-06  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR target/120530
+ 	* testsuite/libgomp.c/target-map-zero-sized-3.c (main): Add missing
+ 	map clause; remove unused variable.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-07-17  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR target/119692
+ 	* testsuite/libgomp.c++/pr119692-1-4.C: '{ dg-timeout 10 { target offload_device } }'.
+ 	* testsuite/libgomp.c++/pr119692-1-5.C: Likewise.
+ 	* testsuite/libgomp.c++/target-exceptions-bad_cast-1.C: Likewise.
+ 	* testsuite/libgomp.c++/target-exceptions-bad_cast-2.C: Likewise.
+ 	* testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C: Likewise.
+ 	* testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C: Likewise.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR target/119692
+ 	* testsuite/libgomp.c++/pr119692-1-4.C: '{ dg-timeout 10 }'.
+ 	* testsuite/libgomp.c++/pr119692-1-5.C: Likewise.
+ 	* testsuite/libgomp.c++/target-exceptions-bad_cast-1.C: Likewise.
+ 	* testsuite/libgomp.c++/target-exceptions-bad_cast-2.C: Likewise.
+ 	* testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C: Likewise.
+ 	* testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C: Likewise.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-05-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* testsuite/libgomp.c/declare-variant-3-sm61.c: New.
+ 	* testsuite/libgomp.c/declare-variant-3.h: Adjust.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-07-21  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR target/119853
+ 	PR target/119854
+ 	* testsuite/libgomp.c++/target-cdtor-1.C: Adjust for
+ 	'targetm.cxx.use_aeabi_atexit'.
+ 	* testsuite/libgomp.c++/target-cdtor-2.C: Likewise.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-04-25  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR target/119853
+ 	PR target/119854
+ 	* target-cxa-dso-dtor.c: New.
+ 	* config/accel/target-cxa-dso-dtor.c: Likewise.
+ 	* Makefile.am (libgomp_la_SOURCES): Add it.
+ 	* Makefile.in: Regenerate.
+ 	* testsuite/libgomp.c++/target-cdtor-1.C: New.
+ 	* testsuite/libgomp.c++/target-cdtor-2.C: Likewise.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-04-25  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* testsuite/libgomp.c-c++-common/target-cdtor-1.c: New.
+ 
+ 2025-07-22  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	Backported from master:
+ 	2025-04-25  Andrew Pinski  <quic_apinski@quicinc.com>
+ 		    Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR target/119737
+ 	* testsuite/libgomp.c++/target-exceptions-throw-1.C: Remove
+ 	PR119737 XFAILing.
+ 	* testsuite/libgomp.c++/target-exceptions-throw-2.C: Likewise.
+ 	* testsuite/libgomp.oacc-c++/exceptions-throw-1.C: Likewise.
+ 	* testsuite/libgomp.oacc-c++/exceptions-throw-2.C: Likewise.
+ 
+ 2025-07-22  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-04-25  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR target/118794
+ 	* testsuite/libgomp.c++/target-exceptions-pr118794-1.C: Adjust for
+ 	'targetm.arm_eabi_unwinder'.
+ 	* testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C:
+ 	Likewise.
+ 	* testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C:
+ 	Likewise.
+ 
  2025-05-28  Tobias Burnus  <tburnus@baylibre.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250719/libgomp/Makefile.am gcc-15-20250726/libgomp/Makefile.am
*** gcc-15-20250719/libgomp/Makefile.am	Sat Jul 19 22:34:36 2025
--- gcc-15-20250726/libgomp/Makefile.am	Sat Jul 26 22:34:24 2025
*************** libgomp_la_SOURCES = alloc.c atomic.c ba
*** 70,76 ****
  	target.c splay-tree.c libgomp-plugin.c oacc-parallel.c oacc-host.c \
  	oacc-init.c oacc-mem.c oacc-async.c oacc-plugin.c oacc-cuda.c \
  	priority_queue.c affinity-fmt.c teams.c allocator.c oacc-profiling.c \
! 	oacc-target.c target-indirect.c
  
  include $(top_srcdir)/plugin/Makefrag.am
  
--- 70,76 ----
  	target.c splay-tree.c libgomp-plugin.c oacc-parallel.c oacc-host.c \
  	oacc-init.c oacc-mem.c oacc-async.c oacc-plugin.c oacc-cuda.c \
  	priority_queue.c affinity-fmt.c teams.c allocator.c oacc-profiling.c \
! 	oacc-target.c target-indirect.c target-cxa-dso-dtor.c
  
  include $(top_srcdir)/plugin/Makefrag.am
  
diff -Nrcpad gcc-15-20250719/libgomp/Makefile.in gcc-15-20250726/libgomp/Makefile.in
*** gcc-15-20250719/libgomp/Makefile.in	Sat Jul 19 22:34:36 2025
--- gcc-15-20250726/libgomp/Makefile.in	Sat Jul 26 22:34:24 2025
*************** am_libgomp_la_OBJECTS = alloc.lo atomic.
*** 219,225 ****
  	oacc-parallel.lo oacc-host.lo oacc-init.lo oacc-mem.lo \
  	oacc-async.lo oacc-plugin.lo oacc-cuda.lo priority_queue.lo \
  	affinity-fmt.lo teams.lo allocator.lo oacc-profiling.lo \
! 	oacc-target.lo target-indirect.lo $(am__objects_1)
  libgomp_la_OBJECTS = $(am_libgomp_la_OBJECTS)
  AM_V_P = $(am__v_P_@AM_V@)
  am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
--- 219,226 ----
  	oacc-parallel.lo oacc-host.lo oacc-init.lo oacc-mem.lo \
  	oacc-async.lo oacc-plugin.lo oacc-cuda.lo priority_queue.lo \
  	affinity-fmt.lo teams.lo allocator.lo oacc-profiling.lo \
! 	oacc-target.lo target-indirect.lo target-cxa-dso-dtor.lo \
! 	$(am__objects_1)
  libgomp_la_OBJECTS = $(am_libgomp_la_OBJECTS)
  AM_V_P = $(am__v_P_@AM_V@)
  am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
*************** libgomp_la_SOURCES = alloc.c atomic.c ba
*** 552,558 ****
  	oacc-parallel.c oacc-host.c oacc-init.c oacc-mem.c \
  	oacc-async.c oacc-plugin.c oacc-cuda.c priority_queue.c \
  	affinity-fmt.c teams.c allocator.c oacc-profiling.c \
! 	oacc-target.c target-indirect.c $(am__append_3)
  
  # Nvidia PTX OpenACC plugin.
  @PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_version_info = -version-info $(libtool_VERSION)
--- 553,560 ----
  	oacc-parallel.c oacc-host.c oacc-init.c oacc-mem.c \
  	oacc-async.c oacc-plugin.c oacc-cuda.c priority_queue.c \
  	affinity-fmt.c teams.c allocator.c oacc-profiling.c \
! 	oacc-target.c target-indirect.c target-cxa-dso-dtor.c \
! 	$(am__append_3)
  
  # Nvidia PTX OpenACC plugin.
  @PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_version_info = -version-info $(libtool_VERSION)
*************** distclean-compile:
*** 780,785 ****
--- 782,788 ----
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sem.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/single.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splay-tree.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/target-cxa-dso-dtor.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/target-indirect.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/target.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task.Plo@am__quote@
diff -Nrcpad gcc-15-20250719/libgomp/config/accel/target-cxa-dso-dtor.c gcc-15-20250726/libgomp/config/accel/target-cxa-dso-dtor.c
*** gcc-15-20250719/libgomp/config/accel/target-cxa-dso-dtor.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/config/accel/target-cxa-dso-dtor.c	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,62 ----
+ /* Host/device compatibility: Itanium C++ ABI, DSO Object Destruction API
+ 
+    Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+    This file is part of the GNU Offloading and Multi Processing Library
+    (libgomp).
+ 
+    Libgomp is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+    more details.
+ 
+    Under Section 7 of GPL version 3, you are granted additional
+    permissions described in the GCC Runtime Library Exception, version
+    3.1, as published by the Free Software Foundation.
+ 
+    You should have received a copy of the GNU General Public License and
+    a copy of the GCC Runtime Library Exception along with this program;
+    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #include "libgomp.h"
+ 
+ extern void __cxa_finalize (void *);
+ 
+ /* See <https://itanium-cxx-abi.github.io/cxx-abi/abi.html#dso-dtor>.
+ 
+    Even if the device is '!DEFAULT_USE_CXA_ATEXIT', we may see '__cxa_atexit'
+    calls, referencing '__dso_handle', via a 'DEFAULT_USE_CXA_ATEXIT' host.
+    '__cxa_atexit' is provided by newlib, but use of '__dso_handle' for nvptx
+    results in 'ld' error:
+ 
+        unresolved symbol __dso_handle
+        collect2: error: ld returned 1 exit status
+        nvptx mkoffload: fatal error: [...]/x86_64-pc-linux-gnu-accel-nvptx-none-gcc returned 1 exit status
+ 
+    ..., or for GCN get an implicit definition (running with
+    '--trace-symbol=__dso_handle'):
+ 
+        ./a.xamdgcn-amdhsa.mkoffload.hsaco-a.xamdgcn-amdhsa.mkoffload.2.o: reference to __dso_handle
+        <internal>: definition of __dso_handle
+ 
+    ..., which might be fine, but let's just make it explicit.  */
+ 
+ /* There are no DSOs; this is the main program.  */
+ attribute_hidden void * const __dso_handle = 0;
+ 
+ /* If this file gets linked in, that means that '__dso_handle' has been
+    referenced (for '__cxa_atexit'), and in that case, we also have to run
+    '__cxa_finalize'.  Make that happen by overriding the weak libgcc dummy
+    function '__GCC_offload___cxa_finalize'.  */
+ 
+ void
+ __GCC_offload___cxa_finalize (void *dso_handle)
+ {
+   __cxa_finalize (dso_handle);
+ }
diff -Nrcpad gcc-15-20250719/libgomp/target-cxa-dso-dtor.c gcc-15-20250726/libgomp/target-cxa-dso-dtor.c
*** gcc-15-20250719/libgomp/target-cxa-dso-dtor.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/target-cxa-dso-dtor.c	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,3 ----
+ /* Host/device compatibility: Itanium C++ ABI, DSO Object Destruction API */
+ 
+ /* Nothing needed here.  */
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c/declare-variant-3-sm61.c gcc-15-20250726/libgomp/testsuite/libgomp.c/declare-variant-3-sm61.c
*** gcc-15-20250719/libgomp/testsuite/libgomp.c/declare-variant-3-sm61.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c/declare-variant-3-sm61.c	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { offload_target_nvptx } } } */
+ /* { dg-additional-options -foffload=nvptx-none } */
+ /* { dg-additional-options "-foffload=-misa=sm_61 -foffload=-mptx=_" } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-3.h"
+ 
+ /* { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump "= f61 \\(\\);" "optimized" } } */
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c/declare-variant-3.h gcc-15-20250726/libgomp/testsuite/libgomp.c/declare-variant-3.h
*** gcc-15-20250719/libgomp/testsuite/libgomp.c/declare-variant-3.h	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.c/declare-variant-3.h	Sat Jul 26 22:33:54 2025
*************** f53 (void)
*** 37,42 ****
--- 37,49 ----
  
  __attribute__ ((noipa))
  int
+ f61 (void)
+ {
+   return 61;
+ }
+ 
+ __attribute__ ((noipa))
+ int
  f70 (void)
  {
    return 70;
*************** f89 (void)
*** 68,73 ****
--- 75,81 ----
  #pragma omp declare variant (f37) match (device={isa("sm_37")})
  #pragma omp declare variant (f52) match (device={isa("sm_52")})
  #pragma omp declare variant (f53) match (device={isa("sm_53")})
+ #pragma omp declare variant (f61) match (device={isa("sm_61")})
  #pragma omp declare variant (f70) match (device={isa("sm_70")})
  #pragma omp declare variant (f75) match (device={isa("sm_75")})
  #pragma omp declare variant (f80) match (device={isa("sm_80")})
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c/target-map-zero-sized-3.c gcc-15-20250726/libgomp/testsuite/libgomp.c/target-map-zero-sized-3.c
*** gcc-15-20250719/libgomp/testsuite/libgomp.c/target-map-zero-sized-3.c	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.c/target-map-zero-sized-3.c	Sat Jul 26 22:33:54 2025
***************
*** 1,7 ****
  int
  main ()
  {
!   int i, n, n2;
    int data[] = {1,2};
    struct S {
      int **ptrset;
--- 1,7 ----
  int
  main ()
  {
!   int i, n;
    int data[] = {1,2};
    struct S {
      int **ptrset;
*************** main ()
*** 33,48 ****
  
    i = 1;
    n = 0;
!   n2 = 2;
    #pragma omp target enter data map(sptr1[:1], sptr1->ptrset[:3], sptr1->ptrset2[:3])
    #pragma omp target enter data map(sptr1->ptrset[i][:n], sptr1->ptrset2[i][:n])
  
!   #pragma omp target
      if (sptr1->ptrset2[1][0] != 1 || sptr1->ptrset2[1][1] != 2)
        __builtin_abort ();
  
    #pragma omp target exit data map(sptr1->ptrset[i][:n], sptr1->ptrset2[i][:n])
    #pragma omp target exit data map(sptr1[:1], sptr1->ptrset[:3], sptr1->ptrset2[:3])
  
    __builtin_free (s1.ptrset);
    __builtin_free (s1.ptrset2);
--- 33,49 ----
  
    i = 1;
    n = 0;
!   #pragma omp target enter data map(data)
    #pragma omp target enter data map(sptr1[:1], sptr1->ptrset[:3], sptr1->ptrset2[:3])
    #pragma omp target enter data map(sptr1->ptrset[i][:n], sptr1->ptrset2[i][:n])
  
!   #pragma omp target map(sptr1->ptrset[i][:n], sptr1->ptrset2[i][:n])
      if (sptr1->ptrset2[1][0] != 1 || sptr1->ptrset2[1][1] != 2)
        __builtin_abort ();
  
    #pragma omp target exit data map(sptr1->ptrset[i][:n], sptr1->ptrset2[i][:n])
    #pragma omp target exit data map(sptr1[:1], sptr1->ptrset[:3], sptr1->ptrset2[:3])
+   #pragma omp target exit data map(data)
  
    __builtin_free (s1.ptrset);
    __builtin_free (s1.ptrset2);
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/declare_target-2.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/declare_target-2.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/declare_target-2.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/declare_target-2.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,25 ----
+ // { dg-do link }
+ 
+ // Actually not needed: -fipa-cp is default with -O2:
+ // { dg-additional-options "-O2 -fipa-cp" }
+ 
+ // The code failed because 'std::endl' becoḿes implicitly 'declare target'
+ // but not the 'widen' function it calls.  While the linker had no issues
+ // (endl is never called, either because it is inlined or optimized away),
+ // the IPA-CP (enabled by -O2 and higher) failed as the definition for
+ // 'widen' did not exist on the offload side.
+ 
+ #include <iostream>
+ 
+ void func (int m)
+ {
+   if (m < 0)
+     std::cout << "should not happen" << std::endl;
+ }
+ 
+ 
+ int main()
+ {
+   #pragma omp target
+     func (1);
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/pr119692-1-4.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/pr119692-1-4.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/pr119692-1-4.C	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/pr119692-1-4.C	Sat Jul 26 22:33:54 2025
***************
*** 3,8 ****
--- 3,11 ----
  /* { dg-additional-options -DDEFAULT=defaultmap(firstprivate) }
     Wrong code for offloading execution.
     { dg-xfail-run-if PR119692 { offload_device } } */
+ /* There are configurations where we 'WARNING: program timed out.' while in
+    'dynamic_cast', see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119692#c6>.
+    { dg-timeout 10 { target offload_device } } ... to make sure that happens quickly.  */
  /* { dg-additional-options -fdump-tree-gimple } */
  
  #include "pr119692-1-1.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/pr119692-1-5.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/pr119692-1-5.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/pr119692-1-5.C	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/pr119692-1-5.C	Sat Jul 26 22:33:54 2025
***************
*** 3,8 ****
--- 3,11 ----
  /* { dg-additional-options -DDEFAULT=defaultmap(to) }
     Wrong code for offloading execution.
     { dg-xfail-run-if PR119692 { offload_device } } */
+ /* There are configurations where we 'WARNING: program timed out.' while in
+    'dynamic_cast', see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119692#c6>.
+    { dg-timeout 10 { target offload_device } } ... to make sure that happens quickly.  */
  /* { dg-additional-options -fdump-tree-gimple } */
  
  #include "pr119692-1-1.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-cdtor-1.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-cdtor-1.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-cdtor-1.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-cdtor-1.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,109 ----
+ /* Offloaded C++ objects construction and destruction.  */
+ 
+ /* { dg-additional-options -fdump-tree-optimized-raw-asmname }
+    { dg-additional-options -foffload-options=-fdump-tree-optimized-raw-asmname } */
+ 
+ #include <omp.h>
+ #include <vector>
+ 
+ #pragma omp declare target
+ 
+ struct S
+ {
+   int x;
+ 
+   S()
+     : x(-1)
+   {
+     __builtin_printf("%s, %d, %d\n", __FUNCTION__, x, omp_is_initial_device());
+   }
+   S(int x)
+     : x(x)
+   {
+     __builtin_printf("%s, %d, %d\n", __FUNCTION__, x, omp_is_initial_device());
+   }
+   ~S()
+   {
+     __builtin_printf("%s, %d, %d\n", __FUNCTION__, x, omp_is_initial_device());
+   }
+ };
+ 
+ #pragma omp end declare target
+ 
+ S sH1(7);
+ 
+ #pragma omp declare target
+ 
+ S sHD1(5);
+ 
+ std::vector<S> svHD1(2);
+ 
+ #pragma omp end declare target
+ 
+ S sH2(3);
+ 
+ int main()
+ {
+   int c = 0;
+ 
+   __builtin_printf("%s:%d, %d\n", __FUNCTION__, ++c, omp_is_initial_device());
+ 
+ #pragma omp target map(c)
+   {
+     __builtin_printf("%s:%d, %d\n", __FUNCTION__, ++c, omp_is_initial_device());
+   }
+ 
+ #pragma omp target map(c)
+   {
+     __builtin_printf("%s:%d, %d\n", __FUNCTION__, ++c, omp_is_initial_device());
+   }
+ 
+   __builtin_printf("%s:%d, %d\n", __FUNCTION__, ++c, omp_is_initial_device());
+ 
+   return 0;
+ }
+ 
+ /* Verify '__cxa_atexit' calls (or '__aeabi_atexit', per 'targetm.cxx.use_aeabi_atexit').
+ 
+    For the host, there are four expected calls:
+    { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, } 4 optimized { target { cxa_atexit && { ! arm_eabi } } } } }
+      { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, } 4 optimized { target { cxa_atexit && arm_eabi } } } }
+    { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, _ZN1SD1Ev, \&sH1, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! arm_eabi } } } } }
+      { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, \&sH1, _ZN1SD1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && arm_eabi } } } }
+    { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, _ZN1SD1Ev, \&sHD1, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! arm_eabi } } } } }
+      { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, \&sHD1, _ZN1SD1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && arm_eabi } } } }
+    { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, _ZNSt6vectorI1SSaIS0_EED1Ev, \&svHD1, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! arm_eabi } } } } }
+      { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, \&svHD1, _ZNSt6vectorI1SSaIS0_EED1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && arm_eabi } } } }
+    { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, _ZN1SD1Ev, \&sH2, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! arm_eabi } } } } }
+      { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, \&sH2, _ZN1SD1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && arm_eabi } } } }
+ 
+    For the device, there are two expected calls:
+    { dg-final { scan-offload-tree-dump-times {gimple_call <__cxa_atexit, } 2 optimized { target cxa_atexit } } }
+    { dg-final { scan-offload-tree-dump-times {gimple_call <__cxa_atexit, NULL, _ZN1SD1Ev, \&sHD1, \&__dso_handle>} 1 optimized { target cxa_atexit } } }
+    { dg-final { scan-offload-tree-dump-times {gimple_call <__cxa_atexit, NULL, _ZNSt6vectorI1SSaIS0_EED1Ev, \&svHD1, \&__dso_handle>} 1 optimized { target cxa_atexit } } }
+ */
+ 
+ /* C++ objects are constructed in order of appearance (..., and destructed in reverse order).
+    { dg-output {S, 7, 1[\r\n]+} }
+    { dg-output {S, 5, 1[\r\n]+} }
+    { dg-output {S, -1, 1[\r\n]+} }
+    { dg-output {S, -1, 1[\r\n]+} }
+    { dg-output {S, 3, 1[\r\n]+} }
+    { dg-output {main:1, 1[\r\n]+} }
+    { dg-output {S, 5, 0[\r\n]+} { target offload_device } }
+    { dg-output {S, -1, 0[\r\n]+} { target offload_device } }
+    { dg-output {S, -1, 0[\r\n]+} { target offload_device } }
+    { dg-output {main:2, 1[\r\n]+} { target { ! offload_device } } }
+    { dg-output {main:2, 0[\r\n]+} { target offload_device } }
+    { dg-output {main:3, 1[\r\n]+} { target { ! offload_device } } }
+    { dg-output {main:3, 0[\r\n]+} { target offload_device } }
+    { dg-output {main:4, 1[\r\n]+} }
+    { dg-output {~S, -1, 0[\r\n]+} { target offload_device } }
+    { dg-output {~S, -1, 0[\r\n]+} { target offload_device } }
+    { dg-output {~S, 5, 0[\r\n]+} { target offload_device } }
+    { dg-output {~S, 3, 1[\r\n]+} }
+    { dg-output {~S, -1, 1[\r\n]+} }
+    { dg-output {~S, -1, 1[\r\n]+} }
+    { dg-output {~S, 5, 1[\r\n]+} }
+    { dg-output {~S, 7, 1[\r\n]+} }
+ */
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-cdtor-2.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-cdtor-2.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-cdtor-2.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-cdtor-2.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,145 ----
+ /* Offloaded 'constructor' and 'destructor' functions, and C++ objects construction and destruction.  */
+ 
+ /* { dg-require-effective-target init_priority } */
+ 
+ /* { dg-additional-options -fdump-tree-optimized-raw-asmname }
+    { dg-additional-options -foffload-options=-fdump-tree-optimized-raw-asmname } */
+ 
+ #include <omp.h>
+ #include <vector>
+ 
+ #pragma omp declare target
+ 
+ struct S
+ {
+   int x;
+ 
+   S()
+     : x(-1)
+   {
+     __builtin_printf("%s, %d, %d\n", __FUNCTION__, x, omp_is_initial_device());
+   }
+   S(int x)
+     : x(x)
+   {
+     __builtin_printf("%s, %d, %d\n", __FUNCTION__, x, omp_is_initial_device());
+   }
+   ~S()
+   {
+     __builtin_printf("%s, %d, %d\n", __FUNCTION__, x, omp_is_initial_device());
+   }
+ };
+ 
+ #pragma omp end declare target
+ 
+ S sH1 __attribute__((init_priority(1500))) (7);
+ 
+ #pragma omp declare target
+ 
+ S sHD1 __attribute__((init_priority(2000))) (5);
+ 
+ std::vector<S> svHD1 __attribute__((init_priority(1000))) (2);
+ 
+ static void
+ __attribute__((constructor(20000)))
+ initDH1()
+ {
+   __builtin_printf("%s, %d\n", __FUNCTION__, omp_is_initial_device());
+ }
+ 
+ static void
+ __attribute__((destructor(20000)))
+ finiDH1()
+ {
+   __builtin_printf("%s, %d\n", __FUNCTION__, omp_is_initial_device());
+ }
+ 
+ #pragma omp end declare target
+ 
+ S sH2 __attribute__((init_priority(500))) (3);
+ 
+ static void
+ __attribute__((constructor(10000)))
+ initH1()
+ {
+   __builtin_printf("%s, %d\n", __FUNCTION__, omp_is_initial_device());
+ }
+ 
+ static void
+ __attribute__((destructor(10000)))
+ finiH1()
+ {
+   __builtin_printf("%s, %d\n", __FUNCTION__, omp_is_initial_device());
+ }
+ 
+ int main()
+ {
+   int c = 0;
+ 
+   __builtin_printf("%s:%d, %d\n", __FUNCTION__, ++c, omp_is_initial_device());
+ 
+ #pragma omp target map(c)
+   {
+     __builtin_printf("%s:%d, %d\n", __FUNCTION__, ++c, omp_is_initial_device());
+   }
+ 
+ #pragma omp target map(c)
+   {
+     __builtin_printf("%s:%d, %d\n", __FUNCTION__, ++c, omp_is_initial_device());
+   }
+ 
+   __builtin_printf("%s:%d, %d\n", __FUNCTION__, ++c, omp_is_initial_device());
+ 
+   return 0;
+ }
+ 
+ /* Verify '__cxa_atexit' calls (or '__aeabi_atexit', per 'targetm.cxx.use_aeabi_atexit').
+ 
+    For the host, there are four expected calls:
+    { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, } 4 optimized { target { cxa_atexit && { ! arm_eabi } } } } }
+      { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, } 4 optimized { target { cxa_atexit && arm_eabi } } } }
+    { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, _ZN1SD1Ev, \&sH1, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! arm_eabi } } } } }
+      { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, \&sH1, _ZN1SD1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && arm_eabi } } } }
+    { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, _ZN1SD1Ev, \&sHD1, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! arm_eabi } } } } }
+      { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, \&sHD1, _ZN1SD1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && arm_eabi } } } }
+    { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, _ZNSt6vectorI1SSaIS0_EED1Ev, \&svHD1, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! arm_eabi } } } } }
+      { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, \&svHD1, _ZNSt6vectorI1SSaIS0_EED1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && arm_eabi } } } }
+    { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, _ZN1SD1Ev, \&sH2, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! arm_eabi } } } } }
+      { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, \&sH2, _ZN1SD1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && arm_eabi } } } }
+ 
+    For the device, there are two expected calls:
+    { dg-final { scan-offload-tree-dump-times {gimple_call <__cxa_atexit, } 2 optimized { target cxa_atexit } } }
+    { dg-final { scan-offload-tree-dump-times {gimple_call <__cxa_atexit, NULL, _ZN1SD1Ev, \&sHD1, \&__dso_handle>} 1 optimized { target cxa_atexit } } }
+    { dg-final { scan-offload-tree-dump-times {gimple_call <__cxa_atexit, NULL, _ZNSt6vectorI1SSaIS0_EED1Ev, \&svHD1, \&__dso_handle>} 1 optimized { target cxa_atexit } } }
+ */
+ 
+ /* Defined order in which 'constructor' functions, and 'destructor' functions are run, and C++ objects are constructed (..., and destructed in reverse order).
+    { dg-output {S, 3, 1[\r\n]+} }
+    { dg-output {S, -1, 1[\r\n]+} }
+    { dg-output {S, -1, 1[\r\n]+} }
+    { dg-output {S, 7, 1[\r\n]+} }
+    { dg-output {S, 5, 1[\r\n]+} }
+    { dg-output {initH1, 1[\r\n]+} }
+    { dg-output {initDH1, 1[\r\n]+} }
+    { dg-output {main:1, 1[\r\n]+} }
+    { dg-output {S, -1, 0[\r\n]+} { target offload_device } }
+    { dg-output {S, -1, 0[\r\n]+} { target offload_device } }
+    { dg-output {S, 5, 0[\r\n]+} { target offload_device } }
+    { dg-output {initDH1, 0[\r\n]+} { target offload_device } }
+    { dg-output {main:2, 1[\r\n]+} { target  { ! offload_device } } }
+    { dg-output {main:2, 0[\r\n]+} { target offload_device } }
+    { dg-output {main:3, 1[\r\n]+} { target { ! offload_device } } }
+    { dg-output {main:3, 0[\r\n]+} { target offload_device } }
+    { dg-output {main:4, 1[\r\n]+} }
+    { dg-output {~S, 5, 0[\r\n]+} { target offload_device } }
+    { dg-output {~S, -1, 0[\r\n]+} { target offload_device } }
+    { dg-output {~S, -1, 0[\r\n]+} { target offload_device } }
+    { dg-output {finiDH1, 0[\r\n]+} { target offload_device } }
+    { dg-output {~S, 5, 1[\r\n]+} }
+    { dg-output {~S, 7, 1[\r\n]+} }
+    { dg-output {~S, -1, 1[\r\n]+} }
+    { dg-output {~S, -1, 1[\r\n]+} }
+    { dg-output {~S, 3, 1[\r\n]+} }
+    { dg-output {finiDH1, 1[\r\n]+} }
+    { dg-output {finiH1, 1[\r\n]+} }
+ */
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C	Sat Jul 26 22:33:54 2025
***************
*** 23,25 ****
--- 23,28 ----
     PR119692.
  
     { dg-shouldfail {'std::bad_cast' exception} } */
+ /* There are configurations where we 'WARNING: program timed out.' while in
+    'dynamic_cast', see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119692#c6>.
+    { dg-timeout 10 { target offload_device } } ... to make sure that happens quickly.  */
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2.C	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-2.C	Sat Jul 26 22:33:54 2025
***************
*** 22,24 ****
--- 22,27 ----
  
     For GCN, nvptx offload execution, there is no 'catch'ing; any exception is fatal.
     { dg-shouldfail {'MyException' exception} { offload_device } } */
+ /* There are configurations where we 'WARNING: program timed out.' while in
+    'dynamic_cast', see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119692#c6>.
+    { dg-timeout 10 { target offload_device } } ... to make sure that happens quickly.  */
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C	Sat Jul 26 22:33:54 2025
***************
*** 14,21 ****
  
  /* In this specific C++ arrangement, distilled from PR118794, GCC synthesizes
     '__builtin_eh_pointer', '__builtin_unwind_resume' calls as dead code in 'f':
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } }
     { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
     { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } }
     Given '-O0' and '-foffload-options=-mno-fake-exceptions', offload compilation fails:
--- 14,23 ----
  
  /* In this specific C++ arrangement, distilled from PR118794, GCC synthesizes
     '__builtin_eh_pointer', '__builtin_unwind_resume' calls as dead code in 'f':
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized { target { ! { arm_eabi || tic6x-*-* } } } } }
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized { target { ! { arm_eabi || tic6x-*-* } } } } }
!    ..., just 'targetm.arm_eabi_unwinder' is different:
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_cxa_end_cleanup, } 1 optimized { target { arm_eabi || tic6x-*-* } } } }
     { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
     { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } }
     Given '-O0' and '-foffload-options=-mno-fake-exceptions', offload compilation fails:
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C	Sat Jul 26 22:33:54 2025
***************
*** 14,21 ****
  
  /* In this specific C++ arrangement, distilled from PR118794, GCC synthesizes
     '__builtin_eh_pointer', '__builtin_unwind_resume' calls as dead code in 'f':
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } }
     { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
     { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } }
     Given '-O0' and '-foffload-options=-mno-fake-exceptions', offload compilation fails:
--- 14,23 ----
  
  /* In this specific C++ arrangement, distilled from PR118794, GCC synthesizes
     '__builtin_eh_pointer', '__builtin_unwind_resume' calls as dead code in 'f':
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized { target { ! { arm_eabi || tic6x-*-* } } } } }
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized { target { ! { arm_eabi || tic6x-*-* } } } } }
!    ..., just 'targetm.arm_eabi_unwinder' is different:
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_cxa_end_cleanup, } 1 optimized { target { arm_eabi || tic6x-*-* } } } }
     { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
     { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } }
     Given '-O0' and '-foffload-options=-mno-fake-exceptions', offload compilation fails:
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1.C	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1.C	Sat Jul 26 22:33:54 2025
*************** int main()
*** 51,57 ****
  
  /* In this specific C++ arrangement, distilled from PR118794, GCC synthesizes
     '__builtin_eh_pointer', '__builtin_unwind_resume' calls as dead code in 'f':
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } }
     { dg-final { scan-offload-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
     { dg-final { scan-offload-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } } */
--- 51,59 ----
  
  /* In this specific C++ arrangement, distilled from PR118794, GCC synthesizes
     '__builtin_eh_pointer', '__builtin_unwind_resume' calls as dead code in 'f':
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized { target { ! { arm_eabi || tic6x-*-* } } } } }
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized { target { ! { arm_eabi || tic6x-*-* } } } } }
!    ..., just 'targetm.arm_eabi_unwinder' is different:
!    { dg-final { scan-tree-dump-times {gimple_call <__builtin_cxa_end_cleanup, } 1 optimized { target { arm_eabi || tic6x-*-* } } } }
     { dg-final { scan-offload-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
     { dg-final { scan-offload-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } } */
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-throw-1.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-throw-1.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-throw-1.C	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-throw-1.C	Sat Jul 26 22:33:54 2025
***************
*** 4,12 ****
     { dg-additional-options -fexceptions } */
  /* { dg-additional-options -fdump-tree-optimized-raw }
     { dg-additional-options -foffload-options=-fdump-tree-optimized-raw } */
- /* { dg-bogus {Size expression must be absolute\.} PR119737 { target offload_target_amdgcn xfail *-*-* } 0 }
-    { dg-ice PR119737 { offload_target_amdgcn } }
-    { dg-excess-errors {'mkoffload' failures etc.} { xfail offload_target_amdgcn } } */
  
  #include "../libgomp.oacc-c++/exceptions-throw-1.C"
  
--- 4,9 ----
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-throw-2.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-throw-2.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-exceptions-throw-2.C	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-exceptions-throw-2.C	Sat Jul 26 22:33:54 2025
***************
*** 4,12 ****
     { dg-additional-options -fexceptions } */
  /* { dg-additional-options -fdump-tree-optimized-raw }
     { dg-additional-options -foffload-options=-fdump-tree-optimized-raw } */
- /* { dg-bogus {Size expression must be absolute\.} PR119737 { target offload_target_amdgcn xfail *-*-* } 0 }
-    { dg-ice PR119737 { offload_target_amdgcn } }
-    { dg-excess-errors {'mkoffload' failures etc.} { xfail offload_target_amdgcn } } */
  
  #include "../libgomp.oacc-c++/exceptions-throw-2.C"
  
--- 4,9 ----
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-10.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-10.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-10.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-10.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,215 ----
+ /* Basic container usage.  */
+ 
+ #include <vector>
+ #include <deque>
+ #include <list>
+ #include <set>
+ #include <map>
+ #if __cplusplus >= 201103L
+ #include <array>
+ #include <forward_list>
+ #include <unordered_set>
+ #include <unordered_map>
+ #endif
+ 
+ bool vector_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       std::vector<int> vector;
+       ok = vector.empty();
+     }
+   return ok;
+ }
+ 
+ bool deque_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       std::deque<int> deque;
+       ok = deque.empty();
+     }
+   return ok;
+ }
+ 
+ bool list_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       std::list<int> list;
+       ok = list.empty();
+     }
+   return ok;
+ }
+ 
+ bool map_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       std::map<int, int> map;
+       ok = map.empty();
+     }
+   return ok;
+ }
+ 
+ bool set_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       std::set<int> set;
+       ok = set.empty();
+     }
+   return ok;
+ }
+ 
+ bool multimap_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       std::multimap<int, int> multimap;
+       ok = multimap.empty();
+     }
+   return ok;
+ }
+ 
+ bool multiset_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       std::multiset<int, int> multiset;
+       ok = multiset.empty();
+     }
+   return ok;
+ }
+ 
+ #if __cplusplus >= 201103L
+ 
+ bool array_test()
+ {
+   static constexpr std::size_t array_size = 42;
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       std::array<int, array_size> array{};
+       ok = array[0] == 0
+ 	   && array[array_size - 1] == 0;
+     }
+   return ok;
+ }
+ 
+ bool forward_list_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       std::forward_list<int> forward_list;
+       ok = forward_list.empty();
+     }
+   return ok;
+ }
+ 
+ bool unordered_map_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       std::unordered_map<int, int> unordered_map;
+       ok = unordered_map.empty();
+     }
+   return ok;
+ }
+ 
+ bool unordered_set_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       std::unordered_set<int> unordered_set;
+       ok = unordered_set.empty();
+     }
+   return ok;
+ }
+ 
+ bool unordered_multimap_test()
+ {
+ 
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       std::unordered_multimap<int, int> unordered_multimap;
+       ok = unordered_multimap.empty();
+     }
+   return ok;
+ }
+ 
+ bool unordered_multiset_test()
+ {
+ 
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       std::unordered_multiset<int> unordered_multiset;
+       ok = unordered_multiset.empty();
+     }
+   return ok;
+ }
+ 
+ #else
+ bool array_test() { return true; }
+ bool forward_list_test() { return true; }
+ bool unordered_map_test() { return true; }
+ bool unordered_set_test() { return true; }
+ bool unordered_multimap_test() { return true; }
+ bool unordered_multiset_test() { return true; }
+ #endif
+ 
+ int main()
+ {
+   const bool vec_res                = vector_test();
+   __builtin_printf("vector            : %s\n", vec_res                ? "PASS" : "FAIL");
+   const bool deque_res              = deque_test();
+   __builtin_printf("deque             : %s\n", deque_res              ? "PASS" : "FAIL");
+   const bool list_res               = list_test();
+   __builtin_printf("list              : %s\n", list_res               ? "PASS" : "FAIL");
+   const bool map_res                = map_test();
+   __builtin_printf("map               : %s\n", map_res                ? "PASS" : "FAIL");
+   const bool set_res                = set_test();
+   __builtin_printf("set               : %s\n", set_res                ? "PASS" : "FAIL");
+   const bool multimap_res           = multimap_test();
+   __builtin_printf("multimap          : %s\n", multimap_res           ? "PASS" : "FAIL");
+   const bool multiset_res           = multiset_test();
+   __builtin_printf("multiset          : %s\n", multiset_res           ? "PASS" : "FAIL");
+   const bool array_res              = array_test();
+   __builtin_printf("array             : %s\n", array_res              ? "PASS" : "FAIL");
+   const bool forward_list_res       = forward_list_test();
+   __builtin_printf("forward_list      : %s\n", forward_list_res       ? "PASS" : "FAIL");
+   const bool unordered_map_res      = unordered_map_test();
+   __builtin_printf("unordered_map     : %s\n", unordered_map_res      ? "PASS" : "FAIL");
+   const bool unordered_set_res      = unordered_set_test();
+   __builtin_printf("unordered_set     : %s\n", unordered_set_res      ? "PASS" : "FAIL");
+   const bool unordered_multimap_res = unordered_multimap_test();
+   __builtin_printf("unordered_multimap: %s\n", unordered_multimap_res ? "PASS" : "FAIL");
+   const bool unordered_multiset_res = unordered_multiset_test();
+   __builtin_printf("unordered_multiset: %s\n", unordered_multiset_res ? "PASS" : "FAIL");
+   const bool ok = vec_res
+ 		  && deque_res
+ 		  && list_res
+ 		  && map_res
+ 		  && set_res
+ 		  && multimap_res
+ 		  && multiset_res
+ 		  && array_res
+ 		  && forward_list_res
+ 		  && unordered_map_res
+ 		  && unordered_set_res
+ 		  && unordered_multimap_res
+ 		  && unordered_multiset_res;
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-100.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-100.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-100.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-100.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,210 ----
+ /* Container adaptors in target region.
+    Does not test comparison operators other than equality to allow these tests
+    to be generalized to arbitrary input data.  */
+ 
+ #include <algorithm>
+ #include <cstdio>
+ #include <deque>
+ #include <queue>
+ #include <stack>
+ #include <vector>
+ 
+ #include "target-flex-common.h"
+ 
+ template<typename T, std::size_t Size>
+ bool test_stack(T (&arr)[Size])
+ {
+   bool ok;
+   #pragma omp target map(from: ok) map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       const std::size_t half_size = Size / 2;
+       const T first_element = arr[0];
+       const T middle_element = arr[half_size - 1];
+       const T last_element = arr[Size - 1];
+       typedef std::stack<T, std::vector<T> > stack_type;
+       stack_type stack;
+       VERIFY (stack.empty());
+       VERIFY (stack.size() == 0);
+       {
+ 	/* Do half with push.  */
+ 	std::size_t idx = 0;
+ 	for (; idx < half_size; ++idx)
+ 	  {
+ 	    stack.push(arr[idx]);
+ 	    VERIFY (stack.top() == arr[idx]);
+ 	  }
+ 	VERIFY (stack.size() == half_size);
+ 	VERIFY (static_cast<const stack_type&>(stack).size() == half_size);
+ 	for (; idx < Size; ++idx)
+ 	  {
+ 	    #if __cplusplus >= 201103L
+ 	      /* Do the rest with emplace if C++11 or higher.  */
+ 	      stack.emplace(arr[idx]);
+ 	    #else
+ 	      /* Otherwise just use push again.  */
+ 	      stack.push(arr[idx]);
+ 	    #endif
+ 	    VERIFY (stack.top() == arr[idx]);
+ 	  }
+ 	VERIFY (stack.size() == Size);
+ 	VERIFY (static_cast<const stack_type&>(stack).size() == Size);
+ 
+ 	const stack_type stack_orig = stack_type(std::vector<T>(arr, arr + Size));
+ 	VERIFY (stack == stack_orig);
+ 	/* References are contained in their own scope so we don't accidently
+ 	   add tests referencing them after they have been invalidated.  */
+ 	{
+ 	  const T& const_top = static_cast<const stack_type&>(stack).top();
+ 	  VERIFY (const_top == last_element);
+ 	  T& mutable_top = stack.top();
+ 	  mutable_top = first_element;
+ 	  VERIFY (const_top == first_element);
+ 	}
+ 	/* Will only compare inequal if the first and last elements are different.  */
+ 	VERIFY (first_element != last_element || stack != stack_orig);
+ 	for (std::size_t count = Size - half_size; count != 0; --count)
+ 	  stack.pop();
+ 	VERIFY (stack.top() == middle_element);
+ 	const stack_type stack_half_orig = stack_type(std::vector<T>(arr, arr + half_size));
+ 	VERIFY (stack == stack_half_orig);
+       }
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ template<typename T, std::size_t Size>
+ bool test_queue(T (&arr)[Size])
+ {
+   bool ok;
+   #pragma omp target map(from: ok) map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       const std::size_t half_size = Size / 2;
+       const T first_element = arr[0];
+       const T last_element = arr[Size - 1];
+       typedef std::queue<T, std::deque<T> > queue_type;
+       queue_type queue;
+       VERIFY (queue.empty());
+       VERIFY (queue.size() == 0);
+       {
+ 	/* Do half with push.  */
+ 	std::size_t idx = 0;
+ 	for (; idx < half_size; ++idx)
+ 	  {
+ 	    queue.push(arr[idx]);
+ 	    VERIFY (queue.back() == arr[idx]);
+ 	    VERIFY (queue.front() == first_element);
+ 	  }
+ 	VERIFY (queue.size() == half_size);
+ 	VERIFY (static_cast<const queue_type&>(queue).size() == half_size);
+ 	for (; idx < Size; ++idx)
+ 	  {
+ 	    #if __cplusplus >= 201103L
+ 	      /* Do the rest with emplace if C++11 or higher.  */
+ 	      queue.emplace(arr[idx]);
+ 	    #else
+ 	      /* Otherwise just use push again.  */
+ 	      queue.push(arr[idx]);
+ 	    #endif
+ 	    VERIFY (queue.back() == arr[idx]);
+ 	  }
+ 	VERIFY (queue.size() == Size);
+ 	VERIFY (static_cast<const queue_type&>(queue).size() == Size);
+ 
+ 	const queue_type queue_orig = queue_type(std::deque<T>(arr, arr + Size));
+ 	VERIFY (queue == queue_orig);
+ 
+ 	/* References are contained in their own scope so we don't accidently
+ 	   add tests referencing them after they have been invalidated.  */
+ 	{
+ 	  const T& const_front = static_cast<const queue_type&>(queue).front();
+ 	  VERIFY (const_front == first_element);
+ 	  T& mutable_front = queue.front();
+ 
+ 	  const T& const_back = static_cast<const queue_type&>(queue).back();
+ 	  VERIFY (const_back == last_element);
+ 	  T& mutable_back = queue.back();
+ 	  {
+ 	    using std::swap;
+ 	    swap(mutable_front, mutable_back);
+ 	  }
+ 	  VERIFY (const_front == last_element);
+ 	  VERIFY (const_back == first_element);
+ 	  /* Will only compare inequal if the first and last elements are different.  */
+ 	  VERIFY (first_element != last_element || queue != queue_orig);
+ 	  /* Return the last element to normal for the next comparison.  */
+ 	  mutable_back = last_element;
+ 	}
+ 
+ 	const T middle_element = arr[half_size];
+ 	for (std::size_t count = Size - half_size; count != 0; --count)
+ 	  queue.pop();
+ 	VERIFY (queue.front() == middle_element);
+ 	const queue_type queue_upper_half = queue_type(std::deque<T>(arr + half_size, arr + Size));
+ 	VERIFY (queue == queue_upper_half);
+       }
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ template<typename T, std::size_t Size>
+ bool test_priority_queue(T (&arr)[Size], const T min_value, const T max_value)
+ {
+   bool ok;
+   #pragma omp target map(from: ok) map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       typedef std::priority_queue<T, std::vector<T> > priority_queue_type;
+       {
+ 	priority_queue_type pqueue;
+ 	VERIFY (pqueue.empty());
+ 	VERIFY (pqueue.size() == 0);
+       }
+       {
+ 	priority_queue_type pqueue(arr, arr + Size);
+ 	VERIFY (!pqueue.empty());
+ 	VERIFY (pqueue.size() == Size);
+ 	VERIFY (static_cast<const priority_queue_type&>(pqueue).size() == Size);
+ 
+ 	const T old_max = pqueue.top();
+ 
+ 	#if __cplusplus >= 201103L
+ 	  pqueue.emplace(max_value);
+ 	#else
+ 	  pqueue.push(max_value);
+ 	#endif
+ 	VERIFY (pqueue.top() == max_value);
+ 	pqueue.pop();
+ 	VERIFY (pqueue.top() == old_max);
+ 	pqueue.push(min_value);
+ 	VERIFY (pqueue.top() == old_max);
+ 	pqueue.push(max_value);
+ 	VERIFY (pqueue.top() == max_value);
+ 	pqueue.pop();
+ 	VERIFY (pqueue.top() == old_max);
+ 	VERIFY (pqueue.size() == Size + 1);
+ 
+ 	for (std::size_t count = Size; count != 0; --count)
+ 	  pqueue.pop();
+ 	VERIFY (pqueue.size() == 1);
+ 	VERIFY (pqueue.top() == min_value);
+       }
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ int main()
+ {
+   int arr[10] = {0,1,2,3,4,5,6,7,8,9};
+ 
+   return test_stack(arr)
+ 	 && test_queue(arr)
+ 	 && test_priority_queue(arr, 0, 1000) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-101.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-101.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-101.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-101.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,136 ----
+ /* { dg-additional-options -std=c++23 } */
+ 
+ /* C++23 container adaptors in target region.
+    Severely needs additional tests.  */
+ 
+ #include <cstdio>
+ #include <utility>
+ #include <version>
+ 
+ #if __cpp_lib_flat_map >= 202207L
+ #define ENABLE_FLAT_MAP 1
+ #endif
+ #if __cpp_lib_flat_set >= 202207L
+ #define ENABLE_FLAT_SET 1
+ #endif
+ 
+ #ifdef ENABLE_FLAT_MAP
+ #include <flat_map>
+ #endif
+ #ifdef ENABLE_FLAT_SET
+ #include <flat_set>
+ #endif
+ 
+ #include "target-flex-common.h"
+ 
+ #ifdef ENABLE_FLAT_MAP
+ template<typename K, typename V, typename std::size_t Size>
+ bool test_flat_map(std::pair<K, V> (&arr)[Size])
+ {
+   bool ok;
+   #pragma omp target map(from: ok) map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	using flat_map_type = std::flat_map<K, V>;
+ 	flat_map_type map = {arr, arr + Size};
+ 
+ 	VERIFY (!map.empty());
+ 	for (const auto& element : arr)
+ 	  VERIFY (map.contains(element.first));
+       }
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ template<typename K, typename V, typename std::size_t Size>
+ bool test_flat_multimap(std::pair<K, V> (&arr)[Size])
+ {
+   bool ok;
+   #pragma omp target map(from: ok) map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	using flat_map_type = std::flat_map<K, V>;
+ 	flat_map_type map = {arr, arr + Size};
+ 
+ 	VERIFY (!map.empty());
+ 	for (const auto& element : arr)
+ 	  VERIFY (map.contains(element.first));
+       }
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ #else
+ template<typename K, typename V, typename std::size_t Size>
+ bool test_flat_map(std::pair<K, V> (&arr)[Size]) { return true; }
+ 
+ template<typename K, typename V, typename std::size_t Size>
+ bool test_flat_multimap(std::pair<K, V> (&arr)[Size]) { return true; }
+ #endif
+ 
+ #ifdef ENABLE_FLAT_SET
+ template<typename T, typename std::size_t Size>
+ bool test_flat_set(T (&arr)[Size])
+ {
+   bool ok;
+   #pragma omp target map(from: ok) map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	using flat_set_type = std::flat_set<T>;
+ 	flat_set_type set = {arr, arr + Size};
+ 
+ 	VERIFY (!set.empty());
+ 	for (const auto& element : arr)
+ 	  VERIFY (set.contains(element));
+       }
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ template<typename T, typename std::size_t Size>
+ bool test_flat_multiset(T (&arr)[Size])
+ {
+   bool ok;
+   #pragma omp target map(from: ok) map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	using flat_multiset_type = std::flat_multiset<T>;
+ 	flat_multiset_type multiset = {arr, arr + Size};
+ 
+ 	VERIFY (!multiset.empty());
+ 	for (const auto& element : arr)
+ 	  VERIFY (multiset.contains(element));
+       }
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ #else
+ template<typename T, typename std::size_t Size>
+ bool test_flat_set(T (&arr)[Size]) { return true; }
+ 
+ template<typename T, typename std::size_t Size>
+ bool test_flat_multiset(T (&arr)[Size]) { return true; }
+ #endif
+ 
+ int main()
+ {
+   int arr[10] = {0,1,2,3,4,5,6,7,8,9};
+   std::pair<int, int> pairs[10] = {{ 1,  2}, { 2,  4}, { 3,  6}, { 4,  8}, { 5, 10},
+ 				   { 6, 12}, { 7, 14}, { 8, 16}, { 9, 18}, {10, 20}};
+ 
+   return test_flat_set(arr)
+ 	 && test_flat_multiset(arr)
+ 	 && test_flat_map(pairs)
+ 	 && test_flat_multimap(pairs) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-11.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-11.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-11.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-11.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,444 ----
+ /* Check constructors/destructors are called in containers.  */
+ 
+ #include <vector>
+ #include <deque>
+ #include <list>
+ #include <set>
+ #include <map>
+ #include <utility>
+ #if __cplusplus >= 201103L
+ #include <array>
+ #include <forward_list>
+ #include <unordered_set>
+ #include <unordered_map>
+ #endif
+ 
+ #include "target-flex-common.h"
+ 
+ struct indirect_counter
+ {
+   typedef int counter_value_type;
+   counter_value_type *_count_ptr;
+ 
+   indirect_counter(counter_value_type *count_ptr) BL_NOEXCEPT : _count_ptr(count_ptr) {
+     ++(*_count_ptr);
+   }
+   indirect_counter(const indirect_counter& other) BL_NOEXCEPT : _count_ptr(other._count_ptr) {
+     ++(*_count_ptr);
+   }
+   /* Don't declare a move constructor, we want to copy no matter what.  */
+   ~indirect_counter() {
+     --(*_count_ptr);
+   }
+ };
+ 
+ bool operator==(indirect_counter const& lhs, indirect_counter const& rhs) BL_NOEXCEPT
+   { return lhs._count_ptr == rhs._count_ptr; }
+ bool operator<(indirect_counter const& lhs, indirect_counter const& rhs) BL_NOEXCEPT
+   { return lhs._count_ptr < rhs._count_ptr; }
+ 
+ #if __cplusplus >= 201103L
+ template<>
+ struct std::hash<indirect_counter>
+ {
+   std::size_t operator()(const indirect_counter& ic) const noexcept
+     { return std::hash<indirect_counter::counter_value_type *>{}(ic._count_ptr); }
+ };
+ #endif
+ 
+ /* Not a container, just a sanity check really.  */
+ bool automatic_lifetime_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter = 0;
+       {
+ 	indirect_counter c = indirect_counter(&counter);
+ 	indirect_counter(static_cast<int*>(&counter));
+       }
+       VERIFY (counter == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ bool vector_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter = 0;
+       {
+ 	std::vector<indirect_counter> vec(42, indirect_counter(&counter));
+ 	VERIFY (counter == 42);
+ 	vec.resize(32, indirect_counter(&counter));
+ 	VERIFY (counter == 32);
+ 	vec.push_back(indirect_counter(&counter));
+ 	VERIFY (counter == 33);
+ 	vec.pop_back();
+ 	VERIFY (counter == 32);
+ 	vec.pop_back();
+ 	VERIFY (counter == 31);
+ 	vec.resize(100, indirect_counter(&counter));
+ 	VERIFY (counter == 100);
+       }
+       VERIFY (counter == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ bool deque_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter = 0;
+       {
+ 	std::deque<indirect_counter> vec(42, indirect_counter(&counter));
+ 	VERIFY (counter == 42);
+ 	vec.resize(32, indirect_counter(&counter));
+ 	VERIFY (counter == 32);
+ 	vec.push_back(indirect_counter(&counter));
+ 	VERIFY (counter == 33);
+ 	vec.pop_back();
+ 	VERIFY (counter == 32);
+ 	vec.pop_back();
+ 	VERIFY (counter == 31);
+ 	vec.resize(100, indirect_counter(&counter));
+ 	VERIFY (counter == 100);
+       }
+       VERIFY (counter == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ bool list_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter = 0;
+       {
+ 	std::list<indirect_counter> list(42, indirect_counter(&counter));
+ 	VERIFY (counter == 42);
+ 	list.resize(32, indirect_counter(&counter));
+ 	VERIFY (counter == 32);
+ 	list.push_back(indirect_counter(&counter));
+ 	VERIFY (counter == 33);
+ 	list.pop_back();
+ 	VERIFY (counter == 32);
+ 	list.pop_back();
+ 	VERIFY (counter == 31);
+ 	list.resize(100, indirect_counter(&counter));
+ 	VERIFY (counter == 100);
+       }
+       VERIFY (counter == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ bool map_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter = 0;
+       {
+ 	std::map<int, indirect_counter> map;
+ 	map.insert(std::make_pair(1, indirect_counter(&counter)));
+ 	VERIFY (counter == 1);
+ 	map.insert(std::make_pair(1, indirect_counter(&counter)));
+ 	VERIFY (counter == 1);
+ 	map.insert(std::make_pair(2, indirect_counter(&counter)));
+ 	VERIFY (counter == 2);
+       }
+       VERIFY (counter == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ bool set_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter0 = 0;
+       int counter1 = 0;
+       {
+ 	std::set<indirect_counter> set;
+ 	set.insert(indirect_counter(&counter0));
+ 	VERIFY (counter0 == 1);
+ 	set.insert(indirect_counter(&counter0));
+ 	VERIFY (counter0 == 1);
+ 	set.insert(indirect_counter(&counter1));
+ 	VERIFY (counter0 == 1 && counter1 == 1);
+       }
+       VERIFY (counter0 == 0 && counter1 == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ bool multimap_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter = 0;
+       {
+ 	std::multimap<int, indirect_counter> multimap;
+ 	multimap.insert(std::make_pair(1, indirect_counter(&counter)));
+ 	VERIFY (counter == 1);
+ 	multimap.insert(std::make_pair(1, indirect_counter(&counter)));
+ 	VERIFY (counter == 2);
+ 	multimap.insert(std::make_pair(2, indirect_counter(&counter)));
+ 	VERIFY (counter == 3);
+       }
+       VERIFY (counter == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ bool multiset_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter0 = 0;
+       int counter1 = 0;
+       {
+ 	std::multiset<indirect_counter> multiset;
+ 	multiset.insert(indirect_counter(&counter0));
+ 	VERIFY (counter0 == 1);
+ 	multiset.insert(indirect_counter(&counter0));
+ 	VERIFY (counter0 == 2);
+ 	multiset.insert(indirect_counter(&counter1));
+ 	VERIFY (counter0 == 2 && counter1 == 1);
+       }
+       VERIFY (counter0 == 0 && counter1 == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ #if __cplusplus >= 201103L
+ 
+ bool array_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter = 0;
+       {
+ 	indirect_counter ic(&counter);
+ 	std::array<indirect_counter, 10> array{ic, ic, ic, ic, ic,
+ 					       ic, ic, ic, ic, ic};
+ 	VERIFY (counter == 11);
+       }
+       VERIFY (counter == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ bool forward_list_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter = 0;
+       {
+ 	std::forward_list<indirect_counter> forward_list(42, indirect_counter(&counter));
+ 	VERIFY (counter == 42);
+ 	forward_list.resize(32, indirect_counter(&counter));
+ 	VERIFY (counter == 32);
+ 	forward_list.push_front(indirect_counter(&counter));
+ 	VERIFY (counter == 33);
+ 	forward_list.pop_front();
+ 	VERIFY (counter == 32);
+ 	forward_list.pop_front();
+ 	VERIFY (counter == 31);
+ 	forward_list.resize(100, indirect_counter(&counter));
+ 	VERIFY (counter == 100);
+       }
+       VERIFY (counter == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ bool unordered_map_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter = 0;
+       {
+ 	std::unordered_map<int, indirect_counter> unordered_map;
+ 	unordered_map.insert({1, indirect_counter(&counter)});
+ 	VERIFY (counter == 1);
+ 	unordered_map.insert({1, indirect_counter(&counter)});
+ 	VERIFY (counter == 1);
+ 	unordered_map.insert({2, indirect_counter(&counter)});
+ 	VERIFY (counter == 2);
+       }
+       VERIFY (counter == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ bool unordered_set_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter0 = 0;
+       int counter1 = 0;
+       {
+ 	std::unordered_set<indirect_counter> unordered_set;
+ 	unordered_set.insert(indirect_counter(&counter0));
+ 	VERIFY (counter0 == 1);
+ 	unordered_set.insert(indirect_counter(&counter0));
+ 	VERIFY (counter0 == 1);
+ 	unordered_set.insert(indirect_counter(&counter1));
+ 	VERIFY (counter0 == 1 && counter1 == 1);
+       }
+       VERIFY (counter0 == 0 && counter1 == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ bool unordered_multimap_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter = 0;
+       {
+ 	std::unordered_multimap<int, indirect_counter> unordered_multimap;
+ 	unordered_multimap.insert({1, indirect_counter(&counter)});
+ 	VERIFY (counter == 1);
+ 	unordered_multimap.insert({1, indirect_counter(&counter)});
+ 	VERIFY (counter == 2);
+ 	unordered_multimap.insert({2, indirect_counter(&counter)});
+ 	VERIFY (counter == 3);
+       }
+       VERIFY (counter == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ bool unordered_multiset_test()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       bool inner_ok = true;
+       int counter0 = 0;
+       int counter1 = 0;
+       {
+ 	std::unordered_multiset<indirect_counter> unordered_multiset;
+ 	unordered_multiset.insert(indirect_counter(&counter0));
+ 	VERIFY (counter0 == 1);
+ 	unordered_multiset.insert(indirect_counter(&counter0));
+ 	VERIFY (counter0 == 2);
+ 	unordered_multiset.insert(indirect_counter(&counter1));
+ 	VERIFY (counter0 == 2 && counter1 == 1);
+       }
+       VERIFY (counter0 == 0 && counter1 == 0);
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ #else
+ bool array_test() { return true; }
+ bool forward_list_test() { return true; }
+ bool unordered_map_test() { return true; }
+ bool unordered_set_test() { return true; }
+ bool unordered_multimap_test() { return true; }
+ bool unordered_multiset_test() { return true; }
+ #endif
+ 
+ int main()
+ {
+   const bool auto_res               = automatic_lifetime_test();
+   const bool vec_res                = vector_test();
+   const bool deque_res              = deque_test();
+   const bool list_res               = list_test();
+   const bool map_res                = map_test();
+   const bool set_res                = set_test();
+   const bool multimap_res           = multimap_test();
+   const bool multiset_res           = multiset_test();
+   const bool array_res              = array_test();
+   const bool forward_list_res       = forward_list_test();
+   const bool unordered_map_res      = unordered_map_test();
+   const bool unordered_set_res      = unordered_set_test();
+   const bool unordered_multimap_res = unordered_multimap_test();
+   const bool unordered_multiset_res = unordered_multiset_test();
+   std::printf("sanity check      : %s\n", auto_res               ? "PASS" : "FAIL");
+   std::printf("vector            : %s\n", vec_res                ? "PASS" : "FAIL");
+   std::printf("deque             : %s\n", deque_res              ? "PASS" : "FAIL");
+   std::printf("list              : %s\n", list_res               ? "PASS" : "FAIL");
+   std::printf("map               : %s\n", map_res                ? "PASS" : "FAIL");
+   std::printf("set               : %s\n", set_res                ? "PASS" : "FAIL");
+   std::printf("multimap          : %s\n", multimap_res           ? "PASS" : "FAIL");
+   std::printf("multiset          : %s\n", multiset_res           ? "PASS" : "FAIL");
+   std::printf("array             : %s\n", array_res              ? "PASS" : "FAIL");
+   std::printf("forward_list      : %s\n", forward_list_res       ? "PASS" : "FAIL");
+   std::printf("unordered_map     : %s\n", unordered_map_res      ? "PASS" : "FAIL");
+   std::printf("unordered_set     : %s\n", unordered_set_res      ? "PASS" : "FAIL");
+   std::printf("unordered_multimap: %s\n", unordered_multimap_res ? "PASS" : "FAIL");
+   std::printf("unordered_multiset: %s\n", unordered_multiset_res ? "PASS" : "FAIL");
+   const bool ok = auto_res
+ 		  && vec_res
+ 		  && deque_res
+ 		  && list_res
+ 		  && map_res
+ 		  && set_res
+ 		  && multimap_res
+ 		  && multiset_res
+ 		  && array_res
+ 		  && forward_list_res
+ 		  && unordered_map_res
+ 		  && unordered_set_res
+ 		  && unordered_multimap_res
+ 		  && unordered_multiset_res;
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-12.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-12.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-12.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-12.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,736 ----
+ /* Populated with mapped data, validate, mutate, validate again.
+    The cases using sets do not mutate.
+    Note: Some of the code in here really sucks due to being made to be
+    compatible with c++98.  */
+ 
+ #include <vector>
+ #include <deque>
+ #include <list>
+ #include <set>
+ #include <map>
+ #if __cplusplus >= 201103L
+ #include <array>
+ #include <forward_list>
+ #include <unordered_set>
+ #include <unordered_map>
+ #endif
+ 
+ #include <limits>
+ #include <iterator>
+ 
+ #include "target-flex-common.h"
+ 
+ template<bool B, class T = void>
+ struct enable_if {};
+  
+ template<class T>
+ struct enable_if<true, T> { typedef T type; };
+ 
+ struct identity_func
+ {
+ #if __cplusplus < 201103L
+   template<typename T>
+   T& operator()(T& arg) const BL_NOEXCEPT { return arg; }
+   template<typename T>
+   T const& operator()(T const& arg) const BL_NOEXCEPT { return arg; }
+ #else
+   template<typename T>
+   constexpr T&& operator()(T&& arg) const BL_NOEXCEPT { return std::forward<T>(arg); }
+ #endif
+ };
+ 
+ /* Applies projection to the second iterator.  */
+ template<typename It0, typename It1, typename Proj>
+ bool validate_sequential_elements(const It0 begin0, const It0 end0,
+ 				  const It1 begin1, const It1 end1,
+ 				  Proj proj) BL_NOEXCEPT
+ {
+   It0 it0 = begin0;
+   It1 it1 = begin1;
+   for (; it0 != end0; ++it0, ++it1)
+     {
+       /* Sizes mismatch, don't bother aborting though just fail the test.  */
+       if (it1 == end1)
+ 	return false;
+       if (*it0 != proj(*it1))
+ 	return false;
+     }
+   /* Sizes mismatch, do as above.  */
+   if (it1 != end1)
+     return false;
+   return true;
+ }
+ 
+ template<typename It0, typename It1>
+ bool validate_sequential_elements(const It0 begin0, const It0 end0,
+ 				  const It1 begin1, const It1 end1) BL_NOEXCEPT
+ {
+   return validate_sequential_elements(begin0, end0, begin1, end1, identity_func());
+ }
+ 
+ /* Inefficient, but simple.  */
+ template<typename It, typename OutIt>
+ void simple_copy(const It begin, const It end, OutIt out) BL_NOEXCEPT
+ {
+   for (It it = begin; it != end; ++it, ++out)
+     *out = *it;
+ }
+ 
+ template<typename It, typename MutateFn>
+ void simple_mutate(const It begin, const It end, MutateFn mut_fn) BL_NOEXCEPT
+ {
+   for (It it = begin; it != end; ++it)
+     *it = mut_fn(*it);
+ }
+ 
+ template<typename MutationFunc, typename T, std::size_t Size>
+ bool vector_test(const T (&arr)[Size])
+ {
+   bool ok;
+   T out_arr[Size];
+   T out_mut_arr[Size];
+   #pragma omp target map(from: ok, out_arr[:Size], out_mut_arr[:Size]) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::vector<T> vector(arr, arr + Size);
+ 	VERIFY (validate_sequential_elements(vector.begin(), vector.end(),
+ 					     arr, arr + Size));
+ 	simple_copy(vector.begin(), vector.end(), out_arr);
+ 	simple_mutate(vector.begin(), vector.end(), MutationFunc());
+ 	VERIFY (validate_sequential_elements(vector.begin(), vector.end(),
+ 					     arr, arr + Size, MutationFunc()));
+ 	simple_copy(vector.begin(), vector.end(), out_mut_arr);
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (validate_sequential_elements(out_arr, out_arr + Size,
+ 						  arr, arr + Size));
+   VERIFY_NON_TARGET (validate_sequential_elements(out_mut_arr, out_mut_arr + Size,
+ 						  arr, arr + Size, MutationFunc()));
+   return true;
+ }
+ 
+ template<typename MutationFunc, typename T, std::size_t Size>
+ bool deque_test(const T (&arr)[Size])
+ {
+   bool ok;
+   T out_arr[Size];
+   T out_mut_arr[Size];
+   #pragma omp target map(from: ok, out_arr[:Size], out_mut_arr[:Size]) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::deque<T> deque(arr, arr + Size);
+ 	VERIFY (validate_sequential_elements(deque.begin(), deque.end(),
+ 					     arr, arr + Size));
+ 	simple_copy(deque.begin(), deque.end(), out_arr);
+ 	simple_mutate(deque.begin(), deque.end(), MutationFunc());
+ 	VERIFY (validate_sequential_elements(deque.begin(), deque.end(),
+ 					     arr, arr + Size, MutationFunc()));
+ 	simple_copy(deque.begin(), deque.end(), out_mut_arr);
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (validate_sequential_elements(out_arr, out_arr + Size,
+ 						  arr, arr + Size));
+   VERIFY_NON_TARGET (validate_sequential_elements(out_mut_arr, out_mut_arr + Size,
+ 						  arr, arr + Size, MutationFunc()));
+   return true;
+ }
+ 
+ template<typename MutationFunc, typename T, std::size_t Size>
+ bool list_test(const T (&arr)[Size])
+ {
+   bool ok;
+   T out_arr[Size];
+   T out_mut_arr[Size];
+   #pragma omp target map(from: ok, out_arr[:Size], out_mut_arr[:Size]) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::list<T> list(arr, arr + Size);
+ 	VERIFY (validate_sequential_elements(list.begin(), list.end(),
+ 					     arr, arr + Size));
+ 	simple_copy(list.begin(), list.end(), out_arr);
+ 	simple_mutate(list.begin(), list.end(), MutationFunc());
+ 	VERIFY (validate_sequential_elements(list.begin(), list.end(),
+ 					     arr, arr + Size, MutationFunc()));
+ 	simple_copy(list.begin(), list.end(), out_mut_arr);
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (validate_sequential_elements(out_arr, out_arr + Size,
+ 						  arr, arr + Size));
+   VERIFY_NON_TARGET (validate_sequential_elements(out_mut_arr, out_mut_arr + Size,
+ 						  arr, arr + Size, MutationFunc()));
+   return true;
+ }
+ 
+ template<typename T>
+ const T& get_key(const T& arg) BL_NOEXCEPT
+   { return arg; }
+ template<typename K, typename V>
+ const K& get_key(const std::pair<K, V>& pair) BL_NOEXCEPT
+   { return pair.first; }
+ template<typename T>
+ const T& get_value(const T& arg) BL_NOEXCEPT
+   { return arg; }
+ template<typename K, typename V>
+ const K& get_value(const std::pair<K, V>& pair) BL_NOEXCEPT
+   { return pair.second; }
+ 
+ template<typename T>
+ struct key_type { typedef T type; };
+ template<typename K, typename V>
+ struct key_type<std::pair<K, V> > { typedef K type; };
+ 
+ template<typename Proj, typename Container, typename It>
+ bool validate_associative(const Container& container,
+ 			  const It compare_begin,
+ 			  const It compare_end,
+ 			  Proj proj) BL_NOEXCEPT
+ {
+   const typename Container::const_iterator elem_end = container.end();
+   for (It compare_it = compare_begin; compare_it != compare_end; ++compare_it)
+     {
+       const typename Container::const_iterator elem_it = container.find(get_key(*compare_it));
+       VERIFY_NON_TARGET (elem_it != elem_end);
+       VERIFY_NON_TARGET (proj(get_value(*compare_it)) == get_value(*elem_it));
+     }
+   return true;
+ }
+ 
+ template<typename Container, typename It>
+ bool validate_associative(const Container& container,
+ 			  const It compare_begin,
+ 			  const It compare_end) BL_NOEXCEPT
+ {
+   return validate_associative(container, compare_begin, compare_end, identity_func());
+ }
+ 
+ template<typename It, typename MutateFn>
+ void simple_mutate_map(const It begin, const It end, MutateFn mut_fn) BL_NOEXCEPT
+ {
+   for (It it = begin; it != end; ++it)
+     it->second = mut_fn(it->second);
+ }
+ 
+ template<typename It, typename OutIter>
+ void simple_copy_unique(const It begin, const It end, OutIter out) BL_NOEXCEPT
+ {
+   /* In case anyone reads this, I want it to be known that I hate c++98.  */
+   typedef typename key_type<typename std::iterator_traits<It>::value_type>::type key_t;
+   std::set<key_t> already_seen;
+   for (It it = begin; it != end; ++it, ++out)
+     {
+       key_t key = get_key(*it);
+       if (already_seen.find(key) != already_seen.end())
+ 	continue;
+       already_seen.insert(key);
+       *out = *it;
+     }
+ }
+ 
+ template<typename MutationFunc, typename K, typename V, std::size_t Size>
+ bool map_test(const std::pair<K, V> (&arr)[Size])
+ {
+   std::map<K, V> reference_map(arr, arr + Size);
+   bool ok;
+   /* Both sizes should be the same.  */
+   std::pair<K, V> out_pairs[Size];
+   std::size_t out_size;
+   std::pair<K, V> out_pairs_mut[Size];
+   std::size_t out_size_mut;
+   #pragma omp target map(from: ok, out_pairs[:Size], out_size, \
+ 			       out_pairs_mut[:Size], out_size_mut) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::vector<std::pair<K, V> > unique_elems;
+ 	simple_copy_unique(arr, arr + Size,
+ 			   std::back_insert_iterator<std::vector<std::pair<K, V> > >(unique_elems));
+ 
+ 	std::map<K, V> map(arr, arr + Size);
+ 	VERIFY (validate_associative(map, unique_elems.begin(), unique_elems.end()));
+ 	simple_copy(map.begin(), map.end(), out_pairs);
+ 	out_size = map.size();
+ 	simple_mutate_map(map.begin(), map.end(), MutationFunc());
+ 	VERIFY (validate_associative(map, unique_elems.begin(), unique_elems.end(),
+ 				     MutationFunc()));
+ 	simple_copy(map.begin(), map.end(), out_pairs_mut);
+ 	out_size_mut = map.size();
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (out_size == out_size_mut);
+   VERIFY_NON_TARGET (validate_associative(reference_map,
+ 					  out_pairs, out_pairs + out_size));
+   simple_mutate_map(reference_map.begin(), reference_map.end(), MutationFunc());
+   VERIFY_NON_TARGET (validate_associative(reference_map,
+ 					  out_pairs_mut, out_pairs_mut + out_size_mut));
+   return true;
+ }
+ 
+ template<typename T, std::size_t Size>
+ bool set_test(const T (&arr)[Size])
+ {
+   std::set<T> reference_set(arr, arr + Size);
+   bool ok;
+   /* Both sizes should be the same.  */
+   T out_arr[Size];
+   std::size_t out_size;
+   #pragma omp target map(from: ok, out_arr[:Size], out_size) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::vector<T> unique_elems;
+ 	simple_copy_unique(arr, arr + Size,
+ 			   std::back_insert_iterator<std::vector<T> >(unique_elems));
+ 
+ 	std::set<T> set(arr, arr + Size);
+ 	VERIFY (validate_associative(set, unique_elems.begin(), unique_elems.end()));
+ 	simple_copy(set.begin(), set.end(), out_arr);
+ 	out_size = set.size();
+ 	/* Sets can't be mutated, we could create another set with mutated
+ 	   but it gets a little annoying and probably isn't an interesting test.  */
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (validate_associative(reference_set,
+ 					  out_arr, out_arr + out_size));
+   return true;
+ }
+ 
+ template<typename Proj, typename Container, typename It>
+ bool validate_multi_associative(const Container& container,
+ 				const It compare_begin,
+ 				const It compare_end,
+ 				Proj proj) BL_NOEXCEPT
+ {
+   /* Once again, for the poor soul reviewing these, I hate c++98.  */
+   typedef typename key_type<typename std::iterator_traits<It>::value_type>::type key_t;
+   typedef std::map<key_t, std::size_t> counter_map; 
+   counter_map key_count_map;
+   for (It it = compare_begin; it != compare_end; ++it)
+     {
+       const key_t& key = get_key(*it);
+       typename counter_map::iterator counter_it
+ 	= key_count_map.find(key);
+       if (counter_it != key_count_map.end())
+ 	++counter_it->second;
+       else
+ 	key_count_map.insert(std::pair<const key_t, std::size_t>(key, std::size_t(1)));
+     }
+   const typename Container::const_iterator elem_end = container.end();
+   for (It compare_it = compare_begin; compare_it != compare_end; ++compare_it)
+     {
+       const key_t& key = get_key(*compare_it);
+       typename counter_map::iterator count_it = key_count_map.find(key);
+       std::size_t key_count = count_it != key_count_map.end() ? count_it->second
+ 							      : std::size_t(0);
+       VERIFY_NON_TARGET (key_count > std::size_t(0) && "this will never happen");
+       /* This gets tested multiple times but that should be fine.  */
+       VERIFY_NON_TARGET (key_count == container.count(key));
+       typename Container::const_iterator elem_it = container.find(key);
+       /* This will never happen if the previous case passed.  */
+       VERIFY_NON_TARGET (elem_it != elem_end);
+       bool found_element = false;
+       for (; elem_it != elem_end; ++elem_it)
+ 	if (proj(get_value(*compare_it)) == get_value(*elem_it))
+ 	  {
+ 	    found_element = true;
+ 	    break;
+ 	  }
+       VERIFY_NON_TARGET (found_element);
+     }
+   return true;
+ }
+ 
+ template<typename Container, typename It>
+ bool validate_multi_associative(const Container& container,
+ 				const It compare_begin,
+ 				const It compare_end) BL_NOEXCEPT
+ {
+   return validate_multi_associative(container, compare_begin, compare_end, identity_func());
+ }
+ 
+ template<typename MutationFunc, typename K, typename V, std::size_t Size>
+ bool multimap_test(const std::pair<K, V> (&arr)[Size])
+ {
+   std::multimap<K, V> reference_multimap(arr, arr + Size);
+   bool ok;
+   std::pair<K, V> out_pairs[Size];
+   std::pair<K, V> out_pairs_mut[Size];
+   #pragma omp target map(from: ok, out_pairs[:Size], out_pairs_mut[:Size]) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::multimap<K, V> multimap(arr, arr + Size);
+ 	VERIFY (validate_multi_associative(multimap, arr, arr + Size));
+ 	simple_copy(multimap.begin(), multimap.end(), out_pairs);
+ 	simple_mutate_map(multimap.begin(), multimap.end(), MutationFunc());
+ 	VERIFY (validate_multi_associative(multimap, arr, arr + Size, MutationFunc()));
+ 	simple_copy(multimap.begin(), multimap.end(), out_pairs_mut);
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (validate_multi_associative(reference_multimap,
+ 						out_pairs, out_pairs + Size));
+   simple_mutate_map(reference_multimap.begin(), reference_multimap.end(), MutationFunc());
+   VERIFY_NON_TARGET (validate_multi_associative(reference_multimap,
+ 						out_pairs_mut, out_pairs_mut + Size));
+   return true;
+ }
+ 
+ template<typename T, std::size_t Size>
+ bool multiset_test(const T (&arr)[Size])
+ {
+   std::multiset<T> reference_multiset(arr, arr + Size);
+   bool ok;
+   T out_arr[Size];
+   #pragma omp target map(from: ok, out_arr[:Size]) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::multiset<T> set(arr, arr + Size);
+ 	VERIFY (validate_multi_associative(set, arr, arr + Size));
+ 	simple_copy(set.begin(), set.end(), out_arr);
+ 	/* Sets can't be mutated, we could create another set with mutated
+ 	   but it gets a little annoying and probably isn't an interesting test.  */
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (validate_multi_associative(reference_multiset,
+ 						out_arr, out_arr + Size));
+   return true;
+ }
+ 
+ #if __cplusplus >= 201103L
+ 
+ template<typename MutationFunc, typename T, std::size_t Size>
+ bool array_test(const T (&arr)[Size])
+ {
+   bool ok;
+   T out_arr[Size];
+   T out_mut_arr[Size];
+   #pragma omp target map(from: ok, out_arr[:Size], out_mut_arr[:Size]) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::array<T, Size> std_array{};
+ 	/* Special case for std::array since it can't be initialized
+ 	   with iterators.  */
+ 	{
+ 	  T zero_val = T{};
+ 	  for (auto it = std_array.begin(); it != std_array.end(); ++it)
+ 	    VERIFY (*it == zero_val);
+ 	}
+ 	simple_copy(arr, arr + Size, std_array.begin());
+ 	VERIFY (validate_sequential_elements(std_array.begin(), std_array.end(),
+ 					     arr, arr + Size));
+ 	simple_copy(std_array.begin(), std_array.end(), out_arr);
+ 	simple_mutate(std_array.begin(), std_array.end(), MutationFunc());
+ 	VERIFY (validate_sequential_elements(std_array.begin(), std_array.end(),
+ 					     arr, arr + Size, MutationFunc()));
+ 	simple_copy(std_array.begin(), std_array.end(), out_mut_arr);
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (validate_sequential_elements(out_arr, out_arr + Size,
+ 						  arr, arr + Size));
+   VERIFY_NON_TARGET (validate_sequential_elements(out_mut_arr, out_mut_arr + Size,
+ 						  arr, arr + Size, MutationFunc()));
+   return true;
+ }
+ 
+ template<typename MutationFunc, typename T, std::size_t Size>
+ bool forward_list_test(const T (&arr)[Size])
+ {
+   bool ok;
+   T out_arr[Size];
+   T out_mut_arr[Size];
+   #pragma omp target map(from: ok, out_arr[:Size], out_mut_arr[:Size]) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::forward_list<T> fwd_list(arr, arr + Size);
+ 	VERIFY (validate_sequential_elements(fwd_list.begin(), fwd_list.end(),
+ 					     arr, arr + Size));
+ 	simple_copy(fwd_list.begin(), fwd_list.end(), out_arr);
+ 	simple_mutate(fwd_list.begin(), fwd_list.end(), MutationFunc());
+ 	VERIFY (validate_sequential_elements(fwd_list.begin(), fwd_list.end(),
+ 					     arr, arr + Size, MutationFunc()));
+ 	simple_copy(fwd_list.begin(), fwd_list.end(), out_mut_arr);
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (validate_sequential_elements(out_arr, out_arr + Size,
+ 						  arr, arr + Size));
+   VERIFY_NON_TARGET (validate_sequential_elements(out_mut_arr, out_mut_arr + Size,
+ 						  arr, arr + Size, MutationFunc()));
+   return true;
+ }
+ 
+ template<typename MutationFunc, typename K, typename V, std::size_t Size>
+ bool unordered_map_test(const std::pair<K, V> (&arr)[Size])
+ {
+   std::unordered_map<K, V> reference_map(arr, arr + Size);
+   bool ok;
+   /* Both sizes should be the same.  */
+   std::pair<K, V> out_pairs[Size];
+   std::size_t out_size;
+   std::pair<K, V> out_pairs_mut[Size];
+   std::size_t out_size_mut;
+   #pragma omp target map(from: ok, out_pairs[:Size], out_size, \
+ 			       out_pairs_mut[:Size], out_size_mut) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::vector<std::pair<K, V> > unique_elems;
+ 	simple_copy_unique(arr, arr + Size,
+ 			   std::back_insert_iterator<std::vector<std::pair<K, V> > >(unique_elems));
+ 
+ 	std::unordered_map<K, V> map(arr, arr + Size);
+ 	VERIFY (validate_associative(map, unique_elems.begin(), unique_elems.end()));
+ 	simple_copy(map.begin(), map.end(), out_pairs);
+ 	out_size = map.size();
+ 	simple_mutate_map(map.begin(), map.end(), MutationFunc());
+ 	VERIFY (validate_associative(map, unique_elems.begin(), unique_elems.end(),
+ 				     MutationFunc()));
+ 	simple_copy(map.begin(), map.end(), out_pairs_mut);
+ 	out_size_mut = map.size();
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (out_size == out_size_mut);
+   VERIFY_NON_TARGET (validate_associative(reference_map,
+ 					  out_pairs, out_pairs + out_size));
+   simple_mutate_map(reference_map.begin(), reference_map.end(), MutationFunc());
+   VERIFY_NON_TARGET (validate_associative(reference_map,
+ 					  out_pairs_mut, out_pairs_mut + out_size_mut));
+   return true;
+ }
+ 
+ template<typename T, std::size_t Size>
+ bool unordered_set_test(const T (&arr)[Size])
+ {
+   std::unordered_set<T> reference_set(arr, arr + Size);
+   bool ok;
+   /* Both sizes should be the same.  */
+   T out_arr[Size];
+   std::size_t out_size;
+   #pragma omp target map(from: ok, out_arr[:Size], out_size) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::vector<T> unique_elems;
+ 	simple_copy_unique(arr, arr + Size,
+ 			   std::back_insert_iterator<std::vector<T> >(unique_elems));
+ 
+ 	std::unordered_set<T> set(arr, arr + Size);
+ 	VERIFY (validate_associative(set, unique_elems.begin(), unique_elems.end()));
+ 	simple_copy(set.begin(), set.end(), out_arr);
+ 	out_size = set.size();
+ 	/* Sets can't be mutated, we could create another set with mutated
+ 	   but it gets a little annoying and probably isn't an interesting test.  */
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (validate_associative(reference_set,
+ 					  out_arr, out_arr + out_size));
+   return true;
+ }
+ 
+ template<typename MutationFunc, typename K, typename V, std::size_t Size>
+ bool unordered_multimap_test(const std::pair<K, V> (&arr)[Size])
+ {
+   std::unordered_multimap<K, V> reference_multimap(arr, arr + Size);
+   bool ok;
+   std::pair<K, V> out_pairs[Size];
+   std::pair<K, V> out_pairs_mut[Size];
+   #pragma omp target map(from: ok, out_pairs[:Size], out_pairs_mut[:Size]) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::unordered_multimap<K, V> multimap(arr, arr + Size);
+ 	VERIFY (validate_multi_associative(multimap, arr, arr + Size));
+ 	simple_copy(multimap.begin(), multimap.end(), out_pairs);
+ 	simple_mutate_map(multimap.begin(), multimap.end(), MutationFunc());
+ 	VERIFY (validate_multi_associative(multimap, arr, arr + Size, MutationFunc()));
+ 	simple_copy(multimap.begin(), multimap.end(), out_pairs_mut);
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (validate_multi_associative(reference_multimap,
+ 						out_pairs, out_pairs + Size));
+   simple_mutate_map(reference_multimap.begin(), reference_multimap.end(), MutationFunc());
+   VERIFY_NON_TARGET (validate_multi_associative(reference_multimap,
+ 						out_pairs_mut, out_pairs_mut + Size));
+   return true;
+ }
+ 
+ template<typename T, std::size_t Size>
+ bool unordered_multiset_test(const T (&arr)[Size])
+ {
+   std::unordered_multiset<T> reference_multiset(arr, arr + Size);
+   bool ok;
+   T out_arr[Size];
+   #pragma omp target map(from: ok, out_arr[:Size]) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::unordered_multiset<T> set(arr, arr + Size);
+ 	VERIFY (validate_multi_associative(set, arr, arr + Size));
+ 	simple_copy(set.begin(), set.end(), out_arr);
+ 	/* Sets can't be mutated, we could create another set with mutated
+ 	   but it gets a little annoying and probably isn't an interesting test.  */
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (validate_multi_associative(reference_multiset,
+ 						out_arr, out_arr + Size));
+   return true;
+ }
+ 
+ #else
+ template<typename, typename T, std::size_t Size> bool array_test(const T (&arr)[Size]) { return true; }
+ template<typename, typename T, std::size_t Size> bool forward_list_test(const T (&arr)[Size]) { return true; }
+ template<typename, typename T, std::size_t Size> bool unordered_map_test(const T (&arr)[Size]) { return true; }
+ template<typename T, std::size_t Size> bool unordered_set_test(const T (&arr)[Size]) { return true; }
+ template<typename, typename T, std::size_t Size> bool unordered_multimap_test(const T (&arr)[Size]) { return true; }
+ template<typename T, std::size_t Size> bool unordered_multiset_test(const T (&arr)[Size]) { return true; }
+ #endif
+ 
+ /* This clamps to the maximum value to guard against overflowing,
+    assuming std::numeric_limits is specialized for T.  */
+ struct multiply_by_2
+ {
+   template<typename T>
+   typename enable_if<std::numeric_limits<T>::is_specialized, T>::type
+   operator()(T arg) const BL_NOEXCEPT {
+     if (arg < static_cast<T>(0))
+       {
+ 	if (std::numeric_limits<T>::min() / static_cast<T>(2) >= arg)
+ 	  return std::numeric_limits<T>::min();
+       }
+     else
+       {
+ 	if (std::numeric_limits<T>::max() / static_cast<T>(2) <= arg)
+ 	  return std::numeric_limits<T>::max();
+       }
+     return arg * 2;
+   }
+   template<typename T>
+   typename enable_if<!std::numeric_limits<T>::is_specialized, T>::type
+   operator()(T arg) const BL_NOEXCEPT {
+     return arg * 2;
+   }
+ };
+ 
+ int main()
+ {
+   int data[8] = {0, 1, 2, 3, 4, 5, 6, 7};
+   std::pair<int, int> pairs[10] = {std::pair<int, int>( 1,  2),
+ 				   std::pair<int, int>( 2,  4),
+ 				   std::pair<int, int>( 3,  6),
+ 				   std::pair<int, int>( 4,  8),
+ 				   std::pair<int, int>( 5, 10),
+ 				   std::pair<int, int>( 6, 12),
+ 				   std::pair<int, int>( 7, 14),
+ 				   std::pair<int, int>( 8, 16),
+ 				   std::pair<int, int>( 9, 18),
+ 				   std::pair<int, int>(10, 20)};
+   const bool vec_res                = vector_test<multiply_by_2>(data);
+   const bool deque_res              = deque_test<multiply_by_2>(data);
+   const bool list_res               = list_test<multiply_by_2>(data);
+   const bool map_res                = map_test<multiply_by_2>(pairs);
+   const bool set_res                = set_test(data);
+   const bool multimap_res           = multimap_test<multiply_by_2>(pairs);
+   const bool multiset_res           = multiset_test(data);
+   const bool array_res              = array_test<multiply_by_2>(data);
+   const bool forward_list_res       = forward_list_test<multiply_by_2>(data);
+   const bool unordered_map_res      = unordered_map_test<multiply_by_2>(pairs);
+   const bool unordered_set_res      = unordered_set_test(data);
+   const bool unordered_multimap_res = unordered_multimap_test<multiply_by_2>(pairs);
+   const bool unordered_multiset_res = unordered_multiset_test(data);
+   std::printf("vector            : %s\n", vec_res                ? "PASS" : "FAIL");
+   std::printf("deque             : %s\n", deque_res              ? "PASS" : "FAIL");
+   std::printf("list              : %s\n", list_res               ? "PASS" : "FAIL");
+   std::printf("map               : %s\n", map_res                ? "PASS" : "FAIL");
+   std::printf("set               : %s\n", set_res                ? "PASS" : "FAIL");
+   std::printf("multimap          : %s\n", multimap_res           ? "PASS" : "FAIL");
+   std::printf("multiset          : %s\n", multiset_res           ? "PASS" : "FAIL");
+   std::printf("array             : %s\n", array_res              ? "PASS" : "FAIL");
+   std::printf("forward_list      : %s\n", forward_list_res       ? "PASS" : "FAIL");
+   std::printf("unordered_map     : %s\n", unordered_map_res      ? "PASS" : "FAIL");
+   std::printf("unordered_set     : %s\n", unordered_set_res      ? "PASS" : "FAIL");
+   std::printf("unordered_multimap: %s\n", unordered_multimap_res ? "PASS" : "FAIL");
+   std::printf("unordered_multiset: %s\n", unordered_multiset_res ? "PASS" : "FAIL");
+   const bool ok = vec_res
+ 		  && deque_res
+ 		  && list_res
+ 		  && map_res
+ 		  && set_res
+ 		  && multimap_res
+ 		  && multiset_res
+ 		  && array_res
+ 		  && forward_list_res
+ 		  && unordered_map_res
+ 		  && unordered_set_res
+ 		  && unordered_multimap_res
+ 		  && unordered_multiset_res;
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-2000.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-2000.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-2000.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-2000.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,32 ----
+ /* Tiny tuple test.  */
+ 
+ #include <tuple>
+ 
+ #include "target-flex-common.h"
+ 
+ bool test(int arg)
+ {
+   bool ok;
+   int out;
+   std::tuple tup = {'a', arg, 3.14f};
+   #pragma omp target map(from: ok, out) map(to: tup)
+     {
+       bool inner_ok = true;
+       {
+ 	VERIFY (std::get<0>(tup) == 'a');
+ 	out = std::get<1>(tup);
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (out == arg);
+   return true;
+ }
+ 
+ int main()
+ {
+   volatile int arg = 42u;
+   return test(arg) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-2001.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-2001.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-2001.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-2001.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,61 ----
+ /* { dg-additional-options "-std=c++20" } */
+ 
+ /* Functional  */
+ 
+ #include <functional>
+ #include <utility>
+ 
+ #include "target-flex-common.h"
+ 
+ template<typename T,typename Fn>
+ auto invoke_unary(T&& a, Fn&& fn) noexcept
+ {
+   return std::invoke(std::forward<Fn>(fn),
+ 		     std::forward<T>(a));
+ }
+ 
+ template<typename T, typename U, typename Fn>
+ auto invoke_binary(T&& a, U&& b, Fn&& fn) noexcept
+ {
+   return std::invoke(std::forward<Fn>(fn),
+ 		     std::forward<T>(a),
+ 		     std::forward<U>(b));
+ }
+ 
+ bool test(unsigned arg)
+ {
+   bool ok;
+   #pragma omp target map(from: ok) map(to: arg)
+     {
+       bool inner_ok = true;
+       {
+ 	VERIFY (std::plus{}(arg, 2) == arg + 2);
+ 	auto bound_plus_arg = std::bind_front(std::plus{}, arg);
+ 	VERIFY (bound_plus_arg(10) == arg + 10);
+ 	VERIFY (bound_plus_arg(20) == arg + 20);
+ 
+ 	VERIFY (std::not_fn(std::not_equal_to{})(arg, arg));
+ 	VERIFY (invoke_binary(arg, arg, std::not_fn(std::not_equal_to{})));
+ 	auto bound_equals_arg = std::bind_front(std::not_fn(std::not_equal_to{}), arg);
+ 	VERIFY (bound_equals_arg(arg));
+ 	VERIFY (std::not_fn(bound_equals_arg)(arg + 1));
+ 	VERIFY (invoke_unary(arg, bound_equals_arg));
+ 
+ 	VERIFY (std::not_fn(std::ranges::not_equal_to{})(arg, arg));
+ 	VERIFY (invoke_binary(arg, arg, std::not_fn(std::ranges::not_equal_to{})));
+ 	auto bound_ranges_equals_arg = std::bind_front(std::not_fn(std::ranges::not_equal_to{}), arg);
+ 	VERIFY (bound_ranges_equals_arg(arg));
+ 	VERIFY (std::not_fn(bound_ranges_equals_arg)(arg + 1));
+ 	VERIFY (invoke_unary(arg, bound_ranges_equals_arg));
+       }
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ int main()
+ {
+   volatile unsigned arg = 42u;
+   return test(arg) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-2002.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-2002.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-2002.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-2002.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,97 ----
+ /* { dg-additional-options "-std=c++23" } */
+ 
+ /* expected/optional  */
+ 
+ #include <optional>
+ #include <expected>
+ 
+ #include "target-flex-common.h"
+ 
+ std::optional<unsigned> make_optional(bool b, unsigned arg = 0u) noexcept
+ {
+   if (!b)
+     return std::nullopt;
+   return {arg};
+ }
+ 
+ bool test_optional(unsigned arg)
+ {
+   bool ok;
+   #pragma omp target map(from: ok) map(to: arg)
+     {
+       bool inner_ok = true;
+       {
+ 	auto null_opt = make_optional(false);
+ 	VERIFY (!null_opt);
+ 	VERIFY (!null_opt.has_value());
+ 	VERIFY (null_opt.value_or(arg * 2u) == arg * 2u);
+ 	VERIFY (null_opt.or_else([&](){ return std::optional<unsigned>{arg}; })
+ 			.transform([](int a){ return a * 2u; })
+ 			.value_or(0) == arg * 2u);
+ 
+ 	auto opt = make_optional(true, arg);
+ 	VERIFY (opt);
+ 	VERIFY (opt.has_value());
+ 	VERIFY (opt.value() == arg);
+ 	VERIFY (*opt == arg);
+ 	VERIFY (opt.value_or(arg + 42) == arg);
+ 	VERIFY (opt.or_else([&](){ return std::optional<unsigned>{arg + 42}; })
+ 		   .transform([](int a){ return a * 2u; })
+ 		   .value_or(0) == arg * 2u);
+       }
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ struct my_error
+ {
+   int _e;
+ };
+ 
+ std::expected<unsigned, my_error> make_expected(bool b, unsigned arg = 0u) noexcept
+ {
+   if (!b)
+     return std::unexpected{my_error{-1}};
+   return {arg};
+ }
+ 
+ bool test_expected(unsigned arg)
+ {
+   bool ok;
+   #pragma omp target map(from: ok) map(to: arg)
+     {
+       bool inner_ok = true;
+       {
+ 	auto unexpected = make_expected(false);
+ 	VERIFY (!unexpected);
+ 	VERIFY (!unexpected.has_value());
+ 	VERIFY (unexpected.error()._e == -1);
+ 	VERIFY (unexpected.value_or(arg * 2u) == arg * 2u);
+ 	VERIFY (unexpected.or_else([&](my_error e){ return std::expected<unsigned, my_error>{arg}; })
+ 			  .transform([](int a){ return a * 2u; })
+ 			  .value_or(0) == arg * 2u);
+ 
+ 	auto expected = make_expected(true, arg);
+ 	VERIFY (expected);
+ 	VERIFY (expected.has_value());
+ 	VERIFY (expected.value() == arg);
+ 	VERIFY (*expected == arg);
+ 	VERIFY (expected.value_or(arg + 42) == arg);
+ 	VERIFY (expected.or_else([&](my_error e){ return std::expected<unsigned, my_error>{std::unexpected{e}}; })
+ 			.transform([](int a){ return a * 2u; })
+ 			.value_or(0) == arg * 2u);
+       }
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ int main()
+ {
+   volatile unsigned arg = 42;
+   return test_optional(arg)
+ 	 && test_expected(arg) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-2003.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-2003.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-2003.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-2003.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,176 ----
+ /* { dg-additional-options "-std=c++20" } */
+ 
+ /* bit_cast and memcpy  */
+ 
+ #include <bit>
+ #include <cstring>
+ 
+ #include "target-flex-common.h"
+ 
+ struct S0
+ {
+   int _v0;
+   char _v1;
+   long long _v2;
+ };
+ 
+ struct S1
+ {
+   int _v0;
+   char _v1;
+   long long _v2;
+ };
+ 
+ bool test_bit_cast(int arg)
+ {
+   bool ok;
+   S1 s1_out;
+   #pragma omp target map(from: ok, s1_out) map(to: arg)
+     {
+       bool inner_ok = true;
+       {
+ 	long long v = static_cast<long long>(arg + 42ll);
+ 	S0 s = {arg, 'a', v};
+ 	VERIFY (std::bit_cast<S1>(s)._v0 == arg);
+ 	VERIFY (std::bit_cast<S1>(s)._v1 == 'a');
+ 	VERIFY (std::bit_cast<S1>(s)._v2 == v);
+ 	s1_out = std::bit_cast<S1>(s);
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   long long v = static_cast<long long>(arg + 42ll);
+   VERIFY_NON_TARGET (std::bit_cast<S0>(s1_out)._v0 == arg);
+   VERIFY_NON_TARGET (std::bit_cast<S0>(s1_out)._v1 == 'a');
+   VERIFY_NON_TARGET (std::bit_cast<S0>(s1_out)._v2 == v);
+   return true;
+ }
+ 
+ 
+ struct OutStruct
+ {
+   std::size_t _id;
+   void *_next;
+ };
+ 
+ struct Extendable1
+ {
+   std::size_t _id;
+   void *_next;
+   int _v;
+ };
+ 
+ struct Extendable2
+ {
+   std::size_t _id;
+   void *_next;
+   char _str[256];
+ };
+ 
+ struct Extendable3
+ {
+   std::size_t _id;
+   void *_next;
+   const int *_nums;
+   std::size_t _size;
+ };
+ 
+ struct ExtendableUnknown
+ {
+   std::size_t _id;
+   void *_next;
+ };
+ 
+ template<typename To, std::size_t Id>
+ To *get_extendable(void *p)
+ {
+   while (p != nullptr)
+     {
+       OutStruct out;
+       std::memcpy(&out, p, sizeof(OutStruct));
+       if (out._id == Id)
+ 	return static_cast<To *>(p);
+       p = out._next;
+     }
+   return nullptr;
+ }
+ 
+ bool test_memcpy(int arg, const int *nums, std::size_t nums_size)
+ {
+   bool ok;
+   Extendable2 e2_out;
+   #pragma omp target map(from: ok, e2_out) map(to: arg, nums[:nums_size], nums_size)
+     {
+       bool inner_ok = true;
+       {
+ 	Extendable3 e3 = {3u, nullptr, nums, nums_size};
+ 	ExtendableUnknown u1 = {100u, &e3};
+ 	Extendable2 e2 = {2u, &u1, {'H', 'e', 'l', 'l', 'o', '!', '\000'}};
+ 	ExtendableUnknown u2 = {101u, &e2};
+ 	ExtendableUnknown u3 = {102u, &u2};
+ 	ExtendableUnknown u4 = {142u, &u3};
+ 	Extendable1 e1 = {1u, &u4, arg};
+ 
+ 	void *p = &e1;
+ 	while (p != nullptr)
+ 	  {
+ 	    /* You can always cast a pointer to a struct to a pointer to
+ 	       the type of it's first member.  */
+ 	    switch (*static_cast<std::size_t *>(p))
+ 	      {
+ 		case 1:
+ 		  {
+ 		    Extendable1 *e1_p = static_cast<Extendable1 *>(p);
+ 		    p = e1_p->_next;
+ 		    VERIFY (e1_p->_v == arg);
+ 		    break;
+ 		  }
+ 		case 2:
+ 		  {
+ 		    Extendable2 *e2_p = static_cast<Extendable2 *>(p);
+ 		    p = e2_p->_next;
+ 		    VERIFY (std::strcmp(e2_p->_str, "Hello!") == 0);
+ 		    break;
+ 		  }
+ 		case 3:
+ 		  {
+ 		    Extendable3 *e3_p = static_cast<Extendable3 *>(p);
+ 		    p = e3_p->_next;
+ 		    VERIFY (nums == e3_p->_nums);
+ 		    VERIFY (nums_size == e3_p->_size);
+ 		    break;
+ 		  }
+ 		default:
+ 		  {
+ 		    /* Casting to a pointer to OutStruct invokes undefined
+ 		       behavior though, memcpy is required to extract the _next
+ 		       member.  */
+ 		    OutStruct out;
+ 		    std::memcpy(&out, p, sizeof(OutStruct));
+ 		    p = out._next;
+ 		  }
+ 	      }
+ 	  }
+ 	Extendable2 *e2_p = get_extendable<Extendable2, 2u>(&e1);
+ 	VERIFY (e2_p != nullptr);
+ 	e2_out = *e2_p;
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (e2_out._id == 2u);
+   VERIFY_NON_TARGET (std::strcmp(e2_out._str, "Hello!") == 0);
+   return true;
+ }
+ 
+ int main()
+ {
+   volatile int arg = 42;
+   int arr[8] = {0, 1, 2, 3, 4, 5, 6, 7};
+   return test_bit_cast(arg)
+ 	 && test_memcpy(arg, arr, 8) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-30.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-30.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-30.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-30.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,51 ----
+ /* std::initializer_list in target region.  */
+ 
+ #include <initializer_list>
+ #include <array>
+ 
+ #include "target-flex-common.h"
+ 
+ bool test_initializer_list(int arg)
+ {
+   static constexpr std::size_t out_arr_size = 7;
+   int out_arr[out_arr_size];
+   bool ok;
+   #pragma omp target map(from: ok, out_arr[:out_arr_size]) map(to: arg)
+     {
+       bool inner_ok = true;
+       {
+ 	auto il = {0, 1, 2, 3, 4, 5, arg};
+ 
+ 	int sum = 0;
+ 	for (auto const& e : il)
+ 	  sum += e;
+ 	VERIFY (sum == 0 + 1 + 2 + 3 + 4 + 5 + arg);
+ 
+ 	auto* out_it = out_arr;
+ 	const auto* const out_end = out_arr + out_arr_size;
+ 	for (auto const& e : il)
+ 	  {
+ 	    VERIFY (out_it != out_end);
+ 	    *out_it = e;
+ 	    ++out_it;
+ 	  }
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+ 
+   std::array<int, out_arr_size> reference_array = {0, 1, 2, 3, 4, 5, arg};
+   const auto *out_arr_it = out_arr;
+   for (auto const& e : reference_array)
+     VERIFY_NON_TARGET (e == *(out_arr_it++));
+ 
+   return true;
+ }
+ 
+ int main()
+ {
+   volatile int arg = 42;
+   return test_initializer_list(arg) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-300.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-300.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-300.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-300.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,49 ----
+ /* { dg-additional-options -std=c++23 } */
+ 
+ /* numerics  */
+ 
+ #include <algorithm>
+ #include <numeric>
+ #include <ranges>
+ #include <span>
+ #include <vector>
+ 
+ //TODO PR120454 "C++ constexpr vs. OpenMP implicit mapping"
+ #pragma omp declare target(std::ranges::all_of, std::ranges::iota)
+ 
+ #include "target-flex-common.h"
+ 
+ namespace stdr = std::ranges;
+ 
+ bool test(std::size_t arg)
+ {
+   bool ok;
+   int midpoint_out;
+   std::vector<int> vec(arg);
+   int *data = vec.data();
+   std::size_t size = vec.size();
+   #pragma omp target defaultmap(none) map(from: ok, midpoint_out) map(tofrom: data[:size]) map(to: arg, size)
+     {
+       std::span span = {data, size};
+       bool inner_ok = true;
+       {
+ 	VERIFY (stdr::all_of(span, [](int v){ return v == int{}; }));
+ 	stdr::iota(span, 0);
+ 	midpoint_out = *std::midpoint(span.data(), span.data() + span.size());
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (stdr::equal(vec, std::views::iota(0, static_cast<int>(vec.size()))));
+   VERIFY_NON_TARGET (*std::midpoint(vec.data(), vec.data() + vec.size())
+ 		     == midpoint_out);
+   return true;
+ }
+ 
+ int main()
+ {
+   volatile std::size_t arg = 42;
+   return test(arg) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-31.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-31.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-31.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-31.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,80 ----
+ /* std::initializer_list in target region.  */
+ 
+ #include <initializer_list>
+ 
+ #include "target-flex-common.h"
+ 
+ struct S0
+ {
+   int _v;
+   S0(std::initializer_list<int> il)
+     : _v(0)
+   {
+     for (auto const& e : il)
+       _v += e;
+   }
+ };
+ 
+ struct S1
+ {
+   int _v;
+   template<typename T>
+   S1(std::initializer_list<T> il)
+     : _v(0)
+   {
+     for (auto const& e : il)
+       _v += e;
+   }
+ };
+ 
+ template<typename T>
+ struct S2
+ {
+   T _v;
+   S2(std::initializer_list<T> il)
+     : _v(0)
+   {
+     for (auto const& e : il)
+       _v += e;
+   }
+ };
+ 
+ #if __cplusplus >= 201703L
+ template<typename T>
+ S2(std::initializer_list<T>) -> S2<T>;
+ #endif
+ 
+ bool test_initializer_list(int arg)
+ {
+   bool ok;
+   #pragma omp target map(from: ok) map(to: arg)
+     {
+       bool inner_ok = true;
+       {
+ 	static constexpr int partial_sum = 0 + 1 + 2 + 3 + 4 + 5;
+ 
+ 	S0 s0{0, 1, 2, 3, 4, 5, arg};
+ 	VERIFY (s0._v == partial_sum + arg);
+ 
+ 	S1 s1{0, 1, 2, 3, 4, 5, arg};
+ 	VERIFY (s1._v == partial_sum + arg);
+ 
+ 	S2<int> s2{0, 1, 2, 3, 4, 5, arg};
+ 	VERIFY (s2._v == partial_sum + arg);
+ 
+ 	#if __cplusplus >= 201703L
+ 	  S2 s2_ctad{0, 1, 2, 3, 4, 5, arg};
+ 	  VERIFY (s2_ctad._v == partial_sum + arg);
+ 	#endif
+       }
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ int main()
+ {
+   volatile int arg = 42;
+   return test_initializer_list(arg) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-32.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-32.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-32.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-32.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,50 ----
+ /* std::initializer_list constructor of std::vector (explicit template arg) */
+ 
+ #include <vector>
+ #include <array>
+ 
+ #include "target-flex-common.h"
+ 
+ bool test_initializer_list(int arg)
+ {
+   static constexpr std::size_t out_arr_size = 7;
+   int out_arr[out_arr_size];
+   bool ok;
+   #pragma omp target map(from: ok, out_arr[:out_arr_size]) map(to: arg)
+     {
+       bool inner_ok = true;
+       {
+ 	std::vector<int> vec{0, 1, 2, 3, 4, 5, arg};
+ 	int sum = 0;
+ 	for (auto const& e : vec)
+ 	  sum += e;
+ 	VERIFY (sum == 0 + 1 + 2 + 3 + 4 + 5 + arg);
+ 
+ 	auto* out_it = out_arr;
+ 	const auto* const out_end = out_arr + out_arr_size;
+ 	for (auto const& e : vec)
+ 	  {
+ 	    VERIFY (out_it != out_end);
+ 	    *out_it = e;
+ 	    ++out_it;
+ 	  }
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+ 
+   std::array<int, out_arr_size> reference_array = {0, 1, 2, 3, 4, 5, arg};
+   const auto *out_arr_it = out_arr;
+   for (auto const& e : reference_array)
+     VERIFY_NON_TARGET (e == *(out_arr_it++));
+ 
+   return true;
+ }
+ 
+ int main()
+ {
+   volatile int arg = 42;
+   return test_initializer_list(arg) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-33.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-33.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-33.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-33.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,52 ----
+ /* { dg-additional-options "-std=c++17" } */
+ 
+ /* deduced std::initializer_list constructor of std::vector (CTAD) */
+ 
+ #include <vector>
+ #include <array>
+ 
+ #include "target-flex-common.h"
+ 
+ bool test_initializer_list(int arg)
+ {
+   static constexpr std::size_t out_arr_size = 7;
+   int out_arr[out_arr_size];
+   bool ok;
+   #pragma omp target map(from: ok, out_arr[:out_arr_size]) map(to: arg)
+     {
+       bool inner_ok = true;
+       {
+ 	std::vector vec{0, 1, 2, 3, 4, 5, arg};
+ 	int sum = 0;
+ 	for (auto const& e : vec)
+ 	  sum += e;
+ 	VERIFY (sum == 0 + 1 + 2 + 3 + 4 + 5 + arg);
+ 
+ 	auto* out_it = out_arr;
+ 	const auto* const out_end = out_arr + out_arr_size;
+ 	for (auto const& e : vec)
+ 	  {
+ 	    VERIFY (out_it != out_end);
+ 	    *out_it = e;
+ 	    ++out_it;
+ 	  }
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+ 
+   std::array<int, out_arr_size> reference_array = {0, 1, 2, 3, 4, 5, arg};
+   const auto *out_arr_it = out_arr;
+   for (auto const& e : reference_array)
+     VERIFY_NON_TARGET (e == *(out_arr_it++));
+ 
+   return true;
+ }
+ 
+ int main()
+ {
+   volatile int arg = 42;
+   return test_initializer_list(arg) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-41.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-41.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-41.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-41.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,94 ----
+ /* { dg-additional-options "-std=c++20" } */
+ 
+ /* <iterator> c++20  */
+ 
+ /* std::common_iterator uses std::variant.  */
+ 
+ #include <vector>
+ #include <iterator>
+ #include <span>
+ 
+ //TODO PR120454 "C++ constexpr vs. OpenMP implicit mapping"
+ #pragma omp declare target(std::ranges::distance, std::ranges::next)
+ 
+ #include "target-flex-common.h"
+ 
+ namespace stdr = std::ranges;
+ 
+ template<typename It0, typename It1>
+ bool simple_equal(const It0 begin0, const It0 end0,
+ 		  const It1 begin1, const It1 end1) BL_NOEXCEPT
+ {
+   It0 it0 = begin0;
+   It1 it1 = begin1;
+   for (; it0 != end0; ++it0, ++it1)
+     if (it1 == end1 || *it0 != *it1)
+       return false;
+   return true;
+ }
+ 
+ template<typename It, typename OutIt>
+ void simple_copy(const It begin, const It end, OutIt out) BL_NOEXCEPT
+ {
+   for (It it = begin; it != end; ++it, ++out)
+     *out = *it;
+ }
+ 
+ template<typename T, std::size_t Size>
+ bool test(const T (&arr)[Size])
+ {
+   bool ok;
+   T out_rev_arr[Size];
+   T out_fwd_arr[Size];
+   T out_first_half_arr[Size / 2];
+   #pragma omp target defaultmap(none) \
+ 		     map(from: ok, out_rev_arr[:Size], out_fwd_arr[:Size], \
+ 			       out_first_half_arr[:Size / 2]) \
+ 		     map(to: arr[:Size])
+     {
+       bool inner_ok = true;
+       {
+ 	std::span<const T> span = {arr, Size};
+ 	std::vector<T> rev_vec(std::reverse_iterator{span.end()},
+ 			       std::reverse_iterator{span.begin()});
+ 	VERIFY (std::distance(span.begin(), span.end())
+ 		== std::distance(rev_vec.begin(), rev_vec.end()));
+ 	VERIFY (stdr::distance(span.begin(), span.end())
+ 		== stdr::distance(rev_vec.begin(), rev_vec.end()));
+ 	VERIFY (stdr::distance(span) == stdr::distance(rev_vec));
+ 	VERIFY (simple_equal(span.begin(), span.end(),
+ 			     std::reverse_iterator{rev_vec.end()},
+ 			     std::reverse_iterator{rev_vec.begin()}));
+ 	simple_copy(rev_vec.begin(), rev_vec.end(), out_rev_arr);
+ 	simple_copy(std::reverse_iterator{rev_vec.end()},
+ 		    std::reverse_iterator{rev_vec.begin()},
+ 		    out_fwd_arr);
+ 	using counted_iter = std::counted_iterator<decltype(span.begin())>;
+ 	using common_iter = std::common_iterator<counted_iter,
+ 						 std::default_sentinel_t>;
+ 	std::vector<T> front_half;
+ 	simple_copy(common_iter{counted_iter{span.begin(), Size / 2}},
+ 		    common_iter{std::default_sentinel},
+ 		    std::back_insert_iterator{front_half});
+ 	VERIFY (simple_equal(span.begin(), stdr::next(span.begin(), Size / 2),
+ 			     front_half.begin(), front_half.end()));
+ 	simple_copy(front_half.begin(), front_half.end(), out_first_half_arr);
+       }
+       end:
+       ok = inner_ok;
+     }
+   VERIFY_NON_TARGET (simple_equal(std::reverse_iterator{arr + Size},
+ 				  std::reverse_iterator{arr},
+ 				  out_rev_arr, out_rev_arr + Size));
+   VERIFY_NON_TARGET (simple_equal(arr, arr + Size,
+ 				  out_fwd_arr, out_fwd_arr + Size));
+   VERIFY_NON_TARGET (simple_equal(arr, arr + Size / 2,
+ 				  out_first_half_arr, out_first_half_arr + Size / 2));
+   return ok;
+ }
+ 
+ int main()
+ {
+   int arr[] = {0, 1, 2, 3, 4, 5, 6, 7};
+   return test(arr) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-60.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-60.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-60.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-60.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,46 ----
+ /* algorithms pre c++20 */
+ 
+ #include <algorithm>
+ #include <vector>
+ 
+ #include "target-flex-common.h"
+ 
+ template<typename T, std::size_t Size>
+ bool test(const T (&arr)[Size])
+ {
+   bool ok;
+   T out_2x_arr[Size];
+   T out_shifted_arr[Size];
+   #pragma omp target map(from: ok, out_2x_arr[:Size], out_shifted_arr[:Size]) \
+ 		     map(to: arr[:Size])
+     {
+       std::vector<T> vec(Size);
+       std::vector<T> mutated(Size);
+       bool inner_ok = true;
+       {
+ 	std::copy(arr, arr + Size, vec.begin());
+ 	VERIFY (std::equal(arr, arr + Size, vec.begin()));
+ 	std::transform(vec.begin(), vec.end(), mutated.begin(),
+ 		       [](const T& v){ return v * 2; });
+ 	std::copy(mutated.begin(), mutated.end(), out_2x_arr);
+ 	std::rotate(vec.begin(), std::next(vec.begin(), Size / 2), vec.end());
+ 	std::copy(vec.begin(), vec.end(), out_shifted_arr);
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (std::equal(arr, arr + Size, out_2x_arr,
+ 				[](const T& a, const T& b){ return a * 2 == b; }));
+   std::vector<T> shifted(arr, arr + Size);
+   std::rotate(shifted.begin(), std::next(shifted.begin(), Size / 2), shifted.end());
+   VERIFY_NON_TARGET (std::equal(out_shifted_arr, out_shifted_arr + Size, shifted.begin()));
+   return true;
+ }
+ 
+ int main()
+ {
+   int arr[] = {0, 1, 2, 3, 4, 5, 6, 7};
+   return test(arr) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-61.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-61.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-61.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-61.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,54 ----
+ /* { dg-additional-options "-std=c++20" } */
+ 
+ /* ranged algorithms c++20 */
+ 
+ #include <algorithm>
+ #include <ranges>
+ #include <vector>
+ 
+ //TODO PR120454 "C++ constexpr vs. OpenMP implicit mapping"
+ #pragma omp declare target(std::ranges::copy, std::ranges::equal, std::ranges::rotate, std::ranges::transform)
+ 
+ #include "target-flex-common.h"
+ 
+ namespace stdr = std::ranges;
+ 
+ template<typename T, std::size_t Size>
+ bool test(const T (&arr)[Size])
+ {
+   bool ok;
+   T out_2x_arr[Size];
+   T out_shifted_arr[Size];
+   #pragma omp target defaultmap(none) \
+ 		     map(from: ok, out_2x_arr[:Size], out_shifted_arr[:Size]) \
+ 		     map(to: arr[:Size])
+     {
+       std::vector<T> vec(Size);
+       std::vector<T> mutated(Size);
+       bool inner_ok = true;
+       {
+ 	stdr::copy(arr, vec.begin());
+ 	VERIFY (stdr::equal(arr, vec));
+ 	stdr::transform(vec, mutated.begin(),
+ 			[](const T& v){ return v * 2; });
+ 	stdr::copy(mutated, out_2x_arr);
+ 	stdr::rotate(vec, std::next(vec.begin(), Size / 2));
+ 	stdr::copy(vec, out_shifted_arr);
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (stdr::equal(arr, out_2x_arr, stdr::equal_to{}, [](const T& v){ return v * 2; }));
+   std::vector<T> shifted(arr, arr + Size);
+   stdr::rotate(shifted, std::next(shifted.begin(), Size / 2));
+   VERIFY_NON_TARGET (stdr::equal(out_shifted_arr, shifted));
+   return true;
+ }
+ 
+ int main()
+ {
+   int arr[] = {0, 1, 2, 3, 4, 5, 6, 7};
+   return test(arr) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-62.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-62.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-62.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-62.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,50 ----
+ /* { dg-additional-options -std=c++23 } */
+ 
+ /* std::views stuff.  Also tests std::tuple with std::views::zip.  */
+ 
+ #include <algorithm>
+ #include <ranges>
+ #include <span>
+ 
+ //TODO PR120454 "C++ constexpr vs. OpenMP implicit mapping"
+ #pragma omp declare target(std::ranges::all_of, std::ranges::equal, std::ranges::fold_left, std::views::reverse, std::views::zip)
+ 
+ #include "target-flex-common.h"
+ 
+ namespace stdr = std::ranges;
+ namespace stdv = std::views;
+ 
+ bool f()
+ {
+   const int arr_fwd[8] = {0, 1, 2, 3, 4, 5, 6, 7};
+   const int arr_rev[8] = {7, 6, 5, 4, 3, 2, 1, 0};
+ 
+   bool ok;
+   #pragma omp target defaultmap(none) map(from: ok) map(to: arr_fwd[:8], arr_rev[:8])
+     {
+       std::span<const int> fwd = {arr_fwd, 8};
+       std::span<const int> rev = {arr_rev, 8};
+       bool inner_ok = true;
+       {
+ 	VERIFY(stdr::equal(fwd, rev | stdv::reverse));
+ 	VERIFY(stdr::equal(fwd | stdv::drop(4) | stdv::reverse,
+ 			   rev | stdv::take(4)));
+ 	for (auto [first, second] : stdv::zip(fwd, rev))
+ 	  VERIFY(first + second == 7);
+ 	auto plus = [](int a, int b){ return a + b; };
+ 	auto is_even = [](int v){ return v % 2 == 0; };
+ 	VERIFY(stdr::fold_left(fwd | stdv::filter(is_even), 0, plus)
+ 	       == 12);
+ 	VERIFY(stdr::all_of(fwd | stdv::transform([](int v){ return v * 2; }),
+ 			    is_even));
+       }
+       end:
+       ok = inner_ok;
+     }
+   return ok;
+ }
+ 
+ int main()
+ {
+   return f() ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-70.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-70.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-70.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-70.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,26 ----
+ /* CTAD in target regions.  */
+ 
+ template<typename T>
+ struct S
+ {
+   T _v;
+ };
+ 
+ template<typename T>
+ S(T) -> S<T>;
+ 
+ bool f()
+ {
+   bool ok;
+   #pragma omp target map(from: ok)
+     {
+       S s{42};
+       ok = s._v == 42;
+     }
+   return ok;
+ }
+ 
+ int main()
+ {
+   return f() ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-80.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-80.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-80.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-80.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,49 ----
+ // { dg-additional-options "-std=c++20" }
+ 
+ /* std::span  */
+ 
+ #include <span>
+ 
+ #include "target-flex-common.h"
+ 
+ template<typename It0, typename It1>
+ bool simple_equal(It0 it0, const It0 end0,
+ 		  It1 it1, const It1 end1) noexcept
+ {
+   for (; it0 != end0; ++it0, ++it1)
+     if (it1 == end1 || *it0 != *it1)
+       return false;
+   return true;
+ }
+ 
+ template<typename T, std::size_t Size>
+ bool test(const T (&arr)[Size])
+ {
+   bool ok;
+   T out_arr[Size];
+   #pragma omp target map(from: ok) map(to: arr[:Size])
+     {
+       std::span span = {arr, Size};
+       bool inner_ok = true;
+       {
+ 	VERIFY (!span.empty());
+ 	VERIFY (span.size() == Size);
+ 	auto out_it = out_arr;
+ 	for (auto elem : span)
+ 	  *(out_it++) = elem;
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (simple_equal(arr, arr + Size,
+ 				  out_arr, out_arr + Size));
+   return true;
+ }
+ 
+ int main()
+ {
+   int arr[8] = {0, 1, 2, 3, 4, 5, 6, 7};
+   return test(arr) ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-81.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-81.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-81.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-81.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,75 ----
+ /* { dg-additional-options "-std=c++20" } */
+ 
+ #include <ranges>
+ #include <span>
+ #include <type_traits>
+ #include <vector>
+ 
+ #include "target-flex-common.h"
+ 
+ namespace stdr = std::ranges;
+ 
+ template<typename It0, typename It1>
+ bool simple_equal(It0 it0, const It0 end0,
+ 		  It1 it1, const It1 end1) noexcept
+ {
+   for (; it0 != end0; ++it0, ++it1)
+     if (it1 == end1 || *it0 != *it1)
+       return false;
+   return true;
+ }
+ 
+ template<typename Rn0, typename Rn1>
+ bool simple_equal(Rn0&& rn0, Rn1&& rn1) noexcept
+ {
+   return simple_equal(stdr::begin(rn0), stdr::end(rn0),
+ 		      stdr::begin(rn1), stdr::end(rn1));
+ }
+ 
+ template<typename Rn>
+ bool test(Rn&& range)
+ {
+   using value_type = stdr::range_value_t<std::remove_cvref_t<Rn>>;
+   std::vector<value_type> vec = {stdr::begin(range), stdr::end(range)};
+   value_type *data = vec.data();
+   std::size_t size = vec.size();
+   bool ok;
+   #pragma omp target map(from: ok) map(tofrom: data[:size]) map(to: size)
+     {
+       std::vector<value_type> orig = {data, data + size};
+       std::span<value_type> span = {data, size};
+       bool inner_ok = true;
+       {
+ 	auto mul_by_2 = [](const value_type& v){ return v * 2; };
+ 	VERIFY (simple_equal(orig, span));
+ 	for (auto& elem : span)
+ 	  elem = mul_by_2(elem);
+ 	VERIFY (simple_equal(orig | std::views::transform(mul_by_2), span));
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   auto mul_by_2 = [](const value_type& v){ return v * 2; };
+   VERIFY_NON_TARGET (simple_equal(range | std::views::transform(mul_by_2), vec));
+   return true;
+ }
+ 
+ struct my_int
+ {
+   int _v;
+   bool operator==(my_int const&) const = default;
+   my_int operator*(int rhs) const noexcept {
+     return {_v * rhs};
+   }
+ };
+ 
+ int main()
+ {
+   std::vector<int> ints = {1, 2, 3, 4, 5};
+   const bool ints_res = test(ints);
+   std::vector<my_int> my_ints = {my_int{1}, my_int{2}, my_int{3}, my_int{4}, my_int{5}};
+   const bool my_ints_res = test(my_ints);
+   return ints_res && my_ints_res ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-90.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-90.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-90.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-90.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,107 ----
+ /* structured bindings  */
+ 
+ #include <array>
+ #include <tuple>
+ 
+ #include "target-flex-common.h"
+ 
+ template<typename Array, typename Tuple, typename Struct>
+ bool test(Array array, Tuple tuple, Struct s)
+ {
+   bool ok;
+   auto array_2nd_in = std::get<2>(array);
+   auto tuple_2nd_in = std::get<2>(tuple);
+   auto s_2nd_in = s._2;
+   decltype(array_2nd_in) array_2nd_out_0;
+   decltype(tuple_2nd_in) tuple_2nd_out_0;
+   decltype(s_2nd_in) s_2nd_out_0;
+   decltype(array_2nd_in) array_2nd_out_1;
+   decltype(tuple_2nd_in) tuple_2nd_out_1;
+   decltype(s_2nd_in) s_2nd_out_1;
+   decltype(array_2nd_in) array_2nd_out_2;
+   decltype(tuple_2nd_in) tuple_2nd_out_2;
+   decltype(s_2nd_in) s_2nd_out_2;
+   #pragma omp target map(from: ok, \
+ 			       array_2nd_out_0, tuple_2nd_out_0, s_2nd_out_0, \
+ 			       array_2nd_out_1, tuple_2nd_out_1, s_2nd_out_1, \
+ 			       array_2nd_out_2, tuple_2nd_out_2, s_2nd_out_2) \
+ 		     map(to: array_2nd_in, tuple_2nd_in, s_2nd_in, array, tuple, s)
+     {
+       bool inner_ok = true;
+       {
+ 	{
+ 	  auto [array_0th, array_1st, array_2nd] = array;
+ 	  VERIFY (array_2nd_in == array_2nd);
+ 	  VERIFY (std::get<2>(array) == array_2nd);
+ 	  array_2nd_out_0 = array_2nd;
+ 	  auto [tuple_0th, tuple_1st, tuple_2nd] = tuple;
+ 	  VERIFY (tuple_2nd_in == tuple_2nd);
+ 	  VERIFY (std::get<2>(tuple) == tuple_2nd);
+ 	  tuple_2nd_out_0 = tuple_2nd;
+ 	  auto [s_0th, s_1st, s_2nd] = s;
+ 	  VERIFY (s_2nd_in == s_2nd);
+ 	  VERIFY (s._2 == s_2nd);
+ 	  s_2nd_out_0 = s_2nd;
+ 	}
+ 	{
+ 	  auto& [array_0th, array_1st, array_2nd] = array;
+ 	  VERIFY (array_2nd_in == array_2nd);
+ 	  VERIFY (std::get<2>(array) == array_2nd);
+ 	  array_2nd_out_1 = array_2nd;
+ 	  auto& [tuple_0th, tuple_1st, tuple_2nd] = tuple;
+ 	  VERIFY (tuple_2nd_in == tuple_2nd);
+ 	  VERIFY (std::get<2>(tuple) == tuple_2nd);
+ 	  tuple_2nd_out_1 = tuple_2nd;
+ 	  auto& [s_0th, s_1st, s_2nd] = s;
+ 	  VERIFY (s_2nd_in == s_2nd);
+ 	  VERIFY (s._2 == s_2nd);
+ 	  s_2nd_out_1 = s_2nd;
+ 	}
+ 	{
+ 	  const auto& [array_0th, array_1st, array_2nd] = array;
+ 	  VERIFY (array_2nd_in == array_2nd);
+ 	  VERIFY (std::get<2>(array) == array_2nd);
+ 	  array_2nd_out_2 = array_2nd;
+ 	  const auto& [tuple_0th, tuple_1st, tuple_2nd] = tuple;
+ 	  VERIFY (tuple_2nd_in == tuple_2nd);
+ 	  VERIFY (std::get<2>(tuple) == tuple_2nd);
+ 	  tuple_2nd_out_2 = tuple_2nd;
+ 	  const auto& [s_0th, s_1st, s_2nd] = s;
+ 	  VERIFY (s_2nd_in == s_2nd);
+ 	  VERIFY (s._2 == s_2nd);
+ 	  s_2nd_out_2 = s_2nd;
+ 	}
+       }
+       end:
+       ok = inner_ok;
+     }
+   if (!ok)
+     return false;
+   VERIFY_NON_TARGET (array_2nd_out_0 == array_2nd_in);
+   VERIFY_NON_TARGET (tuple_2nd_out_0 == tuple_2nd_in);
+   VERIFY_NON_TARGET (s_2nd_out_0 == s_2nd_in);
+   VERIFY_NON_TARGET (array_2nd_out_1 == array_2nd_in);
+   VERIFY_NON_TARGET (tuple_2nd_out_1 == tuple_2nd_in);
+   VERIFY_NON_TARGET (s_2nd_out_1 == s_2nd_in);
+   VERIFY_NON_TARGET (array_2nd_out_2 == array_2nd_in);
+   VERIFY_NON_TARGET (tuple_2nd_out_2 == tuple_2nd_in);
+   VERIFY_NON_TARGET (s_2nd_out_2 == s_2nd_in);
+ 
+   return true;
+ }
+ 
+ struct S
+ {
+   char _0;
+   float _1;
+   int _2;
+ };
+ 
+ int main()
+ {
+   const bool test_res
+     = test(std::array{0, 1, 2},
+ 	   std::tuple{'a', 3.14f, 42},
+ 	   S{'a', 3.14f, 42});
+   return test_res ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-common.h gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-common.h
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-flex-common.h	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-flex-common.h	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,40 ----
+ #include <cstdio>
+ 
+ #if __cplusplus >= 201103L
+   #define BL_NOEXCEPT noexcept
+ #else
+   #define BL_NOEXCEPT throw()
+ #endif
+ 
+ #if defined __has_builtin
+ # if __has_builtin (__builtin_LINE)
+ #  define VERIFY_LINE __builtin_LINE ()
+ # endif
+ #endif
+ #if !defined VERIFY_LINE
+ # define VERIFY_LINE __LINE__
+ #endif
+ 
+ /* I'm not a huge fan of macros but in the interest of keeping the code that
+    isn't being tested as simple as possible, we use them.  */
+ 
+ #define VERIFY(EXPR) \
+   do {										\
+     if (!(EXPR))								\
+       {										\
+ 	std::printf("VERIFY ln: %d `" #EXPR "` evaluated to false\n",		\
+ 		    VERIFY_LINE);						\
+ 	inner_ok = false;							\
+ 	goto end;								\
+       }										\
+   } while (false)
+ 
+ #define VERIFY_NON_TARGET(EXPR) \
+   do {										\
+     if (!(EXPR))								\
+       {										\
+ 	std::printf("VERIFY ln: %d `" #EXPR "` evaluated to false\n",		\
+ 		    VERIFY_LINE);						\
+ 	return false;								\
+       }										\
+   } while (false)
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__array-concurrent-usm.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__array-concurrent-usm.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__array-concurrent-usm.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__array-concurrent-usm.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,5 ----
+ #pragma omp requires unified_shared_memory self_maps
+ 
+ #define MEM_SHARED
+ 
+ #include "target-std__array-concurrent.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,62 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <array>
+ #include <algorithm>
+ 
+ #define N 50000
+ 
+ void init (int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     data[i] = rand ();
+ }
+ 
+ #pragma omp declare target
+ bool validate (const std::array<int,N> &arr, int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     if (arr[i] != data[i] * data[i])
+       return false;
+   return true;
+ }
+ #pragma omp end declare target
+ 
+ int main (void)
+ {
+   int data[N];
+   bool ok;
+   std::array<int,N> arr;
+ 
+   srand (time (NULL));
+   init (data);
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target data map (to: data[:N]) map (alloc: arr)
+ #endif
+     {
+       #pragma omp target
+ 	{
+ #ifndef MEM_SHARED
+ 	  new (&arr) std::array<int,N> ();
+ #endif
+ 	  std::copy (data, data + N, arr.begin ());
+ 	}
+ 
+       #pragma omp target teams distribute parallel for
+ 	for (int i = 0; i < N; ++i)
+ 	  arr[i] *= arr[i];
+ 
+       #pragma omp target map (from: ok)
+ 	{
+ 	  ok = validate (arr, data);
+ #ifndef MEM_SHARED
+ 	  arr.~array ();
+ #endif
+ 	}
+     }
+ 
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,5 ----
+ #pragma omp requires unified_shared_memory self_maps
+ 
+ #define MEM_SHARED
+ 
+ #include "target-std__bitset-concurrent.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,69 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <bitset>
+ #include <set>
+ #include <algorithm>
+ 
+ #define N 4000
+ #define MAX 16384
+ 
+ void init (int data[])
+ {
+   std::set<int> _set;
+   for (int i = 0; i < N; ++i)
+     {
+       // Avoid duplicates in data array.
+       do
+ 	data[i] = rand () % MAX;
+       while (_set.find (data[i]) != _set.end ());
+       _set.insert (data[i]);
+     }
+ }
+ 
+ bool validate (int sum, int data[])
+ {
+   int total = 0;
+   for (int i = 0; i < N; ++i)
+     total += data[i];
+   return sum == total;
+ }
+ 
+ int main (void)
+ {
+   int data[N];
+   std::bitset<MAX> _set;
+   int sum = 0;
+ 
+   srand (time (NULL));
+   init (data);
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target data map (to: data[:N]) map (alloc: _set)
+ #endif
+     {
+       #pragma omp target
+ 	{
+ #ifndef MEM_SHARED
+ 	  new (&_set) std::bitset<MAX> ();
+ #endif
+ 	  for (int i = 0; i < N; ++i)
+ 	    _set[data[i]] = true;
+ 	}
+ 
+       #pragma omp target teams distribute parallel for reduction (+:sum)
+ 	for (int i = 0; i < MAX; ++i)
+ 	  if (_set[i])
+ 	    sum += i;
+ 
+ #ifndef MEM_SHARED
+       #pragma omp target
+ 	_set.~bitset ();
+ #endif
+     }
+ 
+   bool ok = validate (sum, data);
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__cmath.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__cmath.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__cmath.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__cmath.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,340 ----
+ // { dg-do run }
+ // { dg-additional-options "-std=c++20" }
+ 
+ #include <cmath>
+ #include <numbers>
+ 
+ #define FP_EQUAL(x,y) (std::abs ((x) - (y)) < 1E-6)
+ 
+ #pragma omp declare target
+ template<typename T> bool test_basic ()
+ {
+   T x = -3.456789;
+   T y = 1.234567;
+   T z = 5.678901;
+ 
+   if (std::abs (x) != -x)
+     return false;
+   if (!FP_EQUAL (std::trunc (x / y) * y + std::fmod (x, y), x))
+     return false;
+   if (!FP_EQUAL (x - std::round (x / y) * y, std::remainder (x, y)))
+     return false;
+   if (!FP_EQUAL (std::fma (x, y, z), x * y + z))
+     return false;
+   if (std::fmax (x, y) != (x > y ? x : y))
+     return false;
+   if (std::fmin (x, y) != (x < y ? x : y))
+     return false;
+   if (std::fdim (x, y) != std::max(x - y, (T) 0.0))
+     return false;
+   if (std::fdim (y, x) != std::max(y - x, (T) 0.0))
+     return false;
+   return true;
+ }
+ 
+ template<typename T> bool test_exp ()
+ {
+   T x = -4.567890;
+   T y = 2.345678;
+ 
+   if (!FP_EQUAL (std::exp (x), std::pow (std::numbers::e_v<T>, x)))
+     return false;
+   if (!FP_EQUAL (std::exp2 (y), std::pow ((T) 2.0, y)))
+     return false;
+   if (!FP_EQUAL (std::expm1 (y), std::exp (y) - (T) 1.0))
+     return false;
+   if (!FP_EQUAL (std::log (std::exp (x)), x))
+     return false;
+   if (!FP_EQUAL (std::log10 (std::pow ((T) 10.0, y)), y))
+     return false;
+   if (!FP_EQUAL (std::log2 (std::exp2 (y)), y))
+     return false;
+   if (!FP_EQUAL (std::log1p (std::expm1 (y)), y))
+     return false;
+   return true;
+ }
+ 
+ template<typename T> bool test_power ()
+ {
+   T x = 7.234251;
+   T y = 0.340128;
+ 
+   if (!FP_EQUAL (std::log (std::pow (x, y)) / std::log (x), y))
+     return false;
+   if (!FP_EQUAL (std::sqrt (x) * std::sqrt (x), x))
+     return false;
+   if (!FP_EQUAL (std::cbrt (x) * std::cbrt (x) * std::cbrt (x), x))
+     return false;
+   if (!FP_EQUAL (std::hypot (x, y), std::sqrt (x * x + y * y)))
+     return false;
+   return true;
+ }
+ 
+ template<typename T> bool test_trig ()
+ {
+   T theta = std::numbers::pi / 4;
+   T phi = std::numbers::pi / 6;
+ 
+   if (!FP_EQUAL (std::sin (theta), std::sqrt ((T) 2) / 2))
+     return false;
+   if (!FP_EQUAL (std::sin (phi), 0.5))
+     return false;
+   if (!FP_EQUAL (std::cos (theta), std::sqrt ((T) 2) / 2))
+     return false;
+   if (!FP_EQUAL (std::cos (phi), std::sqrt ((T) 3) / 2))
+     return false;
+   if (!FP_EQUAL (std::tan (theta), 1.0))
+     return false;
+   if (!FP_EQUAL (std::tan (phi), std::sqrt ((T) 3) / 3))
+     return false;
+ 
+   T x = 0.33245623;
+ 
+   if (!FP_EQUAL (std::asin (std::sin (x)), x))
+     return false;
+   if (!FP_EQUAL (std::acos (std::cos (x)), x))
+     return false;
+   if (!FP_EQUAL (std::atan (std::tan (x)), x))
+     return false;
+   if (!FP_EQUAL (std::atan2 (std::sin (x), std::cos (x)), x))
+     return false;
+   return true;
+ }
+ 
+ template<typename T> bool test_hyperbolic ()
+ {
+   T x = 0.7423532;
+ 
+   if (!FP_EQUAL (std::sinh (x), (std::exp (x) - std::exp (-x)) / (T) 2.0))
+     return false;
+   if (!FP_EQUAL (std::cosh (x), (std::exp (x) + std::exp (-x)) / (T) 2.0))
+     return false;
+   if (!FP_EQUAL (std::tanh (x), std::sinh (x) / std::cosh (x)))
+     return false;
+   if (!FP_EQUAL (std::asinh (std::sinh (x)), x))
+     return false;
+   if (!FP_EQUAL (std::acosh (std::cosh (x)), x))
+     return false;
+   if (!FP_EQUAL (std::atanh (std::tanh (x)), x))
+     return false;
+   return true;
+ }
+ 
+ template<typename T> bool test_erf ()
+ {
+   if (!FP_EQUAL (std::erf ((T) 0), 0))
+     return false;
+   if (!FP_EQUAL (std::erf ((T) INFINITY), 1))
+     return false;
+   if (!FP_EQUAL (std::erf ((T) -INFINITY), -1))
+     return false;
+ 
+   if (!FP_EQUAL (std::erfc (0), 1))
+     return false;
+   if (!FP_EQUAL (std::erfc ((T) INFINITY), 0))
+     return false;
+   if (!FP_EQUAL (std::erfc ((T) -INFINITY), 2))
+     return false;
+ 
+   return true;
+ }
+ 
+ template<typename T> bool test_gamma ()
+ {
+   if (!FP_EQUAL (std::tgamma ((T) 5), 4*3*2*1))
+     return false;
+   if (!FP_EQUAL (std::tgamma ((T) 0.5), std::sqrt (std::numbers::pi_v<T>)))
+     return false;
+   if (!FP_EQUAL (std::tgamma ((T) -0.5), (T) -2 * std::sqrt (std::numbers::pi_v<T>)))
+     return false;
+   if (!FP_EQUAL (std::tgamma ((T) 2.5), (T) 0.75 * std::sqrt (std::numbers::pi_v<T>)))
+     return false;
+   if (!FP_EQUAL (std::tgamma ((T) -2.5), (T) -8.0/15 * std::sqrt (std::numbers::pi_v<T>)))
+     return false;
+ 
+   if (!FP_EQUAL (std::lgamma ((T) 5), std::log ((T) 4*3*2*1)))
+     return false;
+   if (!FP_EQUAL (std::lgamma ((T) 0.5), std::log (std::sqrt (std::numbers::pi_v<T>))))
+     return false;
+   if (!FP_EQUAL (std::lgamma ((T) 2.5),
+ 		 std::log ((T) 0.75 * std::sqrt (std::numbers::pi_v<T>))))
+     return false;
+ 
+   return true;
+ }
+ 
+ template<typename T> bool test_rounding ()
+ {
+   T x = -2.5678;
+   T y = 3.6789;
+ 
+   if (std::ceil (x) != -2)
+     return false;
+   if (std::floor (x) != -3)
+     return false;
+   if (std::trunc (x) != -2)
+     return false;
+   if (std::round (x) != -3)
+     return false;
+ 
+   if (std::ceil (y) != 4)
+     return false;
+   if (std::floor (y) != 3)
+     return false;
+   if (std::trunc (y) != 3)
+     return false;
+   if (std::round (y) != 4)
+     return false;
+ 
+   /* Not testing std::rint and std::nearbyint due to dependence on
+      floating-point environment.  */
+ 
+   return true;
+ }
+ 
+ template<typename T> bool test_fpmanip ()
+ {
+   T x = -2.3456789;
+   T y = 3.6789012;
+   int exp;
+ 
+   T mantissa = std::frexp (x, &exp);
+   if (std::ldexp (mantissa, exp) != x)
+     return false;
+   if (std::logb (x) + 1 != exp)
+     return false;
+   if (std::ilogb (x) + 1 != exp)
+     return false;
+   if (std::scalbn (x, -exp) != mantissa)
+     return false;
+ 
+   T next = std::nextafter (x, y);
+   if (!(next > x && next < y))
+     return false;
+ 
+ #if 0
+   /* TODO Due to 'std::nexttoward' using 'long double to', this triggers a
+      '80-bit-precision floating-point numbers unsupported (mode ‘XF’)' error
+      with x86_64 host and nvptx, GCN offload compilers, or
+      '128-bit-precision floating-point numbers unsupported (mode ‘TF’)' error
+      with powerpc64le host and nvptx offload compiler, for example;
+      PR71064 'nvptx offloading: "long double" data type'.
+      It ought to work on systems where the host's 'long double' is the same as
+      'double' ('DF'): aarch64, for example?  */
+   next = std::nexttoward (x, y);
+   if (!(next > x && next < y))
+     return false;
+ #endif
+ 
+   if (std::copysign (x, y) != std::abs (x))
+     return false;
+   if (std::copysign (y, x) != -y)
+     return false;
+ 
+   return true;
+ }
+ 
+ template<typename T> bool test_classify ()
+ {
+   T x = -2.3456789;
+   T y = 3.6789012;
+ 
+   if (std::fpclassify (x) != FP_NORMAL || std::fpclassify (y) != FP_NORMAL)
+     return false;
+   if (std::fpclassify ((T) INFINITY) != FP_INFINITE
+       || std::fpclassify ((T) -INFINITY) != FP_INFINITE)
+     return false;
+   if (std::fpclassify ((T) 0.0) != FP_ZERO)
+     return false;
+   if (std::fpclassify ((T) NAN) != FP_NAN)
+     return false;
+   if (!std::isfinite (x) || !std::isfinite (y))
+     return false;
+   if (std::isfinite ((T) INFINITY) || std::isfinite ((T) -INFINITY))
+     return false;
+   if (std::isinf (x) || std::isinf (y))
+     return false;
+   if (!std::isinf ((T) INFINITY) || !std::isinf ((T) -INFINITY))
+     return false;
+   if (std::isnan (x) || std::isnan (y))
+     return false;
+   if (!std::isnan ((T) 0.0 / (T) 0.0))
+     return false;
+   if (std::isnan (x) || std::isnan (y))
+     return false;
+   if (!std::isnormal (x) || !std::isnormal (y))
+     return false;
+   if (std::isnormal ((T) 0.0) || std::isnormal ((T) INFINITY) || std::isnormal ((T) NAN))
+     return false;
+   if (!std::signbit (x) || std::signbit (y))
+     return false;
+ 
+   return true;
+ }
+ 
+ template<typename T> bool test_compare ()
+ {
+   T x = 5.6789012;
+   T y = 8.9012345;
+ 
+   if (std::isgreater (x, y))
+     return false;
+   if (std::isgreater (x, x))
+     return false;
+   if (std::isgreaterequal (x, y))
+     return false;
+   if (!std::isgreaterequal (x, x))
+     return false;
+   if (!std::isless (x, y))
+     return false;
+   if (std::isless (x, x))
+     return false;
+   if (!std::islessequal (x, y))
+     return false;
+   if (!std::islessequal (x, x))
+     return false;
+   if (!std::islessgreater (x, y))
+     return false;
+   if (std::islessgreater (x, x))
+     return false;
+   if (std::isunordered (x, y))
+     return false;
+   if (!std::isunordered (x, NAN))
+     return false;
+   return true;
+ }
+ #pragma omp end declare target
+ 
+ #define RUN_TEST(func) \
+ { \
+   pass++; \
+   bool ok = test_##func<float> (); \
+   if (!ok) { result = pass; break; } \
+   pass++; \
+   ok = test_##func<double> (); \
+   if (!ok) { result = pass; break; } \
+ }
+ 
+ int main (void)
+ {
+   int result = 0;
+ 
+   #pragma omp target map (tofrom: result)
+     do {
+       int pass = 0;
+ 
+       RUN_TEST (basic);
+       RUN_TEST (exp);
+       RUN_TEST (power);
+       RUN_TEST (trig);
+       RUN_TEST (hyperbolic);
+       RUN_TEST (erf);
+       RUN_TEST (gamma);
+       RUN_TEST (rounding);
+       RUN_TEST (fpmanip);
+       RUN_TEST (classify);
+       RUN_TEST (compare);
+     } while (false);
+ 
+   return result;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__complex.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__complex.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__complex.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__complex.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,175 ----
+ // { dg-do run }
+ // { dg-additional-options "-std=c++20" }
+ 
+ #include <cmath>
+ #include <complex>
+ #include <numbers>
+ 
+ using namespace std::complex_literals;
+ 
+ #define FP_EQUAL(x,y) (std::abs ((x) - (y)) < 1E-6)
+ #define COMPLEX_EQUAL(x,y) (FP_EQUAL ((x).real (), (y).real ()) \
+ 			    && FP_EQUAL ((x).imag (), (y).imag ()))
+ 
+ #pragma omp declare target
+ template<typename T> bool test_complex ()
+ {
+   std::complex<T> z (-1.334, 5.763);
+ 
+   if (!FP_EQUAL (z.real (), (T) -1.334))
+     return false;
+   if (!FP_EQUAL (z.imag (), (T) 5.763))
+     return false;
+   if (!FP_EQUAL (std::abs (z),
+ 		 std::sqrt (z.real () * z.real () + z.imag () * z.imag ())))
+     return false;
+   if (!FP_EQUAL (std::arg (z), std::atan2 (z.imag (), z.real ())))
+     return false;
+   if (!FP_EQUAL (std::norm (z), z.real () * z.real () + z.imag () * z.imag ()))
+     return false;
+ 
+   auto conj = std::conj (z);
+   if (!FP_EQUAL (conj.real (), z.real ())
+       || !FP_EQUAL (conj.imag (), -z.imag ()))
+     return false;
+ 
+   if (std::proj (z) != z)
+     return false;
+ 
+   auto infz1 = std::proj (std::complex<float> (INFINITY, -1));
+   if (infz1.real () != INFINITY || infz1.imag () != (T) -0.0)
+     return false;
+   auto infz2 = std::proj (std::complex<float> (0, -INFINITY));
+   if (infz2.real () != INFINITY || infz2.imag () != (T) -0.0)
+     return false;
+ 
+   auto polarz = std::polar ((T) 1.5, std::numbers::pi_v<T> / 4);
+   if (!FP_EQUAL (polarz.real (), (T) 1.5 * std::cos (std::numbers::pi_v<T> / 4))
+       || !FP_EQUAL (polarz.imag (),
+ 		    (T) 1.5* std::sin (std::numbers::pi_v<T> / 4)))
+     return false;
+ 
+   return true;
+ }
+ 
+ template<typename T> bool test_complex_exp_log ()
+ {
+   std::complex<T> z (-1.724, -3.763);
+ 
+   // Euler's identity
+   auto eulerz = std::exp (std::complex<T> (0, std::numbers::pi));
+   eulerz += 1.0;
+   if (!COMPLEX_EQUAL (eulerz, std::complex<T> ()))
+     return false;
+ 
+   auto my_exp_z
+     = std::complex<T> (std::exp (z.real ()) * std::cos (z.imag ()),
+ 		       std::exp (z.real ()) * std::sin (z.imag ()));
+   if (!COMPLEX_EQUAL (std::exp (z), my_exp_z))
+     return false;
+ 
+   if (!COMPLEX_EQUAL (std::log10 (z),
+ 		      std::log (z) / std::log (std::complex<T> (10))))
+     return false;
+ 
+   return true;
+ }
+ 
+ template<typename T> bool test_complex_trig ()
+ {
+   std::complex<T> z (std::numbers::pi / 8, std::numbers::pi / 10);
+   const std::complex<T> i (0, 1);
+ 
+   auto my_sin_z
+     = std::complex<T> (std::sin (z.real ()) * std::cosh (z.imag ()),
+ 		       std::cos (z.real ()) * std::sinh (z.imag ()));
+   if (!COMPLEX_EQUAL (std::sin (z), my_sin_z))
+     return false;
+ 
+   auto my_cos_z
+     = std::complex<T> (std::cos (z.real ()) * std::cosh (z.imag ()),
+ 		       -std::sin (z.real ()) * std::sinh (z.imag ()));
+   if (!COMPLEX_EQUAL (std::cos (z), my_cos_z))
+     return false;
+ 
+   auto my_tan_z
+     = std::complex<T> (std::sin (2*z.real ()), std::sinh (2*z.imag ()))
+       / (std::cos (2*z.real ()) + std::cosh (2*z.imag ()));
+   if (!COMPLEX_EQUAL (std::tan (z), my_tan_z))
+     return false;
+ 
+   auto my_sinh_z
+     = std::complex<T> (std::sinh (z.real ()) * std::cos (z.imag ()),
+ 		       std::cosh (z.real ()) * std::sin (z.imag ()));
+   if (!COMPLEX_EQUAL (std::sinh (z), my_sinh_z))
+     return false;
+ 
+   auto my_cosh_z
+     = std::complex<T> (std::cosh (z.real ()) * std::cos (z.imag ()),
+ 		       std::sinh (z.real ()) * std::sin (z.imag ()));
+   if (!COMPLEX_EQUAL (std::cosh (z), my_cosh_z))
+     return false;
+ 
+   auto my_tanh_z
+     = std::complex<T> (std::sinh (2*z.real ()),
+ 		       std::sin (2*z.imag ()))
+ 		       / (std::cosh (2*z.real ()) + std::cos (2*z.imag ()));
+   if (!COMPLEX_EQUAL (std::tanh (z), my_tanh_z))
+     return false;
+ 
+   auto my_asin_z = -i * std::log (i * z + std::sqrt ((T) 1.0 - z*z));
+   if (!COMPLEX_EQUAL (std::asin (z), my_asin_z))
+     return false;
+ 
+   auto my_acos_z
+     = std::complex<T> (std::numbers::pi / 2)
+ 		       + i * std::log (i * z + std::sqrt ((T) 1.0 - z*z));
+   if (!COMPLEX_EQUAL (std::acos (z), my_acos_z))
+     return false;
+ 
+   auto my_atan_z = std::complex<T> (0, -0.5) * (std::log ((i - z) / (i + z)));
+   if (!COMPLEX_EQUAL (std::atan (z), my_atan_z))
+     return false;
+ 
+   auto my_asinh_z = std::log (z + std::sqrt (z*z + (T) 1.0));
+   if (!COMPLEX_EQUAL (std::asinh (z), my_asinh_z))
+     return false;
+ 
+   auto my_acosh_z = std::log (z + std::sqrt (z*z - (T) 1.0));
+   if (!COMPLEX_EQUAL (std::acosh (z), my_acosh_z))
+     return false;
+ 
+   auto my_atanh_z
+     = std::complex<T> (0.5) * (std::log ((T) 1.0 + z) - std::log ((T) 1.0 - z));
+   if (!COMPLEX_EQUAL (std::atanh (z), my_atanh_z))
+     return false;
+ 
+   return true;
+ }
+ #pragma omp end declare target
+ 
+ #define RUN_TEST(func) \
+ { \
+   pass++; \
+   bool ok = test_##func<float> (); \
+   if (!ok) { result = pass; break; } \
+   pass++; \
+   ok = test_##func<double> (); \
+   if (!ok) { result = pass; break; } \
+ }
+ 
+ int main (void)
+ {
+   int result = 0;
+ 
+   #pragma omp target map (tofrom: result)
+     do {
+       int pass = 0;
+ 
+       RUN_TEST (complex);
+       RUN_TEST (complex_exp_log);
+       RUN_TEST (complex_trig);
+     } while (false);
+ 
+   return result;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent-usm.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent-usm.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent-usm.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent-usm.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,5 ----
+ #pragma omp requires unified_shared_memory self_maps
+ 
+ #define MEM_SHARED
+ 
+ #include "target-std__deque-concurrent.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,64 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <deque>
+ #include <algorithm>
+ 
+ #define N 50000
+ 
+ void init (int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     data[i] = rand ();
+ }
+ 
+ #pragma omp declare target
+ bool validate (const std::deque<int> &_deque, int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     if (_deque[i] != data[i] * data[i])
+       return false;
+   return true;
+ }
+ #pragma omp end declare target
+ 
+ int main (void)
+ {
+   int data[N];
+   bool ok;
+ 
+   srand (time (NULL));
+   init (data);
+ 
+ #ifdef MEM_SHARED
+   std::deque<int> _deque (std::begin (data), std::end (data));
+ #else
+   std::deque<int> _deque;
+ #endif
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target data map (to: data[:N]) map (alloc: _deque)
+ #endif
+     {
+ #ifndef MEM_SHARED
+       #pragma omp target
+ 	new (&_deque) std::deque<int> (std::begin (data), std::end (data));
+ #endif
+ 
+       #pragma omp target teams distribute parallel for
+ 	for (int i = 0; i < N; ++i)
+ 	  _deque[i] *= _deque[i];
+ 
+       #pragma omp target map (from: ok)
+ 	{
+ 	  ok = validate (_deque, data);
+ #ifndef MEM_SHARED
+ 	  _deque.~deque ();
+ #endif
+ 	}
+     }
+ 
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__flat_map-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__flat_map-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__flat_map-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__flat_map-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,71 ----
+ // { dg-do run }
+ // { dg-additional-options "-std=c++23" }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ /* { dg-ice {TODO PR120450} { offload_target_amdgcn && { ! offload_device_shared_as } } }
+    { dg-excess-errors {'mkoffload' failure etc.} { xfail { offload_target_amdgcn && { ! offload_device_shared_as } } } }
+    (For effective-target 'offload_device_shared_as', we've got '-DMEM_SHARED', and therefore don't invoke the constructor with placement new.)  */
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <set>
+ #include <flat_map>
+ 
+ #define N 3000
+ 
+ void init (int data[], bool unique)
+ {
+   std::set<int> _set;
+   for (int i = 0; i < N; ++i)
+     {
+       // Avoid duplicates in data array if unique is true.
+       do
+ 	data[i] = rand ();
+       while (unique && _set.count (data[i]) > 0);
+       _set.insert (data[i]);
+     }
+ }
+ 
+ bool validate (long long sum, int keys[], int data[])
+ {
+   long long total = 0;
+   for (int i = 0; i < N; ++i)
+     total += (long long) keys[i] * data[i];
+   return sum == total;
+ }
+ 
+ int main (void)
+ {
+   int keys[N], data[N];
+   std::flat_map<int,int> _map;
+ 
+   srand (time (NULL));
+   init (keys, true);
+   init (data, false);
+ 
+   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
+ 
+   #pragma omp target
+     {
+ #ifndef MEM_SHARED
+       new (&_map) std::flat_map<int,int> ();
+ #endif
+       for (int i = 0; i < N; ++i)
+ 	_map[keys[i]] = data[i];
+     }
+ 
+   long long sum = 0;
+   #pragma omp target teams distribute parallel for reduction (+:sum)
+     for (int i = 0; i < N; ++i)
+       sum += (long long) keys[i] * _map[keys[i]];
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target
+     _map.~flat_map ();
+ #endif
+ 
+   #pragma omp target exit data map (release: _map)
+ 
+   bool ok = validate (sum, keys, data);
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__flat_multimap-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__flat_multimap-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__flat_multimap-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__flat_multimap-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,70 ----
+ // { dg-do run }
+ // { dg-additional-options "-std=c++23" }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ /* { dg-ice {TODO PR120450} { offload_target_amdgcn && { ! offload_device_shared_as } } }
+    { dg-excess-errors {'mkoffload' failure etc.} { xfail { offload_target_amdgcn && { ! offload_device_shared_as } } } }
+    (For effective-target 'offload_device_shared_as', we've got '-DMEM_SHARED', and therefore don't invoke the constructor with placement new.)  */
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <flat_map>
+ 
+ // Make sure that KEY_MAX is less than N to ensure some duplicate keys.
+ #define N 3000
+ #define KEY_MAX 1000
+ 
+ void init (int data[], int max)
+ {
+   for (int i = 0; i < N; ++i)
+     data[i] = i % max;
+ }
+ 
+ bool validate (long long sum, int keys[], int data[])
+ {
+   long long total = 0;
+   for (int i = 0; i < N; ++i)
+     total += (long long) keys[i] * data[i];
+   return sum == total;
+ }
+ 
+ int main (void)
+ {
+   int keys[N], data[N];
+   std::flat_multimap<int,int> _map;
+ 
+   srand (time (NULL));
+   init (keys, KEY_MAX);
+   init (data, RAND_MAX);
+ 
+   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
+ 
+   #pragma omp target
+     {
+ #ifndef MEM_SHARED
+       new (&_map) std::flat_multimap<int,int> ();
+ #endif
+       for (int i = 0; i < N; ++i)
+ 	_map.insert({keys[i], data[i]});
+     }
+ 
+   long long sum = 0;
+   #pragma omp target teams distribute parallel for reduction (+:sum)
+     for (int i = 0; i < KEY_MAX; ++i)
+       {
+ 	auto range = _map.equal_range (i);
+ 	for (auto it = range.first; it != range.second; ++it) {
+ 	  sum += (long long) it->first * it->second;
+ 	}
+       }
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target
+     _map.~flat_multimap ();
+ #endif
+ 
+   #pragma omp target exit data map (release: _map)
+ 
+   bool ok = validate (sum, keys, data);
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__flat_multiset-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__flat_multiset-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__flat_multiset-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__flat_multiset-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,60 ----
+ // { dg-do run }
+ // { dg-additional-options "-std=c++23" }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <flat_set>
+ #include <algorithm>
+ 
+ // MAX should be less than N to ensure that some duplicates occur.
+ #define N 4000
+ #define MAX 1000
+ 
+ void init (int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     data[i] = rand () % MAX;
+ }
+ 
+ bool validate (int sum, int data[])
+ {
+   int total = 0;
+   for (int i = 0; i < N; ++i)
+     total += data[i];
+   return sum == total;
+ }
+ 
+ int main (void)
+ {
+   int data[N];
+   std::flat_multiset<int> set;
+   int sum = 0;
+ 
+   srand (time (NULL));
+   init (data);
+ 
+   #pragma omp target data map (to: data[:N]) map (alloc: set)
+     {
+       #pragma omp target
+ 	{
+ #ifndef MEM_SHARED
+ 	  new (&set) std::flat_multiset<int> ();
+ #endif
+ 	  for (int i = 0; i < N; ++i)
+ 	    set.insert (data[i]);
+ 	}
+ 
+       #pragma omp target teams distribute parallel for reduction (+:sum)
+ 	for (int i = 0; i < MAX; ++i)
+ 	  sum += i * set.count (i);
+ 
+ #ifndef MEM_SHARED
+       #pragma omp target
+ 	set.~flat_multiset ();
+ #endif
+     }
+ 
+   bool ok = validate (sum, data);
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__flat_set-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__flat_set-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__flat_set-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__flat_set-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,67 ----
+ // { dg-do run }
+ // { dg-additional-options "-std=c++23" }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <flat_set>
+ #include <algorithm>
+ 
+ #define N 4000
+ #define MAX 16384
+ 
+ void init (int data[])
+ {
+   std::flat_set<int> _set;
+   for (int i = 0; i < N; ++i)
+     {
+       // Avoid duplicates in data array.
+       do
+ 	data[i] = rand () % MAX;
+       while (_set.count (data[i]) != 0);
+       _set.insert (data[i]);
+     }
+ }
+ 
+ bool validate (int sum, int data[])
+ {
+   int total = 0;
+   for (int i = 0; i < N; ++i)
+     total += data[i];
+   return sum == total;
+ }
+ 
+ int main (void)
+ {
+   int data[N];
+   std::flat_set<int> _set;
+   int sum = 0;
+ 
+   srand (time (NULL));
+   init (data);
+ 
+   #pragma omp target data map (to: data[:N]) map (alloc: _set)
+     {
+       #pragma omp target
+ 	{
+ #ifndef MEM_SHARED
+ 	  new (&_set) std::flat_set<int> ();
+ #endif
+ 	  for (int i = 0; i < N; ++i)
+ 	    _set.insert (data[i]);
+ 	}
+ 
+       #pragma omp target teams distribute parallel for reduction (+:sum)
+ 	for (int i = 0; i < MAX; ++i)
+ 	  if (_set.count (i) > 0)
+ 	    sum += i;
+ 
+ #ifndef MEM_SHARED
+       #pragma omp target
+ 	_set.~flat_set ();
+ #endif
+     }
+ 
+   bool ok = validate (sum, data);
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,5 ----
+ #pragma omp requires unified_shared_memory self_maps
+ 
+ #define MEM_SHARED
+ 
+ #include "target-std__forward_list-concurrent.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,83 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <omp.h>
+ #include <forward_list>
+ #include <algorithm>
+ 
+ #define N 3000
+ 
+ void init (int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     data[i] = rand ();
+ }
+ 
+ #pragma omp declare target
+ bool validate (const std::forward_list<int> &list, int data[])
+ {
+   int i = 0;
+   for (auto &v : list)
+     {
+       if (v != data[i] * data[i])
+ 	return false;
+       ++i;
+     }
+   return true;
+ }
+ #pragma omp end declare target
+ 
+ int main (void)
+ {
+   int data[N];
+   bool ok;
+ 
+   srand (time (NULL));
+   init (data);
+ 
+ #ifdef MEM_SHARED
+   std::forward_list<int> list (std::begin (data), std::end (data));
+ #else
+   std::forward_list<int> list;
+ #endif
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target data map (to: data[:N]) map (alloc: list)
+ #endif
+     {
+ #ifndef MEM_SHARED
+       #pragma omp target
+ 	new (&list) std::forward_list<int> (std::begin (data), std::end (data));
+ #endif
+ 
+       #pragma omp target teams
+ 	do
+ 	  {
+ 	    int len = N / omp_get_num_teams () + (N % omp_get_num_teams () > 0);
+ 	    int start = len * omp_get_team_num ();
+ 	    if (start >= N)
+ 	      break;
+ 	    if (start + len >= N)
+ 	      len = N - start;
+ 	    auto it = list.begin ();
+ 	    std::advance (it, start);
+ 	    for (int i = 0; i < len; ++i)
+ 	      {
+ 		*it *= *it;
+ 		++it;
+ 	      }
+ 	  } while (false);
+ 
+       #pragma omp target map (from: ok)
+ 	{
+ 	  ok = validate (list, data);
+ #ifndef MEM_SHARED
+ 	  list.~forward_list ();
+ #endif
+ 	}
+     }
+ 
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__list-concurrent-usm.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__list-concurrent-usm.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__list-concurrent-usm.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__list-concurrent-usm.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,5 ----
+ #pragma omp requires unified_shared_memory self_maps
+ 
+ #define MEM_SHARED
+ 
+ #include "target-std__list-concurrent.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,83 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <omp.h>
+ #include <list>
+ #include <algorithm>
+ 
+ #define N 3000
+ 
+ void init (int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     data[i] = rand ();
+ }
+ 
+ #pragma omp declare target
+ bool validate (const std::list<int> &_list, int data[])
+ {
+   int i = 0;
+   for (auto &v : _list)
+     {
+       if (v != data[i] * data[i])
+ 	return false;
+       ++i;
+     }
+   return true;
+ }
+ #pragma omp end declare target
+ 
+ int main (void)
+ {
+   int data[N];
+   bool ok;
+ 
+   srand (time (NULL));
+   init (data);
+ 
+ #ifdef MEM_SHARED
+   std::list<int> _list (std::begin (data), std::end (data));
+ #else
+   std::list<int> _list;
+ #endif
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target data map (to: data[:N]) map (alloc: _list)
+ #endif
+     {
+ #ifndef MEM_SHARED
+       #pragma omp target
+ 	new (&_list) std::list<int> (std::begin (data), std::end (data));
+ #endif
+ 
+       #pragma omp target teams
+ 	do
+ 	  {
+ 	    int len = N / omp_get_num_teams () + (N % omp_get_num_teams () > 0);
+ 	    int start = len * omp_get_team_num ();
+ 	    if (start >= N)
+ 	      break;
+ 	    if (start + len >= N)
+ 	      len = N - start;
+ 	    auto it = _list.begin ();
+ 	    std::advance (it, start);
+ 	    for (int i = 0; i < len; ++i)
+ 	      {
+ 		*it *= *it;
+ 		++it;
+ 	      }
+ 	  } while (false);
+ 
+       #pragma omp target map (from: ok)
+ 	{
+ 	  ok = validate (_list, data);
+ #ifndef MEM_SHARED
+ 	  _list.~list ();
+ #endif
+ 	}
+     }
+ 
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__map-concurrent-usm.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__map-concurrent-usm.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__map-concurrent-usm.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__map-concurrent-usm.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,5 ----
+ #pragma omp requires unified_shared_memory self_maps
+ 
+ #define MEM_SHARED
+ 
+ #include "target-std__map-concurrent.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,70 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <set>
+ #include <map>
+ 
+ #define N 3000
+ 
+ void init (int data[], bool unique)
+ {
+   std::set<int> _set;
+   for (int i = 0; i < N; ++i)
+     {
+       // Avoid duplicates in data array if unique is true.
+       do
+ 	data[i] = rand ();
+       while (unique && _set.find (data[i]) != _set.end ());
+       _set.insert (data[i]);
+     }
+ }
+ 
+ bool validate (long long sum, int keys[], int data[])
+ {
+   long long total = 0;
+   for (int i = 0; i < N; ++i)
+     total += (long long) keys[i] * data[i];
+   return sum == total;
+ }
+ 
+ int main (void)
+ {
+   int keys[N], data[N];
+   std::map<int,int> _map;
+ 
+   srand (time (NULL));
+   init (keys, true);
+   init (data, false);
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
+ #endif
+ 
+   #pragma omp target
+     {
+ #ifndef MEM_SHARED
+       new (&_map) std::map<int,int> ();
+ #endif
+       for (int i = 0; i < N; ++i)
+ 	_map[keys[i]] = data[i];
+     }
+ 
+   long long sum = 0;
+   #pragma omp target teams distribute parallel for reduction (+:sum)
+     for (int i = 0; i < N; ++i)
+       sum += (long long) keys[i] * _map[keys[i]];
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target
+     _map.~map ();
+ #endif
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target exit data map (release: _map)
+ #endif
+ 
+   bool ok = validate (sum, keys, data);
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,5 ----
+ #pragma omp requires unified_shared_memory self_maps
+ 
+ #define MEM_SHARED
+ 
+ #include "target-std__multimap-concurrent.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,68 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <map>
+ 
+ // Make sure that KEY_MAX is less than N to ensure some duplicate keys.
+ #define N 3000
+ #define KEY_MAX 1000
+ 
+ void init (int data[], int max)
+ {
+   for (int i = 0; i < N; ++i)
+     data[i] = rand () % max;
+ }
+ 
+ bool validate (long long sum, int keys[], int data[])
+ {
+   long long total = 0;
+   for (int i = 0; i < N; ++i)
+     total += (long long) keys[i] * data[i];
+   return sum == total;
+ }
+ 
+ int main (void)
+ {
+   int keys[N], data[N];
+   std::multimap<int,int> _map;
+ 
+   srand (time (NULL));
+   init (keys, KEY_MAX);
+   init (data, RAND_MAX);
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
+ #endif
+ 
+   #pragma omp target
+     {
+ #ifndef MEM_SHARED
+       new (&_map) std::multimap<int,int> ();
+ #endif
+       for (int i = 0; i < N; ++i)
+ 	_map.insert({keys[i], data[i]});
+     }
+ 
+   long long sum = 0;
+   #pragma omp target teams distribute parallel for reduction (+:sum)
+     for (int i = 0; i < KEY_MAX; ++i)
+       {
+ 	auto range = _map.equal_range (i);
+ 	for (auto it = range.first; it != range.second; ++it)
+ 	  sum += (long long) it->first * it->second;
+       }
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target
+     _map.~multimap ();
+ #endif
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target exit data map (release: _map)
+ #endif
+ 
+   bool ok = validate (sum, keys, data);
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,5 ----
+ #pragma omp requires unified_shared_memory self_maps
+ 
+ #define MEM_SHARED
+ 
+ #include "target-std__multiset-concurrent.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,62 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <set>
+ #include <algorithm>
+ 
+ // MAX should be less than N to ensure that some duplicates occur.
+ #define N 4000
+ #define MAX 1000
+ 
+ void init (int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     data[i] = rand () % MAX;
+ }
+ 
+ bool validate (int sum, int data[])
+ {
+   int total = 0;
+   for (int i = 0; i < N; ++i)
+     total += data[i];
+   return sum == total;
+ }
+ 
+ int main (void)
+ {
+   int data[N];
+   std::multiset<int> set;
+   int sum = 0;
+ 
+   srand (time (NULL));
+   init (data);
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target data map (to: data[:N]) map (alloc: set)
+ #endif
+     {
+       #pragma omp target
+ 	{
+ #ifndef MEM_SHARED
+ 	  new (&set) std::multiset<int> ();
+ #endif
+ 	  for (int i = 0; i < N; ++i)
+ 	    set.insert (data[i]);
+ 	}
+ 
+       #pragma omp target teams distribute parallel for reduction (+:sum)
+ 	for (int i = 0; i < MAX; ++i)
+ 	  sum += i * set.count (i);
+ 
+ #ifndef MEM_SHARED
+       #pragma omp target
+ 	set.~multiset ();
+ #endif
+     }
+ 
+   bool ok = validate (sum, data);
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__numbers.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__numbers.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__numbers.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__numbers.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,93 ----
+ // { dg-do run }
+ // { dg-additional-options "-std=c++20" }
+ 
+ #include <cmath>
+ #include <numbers>
+ 
+ #define FP_EQUAL(x,y) (std::abs ((x) - (y)) < 1E-6)
+ 
+ #pragma omp declare target
+ template<typename T> bool test_pi ()
+ {
+   if (!FP_EQUAL (std::sin (std::numbers::pi_v<T>), (T) 0.0))
+     return false;
+   if (!FP_EQUAL (std::cos (std::numbers::pi_v<T>), (T) -1.0))
+     return false;
+   if (!FP_EQUAL (std::numbers::pi_v<T> * std::numbers::inv_pi_v<T>, (T) 1.0))
+     return false;
+   if (!FP_EQUAL (std::numbers::pi_v<T> * std::numbers::inv_sqrtpi_v<T>
+ 		 * std::numbers::inv_sqrtpi_v<T>, (T) 1.0))
+     return false;
+   return true;
+ }
+ 
+ template<typename T> bool test_sqrt ()
+ {
+   if (!FP_EQUAL (std::numbers::sqrt2_v<T> * std::numbers::sqrt2_v<T>, (T) 2.0))
+     return false;
+   if (!FP_EQUAL (std::numbers::sqrt3_v<T> * std::numbers::sqrt3_v<T>, (T) 3.0))
+     return false;
+   return true;
+ }
+ 
+ template<typename T> bool test_phi ()
+ {
+   T myphi = ((T) 1.0 + std::sqrt ((T) 5.0)) / (T) 2.0;
+   if (!FP_EQUAL (myphi, std::numbers::phi_v<T>))
+     return false;
+   return true;
+ }
+ 
+ template<typename T> bool test_log ()
+ {
+   if (!FP_EQUAL (std::log ((T) 2.0), std::numbers::ln2_v<T>))
+     return false;
+   if (!FP_EQUAL (std::log ((T) 10.0), std::numbers::ln10_v<T>))
+     return false;
+   if (!FP_EQUAL (std::log2 ((T) std::numbers::e), std::numbers::log2e_v<T>))
+     return false;
+   if (!FP_EQUAL (std::log10 ((T) std::numbers::e), std::numbers::log10e_v<T>))
+     return false;
+   return true;
+ }
+ 
+ template<typename T> bool test_egamma ()
+ {
+   T myegamma = 0.0;
+   #pragma omp parallel for reduction(+:myegamma)
+     for (int k = 2; k < 100000; ++k)
+       myegamma += (std::riemann_zeta (k) - 1) / k;
+   myegamma = (T) 1 - myegamma;
+   if (!FP_EQUAL (myegamma, std::numbers::egamma_v<T>))
+     return false;
+   return true;
+ }
+ #pragma omp end declare target
+ 
+ #define RUN_TEST(func) \
+ { \
+   pass++; \
+   bool ok = test_##func<float> (); \
+   if (!ok) { result = pass; break; } \
+   pass++; \
+   ok = test_##func<double> (); \
+   if (!ok) { result = pass; break; } \
+ }
+ 
+ int main (void)
+ {
+   int result = 0;
+ 
+   #pragma omp target map (tofrom: result)
+     do {
+       int pass = 0;
+ 
+       RUN_TEST (pi);
+       RUN_TEST (sqrt);
+       RUN_TEST (phi);
+       RUN_TEST (log);
+       RUN_TEST (egamma);
+     } while (false);
+ 
+   return result;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__set-concurrent-usm.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__set-concurrent-usm.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__set-concurrent-usm.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__set-concurrent-usm.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,5 ----
+ #pragma omp requires unified_shared_memory self_maps
+ 
+ #define MEM_SHARED
+ 
+ #include "target-std__set-concurrent.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,68 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <set>
+ #include <algorithm>
+ 
+ #define N 4000
+ #define MAX 16384
+ 
+ void init (int data[])
+ {
+   std::set<int> _set;
+   for (int i = 0; i < N; ++i)
+     {
+       // Avoid duplicates in data array.
+       do
+ 	data[i] = rand () % MAX;
+       while (_set.find (data[i]) != _set.end ());
+       _set.insert (data[i]);
+     }
+ }
+ 
+ bool validate (int sum, int data[])
+ {
+   int total = 0;
+   for (int i = 0; i < N; ++i)
+     total += data[i];
+   return sum == total;
+ }
+ 
+ int main (void)
+ {
+   int data[N];
+   std::set<int> _set;
+   int sum = 0;
+ 
+   srand (time (NULL));
+   init (data);
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target data map (to: data[:N]) map (alloc: _set)
+ #endif
+     {
+       #pragma omp target
+ 	{
+ #ifndef MEM_SHARED
+ 	  new (&_set) std::set<int> ();
+ #endif
+ 	  for (int i = 0; i < N; ++i)
+ 	    _set.insert (data[i]);
+ 	}
+ 
+       #pragma omp target teams distribute parallel for reduction (+:sum)
+ 	for (int i = 0; i < MAX; ++i)
+ 	  if (_set.find (i) != _set.end ())
+ 	    sum += i;
+ 
+ #ifndef MEM_SHARED
+       #pragma omp target
+ 	_set.~set ();
+ #endif
+     }
+ 
+   bool ok = validate (sum, data);
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__span-concurrent-usm.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__span-concurrent-usm.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__span-concurrent-usm.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__span-concurrent-usm.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,7 ----
+ // { dg-additional-options "-std=c++20" }
+ 
+ #pragma omp requires unified_shared_memory self_maps
+ 
+ #define MEM_SHARED
+ 
+ #include "target-std__span-concurrent.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,66 ----
+ // { dg-do run }
+ // { dg-additional-options "-std=c++20" }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <span>
+ 
+ #define N 64
+ 
+ void init (int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     data[i] = rand ();
+ }
+ 
+ #pragma omp declare target
+ bool validate (const std::span<int, N> &span, int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     if (span[i] != data[i] * data[i])
+       return false;
+   return true;
+ }
+ #pragma omp end declare target
+ 
+ int main (void)
+ {
+   int data[N];
+   bool ok;
+   int elements[N];
+   std::span<int, N> span(elements);
+ 
+   srand (time (NULL));
+   init (data);
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target enter data map (to: data[:N]) map (alloc: elements, span)
+ #endif
+ 
+   #pragma omp target
+     {
+ #ifndef MEM_SHARED
+       new (&span) std::span<int, N> (elements);
+ #endif
+       std::copy (data, data + N, span.begin ());
+     }
+ 
+   #pragma omp target teams distribute parallel for
+     for (int i = 0; i < N; ++i)
+       span[i] *= span[i];
+ 
+   #pragma omp target map (from: ok)
+     {
+       ok = validate (span, data);
+ #ifndef MEM_SHARED
+       span.~span ();
+ #endif
+     }
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target exit data map (release: elements, span)
+ #endif
+ 
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__unordered_map-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__unordered_map-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__unordered_map-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__unordered_map-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,66 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <set>
+ #include <unordered_map>
+ 
+ #define N 3000
+ 
+ void init (int data[], bool unique)
+ {
+   std::set<int> _set;
+   for (int i = 0; i < N; ++i)
+     {
+       // Avoid duplicates in data array if unique is true.
+       do
+ 	data[i] = rand ();
+       while (unique && _set.count (data[i]) > 0);
+       _set.insert (data[i]);
+     }
+ }
+ 
+ bool validate (long long sum, int keys[], int data[])
+ {
+   long long total = 0;
+   for (int i = 0; i < N; ++i)
+     total += (long long) keys[i] * data[i];
+   return sum == total;
+ }
+ 
+ int main (void)
+ {
+   int keys[N], data[N];
+   std::unordered_map<int,int> _map;
+ 
+   srand (time (NULL));
+   init (keys, true);
+   init (data, false);
+ 
+   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
+ 
+   #pragma omp target
+     {
+ #ifndef MEM_SHARED
+       new (&_map) std::unordered_map<int,int> ();
+ #endif
+       for (int i = 0; i < N; ++i)
+ 	_map[keys[i]] = data[i];
+     }
+ 
+   long long sum = 0;
+   #pragma omp target teams distribute parallel for reduction (+:sum)
+     for (int i = 0; i < N; ++i)
+       sum += (long long) keys[i] * _map[keys[i]];
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target
+     _map.~unordered_map ();
+ #endif
+ 
+   #pragma omp target exit data map (release: _map)
+ 
+   bool ok = validate (sum, keys, data);
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__unordered_multimap-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__unordered_multimap-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__unordered_multimap-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__unordered_multimap-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,65 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <unordered_map>
+ 
+ // Make sure that KEY_MAX is less than N to ensure some duplicate keys.
+ #define N 3000
+ #define KEY_MAX 1000
+ 
+ void init (int data[], int max)
+ {
+   for (int i = 0; i < N; ++i)
+     data[i] = i % max;
+ }
+ 
+ bool validate (long long sum, int keys[], int data[])
+ {
+   long long total = 0;
+   for (int i = 0; i < N; ++i)
+     total += (long long) keys[i] * data[i];
+   return sum == total;
+ }
+ 
+ int main (void)
+ {
+   int keys[N], data[N];
+   std::unordered_multimap<int,int> _map;
+ 
+   srand (time (NULL));
+   init (keys, KEY_MAX);
+   init (data, RAND_MAX);
+ 
+   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
+ 
+   #pragma omp target
+     {
+ #ifndef MEM_SHARED
+       new (&_map) std::unordered_multimap<int,int> ();
+ #endif
+       for (int i = 0; i < N; ++i)
+ 	_map.insert({keys[i], data[i]});
+     }
+ 
+   long long sum = 0;
+   #pragma omp target teams distribute parallel for reduction (+:sum)
+     for (int i = 0; i < KEY_MAX; ++i)
+       {
+ 	auto range = _map.equal_range (i);
+ 	for (auto it = range.first; it != range.second; ++it) {
+ 	  sum += (long long) it->first * it->second;
+ 	}
+       }
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target
+     _map.~unordered_multimap ();
+ #endif
+ 
+   #pragma omp target exit data map (release: _map)
+ 
+   bool ok = validate (sum, keys, data);
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__unordered_multiset-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__unordered_multiset-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__unordered_multiset-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__unordered_multiset-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,59 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <unordered_set>
+ #include <algorithm>
+ 
+ // MAX should be less than N to ensure that some duplicates occur.
+ #define N 4000
+ #define MAX 1000
+ 
+ void init (int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     data[i] = rand () % MAX;
+ }
+ 
+ bool validate (int sum, int data[])
+ {
+   int total = 0;
+   for (int i = 0; i < N; ++i)
+     total += data[i];
+   return sum == total;
+ }
+ 
+ int main (void)
+ {
+   int data[N];
+   std::unordered_multiset<int> set;
+   int sum = 0;
+ 
+   srand (time (NULL));
+   init (data);
+ 
+   #pragma omp target data map (to: data[:N]) map (alloc: set)
+     {
+       #pragma omp target
+ 	{
+ #ifndef MEM_SHARED
+ 	  new (&set) std::unordered_multiset<int> ();
+ #endif
+ 	  for (int i = 0; i < N; ++i)
+ 	    set.insert (data[i]);
+ 	}
+ 
+       #pragma omp target teams distribute parallel for reduction (+:sum)
+ 	for (int i = 0; i < MAX; ++i)
+ 	  sum += i * set.count (i);
+ 
+ #ifndef MEM_SHARED
+       #pragma omp target
+ 	set.~unordered_multiset ();
+ #endif
+     }
+ 
+   bool ok = validate (sum, data);
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__unordered_set-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__unordered_set-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__unordered_set-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__unordered_set-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,66 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <unordered_set>
+ #include <algorithm>
+ 
+ #define N 4000
+ #define MAX 16384
+ 
+ void init (int data[])
+ {
+   std::unordered_set<int> _set;
+   for (int i = 0; i < N; ++i)
+     {
+       // Avoid duplicates in data array.
+       do
+ 	data[i] = rand () % MAX;
+       while (_set.count (data[i]) != 0);
+       _set.insert (data[i]);
+     }
+ }
+ 
+ bool validate (int sum, int data[])
+ {
+   int total = 0;
+   for (int i = 0; i < N; ++i)
+     total += data[i];
+   return sum == total;
+ }
+ 
+ int main (void)
+ {
+   int data[N];
+   std::unordered_set<int> _set;
+   int sum = 0;
+ 
+   srand (time (NULL));
+   init (data);
+ 
+   #pragma omp target data map (to: data[:N]) map (alloc: _set)
+     {
+       #pragma omp target
+ 	{
+ #ifndef MEM_SHARED
+ 	  new (&_set) std::unordered_set<int> ();
+ #endif
+ 	  for (int i = 0; i < N; ++i)
+ 	    _set.insert (data[i]);
+ 	}
+ 
+       #pragma omp target teams distribute parallel for reduction (+:sum)
+ 	for (int i = 0; i < MAX; ++i)
+ 	  if (_set.count (i) > 0)
+ 	    sum += i;
+ 
+ #ifndef MEM_SHARED
+       #pragma omp target
+ 	_set.~unordered_set ();
+ #endif
+     }
+ 
+   bool ok = validate (sum, data);
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__valarray-1.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__valarray-1.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__valarray-1.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__valarray-1.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,179 ----
+ // { dg-additional-options -std=c++20 }
+ // { dg-output-file target-std__valarray-1.output }
+ 
+ #include <valarray>
+ #include <ostream>
+ #include <sstream>
+ 
+ 
+ /*TODO Work around PR118484 "ICE during IPA pass: cp, segfault in determine_versionability ipa-cp.cc:467".
+ 
+ We can't:
+ 
+     #pragma omp declare target(std::basic_streambuf<char, std::char_traits<char>>::basic_streambuf)
+ 
+ ... because:
+ 
+     error: overloaded function name ‘std::basic_streambuf<char>::__ct ’ in clause ‘enter’
+ 
+ Therefore, use dummy classes in '#pragma omp declare target':
+ */
+ 
+ #pragma omp declare target
+ 
+ // For 'std::basic_streambuf<char, std::char_traits<char> >::basic_streambuf':
+ 
+ class dummy_basic_streambuf__char
+   : public std::basic_streambuf<char>
+ {
+ public:
+   dummy_basic_streambuf__char() {}
+ };
+ 
+ // For 'std::basic_ios<char, std::char_traits<char> >::basic_ios()':
+ 
+ class dummy_basic_ios__char
+   : public std::basic_ios<char>
+ {
+ public:
+   dummy_basic_ios__char() {}
+ };
+ 
+ #pragma omp end declare target
+ 
+ 
+ int main()
+ {
+   // Due to PR120021 "Offloading vs. C++ 'std::initializer_list'", we can't construct these on the device.
+   std::initializer_list<int> v1_i = {10, 20, 30, 40, 50};
+   const int *v1_i_data = std::data(v1_i);
+   size_t v1_i_size = v1_i.size();
+   std::initializer_list<int> v2_i = {5, 4, 3, 2, 1};
+   const int *v2_i_data = std::data(v2_i);
+   size_t v2_i_size = v2_i.size();
+   std::initializer_list<int> shiftData_i = {1, 2, 3, 4, 5};
+   const int *shiftData_i_data = std::data(shiftData_i);
+   size_t shiftData_i_size = shiftData_i.size();
+ #pragma omp target \
+   defaultmap(none) \
+   map(to: v1_i_data[:v1_i_size], v1_i_size, \
+           v2_i_data[:v2_i_size], v2_i_size, \
+           shiftData_i_data[:shiftData_i_size], shiftData_i_size)
+   {
+     /* Manually set up a buffer we can stream into, similar to 'cout << [...]', and print it at the end of region.  */
+     std::stringbuf out_b;
+     std::ostream out(&out_b);
+ 
+     std::valarray<int> v1(v1_i_data, v1_i_size);
+     out << "\nv1:";
+     for (auto val : v1)
+       out << " " << val;
+ 
+     std::valarray<int> v2(v2_i_data, v2_i_size);
+     out << "\nv2:";
+     for (auto val : v2)
+       out << " " << val;
+ 
+     std::valarray<int> sum = v1 + v2;
+     out << "\nv1 + v2:";
+     for (auto val : sum)
+       out << " " << val;
+ 
+     std::valarray<int> diff = v1 - v2;
+     out << "\nv1 - v2:";
+     for (auto val : diff)
+       out << " " << val;
+ 
+     std::valarray<int> product = v1 * v2;
+     out << "\nv1 * v2:";
+     for (auto val : product)
+       out << " " << val;
+ 
+     std::valarray<int> quotient = v1 / v2;
+     out << "\nv1 / v2:";
+     for (auto val : quotient)
+       out << " " << val;
+ 
+     std::valarray<int> squares = pow(v1, 2);
+     out << "\npow(v1, 2):";
+     for (auto val : squares)
+       out << " " << val;
+ 
+     std::valarray<int> sinhs = sinh(v2);
+     out << "\nsinh(v2):";
+     for (auto val : sinhs)
+       out << " " << val;
+ 
+     std::valarray<int> logs = log(v1 * v2);
+     out << "\nlog(v1 * v2):";
+     for (auto val : logs)
+       out << " " << val;
+ 
+     std::valarray<int> data(12);
+     for (size_t i = 0; i < data.size(); ++i)
+       data[i] = i;
+     out << "\nOriginal array:";
+     for (auto val : data)
+       out << " " << val;
+ 
+     std::slice slice1(2, 5, 1);
+     std::valarray<int> sliced1 = data[slice1];
+     out << "\nSlice(2, 5, 1):";
+     for (auto val : sliced1)
+       out << " " << val;
+ 
+     std::slice slice2(1, 4, 3);
+     std::valarray<int> sliced2 = data[slice2];
+     out << "\nSlice(1, 4, 3):";
+     for (auto val : sliced2)
+       out << " " << val;
+ 
+     data[slice1] = 99;
+     out << "\nArray after slice modification:";
+     for (auto val : data)
+       out << " " << val;
+ 
+     std::valarray<bool> mask = (v1 > 20);
+     out << "\nElements of v1 > 20:";
+     for (size_t i = 0; i < v1.size(); ++i)
+       {
+ 	if (mask[i])
+ 	  out << " " << v1[i];
+       }
+ 
+     std::valarray<int> masked = v1[mask];
+     out << "\nMasked array:";
+     for (auto val : masked)
+       out << " " << val;
+ 
+     std::valarray<int> shiftData(shiftData_i_data, shiftData_i_size);
+     out << "\nOriginal shiftData:";
+     for (auto val : shiftData)
+       out << " " << val;
+ 
+     std::valarray<int> shifted = shiftData.shift(2);
+     out << "\nshift(2):";
+     for (auto val : shifted)
+       out << " " << val;
+ 
+     std::valarray<int> cshifted = shiftData.cshift(-1);
+     out << "\ncshift(-1):";
+     for (auto val : cshifted)
+       out << " " << val;
+ 
+     out << "\nSum(v1): " << v1.sum();
+     out << "\nMin(v1): " << v1.min();
+     out << "\nMax(v1): " << v1.max();
+ 
+     out << "\n";
+ 
+     /* Terminate with a NUL.  Otherwise, we'd have to use:
+            __builtin_printf("%.*s", (int) out_b_sv.size(), out_b_sv.data());
+        ... which nvptx 'printf', as implemented via PTX 'vprintf', doesn't support (TODO).  */
+     out << '\0';
+     std::string_view out_b_sv = out_b.view();
+     __builtin_printf("%s", out_b_sv.data());
+   }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__valarray-1.output gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__valarray-1.output
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__valarray-1.output	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__valarray-1.output	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,22 ----
+ 
+ v1: 10 20 30 40 50
+ v2: 5 4 3 2 1
+ v1 + v2: 15 24 33 42 51
+ v1 - v2: 5 16 27 38 49
+ v1 * v2: 50 80 90 80 50
+ v1 / v2: 2 5 10 20 50
+ pow(v1, 2): 100 400 900 1600 2500
+ sinh(v2): 74 27 10 3 1
+ log(v1 * v2): 3 4 4 4 3
+ Original array: 0 1 2 3 4 5 6 7 8 9 10 11
+ Slice(2, 5, 1): 2 3 4 5 6
+ Slice(1, 4, 3): 1 4 7 10
+ Array after slice modification: 0 1 99 99 99 99 99 7 8 9 10 11
+ Elements of v1 > 20: 30 40 50
+ Masked array: 30 40 50
+ Original shiftData: 1 2 3 4 5
+ shift(2): 3 4 5 0 0
+ cshift(-1): 5 1 2 3 4
+ Sum(v1): 150
+ Min(v1): 10
+ Max(v1): 50
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,5 ----
+ #pragma omp requires unified_shared_memory self_maps
+ 
+ #define MEM_SHARED
+ 
+ #include "target-std__valarray-concurrent.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,66 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <valarray>
+ 
+ #define N 50000
+ 
+ void init (int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     data[i] = rand ();
+ }
+ 
+ #pragma omp declare target
+ bool validate (const std::valarray<int> &arr, int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     if (arr[i] != data[i] * data[i] + i)
+       return false;
+   return true;
+ }
+ #pragma omp end declare target
+ 
+ int main (void)
+ {
+   int data[N];
+   bool ok;
+ 
+   srand (time (NULL));
+   init (data);
+ 
+ #ifdef MEM_SHARED
+   std::valarray<int> arr (data, N);
+ #else
+   std::valarray<int> arr;
+ #endif
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target data map (to: data[:N]) map (alloc: arr)
+ #endif
+     {
+       #pragma omp target
+ 	{
+ #ifndef MEM_SHARED
+ 	  new (&arr) std::valarray<int> (data, N);
+ #endif
+ 	  arr *= arr;
+ 	}
+ 
+       #pragma omp target teams distribute parallel for
+ 	for (int i = 0; i < N; ++i)
+ 	  arr[i] += i;
+ 
+       #pragma omp target map (from: ok)
+ 	{
+ 	  ok = validate (arr, data);
+ #ifndef MEM_SHARED
+ 	  arr.~valarray ();
+ #endif
+ 	}
+     }
+ 
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent-usm.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent-usm.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent-usm.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent-usm.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,5 ----
+ #pragma omp requires unified_shared_memory self_maps
+ 
+ #define MEM_SHARED
+ 
+ #include "target-std__vector-concurrent.C"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,63 ----
+ // { dg-do run }
+ // { dg-additional-options -DMEM_SHARED { target offload_device_shared_as } }
+ 
+ #include <stdlib.h>
+ #include <time.h>
+ #include <vector>
+ 
+ #define N 50000
+ 
+ void init (int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     data[i] = rand ();
+ }
+ 
+ #pragma omp declare target
+ bool validate (const std::vector<int> &vec, int data[])
+ {
+   for (int i = 0; i < N; ++i)
+     if (vec[i] != data[i] * data[i])
+       return false;
+   return true;
+ }
+ #pragma omp end declare target
+ 
+ int main (void)
+ {
+   int data[N];
+   bool ok;
+ 
+   srand (time (NULL));
+   init (data);
+ 
+ #ifdef MEM_SHARED
+   std::vector<int> vec (data, data + N);
+ #else
+   std::vector<int> vec;
+ #endif
+ 
+ #ifndef MEM_SHARED
+   #pragma omp target data map (to: data[:N]) map (alloc: vec)
+ #endif
+     {
+ #ifndef MEM_SHARED
+       #pragma omp target
+ 	new (&vec) std::vector<int> (data, data + N);
+ #endif
+ 
+       #pragma omp target teams distribute parallel for
+ 	for (int i = 0; i < N; ++i)
+ 	  vec[i] *= vec[i];
+ 
+       #pragma omp target map (from: ok)
+ 	{
+ 	  ok = validate (vec, data);
+ #ifndef MEM_SHARED
+ 	  vec.~vector ();
+ #endif
+ 	}
+     }
+ 
+   return ok ? 0 : 1;
+ }
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1-O0.c gcc-15-20250726/libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1-O0.c
*** gcc-15-20250719/libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1-O0.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1-O0.c	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,3 ----
+ /* { dg-additional-options -O0 } */
+ 
+ #include "target-abi-struct-1.c"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1.c gcc-15-20250726/libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1.c
*** gcc-15-20250719/libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1.c	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1 ----
+ #include "../libgomp.oacc-c-c++-common/abi-struct-1.c"
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.c-c++-common/target-cdtor-1.c gcc-15-20250726/libgomp/testsuite/libgomp.c-c++-common/target-cdtor-1.c
*** gcc-15-20250719/libgomp/testsuite/libgomp.c-c++-common/target-cdtor-1.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.c-c++-common/target-cdtor-1.c	Sat Jul 26 22:33:54 2025
***************
*** 0 ****
--- 1,89 ----
+ /* Offloaded 'constructor' and 'destructor' functions.  */
+ 
+ #include <omp.h>
+ 
+ #pragma omp declare target
+ 
+ static void
+ __attribute__((constructor))
+ initHD1()
+ {
+   __builtin_printf("%s, %d\n", __FUNCTION__, omp_is_initial_device());
+ }
+ 
+ static void
+ __attribute__((constructor))
+ initHD2()
+ {
+   __builtin_printf("%s, %d\n", __FUNCTION__, omp_is_initial_device());
+ }
+ 
+ static void
+ __attribute__((destructor))
+ finiHD1()
+ {
+   __builtin_printf("%s, %d\n", __FUNCTION__, omp_is_initial_device());
+ }
+ 
+ static void
+ __attribute__((destructor))
+ finiHD2()
+ {
+   __builtin_printf("%s, %d\n", __FUNCTION__, omp_is_initial_device());
+ }
+ 
+ #pragma omp end declare target
+ 
+ static void
+ __attribute__((constructor))
+ initH1()
+ {
+   __builtin_printf("%s, %d\n", __FUNCTION__, omp_is_initial_device());
+ }
+ 
+ static void
+ __attribute__((destructor))
+ finiH2()
+ {
+   __builtin_printf("%s, %d\n", __FUNCTION__, omp_is_initial_device());
+ }
+ 
+ int main()
+ {
+   int c = 0;
+ 
+   __builtin_printf("%s:%d, %d\n", __FUNCTION__, ++c, omp_is_initial_device());
+ 
+ #pragma omp target map(c)
+   {
+     __builtin_printf("%s:%d, %d\n", __FUNCTION__, ++c, omp_is_initial_device());
+   }
+ 
+ #pragma omp target map(c)
+   {
+     __builtin_printf("%s:%d, %d\n", __FUNCTION__, ++c, omp_is_initial_device());
+   }
+ 
+   __builtin_printf("%s:%d, %d\n", __FUNCTION__, ++c, omp_is_initial_device());
+ 
+   return 0;
+ }
+ 
+ /* The order is undefined, in which same-priority 'constructor' functions, and 'destructor' functions are run.
+    { dg-output {init[^,]+, 1[\r\n]+} }
+    { dg-output {init[^,]+, 1[\r\n]+} }
+    { dg-output {init[^,]+, 1[\r\n]+} }
+    { dg-output {main:1, 1[\r\n]+} }
+    { dg-output {initHD[^,]+, 0[\r\n]+} { target offload_device } }
+    { dg-output {initHD[^,]+, 0[\r\n]+} { target offload_device } }
+    { dg-output {main:2, 1[\r\n]+} { target { ! offload_device } } }
+    { dg-output {main:2, 0[\r\n]+} { target offload_device } }
+    { dg-output {main:3, 1[\r\n]+} { target  { ! offload_device } } }
+    { dg-output {main:3, 0[\r\n]+} { target offload_device } }
+    { dg-output {main:4, 1[\r\n]+} }
+    { dg-output {finiHD[^,]+, 0[\r\n]+} { target offload_device } }
+    { dg-output {finiHD[^,]+, 0[\r\n]+} { target offload_device } }
+    { dg-output {fini[^,]+, 1[\r\n]+} }
+    { dg-output {fini[^,]+, 1[\r\n]+} }
+    { dg-output {fini[^,]+, 1[\r\n]+} }
+ */
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C gcc-15-20250726/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-1.C	Sat Jul 26 22:33:55 2025
*************** int main()
*** 52,54 ****
--- 52,57 ----
     PR119692.
  
     { dg-shouldfail {'std::bad_cast' exception} } */
+ /* There are configurations where we 'WARNING: program timed out.' while in
+    'dynamic_cast', see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119692#c6>.
+    { dg-timeout 10 { target offload_device } } ... to make sure that happens quickly.  */
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C gcc-15-20250726/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.oacc-c++/exceptions-bad_cast-2.C	Sat Jul 26 22:33:55 2025
*************** int main()
*** 58,60 ****
--- 58,63 ----
  
     For GCN, nvptx offload execution, there is no 'catch'ing; any exception is fatal.
     { dg-shouldfail {'std::bad_cast' exception} { ! openacc_host_selected } } */
+ /* There are configurations where we 'WARNING: program timed out.' while in
+    'dynamic_cast', see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119692#c6>.
+    { dg-timeout 10 { target offload_device } } ... to make sure that happens quickly.  */
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-1.C gcc-15-20250726/libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-1.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-1.C	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-1.C	Sat Jul 26 22:33:55 2025
***************
*** 4,12 ****
     { dg-additional-options -fexceptions } */
  /* { dg-additional-options -fdump-tree-optimized-raw }
     { dg-additional-options -foffload-options=-fdump-tree-optimized-raw } */
- /* { dg-bogus {Size expression must be absolute\.} PR119737 { target { openacc_radeon_accel_selected && __OPTIMIZE__ } xfail *-*-* } 0 }
-    { dg-ice PR119737 { openacc_radeon_accel_selected && __OPTIMIZE__ } }
-    { dg-excess-errors {'mkoffload' failure etc.} { xfail { openacc_radeon_accel_selected && __OPTIMIZE__ } } } */
  
  /* See also '../libgomp.c++/target-exceptions-throw-1.C'.  */
  
--- 4,9 ----
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-2.C gcc-15-20250726/libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-2.C
*** gcc-15-20250719/libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-2.C	Sat Jul 19 22:34:06 2025
--- gcc-15-20250726/libgomp/testsuite/libgomp.oacc-c++/exceptions-throw-2.C	Sat Jul 26 22:33:55 2025
***************
*** 6,14 ****
     { dg-additional-options -foffload-options=-fdump-tree-optimized-raw } */
  /* { dg-bogus {undefined symbol: typeinfo name for MyException} PR119806 { target { openacc_radeon_accel_selected && { ! __OPTIMIZE__ } } xfail *-*-* } 0 }
     { dg-excess-errors {'mkoffload' failure etc.} { xfail { openacc_radeon_accel_selected && { ! __OPTIMIZE__ } } } } */
- /* { dg-bogus {Size expression must be absolute\.} PR119737 { target { openacc_radeon_accel_selected && __OPTIMIZE__ } xfail *-*-* } 0 }
-    { dg-ice PR119737 { openacc_radeon_accel_selected && __OPTIMIZE__ } }
-    { dg-excess-errors {'mkoffload' failures etc.} { xfail { openacc_radeon_accel_selected && __OPTIMIZE__ } } } */
  /* { dg-bogus {Initial value type mismatch} PR119806 { target { openacc_nvidia_accel_selected && { ! __OPTIMIZE__ } } xfail *-*-* } 0 }
     { dg-excess-errors {'mkoffload' failure etc.} { xfail { openacc_nvidia_accel_selected && { ! __OPTIMIZE__ } } } } */
  
--- 6,11 ----
diff -Nrcpad gcc-15-20250719/libgomp/testsuite/libgomp.oacc-c-c++-common/abi-struct-1.c gcc-15-20250726/libgomp/testsuite/libgomp.oacc-c-c++-common/abi-struct-1.c
*** gcc-15-20250719/libgomp/testsuite/libgomp.oacc-c-c++-common/abi-struct-1.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250726/libgomp/testsuite/libgomp.oacc-c-c++-common/abi-struct-1.c	Sat Jul 26 22:33:55 2025
***************
*** 0 ****
--- 1,125 ----
+ /* Inspired by 'gcc.target/nvptx/abi-struct-arg.c', 'gcc.target/nvptx/abi-struct-ret.c'.  */
+ 
+ /* See also '../libgomp.c-c++-common/target-abi-struct-1.c'.  */
+ 
+ /* To exercise PR119835 (if optimizations enabled): disable inlining, so that
+    GIMPLE passes still see the functions that return aggregate types.  */
+ #pragma GCC optimize "-fno-inline"
+ 
+ typedef struct {} empty;  /* See 'gcc/doc/extend.texi', "Empty Structures".  */
+ typedef struct {char a;} schar;
+ typedef struct {short a;} sshort;
+ typedef struct {int a;} sint;
+ typedef struct {long long a;} slonglong;
+ typedef struct {int a, b[12];} sint_13;
+ 
+ #pragma omp declare target
+ 
+ #define M(T) ({T t; t.a = sizeof t; t;})
+ 
+ static __SIZE_TYPE__ empty_a;
+ #pragma acc declare create(empty_a)
+ #pragma acc routine
+ static empty rempty(void)
+ {
+   return ({empty t; empty_a = sizeof t; t;});
+ }
+ 
+ #pragma acc routine
+ static schar rschar(void)
+ {
+   return M(schar);
+ }
+ 
+ #pragma acc routine
+ static sshort rsshort(void)
+ {
+   return M(sshort);
+ }
+ 
+ #pragma acc routine
+ static sint rsint(void)
+ {
+   return M(sint);
+ }
+ 
+ #pragma acc routine
+ static slonglong rslonglong(void)
+ {
+   return M(slonglong);
+ }
+ 
+ #pragma acc routine
+ static sint_13 rsint_13(void)
+ {
+   return M(sint_13);
+ }
+ 
+ #pragma acc routine
+ static void aempty(empty empty)
+ {
+   (void) empty;
+ 
+   __SIZE_TYPE__ empty_a_exp;
+ #ifndef __cplusplus
+   empty_a_exp = 0;
+ #else
+   empty_a_exp = sizeof (char);
+ #endif
+   if (empty_a != empty_a_exp)
+     __builtin_abort();
+ }
+ 
+ #pragma acc routine
+ static void aschar(schar schar)
+ {
+   if (schar.a != sizeof (char))
+     __builtin_abort();
+ }
+ 
+ #pragma acc routine
+ static void asshort(sshort sshort)
+ {
+   if (sshort.a != sizeof (short))
+     __builtin_abort();
+ }
+ 
+ #pragma acc routine
+ static void asint(sint sint)
+ {
+   if (sint.a != sizeof (int))
+     __builtin_abort();
+ }
+ 
+ #pragma acc routine
+ static void aslonglong(slonglong slonglong)
+ {
+   if (slonglong.a != sizeof (long long))
+     __builtin_abort();
+ }
+ 
+ #pragma acc routine
+ static void asint_13(sint_13 sint_13)
+ {
+   if (sint_13.a != (sizeof (int) * 13))
+     __builtin_abort();
+ }
+ 
+ #pragma omp end declare target
+ 
+ int main()
+ {
+ #pragma omp target
+ #pragma acc serial
+   /* { dg-bogus {using 'vector_length \(32\)', ignoring 1} {} { target openacc_nvidia_accel_selected xfail *-*-* } .-1 } */
+   {
+     aempty(rempty());
+     aschar(rschar());
+     asshort(rsshort());
+     asint(rsint());
+     aslonglong(rslonglong());
+     asint_13(rsint_13());
+   }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-15-20250719/libstdc++-v3/ChangeLog gcc-15-20250726/libstdc++-v3/ChangeLog
*** gcc-15-20250719/libstdc++-v3/ChangeLog	Sat Jul 19 22:34:07 2025
--- gcc-15-20250726/libstdc++-v3/ChangeLog	Sat Jul 26 22:33:57 2025
***************
*** 1,3 ****
--- 1,24 ----
+ 2025-07-24  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-15  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/119962
+ 	* include/std/ranges (join_view::_Iterator::_M_outer): Initialize.
+ 	(lazy_split_view::_OuterIter::_M_current): Initialize.
+ 	(join_with_view::_Iterator::_M_outer_it): Initialize.
+ 	* testsuite/std/ranges/adaptors/join.cc (test15): New test.
+ 	* testsuite/std/ranges/adaptors/join_with/1.cc (test05): New test.
+ 	* testsuite/std/ranges/adaptors/lazy_split.cc (test13): New test.
+ 
+ 2025-07-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-07-09  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt:
+ 	Updated.
+ 
  2025-07-11  Jonathan Wakely  <jwakely@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250719/libstdc++-v3/include/std/ranges gcc-15-20250726/libstdc++-v3/include/std/ranges
*** gcc-15-20250719/libstdc++-v3/include/std/ranges	Sat Jul 19 22:34:08 2025
--- gcc-15-20250726/libstdc++-v3/include/std/ranges	Sat Jul 26 22:33:59 2025
*************** namespace views::__adaptor
*** 3022,3028 ****
  	  { _M_satisfy(); }
  
  	  [[no_unique_address]]
! 	    __detail::__maybe_present_t<forward_range<_Base>, _Outer_iter> _M_outer;
  	  optional<_Inner_iter> _M_inner;
  	  _Parent* _M_parent = nullptr;
  
--- 3022,3029 ----
  	  { _M_satisfy(); }
  
  	  [[no_unique_address]]
! 	    __detail::__maybe_present_t<forward_range<_Base>, _Outer_iter> _M_outer
! 	      = decltype(_M_outer)();
  	  optional<_Inner_iter> _M_inner;
  	  _Parent* _M_parent = nullptr;
  
*************** namespace views::__adaptor
*** 3376,3382 ****
  
  	  [[no_unique_address]]
  	    __detail::__maybe_present_t<forward_range<_Vp>,
! 					iterator_t<_Base>> _M_current;
  	  bool _M_trailing_empty = false;
  
  	public:
--- 3377,3384 ----
  
  	  [[no_unique_address]]
  	    __detail::__maybe_present_t<forward_range<_Vp>,
! 					iterator_t<_Base>> _M_current
! 	      = decltype(_M_current)();
  	  bool _M_trailing_empty = false;
  
  	public:
*************** namespace views::__adaptor
*** 7400,7406 ****
  
      _Parent* _M_parent = nullptr;
      [[no_unique_address]]
!       __detail::__maybe_present_t<forward_range<_Base>, _OuterIter> _M_outer_it;
      variant<_PatternIter, _InnerIter> _M_inner_it;
  
      constexpr _OuterIter&
--- 7402,7409 ----
  
      _Parent* _M_parent = nullptr;
      [[no_unique_address]]
!       __detail::__maybe_present_t<forward_range<_Base>, _OuterIter> _M_outer_it
! 	= decltype(_M_outer_it)();
      variant<_PatternIter, _InnerIter> _M_inner_it;
  
      constexpr _OuterIter&
diff -Nrcpad gcc-15-20250719/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc gcc-15-20250726/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
*** gcc-15-20250719/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc	Sat Jul 19 22:34:12 2025
--- gcc-15-20250726/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc	Sat Jul 26 22:34:21 2025
*************** test14()
*** 233,238 ****
--- 233,245 ----
    VERIFY( ranges::equal(v | views::join, (int[]){1, 2, 3}) );
  }
  
+ void
+ test15()
+ {
+   // PR libstdc++/119962 - __maybe_present_t misses initialization
+   constexpr decltype(views::join(views::single(views::single(0))).begin()) it;
+ }
+ 
  int
  main()
  {
*************** main()
*** 250,253 ****
--- 257,261 ----
    test12();
    test13();
    test14();
+   test15();
  }
diff -Nrcpad gcc-15-20250719/libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc gcc-15-20250726/libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc
*** gcc-15-20250719/libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc	Sat Jul 19 22:34:12 2025
--- gcc-15-20250726/libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc	Sat Jul 26 22:34:21 2025
*************** test04()
*** 94,99 ****
--- 94,106 ----
    return true;
  }
  
+ void
+ test05()
+ {
+   // PR libstdc++/119962 - __maybe_present_t misses initialization
+   constexpr decltype(views::join_with(views::single(views::single(0)), 0).begin()) it;
+ }
+ 
  int
  main()
  {
*************** main()
*** 105,108 ****
--- 112,116 ----
  #else
    VERIFY(test04());
  #endif
+   test05();
  }
diff -Nrcpad gcc-15-20250719/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc gcc-15-20250726/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
*** gcc-15-20250719/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc	Sat Jul 19 22:34:12 2025
--- gcc-15-20250726/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc	Sat Jul 26 22:34:21 2025
*************** test12()
*** 232,237 ****
--- 232,244 ----
    return true;
  }
  
+ void
+ test13()
+ {
+   // PR libstdc++/119962 - __maybe_present_t misses initialization
+   constexpr decltype(views::lazy_split(views::single(0), 0).begin()) it;
+ }
+ 
  int
  main()
  {
*************** main()
*** 247,250 ****
--- 254,258 ----
    test10();
    test11();
    static_assert(test12());
+   test13();
  }
