diff -Nrcpad gcc-16-20260613/LAST_UPDATED gcc-16-20260620/LAST_UPDATED
*** gcc-16-20260613/LAST_UPDATED	Sat Jun 13 22:32:20 2026
--- gcc-16-20260620/LAST_UPDATED	Sat Jun 20 22:32:18 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-16 revision 7a86e74e62b6d1f2013673f623ec4e7c257d5035
--- 1 ----
! Obtained from git: releases/gcc-16 revision 6ced2eede75b046b16c732b146a1d7803828a012
diff -Nrcpad gcc-16-20260613/MD5SUMS gcc-16-20260620/MD5SUMS
*** gcc-16-20260613/MD5SUMS	Sat Jun 13 22:32:25 2026
--- gcc-16-20260620/MD5SUMS	Sat Jun 20 22:32:23 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20260613.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20260620.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 28,34 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 2ac39600d30acd95f7bafde8261178ba  LAST_UPDATED
  935427ff8c5edd363349721844f7ba49  MAINTAINERS
  af43617880b3cd9c10627c97e639d29e  Makefile.def
  734342371d8ccc2c81cb2d8b3d040f33  Makefile.in
--- 28,34 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 9a4376f475c2ef8fee76720f407c393b  LAST_UPDATED
  935427ff8c5edd363349721844f7ba49  MAINTAINERS
  af43617880b3cd9c10627c97e639d29e  Makefile.def
  734342371d8ccc2c81cb2d8b3d040f33  Makefile.in
*************** f15bc3c5de22eac0bdd4f611502139a0  gcc/AB
*** 530,536 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! e76e82e1c44542ddd84fed308d8c391a  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 530,536 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! cbeebc15b01be7da9966cdab4be3dc84  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 568,574 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 864b8c598f7137a1ea59fda714b8527d  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 568,574 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! c026c910b8329849b3d84ca7feaca545  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** a817c5577f2b35f8d2481c787e3ff7e2  gcc/LA
*** 577,586 ****
  3cc6d47e97c2a546cd3c3932a4999b1e  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  c8c9dd1eaee4ffd4d5d9f3ab70fddd4b  gcc/README.Portability
! 240f413bc297147f87eb799b32d54104  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 15ac2d81168a2acdb849d87a45987f88  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 577,586 ----
  3cc6d47e97c2a546cd3c3932a4999b1e  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  c8c9dd1eaee4ffd4d5d9f3ab70fddd4b  gcc/README.Portability
! fb2b1a055860b8822b54eb8a42801c44  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 0eda676976e367185ecd604d19e9d273  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** aa8ee7a04e292a14d18da20ed5efb983  gcc/ad
*** 1198,1204 ****
  457b034b9c4584c13c18c5f2a233569e  gcc/ada/libgnat/a-cbhama.ads
  165d3e530f0d803babc9616be10f5268  gcc/ada/libgnat/a-cbhase.adb
  70c99263d65d2c51fbd0f81e9c9b1b51  gcc/ada/libgnat/a-cbhase.ads
! c41b1654d088600008e58adb41802071  gcc/ada/libgnat/a-cbinho.adb
  ed7f47c9a26fcdd4c58cad080f19cf05  gcc/ada/libgnat/a-cbinho.ads
  c838aeade3bfa5ba17350ceb65b09e00  gcc/ada/libgnat/a-cbmutr.adb
  d58f87c0492c3db9ca1a3678408eb206  gcc/ada/libgnat/a-cbmutr.ads
--- 1198,1204 ----
  457b034b9c4584c13c18c5f2a233569e  gcc/ada/libgnat/a-cbhama.ads
  165d3e530f0d803babc9616be10f5268  gcc/ada/libgnat/a-cbhase.adb
  70c99263d65d2c51fbd0f81e9c9b1b51  gcc/ada/libgnat/a-cbhase.ads
! a8c33bd0c3b067a905d1e86df608210e  gcc/ada/libgnat/a-cbinho.adb
  ed7f47c9a26fcdd4c58cad080f19cf05  gcc/ada/libgnat/a-cbinho.ads
  c838aeade3bfa5ba17350ceb65b09e00  gcc/ada/libgnat/a-cbmutr.adb
  d58f87c0492c3db9ca1a3678408eb206  gcc/ada/libgnat/a-cbmutr.ads
*************** bd02733d13b54612fc6d4cd0e340b3ea  gcc/ad
*** 2919,2925 ****
  ad2bb60b9c4c67653f4da4b0e70277d7  gcc/ada/sem_ch10.ads
  e3dc2d270994bba222e70ec02479ac37  gcc/ada/sem_ch11.adb
  7efb6a0f371113d8b55b421ee56dd1dd  gcc/ada/sem_ch11.ads
! 96a54d933bfde91e309995d10f6972a2  gcc/ada/sem_ch12.adb
  2622dbf1c1774a89ada3cba34f1da316  gcc/ada/sem_ch12.ads
  7f74e0afe4aecc2f3165c6b69079e1e8  gcc/ada/sem_ch13.adb
  2da037307178ba05a1a24b52d1b3115e  gcc/ada/sem_ch13.ads
--- 2919,2925 ----
  ad2bb60b9c4c67653f4da4b0e70277d7  gcc/ada/sem_ch10.ads
  e3dc2d270994bba222e70ec02479ac37  gcc/ada/sem_ch11.adb
  7efb6a0f371113d8b55b421ee56dd1dd  gcc/ada/sem_ch11.ads
! 15dadf0127ed5d5f06b0dda296ebce35  gcc/ada/sem_ch12.adb
  2622dbf1c1774a89ada3cba34f1da316  gcc/ada/sem_ch12.ads
  7f74e0afe4aecc2f3165c6b69079e1e8  gcc/ada/sem_ch13.adb
  2da037307178ba05a1a24b52d1b3115e  gcc/ada/sem_ch13.ads
*************** ea821c9d267c64dd8b74aad9d0189834  gcc/c-
*** 3329,3335 ****
  377686cbbf62a7d61d251d3f74cddb5b  gcc/c-family/known-headers.h
  431045382c41554804be1959c1596be4  gcc/c-family/name-hint.h
  3bae9e281cc87b35f63e906373f3b446  gcc/c-family/stub-objc.cc
! 576b48de4853b7fa218e307b1840217f  gcc/c/ChangeLog
  cbffb341640e7c4b16792e0951fffeca  gcc/c/Make-lang.in
  3920e3ee16f5b5955d40584fea53c441  gcc/c/c-aux-info.cc
  cd5bab8a4deeaa0369ae59b9403d06a2  gcc/c/c-convert.cc
--- 3329,3335 ----
  377686cbbf62a7d61d251d3f74cddb5b  gcc/c-family/known-headers.h
  431045382c41554804be1959c1596be4  gcc/c-family/name-hint.h
  3bae9e281cc87b35f63e906373f3b446  gcc/c-family/stub-objc.cc
! c42947b982b05fc1c7a7b571d24a5a38  gcc/c/ChangeLog
  cbffb341640e7c4b16792e0951fffeca  gcc/c/Make-lang.in
  3920e3ee16f5b5955d40584fea53c441  gcc/c/c-aux-info.cc
  cd5bab8a4deeaa0369ae59b9403d06a2  gcc/c/c-convert.cc
*************** d3b8ce30c6110489fd0b57d6792f3f29  gcc/co
*** 3504,3510 ****
  88eac990ca6879dcd747cf5113888b1e  gcc/compare-elim.cc
  6137f3da8f70ec4262acab21bb549148  gcc/conditions.h
  4250c8b8d57bf1315174cf436a74a88b  gcc/config.build
! 29039dcb1127b835077759ecbd65cf8b  gcc/config.gcc
  d8b0b26795a60b3a991dfbdafe4cd756  gcc/config.host
  34da5cde8b9bc078646ece2f7754fa2f  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
--- 3504,3510 ----
  88eac990ca6879dcd747cf5113888b1e  gcc/compare-elim.cc
  6137f3da8f70ec4262acab21bb549148  gcc/conditions.h
  4250c8b8d57bf1315174cf436a74a88b  gcc/config.build
! cf38255d9f117364fa18423a19f4d559  gcc/config.gcc
  d8b0b26795a60b3a991dfbdafe4cd756  gcc/config.host
  34da5cde8b9bc078646ece2f7754fa2f  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
*************** a1a7d26ecab3d6681a1d3f5c2cb77275  gcc/co
*** 3521,3527 ****
  cd1537928dd0fadfa53b88b278af0ed2  gcc/config/aarch64/aarch64-cost-tables.h
  5d9722001af118d5011d62beba0e3879  gcc/config/aarch64/aarch64-d.cc
  3d35dd7bbc8358248117e8edb6f6895f  gcc/config/aarch64/aarch64-d.h
! a0598a8d595ee9a5ab98ce05c46c365f  gcc/config/aarch64/aarch64-early-ra.cc
  0f04d4db0b98d93d624f6bf49c0b2c61  gcc/config/aarch64/aarch64-elf-metadata.cc
  3d5c9a06fc3373401b1a496b0c2d812a  gcc/config/aarch64/aarch64-elf-metadata.h
  cfe06f94751bf9d5dc61fd5b0184ba2c  gcc/config/aarch64/aarch64-elf-raw.h
--- 3521,3527 ----
  cd1537928dd0fadfa53b88b278af0ed2  gcc/config/aarch64/aarch64-cost-tables.h
  5d9722001af118d5011d62beba0e3879  gcc/config/aarch64/aarch64-d.cc
  3d35dd7bbc8358248117e8edb6f6895f  gcc/config/aarch64/aarch64-d.h
! 79671a5430aaab0dd5caaa8bc6b82f82  gcc/config/aarch64/aarch64-early-ra.cc
  0f04d4db0b98d93d624f6bf49c0b2c61  gcc/config/aarch64/aarch64-elf-metadata.cc
  3d5c9a06fc3373401b1a496b0c2d812a  gcc/config/aarch64/aarch64-elf-metadata.h
  cfe06f94751bf9d5dc61fd5b0184ba2c  gcc/config/aarch64/aarch64-elf-raw.h
*************** e3b84b8c70b76f20a6d8123da2876317  gcc/co
*** 3574,3587 ****
  49330d59221903e05f3ad03c9f6a6a7b  gcc/config/aarch64/aarch64-sve-builtins.cc
  0aaa296fe7e877e67b85468885fdb8b5  gcc/config/aarch64/aarch64-sve-builtins.def
  88f4473ff255da227dee1dbc66c11a5f  gcc/config/aarch64/aarch64-sve-builtins.h
! f254f4eb5433b6e41d08c6dd0805b7c0  gcc/config/aarch64/aarch64-sve.md
  78d4791112b168ff5157e8e4c95a40a5  gcc/config/aarch64/aarch64-sve2.md
  ce756734c2d086ac2b6f48267acb68ea  gcc/config/aarch64/aarch64-sys-regs.def
  e101bed95b5d0264c364d8bcf1a7705f  gcc/config/aarch64/aarch64-tune.md
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  45c6b1a7ca031f6a0af001317cc5e476  gcc/config/aarch64/aarch64-tuning-flags.def
  b2ed7b4c85a1fa71b919148f60e2984f  gcc/config/aarch64/aarch64-vxworks.h
! 989f483f4dbf18527be3bba5012b76ad  gcc/config/aarch64/aarch64.cc
  643919d961f71a1bd5cc1df13bbd79f5  gcc/config/aarch64/aarch64.h
  bd813cb7dfa70cb6c970d78d27ead783  gcc/config/aarch64/aarch64.md
  473ca0d59415b61c8ee8e6c85d2ccb62  gcc/config/aarch64/aarch64.opt
--- 3574,3587 ----
  49330d59221903e05f3ad03c9f6a6a7b  gcc/config/aarch64/aarch64-sve-builtins.cc
  0aaa296fe7e877e67b85468885fdb8b5  gcc/config/aarch64/aarch64-sve-builtins.def
  88f4473ff255da227dee1dbc66c11a5f  gcc/config/aarch64/aarch64-sve-builtins.h
! f8f181c4df2353358a3f66071820430a  gcc/config/aarch64/aarch64-sve.md
  78d4791112b168ff5157e8e4c95a40a5  gcc/config/aarch64/aarch64-sve2.md
  ce756734c2d086ac2b6f48267acb68ea  gcc/config/aarch64/aarch64-sys-regs.def
  e101bed95b5d0264c364d8bcf1a7705f  gcc/config/aarch64/aarch64-tune.md
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  45c6b1a7ca031f6a0af001317cc5e476  gcc/config/aarch64/aarch64-tuning-flags.def
  b2ed7b4c85a1fa71b919148f60e2984f  gcc/config/aarch64/aarch64-vxworks.h
! b3e0881cd53472cf798b4d749fa7f98d  gcc/config/aarch64/aarch64.cc
  643919d961f71a1bd5cc1df13bbd79f5  gcc/config/aarch64/aarch64.h
  bd813cb7dfa70cb6c970d78d27ead783  gcc/config/aarch64/aarch64.md
  473ca0d59415b61c8ee8e6c85d2ccb62  gcc/config/aarch64/aarch64.opt
*************** a0561d5189d936a2b3f76e586c0a2aa1  gcc/co
*** 4731,4737 ****
  345d90586064a6b98108ed27f48d4599  gcc/config/mips/mips-tables.opt
  216c87627424d946f6245f736be7b5f1  gcc/config/mips/mips-tables.opt.urls
  d721b62b45e3d41cf231605ad9646ea0  gcc/config/mips/mips.cc
! c3f89a44da0bb860a7ac949f008546b1  gcc/config/mips/mips.h
  62c91047998070c0f017a68e2a78fbe7  gcc/config/mips/mips.md
  09db4f2e8c03333595305c1b1c1c0fc7  gcc/config/mips/mips.opt
  e27efa10159c17e2479da7d6f900b631  gcc/config/mips/mips.opt.urls
--- 4731,4737 ----
  345d90586064a6b98108ed27f48d4599  gcc/config/mips/mips-tables.opt
  216c87627424d946f6245f736be7b5f1  gcc/config/mips/mips-tables.opt.urls
  d721b62b45e3d41cf231605ad9646ea0  gcc/config/mips/mips.cc
! 63ca817ddd1ee9d064118822bbb5953f  gcc/config/mips/mips.h
  62c91047998070c0f017a68e2a78fbe7  gcc/config/mips/mips.md
  09db4f2e8c03333595305c1b1c1c0fc7  gcc/config/mips/mips.opt
  e27efa10159c17e2479da7d6f900b631  gcc/config/mips/mips.opt.urls
*************** a8b1f3ddfb1f6f99004ac2db6cd9dc74  gcc/co
*** 5173,5181 ****
  d0faac423dbdf9cf30ccf83ac9d2e60d  gcc/config/rs6000/aix.h
  1fceb97e97a40dc3014fd5d2a8ab5d07  gcc/config/rs6000/aix64.opt
  d70f08b893e019d12b16dc9a70754ef9  gcc/config/rs6000/aix64.opt.urls
! 7a458de4c2e17a9a5c5b134cd5307283  gcc/config/rs6000/aix71.h
! 20f4005e48ef1b44aaa1abcda010edb0  gcc/config/rs6000/aix72.h
! f6a351fafc8d9c1ddd46b271f0c859c9  gcc/config/rs6000/aix73.h
  ae4bd752599ffdd2833c6e78d03d39f0  gcc/config/rs6000/altivec.h
  f03bdef1224a610cfb7130f3c687b87f  gcc/config/rs6000/altivec.md
  059307efbb31814d946437a40ade09c1  gcc/config/rs6000/amo.h
--- 5173,5181 ----
  d0faac423dbdf9cf30ccf83ac9d2e60d  gcc/config/rs6000/aix.h
  1fceb97e97a40dc3014fd5d2a8ab5d07  gcc/config/rs6000/aix64.opt
  d70f08b893e019d12b16dc9a70754ef9  gcc/config/rs6000/aix64.opt.urls
! 48e2c945bd49f48743765c272b092dc6  gcc/config/rs6000/aix71.h
! efc4d9cc6fcf24af7ea6e89c0c82127f  gcc/config/rs6000/aix72.h
! 1d313bdc511e984bdf559d61807bde14  gcc/config/rs6000/aix73.h
  ae4bd752599ffdd2833c6e78d03d39f0  gcc/config/rs6000/altivec.h
  f03bdef1224a610cfb7130f3c687b87f  gcc/config/rs6000/altivec.md
  059307efbb31814d946437a40ade09c1  gcc/config/rs6000/amo.h
*************** db237fc1717a4075e7b9480205a32fd5  gcc/co
*** 5244,5274 ****
  25ea383c1f398321c28d21896c9d79db  gcc/config/rs6000/predicates.md
  63ccc96ff2cef948c080eac4455d02b1  gcc/config/rs6000/rbtree.cc
  8ece9ca8167f5056fa411488a97c6131  gcc/config/rs6000/rbtree.h
! 9be252ce87cecf1829cb579ecd696303  gcc/config/rs6000/rs6000-builtin.cc
  5f55438b54e629713ba06eeb9a75bd37  gcc/config/rs6000/rs6000-builtins.def
! 001c1335a8df0c0d4f9feb001d488885  gcc/config/rs6000/rs6000-c.cc
  c97babd518212b16f2837b9b1d5d8359  gcc/config/rs6000/rs6000-call.cc
! 094faf83d43883def20529728178ccb0  gcc/config/rs6000/rs6000-cpus.def
  7b860836fdc33cdfdd29f6348a553096  gcc/config/rs6000/rs6000-d.cc
  1ac6ae1e7d6d83d76667769f7166b9a7  gcc/config/rs6000/rs6000-d.h
! 49cf5c100ee20edb22f4390541532f68  gcc/config/rs6000/rs6000-gen-builtins.cc
  c165dfc83b2c9e75d3906f429e76a3fa  gcc/config/rs6000/rs6000-internal.h
  68da03c0d0c1dfafebf4ba706e6d3ff9  gcc/config/rs6000/rs6000-linux.cc
  4768cacdca0b901f6cb649726cca5eeb  gcc/config/rs6000/rs6000-logue.cc
  108998dcf0201ccd3e147d71251ca9f6  gcc/config/rs6000/rs6000-modes.def
! e8a3118f8f5a2aa7f988ed45bae99eeb  gcc/config/rs6000/rs6000-opts.h
  fab9961e9c2dca827c0ac5e7b100d398  gcc/config/rs6000/rs6000-overload.def
  dc46fa102175551da2f4ce2ee5c6435c  gcc/config/rs6000/rs6000-p8swap.cc
  da37007432adac35e44d7592e307e64a  gcc/config/rs6000/rs6000-passes.def
  384645a6c72587ac7501915a0c737e64  gcc/config/rs6000/rs6000-pcrel-opt.cc
  d3a1c98fd13be04e1250b073cb8dcef2  gcc/config/rs6000/rs6000-protos.h
  9e39e759376eb97f2a56ebfc28c8d149  gcc/config/rs6000/rs6000-string.cc
! 505106a6c6516140530fe5f55a87e44e  gcc/config/rs6000/rs6000-tables.opt
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
! bcf781e9687d0164eeab8e20a7ed9eb7  gcc/config/rs6000/rs6000.cc
! 838ab0dea9bee1b30cbf4cb875917f74  gcc/config/rs6000/rs6000.h
  a575dd5c5592c7d23a9b53b985c01120  gcc/config/rs6000/rs6000.md
! fc53ceb489fffb4124155c557c54157f  gcc/config/rs6000/rs6000.opt
  80708ca71755b0d8d354f113f0617617  gcc/config/rs6000/rs6000.opt.urls
  89d4cadf8216efa86b72204e660cc4b0  gcc/config/rs6000/rs64.md
  d57d0eb0a8e2193f5cef2aaf1ad6d722  gcc/config/rs6000/rtems.h
--- 5244,5274 ----
  25ea383c1f398321c28d21896c9d79db  gcc/config/rs6000/predicates.md
  63ccc96ff2cef948c080eac4455d02b1  gcc/config/rs6000/rbtree.cc
  8ece9ca8167f5056fa411488a97c6131  gcc/config/rs6000/rbtree.h
! 63d5e60d2087274a3edb3f6b7b726b0a  gcc/config/rs6000/rs6000-builtin.cc
  5f55438b54e629713ba06eeb9a75bd37  gcc/config/rs6000/rs6000-builtins.def
! 15e52baa355b0c3b725c3e6e55524af0  gcc/config/rs6000/rs6000-c.cc
  c97babd518212b16f2837b9b1d5d8359  gcc/config/rs6000/rs6000-call.cc
! 4579aba833c122ad0e6a91b573653e2c  gcc/config/rs6000/rs6000-cpus.def
  7b860836fdc33cdfdd29f6348a553096  gcc/config/rs6000/rs6000-d.cc
  1ac6ae1e7d6d83d76667769f7166b9a7  gcc/config/rs6000/rs6000-d.h
! 19cf935ce7de136fe7ef1a4a6350f541  gcc/config/rs6000/rs6000-gen-builtins.cc
  c165dfc83b2c9e75d3906f429e76a3fa  gcc/config/rs6000/rs6000-internal.h
  68da03c0d0c1dfafebf4ba706e6d3ff9  gcc/config/rs6000/rs6000-linux.cc
  4768cacdca0b901f6cb649726cca5eeb  gcc/config/rs6000/rs6000-logue.cc
  108998dcf0201ccd3e147d71251ca9f6  gcc/config/rs6000/rs6000-modes.def
! e6f2820356a7ee18c353376ab3490fb6  gcc/config/rs6000/rs6000-opts.h
  fab9961e9c2dca827c0ac5e7b100d398  gcc/config/rs6000/rs6000-overload.def
  dc46fa102175551da2f4ce2ee5c6435c  gcc/config/rs6000/rs6000-p8swap.cc
  da37007432adac35e44d7592e307e64a  gcc/config/rs6000/rs6000-passes.def
  384645a6c72587ac7501915a0c737e64  gcc/config/rs6000/rs6000-pcrel-opt.cc
  d3a1c98fd13be04e1250b073cb8dcef2  gcc/config/rs6000/rs6000-protos.h
  9e39e759376eb97f2a56ebfc28c8d149  gcc/config/rs6000/rs6000-string.cc
! 835f22c956cc4deb83970ee9a9b5b79b  gcc/config/rs6000/rs6000-tables.opt
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
! 133c7cb4fcb84c2a55999c792301652f  gcc/config/rs6000/rs6000.cc
! 59b4ee08f651c3f48e6a52091e6911f0  gcc/config/rs6000/rs6000.h
  a575dd5c5592c7d23a9b53b985c01120  gcc/config/rs6000/rs6000.md
! e407423336f12658b509205c3e8f7130  gcc/config/rs6000/rs6000.opt
  80708ca71755b0d8d354f113f0617617  gcc/config/rs6000/rs6000.opt.urls
  89d4cadf8216efa86b72204e660cc4b0  gcc/config/rs6000/rs64.md
  d57d0eb0a8e2193f5cef2aaf1ad6d722  gcc/config/rs6000/rtems.h
*************** c60f07bed189e2a8fb8abfe19368e9f9  gcc/co
*** 5634,5641 ****
  708d79fd2376cbc3e1fc949938300b92  gcc/config/xtensa/xtensa.md
  093588e637649f5260b04ad13fe609e6  gcc/config/xtensa/xtensa.opt
  db57d7603312357e8c0cfb21c32353d1  gcc/config/xtensa/xtensa.opt.urls
! abc1433c494f64d13225907acaedc4a3  gcc/configure
! 6f7ffe71846b7c3aebc7fc928a9ec686  gcc/configure.ac
  a2bfe87830136c2d55b591b943cecd3f  gcc/configure.tgt
  8a46839a73059f70ef105be9706c2554  gcc/context.cc
  08023c1005def168a8b675813b95d9f4  gcc/context.h
--- 5634,5641 ----
  708d79fd2376cbc3e1fc949938300b92  gcc/config/xtensa/xtensa.md
  093588e637649f5260b04ad13fe609e6  gcc/config/xtensa/xtensa.opt
  db57d7603312357e8c0cfb21c32353d1  gcc/config/xtensa/xtensa.opt.urls
! 3abd689661353488ab92c95ea51f302e  gcc/configure
! c7e9ed79c326b8d982a7d5c3455ec4f9  gcc/configure.ac
  a2bfe87830136c2d55b591b943cecd3f  gcc/configure.tgt
  8a46839a73059f70ef105be9706c2554  gcc/context.cc
  08023c1005def168a8b675813b95d9f4  gcc/context.h
*************** c5ad0142a191862e3e81ecd3573754b3  gcc/co
*** 5646,5652 ****
  55a33ae415bde0fd2e36ba584894e50b  gcc/coroutine-passes.cc
  c10700723a41c720aada0096f369147e  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 63b1ae961d2db4ebee8209bde2cfb9ab  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5646,5652 ----
  55a33ae415bde0fd2e36ba584894e50b  gcc/coroutine-passes.cc
  c10700723a41c720aada0096f369147e  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! f8861e0f91678e63068ff73ff436749e  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** f067718cf3d629084d8347c4e017afd4  gcc/cp
*** 5709,5715 ****
  82a41d873e1c90067158c89e6c1bd4bb  gcc/cp/cxxapi-data.csv
  1245427327e1090b84cc32cab7156133  gcc/cp/decl.cc
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
! eb77bf90b77e8585aa773ccdf953c298  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
  c10df0d30e8f843cb78677c106cff141  gcc/cp/error.cc
  59d3d272a504a462c1f7081637e7f3e5  gcc/cp/except.cc
--- 5709,5715 ----
  82a41d873e1c90067158c89e6c1bd4bb  gcc/cp/cxxapi-data.csv
  1245427327e1090b84cc32cab7156133  gcc/cp/decl.cc
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
! 480696ad09d3c6330dccc983d9ddb7e2  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
  c10df0d30e8f843cb78677c106cff141  gcc/cp/error.cc
  59d3d272a504a462c1f7081637e7f3e5  gcc/cp/except.cc
*************** db73ab5285dd3810cd91cb42aa475df5  gcc/cp
*** 5734,5744 ****
  b166c2ce3d5ccd4de4e0c5910947ae41  gcc/cp/name-lookup.h
  b98d31c57aa038618db60991b17e0d35  gcc/cp/operators.def
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
! bd5bdcb5d92dca9807f59ae64febcf94  gcc/cp/parser.cc
  7973a34c47e3d3c580832655a3a5c3c2  gcc/cp/parser.h
  4410c287a91ef7a1513038254d1918d4  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
! 5a3f1ebdd9066d687e078d3aaef91fe0  gcc/cp/reflect.cc
  6ae3f1ff3ba804579da14445501f9181  gcc/cp/rtti.cc
  ed044462caa5bbab93e33fd297bc5d7c  gcc/cp/search.cc
  3674a29587a15f07988d823cdf6945cf  gcc/cp/semantics.cc
--- 5734,5744 ----
  b166c2ce3d5ccd4de4e0c5910947ae41  gcc/cp/name-lookup.h
  b98d31c57aa038618db60991b17e0d35  gcc/cp/operators.def
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
! a623e932155ebd343ebda5f7f54e7eb4  gcc/cp/parser.cc
  7973a34c47e3d3c580832655a3a5c3c2  gcc/cp/parser.h
  4410c287a91ef7a1513038254d1918d4  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
! da74f57cd5fc80c21948148b9758bd11  gcc/cp/reflect.cc
  6ae3f1ff3ba804579da14445501f9181  gcc/cp/rtti.cc
  ed044462caa5bbab93e33fd297bc5d7c  gcc/cp/search.cc
  3674a29587a15f07988d823cdf6945cf  gcc/cp/semantics.cc
*************** ee65c9e3e7c3fb1fd0128c23f4130e51  gcc/do
*** 6131,6137 ****
  301ed7e567732d1f0d5899a624068bdd  gcc/doc/cppinternals.texi
  421cc3b7d98386e0eb0abba4242dd54a  gcc/doc/cppopts.texi
  d8b2becdc7d9c570f256e19e1b1ac4f1  gcc/doc/cppwarnopts.texi
! b284a75ac7bf8c16bbde583ee5a5d75a  gcc/doc/extend.texi
  483a7b956113f0370528460e842ff7b0  gcc/doc/fragments.texi
  7fb1e4199b2e70228fda69b8065d83c4  gcc/doc/frontends.texi
  66d5868616d429f3e34b575b3efc6ccc  gcc/doc/gcc.texi
--- 6131,6137 ----
  301ed7e567732d1f0d5899a624068bdd  gcc/doc/cppinternals.texi
  421cc3b7d98386e0eb0abba4242dd54a  gcc/doc/cppopts.texi
  d8b2becdc7d9c570f256e19e1b1ac4f1  gcc/doc/cppwarnopts.texi
! 905779d9b11d60aafccab11fdc6d4475  gcc/doc/extend.texi
  483a7b956113f0370528460e842ff7b0  gcc/doc/fragments.texi
  7fb1e4199b2e70228fda69b8065d83c4  gcc/doc/frontends.texi
  66d5868616d429f3e34b575b3efc6ccc  gcc/doc/gcc.texi
*************** bde53a0a190c3a74b047eb2b53c080eb  gcc/do
*** 6156,6162 ****
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  e7629f6355c3902826e219f4c9bfae3a  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! 76d6ee31bc89dec7536b99402a9bde09  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 6156,6162 ----
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  e7629f6355c3902826e219f4c9bfae3a  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! 91a238d473182f09e7880e535809a1a5  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** d61f76c4b55102abe0d6908ab60489e7  gcc/ex
*** 6250,6256 ****
  2af24b814afb179d911a33733d593eba  gcc/exec-tool.in
  e3b758ef604b48f000fb865e38253381  gcc/explow.cc
  9542db78094e70fd18442ce8a2b02264  gcc/explow.h
! 82a6eed405414fee082896bb6a2bd1c6  gcc/expmed.cc
  2431f17e1f416ef0b9c38b1b975942a4  gcc/expmed.h
  eb75df114e69863f6370174248bbfadd  gcc/expr.cc
  54b30ae6372ded76e375ade2621552a1  gcc/expr.h
--- 6250,6256 ----
  2af24b814afb179d911a33733d593eba  gcc/exec-tool.in
  e3b758ef604b48f000fb865e38253381  gcc/explow.cc
  9542db78094e70fd18442ce8a2b02264  gcc/explow.h
! ae7077f641ec004f4380dcc8efac92b6  gcc/expmed.cc
  2431f17e1f416ef0b9c38b1b975942a4  gcc/expmed.h
  eb75df114e69863f6370174248bbfadd  gcc/expr.cc
  54b30ae6372ded76e375ade2621552a1  gcc/expr.h
*************** f80b38c70a85f9aeae9688b937b028ba  gcc/fi
*** 6271,6277 ****
  50b999b375e3a5a95a002f592e6d4514  gcc/fold-const.cc
  0ec02a37dbbe9cb267f0ea1263085ed3  gcc/fold-const.h
  a0df3d274ac009d203209a191738cec6  gcc/fold-mem-offsets.cc
! fbb00cfdc80872bae2a397e6017773f2  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6271,6277 ----
  50b999b375e3a5a95a002f592e6d4514  gcc/fold-const.cc
  0ec02a37dbbe9cb267f0ea1263085ed3  gcc/fold-const.h
  a0df3d274ac009d203209a191738cec6  gcc/fold-mem-offsets.cc
! c66369717cb02b643e26294bbe78a032  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** bcb129d4d143e6ec42b4ddec1fea30b8  gcc/fo
*** 6303,6309 ****
  dd3d4373e33e0a14abdf26814a44662b  gcc/fortran/array.cc
  bc40e87bca719f86583a020eff2d6a73  gcc/fortran/bbt.cc
  ffbcec5b8defe520ab727e0fe1875285  gcc/fortran/check.cc
! cb187afae869d66ea5e19e55fa945052  gcc/fortran/class.cc
  298c8e9139027305d0c5530e148f0c82  gcc/fortran/coarray.cc
  ee80d28f835ba80db395760139037e11  gcc/fortran/config-lang.in
  8a0026117bea2831adebb2edc422fb55  gcc/fortran/constructor.cc
--- 6303,6309 ----
  dd3d4373e33e0a14abdf26814a44662b  gcc/fortran/array.cc
  bc40e87bca719f86583a020eff2d6a73  gcc/fortran/bbt.cc
  ffbcec5b8defe520ab727e0fe1875285  gcc/fortran/check.cc
! b66e64dc02ce436a3fb6674ac7168faa  gcc/fortran/class.cc
  298c8e9139027305d0c5530e148f0c82  gcc/fortran/coarray.cc
  ee80d28f835ba80db395760139037e11  gcc/fortran/config-lang.in
  8a0026117bea2831adebb2edc422fb55  gcc/fortran/constructor.cc
*************** afb07146daad7f36a59c52e053f6772f  gcc/fo
*** 6326,6332 ****
  19f6b89e3aeb2bc4bd5df602aac79552  gcc/fortran/gfortran.h
  8fe0c8cc43e7ed982c602f58b4086351  gcc/fortran/gfortran.texi
  9da0114ccf35340d3035f21f8a0f3325  gcc/fortran/gfortranspec.cc
! 47b2522faad5795c8dcacc9417aed5a6  gcc/fortran/interface.cc
  7e06cc5337aba27172fe64c673314c64  gcc/fortran/intrinsic.cc
  285cce3e348dd08fbaf339358ac57d51  gcc/fortran/intrinsic.h
  a1ee99c7b297b6d9d3face6f53d898e0  gcc/fortran/intrinsic.texi
--- 6326,6332 ----
  19f6b89e3aeb2bc4bd5df602aac79552  gcc/fortran/gfortran.h
  8fe0c8cc43e7ed982c602f58b4086351  gcc/fortran/gfortran.texi
  9da0114ccf35340d3035f21f8a0f3325  gcc/fortran/gfortranspec.cc
! 17a457d08870deec8d3cd53f6d6b65fc  gcc/fortran/interface.cc
  7e06cc5337aba27172fe64c673314c64  gcc/fortran/intrinsic.cc
  285cce3e348dd08fbaf339358ac57d51  gcc/fortran/intrinsic.h
  a1ee99c7b297b6d9d3face6f53d898e0  gcc/fortran/intrinsic.texi
*************** e5c0565c05cf7375c9978273f2e553e7  gcc/fo
*** 6340,6375 ****
  6c8e23a76ef7d1e3480d2026a438a31e  gcc/fortran/lang.opt
  d00392d3f6683071d547134f20687f32  gcc/fortran/lang.opt.urls
  c35102e7caaf40998fe2ead86d2716da  gcc/fortran/libgfortran.h
! 66af5c8c6003d01ae9626e3792da6fdb  gcc/fortran/match.cc
  f7735c64af748cdef5caffae58a94749  gcc/fortran/match.h
  bf54232c4c950ed772f4964c4f79629e  gcc/fortran/matchexp.cc
  915f6b30a8c22a5fea18690269a5a4a4  gcc/fortran/mathbuiltins.def
  9687294592a5ccef5d0b8254ab33816b  gcc/fortran/misc.cc
  a465af66dbc504ea8aab1ad5d516072d  gcc/fortran/module.cc
! 64d3d602ec86892f79980f52b2d5a35f  gcc/fortran/openmp.cc
  7baca4fc0a6fcd712dcbccab22987c74  gcc/fortran/options.cc
! 22050427a75e58c301664b6859f72718  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
! f8f17e966c9b06f3143a910582383fb7  gcc/fortran/primary.cc
! 607d6f18f8de6cc91165f7a125c5cd7e  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
  664f19f5a29de9abc4642568f758c47c  gcc/fortran/simplify.cc
  cbdc87ddd4ad5837f1771e93f704a33e  gcc/fortran/st.cc
! ef5ff085d6f19e0b84135e46b7281b70  gcc/fortran/symbol.cc
  4fa06f769be3f1b439a574ee842c82ca  gcc/fortran/target-memory.cc
  ea8837444e2a08a95a3ea747c94b8106  gcc/fortran/target-memory.h
! 40cb236ccb42c8f778d277fc59baaae9  gcc/fortran/trans-array.cc
  a0c40b654df0b5c5213047d26e48e97a  gcc/fortran/trans-array.h
  5c567026f9fbc4fea9b59c22743687c4  gcc/fortran/trans-common.cc
  98960d7450a15e1ecc9789bd0bde16a7  gcc/fortran/trans-const.cc
  0d5cf4117521dba2aea9c8fd7ac67888  gcc/fortran/trans-const.h
! 05201347b651067bb9008d360acffc39  gcc/fortran/trans-decl.cc
! 057e5908d5b9f19a601be2fd5a06273a  gcc/fortran/trans-expr.cc
  de9776eb0040908b850cefeecd7a6f63  gcc/fortran/trans-intrinsic.cc
  269d2b121570a82898b133a3274071a7  gcc/fortran/trans-io.cc
  a7dd5c301725a5395b938c4328a5e0d3  gcc/fortran/trans-openmp.cc
! 974f8aeec761eac4ee1be974addd51d5  gcc/fortran/trans-stmt.cc
  6fbc90714f9730e84515bbaadff313f9  gcc/fortran/trans-stmt.h
  f8cac5e2268c177aff676d2dbb690f51  gcc/fortran/trans-types.cc
  6b00c9b76b80a96feb87d86b4b06102b  gcc/fortran/trans-types.h
--- 6340,6375 ----
  6c8e23a76ef7d1e3480d2026a438a31e  gcc/fortran/lang.opt
  d00392d3f6683071d547134f20687f32  gcc/fortran/lang.opt.urls
  c35102e7caaf40998fe2ead86d2716da  gcc/fortran/libgfortran.h
! fad2b7661e2cb85f53f4de13f1b3b3cf  gcc/fortran/match.cc
  f7735c64af748cdef5caffae58a94749  gcc/fortran/match.h
  bf54232c4c950ed772f4964c4f79629e  gcc/fortran/matchexp.cc
  915f6b30a8c22a5fea18690269a5a4a4  gcc/fortran/mathbuiltins.def
  9687294592a5ccef5d0b8254ab33816b  gcc/fortran/misc.cc
  a465af66dbc504ea8aab1ad5d516072d  gcc/fortran/module.cc
! f2d1ba26cdd272c08e7647dfefdddb86  gcc/fortran/openmp.cc
  7baca4fc0a6fcd712dcbccab22987c74  gcc/fortran/options.cc
! b7e44a78995adf94a6b590f79d401976  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
! d8018f6b8422ec272ff0ef8a7bd1d39d  gcc/fortran/primary.cc
! d23bab8039c27430955b02c10cceb733  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
  664f19f5a29de9abc4642568f758c47c  gcc/fortran/simplify.cc
  cbdc87ddd4ad5837f1771e93f704a33e  gcc/fortran/st.cc
! 4b2b2875fbf208dea82ae5e9aa96a2c1  gcc/fortran/symbol.cc
  4fa06f769be3f1b439a574ee842c82ca  gcc/fortran/target-memory.cc
  ea8837444e2a08a95a3ea747c94b8106  gcc/fortran/target-memory.h
! b6b7ef9764b7f6913a25e14e82ed1050  gcc/fortran/trans-array.cc
  a0c40b654df0b5c5213047d26e48e97a  gcc/fortran/trans-array.h
  5c567026f9fbc4fea9b59c22743687c4  gcc/fortran/trans-common.cc
  98960d7450a15e1ecc9789bd0bde16a7  gcc/fortran/trans-const.cc
  0d5cf4117521dba2aea9c8fd7ac67888  gcc/fortran/trans-const.h
! 67daeb99f62e235f8a2fad457d4edddf  gcc/fortran/trans-decl.cc
! 7fabaf27cebada3e05f8522da9501205  gcc/fortran/trans-expr.cc
  de9776eb0040908b850cefeecd7a6f63  gcc/fortran/trans-intrinsic.cc
  269d2b121570a82898b133a3274071a7  gcc/fortran/trans-io.cc
  a7dd5c301725a5395b938c4328a5e0d3  gcc/fortran/trans-openmp.cc
! 08373084917d81544cf940eaf2470502  gcc/fortran/trans-stmt.cc
  6fbc90714f9730e84515bbaadff313f9  gcc/fortran/trans-stmt.h
  f8cac5e2268c177aff676d2dbb690f51  gcc/fortran/trans-types.cc
  6b00c9b76b80a96feb87d86b4b06102b  gcc/fortran/trans-types.h
*************** cc3bc9f050d83e91dde135d1aaa4aa45  gcc/gi
*** 6491,6497 ****
  c7aea08144ac3dfedef02e2efd73b2e9  gcc/gimple-range-cache.h
  d69dec8fe89be66b09721beced1a6f07  gcc/gimple-range-edge.cc
  1001ed4a3c498c8d659f609b65b1b127  gcc/gimple-range-edge.h
! 12e32161282b4b47908436e4b4ba5fa5  gcc/gimple-range-fold.cc
  c84294b3bbebf60858449ae953fae160  gcc/gimple-range-fold.h
  420447af73a8d6a64aa06e6b91ba94d3  gcc/gimple-range-gori.cc
  3f397ecbcf642d6d782fe5e774680054  gcc/gimple-range-gori.h
--- 6491,6497 ----
  c7aea08144ac3dfedef02e2efd73b2e9  gcc/gimple-range-cache.h
  d69dec8fe89be66b09721beced1a6f07  gcc/gimple-range-edge.cc
  1001ed4a3c498c8d659f609b65b1b127  gcc/gimple-range-edge.h
! 456e95ded5ee8d971f114d2e94d78004  gcc/gimple-range-fold.cc
  c84294b3bbebf60858449ae953fae160  gcc/gimple-range-fold.h
  420447af73a8d6a64aa06e6b91ba94d3  gcc/gimple-range-gori.cc
  3f397ecbcf642d6d782fe5e774680054  gcc/gimple-range-gori.h
*************** e1e331896b86db8a2281657bbb21ac72  gcc/ip
*** 6699,6705 ****
  c546dc75ec27388fb7fe834c0aabd230  gcc/ipa-modref-tree.h
  e27bcdc8d3a6733a4b94a025dad33e21  gcc/ipa-modref.cc
  323eab7a20907e08e7d9ca8e513c2259  gcc/ipa-modref.h
! 5de2d46c22758bff85e4365ba687f510  gcc/ipa-param-manipulation.cc
  dba11f7340415ca54713db0009a33093  gcc/ipa-param-manipulation.h
  cdf80ca29c90f97b4cca06b029f8353b  gcc/ipa-polymorphic-call.cc
  80b4cc7719c703dfe60955dfb86002ae  gcc/ipa-predicate.cc
--- 6699,6705 ----
  c546dc75ec27388fb7fe834c0aabd230  gcc/ipa-modref-tree.h
  e27bcdc8d3a6733a4b94a025dad33e21  gcc/ipa-modref.cc
  323eab7a20907e08e7d9ca8e513c2259  gcc/ipa-modref.h
! 7ea41ce172e1948fd3b4f425d06a9937  gcc/ipa-param-manipulation.cc
  dba11f7340415ca54713db0009a33093  gcc/ipa-param-manipulation.h
  cdf80ca29c90f97b4cca06b029f8353b  gcc/ipa-polymorphic-call.cc
  80b4cc7719c703dfe60955dfb86002ae  gcc/ipa-predicate.cc
*************** f24751f278bee1ac8dc861467d9f96a3  gcc/ta
*** 8726,8732 ****
  bf20a6542e361b29f15f9f2b47d47e2f  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 320222d2cb261fefadd42778d22054b4  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8726,8732 ----
  bf20a6542e361b29f15f9f2b47d47e2f  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 8ba10180b4d83ec4e0b5a45fd0008a52  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** ccba3040ed86b5ffae7d72b18f556d1c  gcc/te
*** 25957,25962 ****
--- 25957,25963 ----
  be2e2da855b83583283092ca0bb72265  gcc/testsuite/g++.dg/cpp0x/rv-conv4.C
  1cf65d6b3d6f2efdc39e97cc285cfb7c  gcc/testsuite/g++.dg/cpp0x/rv-conv5.C
  889a7002f4d78b4abd44856da792f8dc  gcc/testsuite/g++.dg/cpp0x/rv-copy1.C
+ fa930410478009be16ff5c21544f405c  gcc/testsuite/g++.dg/cpp0x/rv-decl1.C
  de88aaa56b0d394bd02f079bb0f4dddf  gcc/testsuite/g++.dg/cpp0x/rv-deduce.C
  f213598004dcfd0117fecc9593637790  gcc/testsuite/g++.dg/cpp0x/rv-deduce2.C
  589e28fb5e0fffb1d369fc47ca52bcfd  gcc/testsuite/g++.dg/cpp0x/rv-dotstar.C
*************** f31771b6d142554bef46d22e7ebe37ed  gcc/te
*** 37501,37506 ****
--- 37502,37508 ----
  cdfee9c92cd1c39030b9538abaa0bbc0  gcc/testsuite/g++.dg/reflect/bitfield1.C
  26489e1481d28e38679c10fb0945c3d0  gcc/testsuite/g++.dg/reflect/can_substitute1.C
  495b5815adcc239b485058f793eac47e  gcc/testsuite/g++.dg/reflect/can_substitute2.C
+ c6fda0fd6113b6039560cfce08ac3c46  gcc/testsuite/g++.dg/reflect/can_substitute3.C
  cf1ce97bd56b5845905e4696d6e21793  gcc/testsuite/g++.dg/reflect/class1.C
  7e1297bc870fe6904620a1d784bd3929  gcc/testsuite/g++.dg/reflect/class2.C
  92d9b5b1bf8f84c19d0b739b4cf4482c  gcc/testsuite/g++.dg/reflect/common_reference1.C
*************** d9fff53183f3cbc21c2786ee54aac085  gcc/te
*** 37652,37657 ****
--- 37654,37660 ----
  cb62b6f411eaa0edabe6a10520d7652c  gcc/testsuite/g++.dg/reflect/expr14.C
  7d931bd0fd71d114fa6a17dce607e802  gcc/testsuite/g++.dg/reflect/expr15.C
  f3f33f49043a48d1ae3edf4ed1f5e2f3  gcc/testsuite/g++.dg/reflect/expr16.C
+ 4febd7db9b876282dd12662957bcdf0c  gcc/testsuite/g++.dg/reflect/expr17.C
  8a9b940805893540797936869da281d7  gcc/testsuite/g++.dg/reflect/expr2.C
  4b1fb75674597a85fb0234f3b45e8f9e  gcc/testsuite/g++.dg/reflect/expr3.C
  6db5cf1cb9ce8e043687a3df14680bc3  gcc/testsuite/g++.dg/reflect/expr4.C
*************** c44e1d6dfaecfb4f263c78b17ed1b8c7  gcc/te
*** 37840,37845 ****
--- 37843,37849 ----
  623575016974295708d960e75d733062  gcc/testsuite/g++.dg/reflect/members_of12.C
  a2c5daff71c5cc0345db4bd0e912e669  gcc/testsuite/g++.dg/reflect/members_of13.C
  07a4631eea7fe0c6bdb296ca77c1d3a2  gcc/testsuite/g++.dg/reflect/members_of14.C
+ 6a2f357760584b04cfa1a4685abd70a0  gcc/testsuite/g++.dg/reflect/members_of15.C
  689453102e4425f8d2c4ff89cb939595  gcc/testsuite/g++.dg/reflect/members_of2.C
  80a032eb31d0998f2d288e303356773a  gcc/testsuite/g++.dg/reflect/members_of3.C
  5ececa99994de569abffae1671b71870  gcc/testsuite/g++.dg/reflect/members_of4.C
*************** f85e3805a900aeb94e96e6ea1712a125  gcc/te
*** 58772,58777 ****
--- 58776,58782 ----
  192df6769f6f110bb8f33708a1ceeea9  gcc/testsuite/gcc.dg/pr125117.c
  7b30511bd41fb50fefd587c42e5d984c  gcc/testsuite/gcc.dg/pr125252.c
  b9e821b448b2a7ca97d76e3b0edfe9cf  gcc/testsuite/gcc.dg/pr125375.c
+ ab60b475998ea1ed92a9002d6336bfd6  gcc/testsuite/gcc.dg/pr125501.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** acc45859ec226bf8d285f9821bc84cff  gcc/te
*** 62545,62550 ****
--- 62550,62556 ----
  faa7f4600800bdbdaab47877d0fb7746  gcc/testsuite/gcc.dg/torture/pr120043.c
  849af32ae6aef1e9b7999f2c32ff0f83  gcc/testsuite/gcc.dg/torture/pr120059-1.c
  52b5e2430d6e31ce28c98ffd5968f540  gcc/testsuite/gcc.dg/torture/pr120122-1.c
+ 948d157e15feb89e9527667213cf5e46  gcc/testsuite/gcc.dg/torture/pr120144.c
  e1b9ad351c56aebfaff790ff4002bf6e  gcc/testsuite/gcc.dg/torture/pr120182.c
  0c3297c6ebf6e4adcaeec164dfe8e9ac  gcc/testsuite/gcc.dg/torture/pr120211-1.c
  68b7b9a81ceb31b6b33b9a797a7f6c30  gcc/testsuite/gcc.dg/torture/pr120242.c
*************** a5b9e215eaee30cede04135bd18b6a59  gcc/te
*** 62645,62650 ****
--- 62651,62665 ----
  1380b111d91a82b39e2bcbae4eab1160  gcc/testsuite/gcc.dg/torture/pr125156.c
  f04a0ca1134a2f6b7f28283527f4394b  gcc/testsuite/gcc.dg/torture/pr125185.c
  f4849047990250a3f9ee017d25b29b9a  gcc/testsuite/gcc.dg/torture/pr125250.c
+ d769bd22a00fe25d5f4489238592c27f  gcc/testsuite/gcc.dg/torture/pr125419-1.c
+ e2a142dab1f38e7f7a8ffcdce454ce29  gcc/testsuite/gcc.dg/torture/pr125477.c
+ 87d7522fd6c7bc6f65afde68f9384069  gcc/testsuite/gcc.dg/torture/pr125502.c
+ 828006abdbcb5a0b6e3bc5451790d857  gcc/testsuite/gcc.dg/torture/pr125545.c
+ 865ae037be55d942ca9a21c2d93b6994  gcc/testsuite/gcc.dg/torture/pr125553.c
+ e1cd2f943b1276d7edf0ad19d7f2af26  gcc/testsuite/gcc.dg/torture/pr125652.c
+ 13a26b482c0abe9bba6de7ad78d38472  gcc/testsuite/gcc.dg/torture/pr125774-1.c
+ 459e4addcc4688257422fed8391988cd  gcc/testsuite/gcc.dg/torture/pr125776-1.c
+ 9b58e29ad15155e6fc7bf7dbad6bc468  gcc/testsuite/gcc.dg/torture/pr125776-2.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
*************** ae7dd7b535828dd877ea453ce08b1b4b  gcc/te
*** 67570,67575 ****
--- 67585,67591 ----
  2838d9516eba265f0e0975f689ddd518  gcc/testsuite/gcc.dg/vect/pr123043.c
  17c5c38b2c03547dce34b548af8a2143  gcc/testsuite/gcc.dg/vect/pr123525.c
  86e3be2c542c86cb2ddd62c5080014e5  gcc/testsuite/gcc.dg/vect/pr123731.c
+ 9345816cef1a19c03845e78efc0fb484  gcc/testsuite/gcc.dg/vect/pr125646.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  915cf38408eaa7fee5013d90ec1c3251  gcc/testsuite/gcc.dg/vect/pr18400.c
*************** d5b3fbe2571cb9f95ff3b80e54a79a15  gcc/te
*** 71540,71545 ****
--- 71556,71562 ----
  a588c84982135f60225d2a017f7b53df  gcc/testsuite/gcc.target/aarch64/pr124078-1.c
  3416e11e7fd77f36803f713303e6145a  gcc/testsuite/gcc.target/aarch64/pr124167.c
  092b09603aba6f2d4c58084993c984b1  gcc/testsuite/gcc.target/aarch64/pr124572.c
+ b925908f19e4f112a6a854e9b34023c4  gcc/testsuite/gcc.target/aarch64/pr125795.c
  9adb42733d9f5e2b1f2dbb364b62100d  gcc/testsuite/gcc.target/aarch64/pr37780_1.c
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
  9023f817c07ddec673c5b546525fc184  gcc/testsuite/gcc.target/aarch64/pr60034.c
*************** f2fc77b4628ad8199175a8ebdd69e3e1  gcc/te
*** 76041,76046 ****
--- 76058,76064 ----
  d65171df277fd805666a8293e1ed92b2  gcc/testsuite/gcc.target/aarch64/sve/gomp/target-device.c
  e2d939ce1598891fb0151a910f6caebb  gcc/testsuite/gcc.target/aarch64/sve/gomp/target-link.c
  042e57b6147e2e10a51806c2939b1aca  gcc/testsuite/gcc.target/aarch64/sve/gomp/target.c
+ 3cdf75362179cbfc03758b562a5ee5e3  gcc/testsuite/gcc.target/aarch64/sve/highway_run.c
  9fffa4c6db492d5b9ae9ba7986fa3965  gcc/testsuite/gcc.target/aarch64/sve/index_1.c
  618eb3df3240452455692fd2c208f19d  gcc/testsuite/gcc.target/aarch64/sve/index_1_run.c
  92ccdb217141d67be3914247a776816e  gcc/testsuite/gcc.target/aarch64/sve/index_const_fold.c
*************** fc2eb8ac52faed5fba0a017b858d4ae4  gcc/te
*** 78575,78580 ****
--- 78593,78599 ----
  626bb6bb64c1bbe8eb5e2b92bf925aeb  gcc/testsuite/gcc.target/aarch64/torture/pr120986-2.c
  d03b2f46140f14ae9b2101813aec3525  gcc/testsuite/gcc.target/aarch64/torture/pr121772.c
  164477999ab21aa17183a55d49bb0d71  gcc/testsuite/gcc.target/aarch64/torture/pr124491.c
+ a9e9dc89b86dea48cebffdbd8459e3a1  gcc/testsuite/gcc.target/aarch64/torture/pr125621.c
  5266ac107a73e3ee1d1f44e1cda7d9f2  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-1.c
  9c3416db2fc04c3f91b03ecae15e943e  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-10.c
  df55bfe2c1ce46074b19b4566cedeef4  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-11.c
*************** dcbebe071d63c21a542a5715031d4d82  gcc/te
*** 96546,96551 ****
--- 96565,96572 ----
  2016e7aba1138d1b75643f27f6d362c9  gcc/testsuite/gcc.target/powerpc/fusion-p10-stst2.c
  3e2fc36d2fe687276ae183faedca62c9  gcc/testsuite/gcc.target/powerpc/fusion.c
  1b40025433c5882c82a7973a8acd66cf  gcc/testsuite/gcc.target/powerpc/fusion2.c
+ fd3ca3fdb9af79fbaaaf7ad8d0d02666  gcc/testsuite/gcc.target/powerpc/future-1.c
+ a37f7a987530bbfd72ef935e3501f63e  gcc/testsuite/gcc.target/powerpc/future-2.c
  c8bb039efa1ac96486e0294c85966d8f  gcc/testsuite/gcc.target/powerpc/fwprop-1.c
  d339d3fe4c50dd4c2727de10dcf3374e  gcc/testsuite/gcc.target/powerpc/gcse-1.c
  8bb9827b615648c123de2019c6d1017b  gcc/testsuite/gcc.target/powerpc/gnuattr1.c
*************** dada9b5540f865ba0c0df21dc2b72904  gcc/te
*** 96639,96644 ****
--- 96660,96666 ----
  e7f24c5bcf4677a0ae7a8fdcd1aeff80  gcc/testsuite/gcc.target/powerpc/mod-no_copy.c
  fed2453600d3a45ca2a5679c322ff194  gcc/testsuite/gcc.target/powerpc/mod-peephole.c
  b3bf87376bd60d32d00ef203e1cf7d6e  gcc/testsuite/gcc.target/powerpc/mod-vectorize.c
+ 90a470d068b02a782dd9922ee4f1ad94  gcc/testsuite/gcc.target/powerpc/mpc860_no_lwsync.c
  ad1bf2ac6624bd6fd4ccb08fb87916e8  gcc/testsuite/gcc.target/powerpc/mul-vectorize-1.c
  0756792d071f22b4d0d92c56ab912d25  gcc/testsuite/gcc.target/powerpc/mul-vectorize-2.c
  64af73bfe790036cc6a9cae813ae5517  gcc/testsuite/gcc.target/powerpc/mul-vectorize-3.c
*************** cbd03f59c658425aa443e870f7904e76  gcc/te
*** 112465,112470 ****
--- 112487,112493 ----
  3b8425a2f59699b47aac6da29c11aba9  gcc/testsuite/gfortran.dg/asan/associate_58.f90
  e9f58df1de071d2b106b16b3af8f6764  gcc/testsuite/gfortran.dg/asan/associate_59.f90
  32f63bfc5a1fd9dda988b63c860b03bd  gcc/testsuite/gfortran.dg/asan/finalize_1.f90
+ 4cd8fda64b6eb93b45b8eb2694e85b22  gcc/testsuite/gfortran.dg/asan/implied_do_alloc_comp_leak_1.f90
  66de6cb3bf07d14487491fac7d1ee72f  gcc/testsuite/gfortran.dg/asan/pointer_assign_16.f90
  68c306b7235f43b669fee04a590362d9  gcc/testsuite/gfortran.dg/asan/pr110415-2.f90
  5ba36953a293a48947580de915906563  gcc/testsuite/gfortran.dg/asan/pr110415-3.f90
*************** e0fe6119bfcf724ee51375d3156cacc5  gcc/te
*** 112567,112573 ****
--- 112590,112601 ----
  455dfc6f26983668bd6203def9eb927b  gcc/testsuite/gfortran.dg/associate_77.f90
  741671a391caf8cb1c98e29e99735660  gcc/testsuite/gfortran.dg/associate_78.f90
  3c2206420bb8717914aa447789b5f079  gcc/testsuite/gfortran.dg/associate_8.f03
+ c7ede1ebcb10a45e043e636af05828b5  gcc/testsuite/gfortran.dg/associate_80.f90
+ 459fbab02621785ee9cc92b06ca356f4  gcc/testsuite/gfortran.dg/associate_81.f90
  0406413659a92c10d44ed1f1576987b9  gcc/testsuite/gfortran.dg/associate_9.f03
+ 79e6ed8de9e44f2a63d74a896b518a8f  gcc/testsuite/gfortran.dg/associate_contained_func_typebound.f90
+ 63711a9e2de25641dd224750ada9a60b  gcc/testsuite/gfortran.dg/associate_contained_func_typebound_2.f90
+ 93b46707a76210c61d3344b378b624bd  gcc/testsuite/gfortran.dg/associate_infer_program_type.f90
  51f82584276ab8f411b8d9d7e84fadc8  gcc/testsuite/gfortran.dg/associated_1.f90
  76b7fa8062aee263b1ef942bd8bc01bf  gcc/testsuite/gfortran.dg/associated_2.f90
  dd5a4a295ba62a8846fa5d3878b5dfa6  gcc/testsuite/gfortran.dg/associated_3.f90
*************** d0dda7d4f02cde55063cdbc07f9865df  gcc/te
*** 114502,114507 ****
--- 114530,114537 ----
  566e25d512fab9b0fe403d4bcaab5cce  gcc/testsuite/gfortran.dg/do_concurrent_8_f2023.f90
  2fe0da2c9dbe8582e4644dc6911d0c0a  gcc/testsuite/gfortran.dg/do_concurrent_9.f90
  cbd9864a0e437c82bc4732c67efaffeb  gcc/testsuite/gfortran.dg/do_concurrent_all_clauses.f90
+ f9615f85b01ea0b68ab422dceffcd43b  gcc/testsuite/gfortran.dg/do_concurrent_assoc_default_none.f90
+ 8d93dbabaf43459b40abe1177dba89ed  gcc/testsuite/gfortran.dg/do_concurrent_assoc_iter_1.f90
  7910395d8f0f8e1c4c3b19bf52ac51b4  gcc/testsuite/gfortran.dg/do_concurrent_basic.f90
  eec12ded6b543d22e4513f1fd5b84033  gcc/testsuite/gfortran.dg/do_concurrent_constraints.f90
  c4a3ee13c42841a8c629fe8c2fcf7be8  gcc/testsuite/gfortran.dg/do_concurrent_local_init.f90
*************** b8f902f76eb78d41248d3f43e7203c3e  gcc/te
*** 115270,115275 ****
--- 115300,115307 ----
  37cd6187e808ee365884bcbc55152cbf  gcc/testsuite/gfortran.dg/generic_35.f90
  2ecee9dd67a37d46386d24fb1f25af74  gcc/testsuite/gfortran.dg/generic_36-1.f90
  a5bbbc17d24a1ce19bfca4527daacdab  gcc/testsuite/gfortran.dg/generic_36-2.f90
+ 2731ff7984c99a1c47c5a3e700de3215  gcc/testsuite/gfortran.dg/generic_37.f90
+ 93b7edb55c79b97907efd43c68be6026  gcc/testsuite/gfortran.dg/generic_38.f90
  a5a419e931b944ccee23f03064f3067a  gcc/testsuite/gfortran.dg/generic_4.f90
  6b638ae392f7e94c1592d0efbc053876  gcc/testsuite/gfortran.dg/generic_5.f90
  dc5927a86c1c614c2ff8285c60cf86f9  gcc/testsuite/gfortran.dg/generic_6.f90
*************** b75cb93f87f099ad715aceb9cb7b1bf2  gcc/te
*** 116554,116559 ****
--- 116586,116592 ----
  59abe5f1f158e0816b2237fd238c777c  gcc/testsuite/gfortran.dg/implied_do_1.f90
  79d235d8144a6b966e05d500c1aec29d  gcc/testsuite/gfortran.dg/implied_do_2.f90
  247f9262ffe475b62c0ef01e63fadeb2  gcc/testsuite/gfortran.dg/implied_do_3.f90
+ bcc7ccd2d78cd1cf66642218ac0d879a  gcc/testsuite/gfortran.dg/implied_do_alloc_comp_1.f90
  5065379e91a4d65a73a912a4ec5a4dce  gcc/testsuite/gfortran.dg/implied_do_io_1.f90
  9fd9e2d26f02a28f5dd5a9964e433600  gcc/testsuite/gfortran.dg/implied_do_io_2.f90
  4b57cf5b0a32bb03de538f4d89b2ec2c  gcc/testsuite/gfortran.dg/implied_do_io_3.f90
*************** aedab00c95be355c3ec0c7306612ae62  gcc/te
*** 117417,117423 ****
  bcd06aff3687f3f238806a9663c12a72  gcc/testsuite/gfortran.dg/module_parameter_array_refs_1.f90
  38871edb72439a4017f330c646f35bba  gcc/testsuite/gfortran.dg/module_parameter_array_refs_2.f90
  89a9de2b0cafeb53a607f32b62e97a7d  gcc/testsuite/gfortran.dg/module_private_1.f90
! 7536c9c0b974b088ce6fd6596dd07bb6  gcc/testsuite/gfortran.dg/module_private_2.f90
  caecc4fd8aa5de5428a7b4a6c3ee736b  gcc/testsuite/gfortran.dg/module_private_array_refs_1.f90
  478fc43019f81e4b49fc455a31b7b167  gcc/testsuite/gfortran.dg/module_proc_external_dummy.f90
  dc51be0dd4adb5f65c5a6c3ffad81c8f  gcc/testsuite/gfortran.dg/module_procedure_1.f90
--- 117450,117456 ----
  bcd06aff3687f3f238806a9663c12a72  gcc/testsuite/gfortran.dg/module_parameter_array_refs_1.f90
  38871edb72439a4017f330c646f35bba  gcc/testsuite/gfortran.dg/module_parameter_array_refs_2.f90
  89a9de2b0cafeb53a607f32b62e97a7d  gcc/testsuite/gfortran.dg/module_private_1.f90
! 83a9d58f9d6a671795510bde09849124  gcc/testsuite/gfortran.dg/module_private_2.f90
  caecc4fd8aa5de5428a7b4a6c3ee736b  gcc/testsuite/gfortran.dg/module_private_array_refs_1.f90
  478fc43019f81e4b49fc455a31b7b167  gcc/testsuite/gfortran.dg/module_proc_external_dummy.f90
  dc51be0dd4adb5f65c5a6c3ffad81c8f  gcc/testsuite/gfortran.dg/module_procedure_1.f90
*************** c621629f10feffbfa9fef1441a610e53  gcc/te
*** 117894,117899 ****
--- 117927,117933 ----
  d990a49ad7534a4a10800a8a538fa04a  gcc/testsuite/gfortran.dg/pdt_90.f03
  fda16d44f3a45aad8ceeb1e18d56f6f1  gcc/testsuite/gfortran.dg/pdt_91.f03
  e1d1ddf87714d25d04325d3da865edc6  gcc/testsuite/gfortran.dg/pdt_92.f03
+ e9a08468bbfc30d53eb47dd61f7f2bbe  gcc/testsuite/gfortran.dg/pdt_array_alloc_1.f90
  ce217e87870d47796b72f99a0b0f46b7  gcc/testsuite/gfortran.dg/pdt_generic_1.f90
  4555f630cb01a40d0eaf421fd7ad9e77  gcc/testsuite/gfortran.dg/pointer_1.f90
  b836f09e53badc9a7066eb5692c28f74  gcc/testsuite/gfortran.dg/pointer_2.f90
*************** f19a3e696f77f97e6aa2d83addab4ac4  gcc/te
*** 119300,119312 ****
  34c911109f23bf944fad22240fbb32c4  gcc/testsuite/gfortran.dg/ptr_func_assign_6.f08
  1bdd54ec3c3cda30429d4442e8a439e5  gcc/testsuite/gfortran.dg/public_private_module.f90
  f8e80e36d7b5c3c5e55ab57d88d798e6  gcc/testsuite/gfortran.dg/public_private_module_10.f90
! 49160e67e683a86326398387d510d296  gcc/testsuite/gfortran.dg/public_private_module_2.f90
  d103e889cb7d81b0f6805dbfc1c68c26  gcc/testsuite/gfortran.dg/public_private_module_3.f90
  84ea34192deaf0c1463e5796a16847a2  gcc/testsuite/gfortran.dg/public_private_module_4.f90
  a7c876a660d440bd1bfe0f762107a374  gcc/testsuite/gfortran.dg/public_private_module_5.f90
  4f0edc34b7b5794a38c4e4a20c07c404  gcc/testsuite/gfortran.dg/public_private_module_6.f90
! 61ecb108069d9936f4052101c4821b4d  gcc/testsuite/gfortran.dg/public_private_module_7.f90
! 955bea9146bbe6215229285af568e9f2  gcc/testsuite/gfortran.dg/public_private_module_8.f90
  fb25d86bd7f82a05dc6183df6a9066f7  gcc/testsuite/gfortran.dg/pure_byref_1.f90
  493586b435409bfed03105c632c3fc74  gcc/testsuite/gfortran.dg/pure_byref_2.f90
  89567835c985900d9ee730feee919f80  gcc/testsuite/gfortran.dg/pure_byref_3.f90
--- 119334,119346 ----
  34c911109f23bf944fad22240fbb32c4  gcc/testsuite/gfortran.dg/ptr_func_assign_6.f08
  1bdd54ec3c3cda30429d4442e8a439e5  gcc/testsuite/gfortran.dg/public_private_module.f90
  f8e80e36d7b5c3c5e55ab57d88d798e6  gcc/testsuite/gfortran.dg/public_private_module_10.f90
! 808c10a9c07592aecf3fea04937d1922  gcc/testsuite/gfortran.dg/public_private_module_2.f90
  d103e889cb7d81b0f6805dbfc1c68c26  gcc/testsuite/gfortran.dg/public_private_module_3.f90
  84ea34192deaf0c1463e5796a16847a2  gcc/testsuite/gfortran.dg/public_private_module_4.f90
  a7c876a660d440bd1bfe0f762107a374  gcc/testsuite/gfortran.dg/public_private_module_5.f90
  4f0edc34b7b5794a38c4e4a20c07c404  gcc/testsuite/gfortran.dg/public_private_module_6.f90
! ec6cb88dae71e3a45fb7feac95463080  gcc/testsuite/gfortran.dg/public_private_module_7.f90
! 13c902145bd85796b3faec9a4869aab8  gcc/testsuite/gfortran.dg/public_private_module_8.f90
  fb25d86bd7f82a05dc6183df6a9066f7  gcc/testsuite/gfortran.dg/pure_byref_1.f90
  493586b435409bfed03105c632c3fc74  gcc/testsuite/gfortran.dg/pure_byref_2.f90
  89567835c985900d9ee730feee919f80  gcc/testsuite/gfortran.dg/pure_byref_3.f90
*************** d470cf2de70b478f82f67f0729c09b76  gcc/te
*** 119899,119904 ****
--- 119933,119942 ----
  8b4b5d6a33ef9520206432c7652a183f  gcc/testsuite/gfortran.dg/submodule_7.f08
  0588325ee7072ce91be610f63a4baee1  gcc/testsuite/gfortran.dg/submodule_8.f08
  bbf9d850641248605c066ac6bca34a54  gcc/testsuite/gfortran.dg/submodule_9.f08
+ c992f2a0eed15d92da719ed3d3b7e665  gcc/testsuite/gfortran.dg/submodule_host_assoc_1.f90
+ fd539823e8dfe45b6bb6038fdd70cd12  gcc/testsuite/gfortran.dg/submodule_host_assoc_1_aux.f90
+ f673eaf234a3b89c2be2af99a05295fb  gcc/testsuite/gfortran.dg/submodule_private_host.f90
+ 4243bbc731cc61f561b1c44fc29ecb89  gcc/testsuite/gfortran.dg/submodule_private_host_aux.f90
  83aae3d2902f46d94fad6d8bc10e2163  gcc/testsuite/gfortran.dg/submodule_twice.f90
  83c3576872a648d3e88b3ed27521cda8  gcc/testsuite/gfortran.dg/submodule_unexp.f90
  4b03a1050fa7469f4a1b8a73b6c04f2f  gcc/testsuite/gfortran.dg/subnormal_1.f90
*************** b6cbc2d7f0f983561ecfb1e889cc9564  gcc/te
*** 120430,120435 ****
--- 120468,120474 ----
  3392d3d67c1af3233bcb1cb1563137c7  gcc/testsuite/gfortran.dg/vect/pr116956.f90
  968b7f70f6ea492d4668938e2d929b2c  gcc/testsuite/gfortran.dg/vect/pr123016.f90
  69ce1acd2174b1da669fa0ee2dcfcd74  gcc/testsuite/gfortran.dg/vect/pr123986.f90
+ 586131e6c904729b8febde3dbc667a68  gcc/testsuite/gfortran.dg/vect/pr125431.f90
  a17cb1ab891a5af3471298da97331dda  gcc/testsuite/gfortran.dg/vect/pr19049.f90
  fdb4a5f5d5eff2fd75822f14875bd776  gcc/testsuite/gfortran.dg/vect/pr32377.f90
  bbb6998ea100c6c2039976c6446a0c10  gcc/testsuite/gfortran.dg/vect/pr32380.f
*************** fa2d697a6cf010eb6e082b1cf14cfb0a  gcc/te
*** 120550,120556 ****
  1d37c013db4796b65d121229b6e04f40  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90
  3dc26997d0b1c97db5c9aebb047411db  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_6.f90
  a889821a76a43cd0bc42032f92d62143  gcc/testsuite/gfortran.dg/warn_unused_function.f90
! babf649d09171c4fca19c8092348ee07  gcc/testsuite/gfortran.dg/warn_unused_function_2.f90
  ae95981491a9741922c27b078d9a628c  gcc/testsuite/gfortran.dg/warn_unused_function_3.f90
  025932868233d92449d247c6dacf72a1  gcc/testsuite/gfortran.dg/warn_unused_var.f90
  505984a29bdb4c6918091f5ecf8088e8  gcc/testsuite/gfortran.dg/warn_unused_var_2.f90
--- 120589,120595 ----
  1d37c013db4796b65d121229b6e04f40  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90
  3dc26997d0b1c97db5c9aebb047411db  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_6.f90
  a889821a76a43cd0bc42032f92d62143  gcc/testsuite/gfortran.dg/warn_unused_function.f90
! c9497af1ed4f39ba98f09ab4c4e7e8d0  gcc/testsuite/gfortran.dg/warn_unused_function_2.f90
  ae95981491a9741922c27b078d9a628c  gcc/testsuite/gfortran.dg/warn_unused_function_3.f90
  025932868233d92449d247c6dacf72a1  gcc/testsuite/gfortran.dg/warn_unused_var.f90
  505984a29bdb4c6918091f5ecf8088e8  gcc/testsuite/gfortran.dg/warn_unused_var_2.f90
*************** a0c02d542dbd50cb44704b2ffce2739c  gcc/tr
*** 130985,130991 ****
  809e1f07de4be5a3fc990f66bd6d1105  gcc/tree-cfg.h
  e4268d258c67f33e0625d4eb1ca512f7  gcc/tree-cfgcleanup.cc
  645c34c74323c655a1d20f8f76e64b27  gcc/tree-cfgcleanup.h
! 447f46e51936add5de4aaa77a96039ba  gcc/tree-chrec.cc
  1cf760e3e7aab6f94a5e56897486623d  gcc/tree-chrec.h
  a3fd0a3b7cf7687811c2d140c14f489d  gcc/tree-complex.cc
  dea74d5dd62de97a94d9f3e749f5bd06  gcc/tree-core.h
--- 131024,131030 ----
  809e1f07de4be5a3fc990f66bd6d1105  gcc/tree-cfg.h
  e4268d258c67f33e0625d4eb1ca512f7  gcc/tree-cfgcleanup.cc
  645c34c74323c655a1d20f8f76e64b27  gcc/tree-cfgcleanup.h
! 8bd9bb281b8c5af7e1be84284f94e983  gcc/tree-chrec.cc
  1cf760e3e7aab6f94a5e56897486623d  gcc/tree-chrec.h
  a3fd0a3b7cf7687811c2d140c14f489d  gcc/tree-complex.cc
  dea74d5dd62de97a94d9f3e749f5bd06  gcc/tree-core.h
*************** d7c0da59494a51ae966d29f4618b2f9a  gcc/tr
*** 131005,131011 ****
  0cb6286531ef1298c60bd670fe8a1f62  gcc/tree-emutls.cc
  278ef0d1cc8f017ae51affd9a1e110a5  gcc/tree-hash-traits.h
  f8be97e59befb22cc3869e742a095cca  gcc/tree-hasher.h
! 74a1d8bf597d9fcfa84e6ac9f2297cb5  gcc/tree-if-conv.cc
  87f110e202a07bb1d7e6402808531851  gcc/tree-if-conv.h
  36641aac4acff031aafd6e8316186bf0  gcc/tree-inline.cc
  8e4dac1ee5fbcab0629042db2f9ece45  gcc/tree-inline.h
--- 131044,131050 ----
  0cb6286531ef1298c60bd670fe8a1f62  gcc/tree-emutls.cc
  278ef0d1cc8f017ae51affd9a1e110a5  gcc/tree-hash-traits.h
  f8be97e59befb22cc3869e742a095cca  gcc/tree-hasher.h
! 2cbf7c07966448c7108b23f5ccc8374d  gcc/tree-if-conv.cc
  87f110e202a07bb1d7e6402808531851  gcc/tree-if-conv.h
  36641aac4acff031aafd6e8316186bf0  gcc/tree-inline.cc
  8e4dac1ee5fbcab0629042db2f9ece45  gcc/tree-inline.h
*************** b36c3bd52f9df56746196a0cf2b3ac14  gcc/tr
*** 131049,131059 ****
  121090f76aa83f677c00129216885e7e  gcc/tree-ssa-copy.cc
  d5dba4b9ca0d7dfc67c9d53ec5273fb1  gcc/tree-ssa-dce.cc
  34546de59e69d1a125c3fa7747d7f0e2  gcc/tree-ssa-dce.h
! c1c4fe85c3abe80948e72eb9950ff189  gcc/tree-ssa-dom.cc
  ec31925fe8431d27258939fc79f1f02e  gcc/tree-ssa-dom.h
  b0752286b16612fce67b55c8b0bdbdbc  gcc/tree-ssa-dse.cc
  1df01d660e0f98ade0ae7a3152aa33ed  gcc/tree-ssa-dse.h
! 890a68ae6871734051f59053b9834eeb  gcc/tree-ssa-forwprop.cc
  bb90d30f7c6176fd9edf8b10cc7803b6  gcc/tree-ssa-ifcombine.cc
  96b11e029c398aaecd1c642c41c88884  gcc/tree-ssa-live.cc
  7c36b95c9d109be3302936ceed49fb4f  gcc/tree-ssa-live.h
--- 131088,131098 ----
  121090f76aa83f677c00129216885e7e  gcc/tree-ssa-copy.cc
  d5dba4b9ca0d7dfc67c9d53ec5273fb1  gcc/tree-ssa-dce.cc
  34546de59e69d1a125c3fa7747d7f0e2  gcc/tree-ssa-dce.h
! 2d9ebe8ff6e2ce42eaabad9517622345  gcc/tree-ssa-dom.cc
  ec31925fe8431d27258939fc79f1f02e  gcc/tree-ssa-dom.h
  b0752286b16612fce67b55c8b0bdbdbc  gcc/tree-ssa-dse.cc
  1df01d660e0f98ade0ae7a3152aa33ed  gcc/tree-ssa-dse.h
! d661ab29105f33e6bac7e0eb1e7c64af  gcc/tree-ssa-forwprop.cc
  bb90d30f7c6176fd9edf8b10cc7803b6  gcc/tree-ssa-ifcombine.cc
  96b11e029c398aaecd1c642c41c88884  gcc/tree-ssa-live.cc
  7c36b95c9d109be3302936ceed49fb4f  gcc/tree-ssa-live.h
*************** c1590659dad2b41a69adb7654db65644  gcc/tr
*** 131075,131088 ****
  fa83f982a805985b3a3da2ca5e10e43a  gcc/tree-ssa-math-opts.h
  9b5221bc2087b040736afeb799949b04  gcc/tree-ssa-operands.cc
  f83d0b12185538e6f679296bebfe3d2f  gcc/tree-ssa-operands.h
! ba27d633db52c7d11f4cd30e1d5ca251  gcc/tree-ssa-phiopt.cc
  8ab9314ce21d683c5fd9fc16bf7cab29  gcc/tree-ssa-phiprop.cc
  e356f4c7b22c3759a86c782d5e99d1a8  gcc/tree-ssa-pre.cc
  5d6622629ccbf56551beb5cb3cc8684a  gcc/tree-ssa-propagate.cc
  d38017eb69a50f24b5e47ee97928afde  gcc/tree-ssa-propagate.h
! 1f64e1425bb8bc82e544c5f49f89b084  gcc/tree-ssa-reassoc.cc
  82a2c700ac2e32f106bcbd11fc5cf152  gcc/tree-ssa-reassoc.h
! bbfdab9c432e365a5d11e0249f3f57f1  gcc/tree-ssa-sccvn.cc
  969557a6ff2537ae4a6d36fde566e436  gcc/tree-ssa-sccvn.h
  43b66558734f8fe9fec03260c6814f6b  gcc/tree-ssa-scopedtables.cc
  f9f30b312deca96b11a781af60153767  gcc/tree-ssa-scopedtables.h
--- 131114,131127 ----
  fa83f982a805985b3a3da2ca5e10e43a  gcc/tree-ssa-math-opts.h
  9b5221bc2087b040736afeb799949b04  gcc/tree-ssa-operands.cc
  f83d0b12185538e6f679296bebfe3d2f  gcc/tree-ssa-operands.h
! 8168c2bba2a0b4e4c6122b10037b1dd4  gcc/tree-ssa-phiopt.cc
  8ab9314ce21d683c5fd9fc16bf7cab29  gcc/tree-ssa-phiprop.cc
  e356f4c7b22c3759a86c782d5e99d1a8  gcc/tree-ssa-pre.cc
  5d6622629ccbf56551beb5cb3cc8684a  gcc/tree-ssa-propagate.cc
  d38017eb69a50f24b5e47ee97928afde  gcc/tree-ssa-propagate.h
! 33a97fbc8e9875cc95093cb937c2d7e3  gcc/tree-ssa-reassoc.cc
  82a2c700ac2e32f106bcbd11fc5cf152  gcc/tree-ssa-reassoc.h
! d7b35a4618335fb10cc691bd78609de5  gcc/tree-ssa-sccvn.cc
  969557a6ff2537ae4a6d36fde566e436  gcc/tree-ssa-sccvn.h
  43b66558734f8fe9fec03260c6814f6b  gcc/tree-ssa-scopedtables.cc
  f9f30b312deca96b11a781af60153767  gcc/tree-ssa-scopedtables.h
*************** e316eddfbf9a02433a4ee93e648f3aa4  gcc/tr
*** 131116,131125 ****
  6a0f6268d598b3c59871ad41e01f33c1  gcc/tree-tailcall.cc
  9d1d629a67b789d8cb739163675798bd  gcc/tree-vect-data-refs.cc
  a423c268d5ba9ac563732fd6d038c572  gcc/tree-vect-generic.cc
! 5945009d0ba922b53aacbb6f724d3caf  gcc/tree-vect-loop-manip.cc
  48ab42d8d2d1b36b53266eaaba74549e  gcc/tree-vect-loop.cc
! b65839ac30937104b9a0643233f69538  gcc/tree-vect-patterns.cc
! f4494efe1c7d9f006f6abb9a9be493d2  gcc/tree-vect-slp-patterns.cc
  b1cdd5d148e6bcfc54c99a0a2b9192d9  gcc/tree-vect-slp.cc
  1e0a184e5916e9a6e1ace6bb47ebe692  gcc/tree-vect-stmts.cc
  42032e04f389a2e0f43fbb46ac091dac  gcc/tree-vector-builder.cc
--- 131155,131164 ----
  6a0f6268d598b3c59871ad41e01f33c1  gcc/tree-tailcall.cc
  9d1d629a67b789d8cb739163675798bd  gcc/tree-vect-data-refs.cc
  a423c268d5ba9ac563732fd6d038c572  gcc/tree-vect-generic.cc
! 2d97a09e6f1cc39817ff46cd04879772  gcc/tree-vect-loop-manip.cc
  48ab42d8d2d1b36b53266eaaba74549e  gcc/tree-vect-loop.cc
! 2730836d8cc13635cf2bbb611acecb51  gcc/tree-vect-patterns.cc
! 28492f085ab589b35caa61bf83cbc03b  gcc/tree-vect-slp-patterns.cc
  b1cdd5d148e6bcfc54c99a0a2b9192d9  gcc/tree-vect-slp.cc
  1e0a184e5916e9a6e1ace6bb47ebe692  gcc/tree-vect-stmts.cc
  42032e04f389a2e0f43fbb46ac091dac  gcc/tree-vector-builder.cc
diff -Nrcpad gcc-16-20260613/gcc/ChangeLog gcc-16-20260620/gcc/ChangeLog
*** gcc-16-20260613/gcc/ChangeLog	Sat Jun 13 22:32:05 2026
--- gcc-16-20260620/gcc/ChangeLog	Sat Jun 20 22:32:04 2026
***************
*** 1,3 ****
--- 1,208 ----
+ 2026-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* acinclude.m4 (gcc_GAS_FLAGS): Set to --32 for abi32 targets.
+ 	* configure.ac (TLS support): Use 32-bit sequence for abi32 targets.
+ 	* configure: Regenerate.
+ 
+ 2026-06-17  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2026-06-09  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR middle-end/125621
+ 	* expmed.cc (make_tree): Fix CONST_POLY_INT case to pass type
+ 	instead of t, move it to its own switch case.
+ 
+ 2026-06-17  Kishan Parmar  <kishan@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2026-05-22  Steve Markgraf  <steve@steve-m.de>
+ 
+ 	* config/rs6000/rs6000.h (TARGET_NO_LWSYNC): Add PROCESSOR_MPCCORE.
+ 
+ 2026-06-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2026-05-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/125148
+ 	* config/aarch64/aarch64-sve.md
+ 	(*aarch64_vec_shl_insert_into_zero_<mode>,
+ 	*aarch64_vec_shl_insert_into_zero_vnx16qi,
+ 	*aarch64_vec_shl_insert_from_load_<mode>): New.
+ 	* config/aarch64/aarch64.cc (aarch64_emit_load_store_through_mode):
+ 	Replace paradoxical subreg with zero-extend.
+ 
+ 2026-06-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2026-06-03  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125431
+ 	* tree-vect-slp-patterns.cc (complex_mul_pattern::matches,
+ 	complex_fms_pattern::matches): Gate on FP contraction.
+ 
+ 2026-06-17  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	Backported from master:
+ 	2026-06-15  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR target/125795
+ 	* config/aarch64/aarch64-early-ra.cc (early_ra::allocate_colors):
+ 	Compute the allocated-FPR mask as
+ 	((1ULL << color->group->size) - 1) << best.
+ 
+ 2026-06-17  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/125501
+ 	* tree-ssa-dom.cc (set_global_ranges_from_unreachable_edges): Abort
+ 	if there are 2 SSA_NAMES on the branch condition.
+ 
+ 2026-06-16  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-06-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125776
+ 	* tree-ssa-phiopt.cc (is_factor_profitable): An
+ 	usage in a debug stmt should be ignored.
+ 
+ 2026-06-16  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-06-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125774
+ 	* gimple-range-fold.cc (fold_using_range::relation_fold_and_or): Use
+ 	relation_swap rather than relation_negate when the operands are exchanged.
+ 
+ 2026-06-16  Carter Rennick  <carter.rennick@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-04-24  Carter Rennick  <carter.rennick@gmail.com>
+ 
+ 	PR target/120144
+ 	* config/mips/mips.h (MAX_FIXED_MODE_SIZE): Remove.
+ 
+ 2026-06-16  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-06-10  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR ipa/125699
+ 	* ipa-param-manipulation.cc (ipa_param_body_adjustments::prepare_debug_expressions): Fix
+ 	lifetime issue with m_dead_ssa_debug_equiv usage.
+ 
+ 2026-06-16  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-05-24  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125419
+ 	* tree-if-conv.cc (factor_out_operators): Change
+ 	asserts about abnormals into a conditional to reject
+ 	it.
+ 
+ 2026-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-06-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125652
+ 	* tree-chrec.cc (chrec_fold_plus_poly_poly): Avoid UB
+ 	integer overflow in accumulating CHREC_RIGHT.
+ 
+ 2026-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-06-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125686
+ 	* tree-vect-patterns.cc (synth_lshift_by_additions): Specify
+ 	pattern vector type.
+ 	(apply_binop_and_append_stmt): Likewise.
+ 	(vect_synth_mult_by_constant): Adjust.
+ 
+ 2026-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-06-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125646
+ 	* tree-vect-patterns.cc (vect_synth_mult_by_constant): Assign
+ 	vector type to the pattern def sequence stmts.
+ 
+ 2026-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125553
+ 	* tree-ssa-sccvn.cc (visit_nary_op): Valueize the BIT_FIELD_REF
+ 	operand before looking at its definition.
+ 
+ 2026-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125545
+ 	* tree-ssa-reassoc.cc (insert_stmt_after): Allow asm goto
+ 	with a single successor.
+ 
+ 2026-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125502
+ 	* tree-ssa-forwprop.cc (optimize_vector_load): Do not
+ 	move defs of abnormals.
+ 
+ 2026-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-06-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125477
+ 	* tree-vect-loop-manip.cc (vect_loop_versioning): Verify we
+ 	can duplicate an outer loop before considering to version it.
+ 
+ 2026-06-15  Kishan Parmar  <kishan@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2026-05-04  Kishan Parmar  <kishan@linux.ibm.com>
+ 
+ 	* config.gcc (powerpc*-*-*): Add support for supporting
+ 	--with-cpu=future.
+ 	* config/rs6000/aix71.h (ASM_CPU_SPEC): Pass -mfuture to the assembler
+ 	if the user used the -mcpu=future option.
+ 	* config/rs6000/aix72.h (ASM_CPU_SPEC): Likewise.
+ 	* config/rs6000/aix73.h (ASM_CPU_SPEC): Likewise.
+ 	* config/rs6000/rs6000-builtin.cc (rs6000_invalid_builtin): Handle
+ 	ENB_FUTURE and issue diagnostic requiring -mcpu=future.
+ 	(rs6000_builtin_is_supported): Return TARGET_FUTURE for
+ 	ENB_FUTURE built-ins.
+ 	* config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Define
+ 	_ARCH_FUTURE if -mcpu=future.
+ 	* config/rs6000/rs6000-cpus.def (FUTURE_MASKS_SERVER): New macro.
+ 	(POWERPC_MASKS): Add OPTION_MASK_FUTURE.
+ 	(rs6000_cpu_opt_value): New entry for 'future' via the RS6000_CPU macro.
+ 	* config/rs6000/rs6000-gen-builtins.cc (enum bif_stanza): Add
+ 	BSTZ_FUTURE for future.
+ 	(write_decls): Add ENB_FUTURE in bif_enable enum of generated header
+ 	file.
+ 	* config/rs6000/rs6000-opts.h (PROCESSOR_FUTURE): New macro.
+ 	* config/rs6000/rs6000-tables.opt: Regenerate.
+ 	* config/rs6000/rs6000.cc (rs6000_machine_from_flags) If -mcpu=future,
+ 	set the .machine directive to "future".
+ 	(rs6000_opt_masks): Add entry for -mfuture.
+ 	* config/rs6000/rs6000.h (ASM_CPU_SPEC): Pass -mfuture to the assembler
+ 	if the user used the -mcpu=future option.
+ 	* config/rs6000/rs6000.opt (-mfuture): New option.
+ 	* doc/invoke.texi (IBM RS/6000 and PowerPC Options): Document
+ 	-mcpu=future.
+ 
  2026-06-11  Georg-Johann Lay  <avr@gjlay.de>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260613/gcc/DATESTAMP gcc-16-20260620/gcc/DATESTAMP
*** gcc-16-20260613/gcc/DATESTAMP	Sat Jun 13 22:32:05 2026
--- gcc-16-20260620/gcc/DATESTAMP	Sat Jun 20 22:32:04 2026
***************
*** 1 ****
! 20260613
--- 1 ----
! 20260620
diff -Nrcpad gcc-16-20260613/gcc/acinclude.m4 gcc-16-20260620/gcc/acinclude.m4
*** gcc-16-20260613/gcc/acinclude.m4	Sat Jun 13 22:32:05 2026
--- gcc-16-20260620/gcc/acinclude.m4	Sat Jun 20 22:32:04 2026
*************** AC_DEFUN([gcc_GAS_FLAGS],
*** 514,519 ****
--- 514,522 ----
        x86_64-*-linux-gnux32*)
  	gcc_cv_as_flags=--x32
  	;;
+       x86_64-*-linux-gnuabi32 | x86_64-*-mingw32abi32)
+ 	gcc_cv_as_flags=--32
+ 	;;
        x86_64-*-* | sparcv9-*-* | sparc64-*-*)
  	gcc_cv_as_flags=--64
  	;;
diff -Nrcpad gcc-16-20260613/gcc/ada/ChangeLog gcc-16-20260620/gcc/ada/ChangeLog
*** gcc-16-20260613/gcc/ada/ChangeLog	Sat Jun 13 22:32:05 2026
--- gcc-16-20260620/gcc/ada/ChangeLog	Sat Jun 20 22:32:04 2026
***************
*** 1,3 ****
--- 1,26 ----
+ 2026-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Do not set the
+ 	Body_Needed_For_Inlining flag on the current semantic unit if the
+ 	package is declared within an instance or does not require a body.
+ 	(Analyze_Generic_Subprogram_Declaration): Similarly, do not set the
+ 	Body_Needed_For_Inlining flag on the current semantic unit if the
+ 	subprogram is declared within an instance.
+ 
+ 2026-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Build_Structural_Instantiation): Temporarily disable
+ 	registration of tagged types when analyzing the instantiation.
+ 
+ 2026-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/a-cbinho.adb (Clear): Deallocate the subpool even if the
+ 	container is empty.
+ 
+ 2026-06-19  Steve Baird  <baird@adacore.com>
+ 
+ 	* libgnat/a-cbinho.adb (Adjust): Avoid null pointer dereference.
+ 
  2026-06-09  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR ada/125695
diff -Nrcpad gcc-16-20260613/gcc/ada/libgnat/a-cbinho.adb gcc-16-20260620/gcc/ada/libgnat/a-cbinho.adb
*** gcc-16-20260613/gcc/ada/libgnat/a-cbinho.adb	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/ada/libgnat/a-cbinho.adb	Sat Jun 20 22:32:05 2026
*************** package body Ada.Containers.Bounded_Inde
*** 48,55 ****
     overriding procedure Adjust (Container : in out Holder) is
     begin
        Container.Handle := Create_Subpool (The_Storage_Pool, Container);
!       Container.Element :=
!         new (Container.Handle) Element_Type'(Container.Element.all);
     end Adjust;
  
     ------------
--- 48,57 ----
     overriding procedure Adjust (Container : in out Holder) is
     begin
        Container.Handle := Create_Subpool (The_Storage_Pool, Container);
!       if Container.Element /= null then
!          Container.Element :=
!            new (Container.Handle) Element_Type'(Container.Element.all);
!       end if;
     end Adjust;
  
     ------------
*************** package body Ada.Containers.Bounded_Inde
*** 73,85 ****
  
     procedure Clear (Container : in out Holder) is
     begin
!       if Is_Empty (Container) then
!          return; -- nothing to do
!       end if;
!       if Container.Busy /= 0 then
!          raise Program_Error with "attempt to tamper with elements";
        end if;
!       Free (Container.Element); -- finalize element
        Ada.Unchecked_Deallocate_Subpool (Container.Handle);
     end Clear;
  
--- 75,87 ----
  
     procedure Clear (Container : in out Holder) is
     begin
!       if not Is_Empty (Container) then
!          if Container.Busy /= 0 then
!             raise Program_Error with "attempt to tamper with elements";
!          end if;
!          Free (Container.Element); -- finalize element
        end if;
!       --  Unconditionally deallocate the subpool for Finalize, see below
        Ada.Unchecked_Deallocate_Subpool (Container.Handle);
     end Clear;
  
diff -Nrcpad gcc-16-20260613/gcc/ada/sem_ch12.adb gcc-16-20260620/gcc/ada/sem_ch12.adb
*** gcc-16-20260613/gcc/ada/sem_ch12.adb	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/ada/sem_ch12.adb	Sat Jun 20 22:32:05 2026
*************** package body Sem_Ch12 is
*** 4584,4593 ****
        End_Package_Scope (Id);
        Exit_Generic_Scope (Id);
  
!       --  If the generic appears within a package unit, the body of that unit
!       --  has to be present for instantiation and inlining.
  
!       if Nkind (Unit (Cunit (Current_Sem_Unit))) = N_Package_Declaration then
           Set_Body_Needed_For_Inlining
             (Defining_Entity (Unit (Cunit (Current_Sem_Unit))));
        end if;
--- 4584,4596 ----
        End_Package_Scope (Id);
        Exit_Generic_Scope (Id);
  
!       --  If the generic appears directly within a package unit and requires a
!       --  body, the package body of that unit has to be present for inlining.
  
!       if Nkind (Unit (Cunit (Current_Sem_Unit))) = N_Package_Declaration
!         and then not In_Instance
!         and then Unit_Requires_Body (Id)
!       then
           Set_Body_Needed_For_Inlining
             (Defining_Entity (Unit (Cunit (Current_Sem_Unit))));
        end if;
*************** package body Sem_Ch12 is
*** 4783,4792 ****
           Set_Body_Required (Parent (N), Unit_Requires_Body (Id));
        end if;
  
!       --  If the generic appears within a package unit, the body of that unit
!       --  has to be present for instantiation and inlining.
  
        if Nkind (Unit (Cunit (Current_Sem_Unit))) = N_Package_Declaration
          and then Unit_Requires_Body (Id)
        then
           Set_Body_Needed_For_Inlining
--- 4786,4796 ----
           Set_Body_Required (Parent (N), Unit_Requires_Body (Id));
        end if;
  
!       --  If the generic appears directly within a package unit and requires a
!       --  body, the package body of that unit has to be present for inlining.
  
        if Nkind (Unit (Cunit (Current_Sem_Unit))) = N_Package_Declaration
+         and then not In_Instance
          and then Unit_Requires_Body (Id)
        then
           Set_Body_Needed_For_Inlining
*************** package body Sem_Ch12 is
*** 7405,7414 ****
        --  reasons pertaining to freezing (see the Freeze_Package_Instance and
        --  Freeze_Subprogram_Instance procedures).
  
!       Add_Local_Declaration (Inst, N, Scop => Empty);
!       if Error_Posted (Inst) then
!          return Empty;
!       end if;
  
        --  If the structural instance had already been created, this occurrence
        --  has been turned into a renaming of it.
--- 7409,7429 ----
        --  reasons pertaining to freezing (see the Freeze_Package_Instance and
        --  Freeze_Subprogram_Instance procedures).
  
!       --  We also need to temporarily disable registration of tagged types,
!       --  lest there be multiple instantiations in the partition, since it
!       --  is performed even though the generic unit is preelaborated.
! 
!       declare
!          S_Restrictions : constant Save_Cunit_Boolean_Restrictions :=
!                                      Cunit_Boolean_Restrictions_Save;
!       begin
!          Set_Restriction (No_Tagged_Type_Registration, N);
!          Add_Local_Declaration (Inst, N, Scop => Empty);
!          Cunit_Boolean_Restrictions_Restore (S_Restrictions);
!          if Error_Posted (Inst) then
!             return Empty;
!          end if;
!       end;
  
        --  If the structural instance had already been created, this occurrence
        --  has been turned into a renaming of it.
diff -Nrcpad gcc-16-20260613/gcc/c/ChangeLog gcc-16-20260620/gcc/c/ChangeLog
*** gcc-16-20260613/gcc/c/ChangeLog	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/c/ChangeLog	Sat Jun 20 22:32:05 2026
***************
*** 1,3 ****
--- 1,31 ----
+ 2026-06-13  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-06-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/125252
+ 	* c-typeck.cc (ptr_to_tagged_member): Return type of member.
+ 	(c_type_canonical): Use incomplete type.
+ 
+ 2026-06-13  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-25  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/124303
+ 	* c-decl.cc (finish_struct): Check for consistency of
+ 	declarations after completing variants.
+ 
+ 2026-06-13  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-05-06  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/124985
+ 	* c-decl.cc (pushtag): Update comment.
+ 	(declspecs_add_type): Mark TYPE_STUB_DECL as used.
+ 	* c-typeck.cc (function_to_pointer_conversion): Fix grammar in comment.
+ 
  2026-05-15  Andi Kleen  <ak@gcc.gnu.org>
  
  	PR c/124532
diff -Nrcpad gcc-16-20260613/gcc/config/aarch64/aarch64-early-ra.cc gcc-16-20260620/gcc/config/aarch64/aarch64-early-ra.cc
*** gcc-16-20260613/gcc/config/aarch64/aarch64-early-ra.cc	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/aarch64/aarch64-early-ra.cc	Sat Jun 20 22:32:05 2026
*************** early_ra::allocate_colors ()
*** 3038,3044 ****
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file, "  Allocating [v%d:v%d] to color %d\n",
  		 best, best + color->group->size - 1, color->id);
!       m_allocated_fprs |= ((1U << color->group->size) - 1) << best;
      }
  }
  
--- 3038,3050 ----
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file, "  Allocating [v%d:v%d] to color %d\n",
  		 best, best + color->group->size - 1, color->id);
!       // Mark the COLOR's FPRs as allocated.  A full-width color can have
!       // size == 32, so shift a wide enough value: "1U << 32" is undefined,
!       // as is "1UL << 32" on hosts with 32-bit long.  unsigned long long is
!       // at least 64 bits everywhere.  best + size <= 32 (from the candidate
!       // search) keeps the result within the 32-bit mask.
!       gcc_assert (best + color->group->size <= 32);
!       m_allocated_fprs |= ((1ULL << color->group->size) - 1) << best;
      }
  }
  
diff -Nrcpad gcc-16-20260613/gcc/config/aarch64/aarch64-sve.md gcc-16-20260620/gcc/config/aarch64/aarch64-sve.md
*** gcc-16-20260613/gcc/config/aarch64/aarch64-sve.md	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/aarch64/aarch64-sve.md	Sat Jun 20 22:32:05 2026
***************
*** 3004,3009 ****
--- 3004,3054 ----
    [(set_attr "sve_type" "sve_int_general")]
  )
  
+ ;; Shift an SVE vector left and insert a scalar into element 0 of a zero
+ ;; register.
+ (define_insn "*aarch64_vec_shl_insert_into_zero_<mode>"
+   [(set (match_operand:SVE_FULL_HSD 0 "register_operand")
+ 	(unspec:SVE_FULL_HSD
+ 	  [(match_operand:SVE_FULL_HSD 1 "aarch64_simd_imm_zero")
+ 	   (match_operand:<VEL> 2 "register_operand")]
+ 	  UNSPEC_INSR))]
+   "TARGET_SVE"
+   {@ [ cons: =0 , 1  , 2 ]
+      [ w        , Dz , w ] fmov\t%<Vetype>0, %<Vetype>2
+   }
+   [(set_attr "type" "neon_move")]
+ )
+ 
+ ;; Shift an SVE vector left and insert a scalar into element 0 of a zero
+ ;; register for bytes.
+ (define_insn "*aarch64_vec_shl_insert_into_zero_vnx16qi"
+   [(set (match_operand:VNx16QI 0 "register_operand")
+ 	(unspec:VNx16QI
+ 	  [(match_operand:VNx16QI 1 "aarch64_simd_imm_zero")
+ 	   (match_operand:QI 2 "register_operand")]
+ 	  UNSPEC_INSR))]
+   "TARGET_SVE"
+   {@ [ cons: =0 , 1  , 2 ; attrs: length ]
+      [ w        , Dz , w ; 8              ] fmov\t%h0, %h2\;and\t%0.h, %0.h, #0xff
+   }
+   [(set_attr "type" "neon_move")]
+ )
+ 
+ ;; Shift an SVE vector left and insert a scalar into element 0 from a memory
+ ;; load.
+ (define_insn "*aarch64_vec_shl_insert_from_load_<mode>"
+   [(set (match_operand:SVE_FULL 0 "register_operand")
+ 	(unspec:SVE_FULL
+ 	  [(match_operand:SVE_FULL 1 "aarch64_simd_imm_zero")
+ 	   (match_operand:<VEL> 2 "memory_operand")]
+ 	  UNSPEC_INSR))]
+   "TARGET_SVE"
+   {@ [ cons: =0 , 1  , 2 ]
+      [ w        , Dz , m ] ldr\t%<Vetype>0, %2
+   }
+   [(set_attr "type" "neon_move")]
+ )
+ 
  ;; -------------------------------------------------------------------------
  ;; ---- [INT] Linear series
  ;; -------------------------------------------------------------------------
diff -Nrcpad gcc-16-20260613/gcc/config/aarch64/aarch64.cc gcc-16-20260620/gcc/config/aarch64/aarch64.cc
*** gcc-16-20260613/gcc/config/aarch64/aarch64.cc	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/aarch64/aarch64.cc	Sat Jun 20 22:32:05 2026
*************** aarch64_stack_protect_canary_mem (machin
*** 6899,6927 ****
    return gen_rtx_MEM (mode, force_reg (Pmode, addr));
  }
  
- /* Emit a load/store from a subreg of SRC to a subreg of DEST.
-    The subregs have mode NEW_MODE. Use only for reg<->mem moves.  */
- void
- aarch64_emit_load_store_through_mode (rtx dest, rtx src, machine_mode new_mode)
- {
-   gcc_assert ((MEM_P (dest) && register_operand (src, VOIDmode))
- 	      || (MEM_P (src) && register_operand (dest, VOIDmode)));
-   auto mode = GET_MODE (dest);
-   auto int_mode = aarch64_sve_int_mode (mode);
-   if (MEM_P (src))
-     {
-       rtx tmp = force_reg (new_mode, adjust_address (src, new_mode, 0));
-       tmp = force_lowpart_subreg (int_mode, tmp, new_mode);
-       emit_move_insn (dest, force_lowpart_subreg (mode, tmp, int_mode));
-     }
-   else
-     {
-       src = force_lowpart_subreg (int_mode, src, mode);
-       emit_move_insn (adjust_address (dest, new_mode, 0),
- 		      force_lowpart_subreg (new_mode, src, int_mode));
-     }
- }
- 
  /* PRED is a predicate that is known to contain PTRUE.
     For 128-bit VLS loads/stores, emit LDR/STR.
     Else, emit an SVE predicated move from SRC to DEST.  */
--- 6899,6904 ----
*************** aarch64_sve_expand_vector_init_subvector
*** 26133,26138 ****
--- 26110,26156 ----
    return;
  }
  
+ /* Emit a load/store from a subreg of SRC to a subreg of DEST.
+    The subregs have mode NEW_MODE. Use only for reg<->mem moves.  */
+ void
+ aarch64_emit_load_store_through_mode (rtx dest, rtx src, machine_mode new_mode)
+ {
+   gcc_assert ((MEM_P (dest) && register_operand (src, VOIDmode))
+ 	      || (MEM_P (src) && register_operand (dest, VOIDmode)));
+   auto mode = GET_MODE (dest);
+   auto int_mode = aarch64_sve_int_mode (mode);
+   rtx tmp_reg;
+   if (MEM_P (src))
+     {
+       rtx tmp = force_reg (new_mode, adjust_address (src, new_mode, 0));
+       if (!VECTOR_MODE_P (new_mode))
+ 	{
+ 	  machine_mode full_mode = int_mode;
+ 	  auto vmode = aarch64_classify_vector_mode (int_mode);
+ 	  /* Partial vectors have to go through a full mode insert since we
+ 	     don't support inserting an partial vectors.  */
+ 	  if (GET_MODE_INNER (int_mode) != new_mode || (vmode & VEC_PARTIAL))
+ 	    full_mode
+ 	      = aarch64_full_sve_mode (as_a <scalar_mode> (new_mode)).require ();
+ 
+ 	  /* Create an SVE register with the top bits explicitly zero'd.  */
+ 	  tmp_reg = force_reg (full_mode, CONST0_RTX (full_mode));
+ 	  emit_insr (tmp_reg, tmp);
+ 	  if (full_mode != int_mode)
+ 	    tmp_reg = force_lowpart_subreg (int_mode, tmp_reg, full_mode);
+ 	}
+       else
+ 	tmp_reg = force_lowpart_subreg (int_mode, tmp, new_mode);
+       emit_move_insn (dest, force_lowpart_subreg (mode, tmp_reg, int_mode));
+     }
+   else
+     {
+       src = force_lowpart_subreg (int_mode, src, mode);
+       emit_move_insn (adjust_address (dest, new_mode, 0),
+ 		      force_lowpart_subreg (new_mode, src, int_mode));
+     }
+ }
+ 
  /* Check whether VALUE is a vector constant in which every element
     is either a power of 2 or a negated power of 2.  If so, return
     a constant vector of log2s, and flip CODE between PLUS and MINUS
diff -Nrcpad gcc-16-20260613/gcc/config/mips/mips.h gcc-16-20260620/gcc/config/mips/mips.h
*** gcc-16-20260613/gcc/config/mips/mips.h	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/mips/mips.h	Sat Jun 20 22:32:05 2026
*************** FP_ASM_SPEC "\
*** 1706,1715 ****
     doesn't support 128-bit integers for MIPS32 currently.  */
  #define LONG_LONG_ACCUM_TYPE_SIZE (TARGET_64BIT ? 128 : 64)
  
- /* long double is not a fixed mode, but the idea is that, if we
-    support long double, we also want a 128-bit integer type.  */
- #define MAX_FIXED_MODE_SIZE MIPS_LONG_DOUBLE_TYPE_SIZE
- 
  /* Width in bits of a pointer.  */
  #ifndef POINTER_SIZE
  #define POINTER_SIZE ((TARGET_LONG64 && TARGET_64BIT) ? 64 : 32)
--- 1706,1711 ----
diff -Nrcpad gcc-16-20260613/gcc/config/rs6000/aix71.h gcc-16-20260620/gcc/config/rs6000/aix71.h
*** gcc-16-20260613/gcc/config/rs6000/aix71.h	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/rs6000/aix71.h	Sat Jun 20 22:32:05 2026
*************** do {									\
*** 79,84 ****
--- 79,85 ----
  #undef ASM_CPU_SPEC
  #define ASM_CPU_SPEC \
  "%{mcpu=native: %(asm_cpu_native); \
+   mcpu=future: -mfuture; \
    mcpu=power11: -mpwr11; \
    mcpu=power10: -mpwr10; \
    mcpu=power9: -mpwr9; \
diff -Nrcpad gcc-16-20260613/gcc/config/rs6000/aix72.h gcc-16-20260620/gcc/config/rs6000/aix72.h
*** gcc-16-20260613/gcc/config/rs6000/aix72.h	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/rs6000/aix72.h	Sat Jun 20 22:32:05 2026
*************** do {									\
*** 79,84 ****
--- 79,85 ----
  #undef ASM_CPU_SPEC
  #define ASM_CPU_SPEC \
  "%{mcpu=native: %(asm_cpu_native); \
+   mcpu=future: -mfuture; \
    mcpu=power11: -mpwr11; \
    mcpu=power10: -mpwr10; \
    mcpu=power9: -mpwr9; \
diff -Nrcpad gcc-16-20260613/gcc/config/rs6000/aix73.h gcc-16-20260620/gcc/config/rs6000/aix73.h
*** gcc-16-20260613/gcc/config/rs6000/aix73.h	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/rs6000/aix73.h	Sat Jun 20 22:32:05 2026
*************** do {									\
*** 79,84 ****
--- 79,85 ----
  #undef ASM_CPU_SPEC
  #define ASM_CPU_SPEC \
  "%{mcpu=native: %(asm_cpu_native); \
+   mcpu=future: -mfuture; \
    mcpu=power11: -mpwr11; \
    mcpu=power10: -mpwr10; \
    mcpu=power9: -mpwr9; \
diff -Nrcpad gcc-16-20260613/gcc/config/rs6000/rs6000-builtin.cc gcc-16-20260620/gcc/config/rs6000/rs6000-builtin.cc
*** gcc-16-20260613/gcc/config/rs6000/rs6000-builtin.cc	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/rs6000/rs6000-builtin.cc	Sat Jun 20 22:32:05 2026
*************** rs6000_invalid_builtin (enum rs6000_gen_
*** 139,144 ****
--- 139,147 ----
      case ENB_MMA:
        error ("%qs requires the %qs option", name, "-mmma");
        break;
+     case ENB_FUTURE:
+       error ("%qs requires the %qs option", name, "-mcpu=future");
+       break;
      default:
      case ENB_ALWAYS:
        gcc_unreachable ();
*************** rs6000_builtin_is_supported (enum rs6000
*** 194,199 ****
--- 197,204 ----
        return TARGET_HTM;
      case ENB_MMA:
        return TARGET_MMA;
+     case ENB_FUTURE:
+       return TARGET_FUTURE;
      default:
        gcc_unreachable ();
      }
diff -Nrcpad gcc-16-20260613/gcc/config/rs6000/rs6000-c.cc gcc-16-20260620/gcc/config/rs6000/rs6000-c.cc
*** gcc-16-20260613/gcc/config/rs6000/rs6000-c.cc	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/rs6000/rs6000-c.cc	Sat Jun 20 22:32:05 2026
*************** rs6000_target_modify_macros (bool define
*** 437,442 ****
--- 437,444 ----
      rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR10");
    if ((flags & OPTION_MASK_POWER11) != 0)
      rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR11");
+   if ((flags & OPTION_MASK_FUTURE) != 0)
+     rs6000_define_or_undefine_macro (define_p, "_ARCH_FUTURE");
    if ((flags & OPTION_MASK_SOFT_FLOAT) != 0)
      rs6000_define_or_undefine_macro (define_p, "_SOFT_FLOAT");
    if ((flags & OPTION_MASK_RECIP_PRECISION) != 0)
diff -Nrcpad gcc-16-20260613/gcc/config/rs6000/rs6000-cpus.def gcc-16-20260620/gcc/config/rs6000/rs6000-cpus.def
*** gcc-16-20260613/gcc/config/rs6000/rs6000-cpus.def	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/rs6000/rs6000-cpus.def	Sat Jun 20 22:32:05 2026
***************
*** 83,88 ****
--- 83,92 ----
  #define POWER11_MASKS_SERVER (ISA_3_1_MASKS_SERVER			\
  			      | OPTION_MASK_POWER11)
  
+ /* -mcpu=future flags.  */
+ #define FUTURE_MASKS_SERVER	(POWER11_MASKS_SERVER			\
+ 				 | OPTION_MASK_FUTURE)
+ 
  /* Flags that need to be turned off if -mno-vsx.  */
  #define OTHER_VSX_VECTOR_MASKS	(OPTION_MASK_EFFICIENT_UNALIGNED_VSX	\
  				 | OPTION_MASK_FLOAT128_KEYWORD		\
***************
*** 121,126 ****
--- 125,131 ----
  				 | OPTION_MASK_FPRND			\
  				 | OPTION_MASK_POWER10			\
  				 | OPTION_MASK_POWER11			\
+ 				 | OPTION_MASK_FUTURE			\
  				 | OPTION_MASK_P10_FUSION		\
  				 | OPTION_MASK_HTM			\
  				 | OPTION_MASK_ISEL			\
*************** RS6000_CPU ("power9", PROCESSOR_POWER9,
*** 249,254 ****
--- 254,260 ----
  	    | OPTION_MASK_HTM)
  RS6000_CPU ("power10", PROCESSOR_POWER10, MASK_POWERPC64 | ISA_3_1_MASKS_SERVER)
  RS6000_CPU ("power11", PROCESSOR_POWER11, MASK_POWERPC64 | POWER11_MASKS_SERVER)
+ RS6000_CPU ("future", PROCESSOR_FUTURE, MASK_POWERPC64 | FUTURE_MASKS_SERVER)
  RS6000_CPU ("powerpc", PROCESSOR_POWERPC, 0)
  RS6000_CPU ("powerpc64", PROCESSOR_POWERPC64, OPTION_MASK_PPC_GFXOPT
  	    | MASK_POWERPC64)
diff -Nrcpad gcc-16-20260613/gcc/config/rs6000/rs6000-gen-builtins.cc gcc-16-20260620/gcc/config/rs6000/rs6000-gen-builtins.cc
*** gcc-16-20260613/gcc/config/rs6000/rs6000-gen-builtins.cc	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/rs6000/rs6000-gen-builtins.cc	Sat Jun 20 22:32:05 2026
*************** enum bif_stanza
*** 232,237 ****
--- 232,238 ----
   BSTZ_P10,
   BSTZ_P10_64,
   BSTZ_MMA,
+  BSTZ_FUTURE,
   NUMBIFSTANZAS
  };
  
*************** static stanza_entry stanza_map[NUMBIFSTA
*** 265,271 ****
      { "htm",		BSTZ_HTM	},
      { "power10",	BSTZ_P10	},
      { "power10-64",	BSTZ_P10_64	},
!     { "mma",		BSTZ_MMA	}
    };
  
  static const char *enable_string[NUMBIFSTANZAS] =
--- 266,273 ----
      { "htm",		BSTZ_HTM	},
      { "power10",	BSTZ_P10	},
      { "power10-64",	BSTZ_P10_64	},
!     { "mma",		BSTZ_MMA	},
!     { "future",	BSTZ_FUTURE	}
    };
  
  static const char *enable_string[NUMBIFSTANZAS] =
*************** static const char *enable_string[NUMBIFS
*** 290,296 ****
      "ENB_HTM",
      "ENB_P10",
      "ENB_P10_64",
!     "ENB_MMA"
    };
  
  /* Function modifiers provide special handling for const, pure, and fpmath
--- 292,299 ----
      "ENB_HTM",
      "ENB_P10",
      "ENB_P10_64",
!     "ENB_MMA",
!     "ENB_FUTURE"
    };
  
  /* Function modifiers provide special handling for const, pure, and fpmath
*************** write_decls (void)
*** 2249,2255 ****
    fprintf (header_file, "  ENB_HTM,\n");
    fprintf (header_file, "  ENB_P10,\n");
    fprintf (header_file, "  ENB_P10_64,\n");
!   fprintf (header_file, "  ENB_MMA\n");
    fprintf (header_file, "};\n\n");
  
    fprintf (header_file, "#define PPC_MAXRESTROPNDS 3\n");
--- 2252,2259 ----
    fprintf (header_file, "  ENB_HTM,\n");
    fprintf (header_file, "  ENB_P10,\n");
    fprintf (header_file, "  ENB_P10_64,\n");
!   fprintf (header_file, "  ENB_MMA,\n");
!   fprintf (header_file, "  ENB_FUTURE\n");
    fprintf (header_file, "};\n\n");
  
    fprintf (header_file, "#define PPC_MAXRESTROPNDS 3\n");
diff -Nrcpad gcc-16-20260613/gcc/config/rs6000/rs6000-opts.h gcc-16-20260620/gcc/config/rs6000/rs6000-opts.h
*** gcc-16-20260613/gcc/config/rs6000/rs6000-opts.h	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/rs6000/rs6000-opts.h	Sat Jun 20 22:32:05 2026
*************** enum processor_type
*** 71,76 ****
--- 71,78 ----
     PROCESSOR_TITAN
  };
  
+ /* Make -mtune=future use the same tuning decisions as -mtune=power11.  */
+ #define PROCESSOR_FUTURE	PROCESSOR_POWER11
  
  /* Types of costly dependences.  */
  enum rs6000_dependence_cost
diff -Nrcpad gcc-16-20260613/gcc/config/rs6000/rs6000-tables.opt gcc-16-20260620/gcc/config/rs6000/rs6000-tables.opt
*** gcc-16-20260613/gcc/config/rs6000/rs6000-tables.opt	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/rs6000/rs6000-tables.opt	Sat Jun 20 22:32:05 2026
*************** EnumValue
*** 189,202 ****
  Enum(rs6000_cpu_opt_value) String(power11) Value(53)
  
  EnumValue
! Enum(rs6000_cpu_opt_value) String(powerpc) Value(54)
  
  EnumValue
! Enum(rs6000_cpu_opt_value) String(powerpc64) Value(55)
  
  EnumValue
! Enum(rs6000_cpu_opt_value) String(powerpc64le) Value(56)
  
  EnumValue
! Enum(rs6000_cpu_opt_value) String(rs64) Value(57)
  
--- 189,205 ----
  Enum(rs6000_cpu_opt_value) String(power11) Value(53)
  
  EnumValue
! Enum(rs6000_cpu_opt_value) String(future) Value(54)
  
  EnumValue
! Enum(rs6000_cpu_opt_value) String(powerpc) Value(55)
  
  EnumValue
! Enum(rs6000_cpu_opt_value) String(powerpc64) Value(56)
  
  EnumValue
! Enum(rs6000_cpu_opt_value) String(powerpc64le) Value(57)
! 
! EnumValue
! Enum(rs6000_cpu_opt_value) String(rs64) Value(58)
  
diff -Nrcpad gcc-16-20260613/gcc/config/rs6000/rs6000.cc gcc-16-20260620/gcc/config/rs6000/rs6000.cc
*** gcc-16-20260613/gcc/config/rs6000/rs6000.cc	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/rs6000/rs6000.cc	Sat Jun 20 22:32:05 2026
*************** rs6000_machine_from_flags (void)
*** 5913,5918 ****
--- 5913,5920 ----
    flags &= ~(OPTION_MASK_PPC_GFXOPT | OPTION_MASK_PPC_GPOPT | OPTION_MASK_ISEL
  	     | OPTION_MASK_ALTIVEC);
  
+   if ((flags & (FUTURE_MASKS_SERVER & ~POWER11_MASKS_SERVER)) != 0)
+     return "future";
    if ((flags & (POWER11_MASKS_SERVER & ~ISA_3_1_MASKS_SERVER)) != 0)
      return "power11";
    if ((flags & (ISA_3_1_MASKS_SERVER & ~ISA_3_0_MASKS_SERVER)) != 0)
*************** static struct rs6000_opt_mask const rs60
*** 24465,24470 ****
--- 24467,24473 ----
    { "fprnd",			OPTION_MASK_FPRND,		false, true  },
    { "power10",			OPTION_MASK_POWER10,		false, true  },
    { "power11",			OPTION_MASK_POWER11,		false, false },
+   { "future",			OPTION_MASK_FUTURE,		false, false },
    { "hard-dfp",			OPTION_MASK_DFP,		false, true  },
    { "htm",			OPTION_MASK_HTM,		false, true  },
    { "isel",			OPTION_MASK_ISEL,		false, true  },
diff -Nrcpad gcc-16-20260613/gcc/config/rs6000/rs6000.h gcc-16-20260620/gcc/config/rs6000/rs6000.h
*** gcc-16-20260613/gcc/config/rs6000/rs6000.h	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/rs6000/rs6000.h	Sat Jun 20 22:32:05 2026
***************
*** 101,106 ****
--- 101,107 ----
     you make changes here, make them also there.  */
  #define ASM_CPU_SPEC \
  "%{mcpu=native: %(asm_cpu_native); \
+   mcpu=future: -mfuture; \
    mcpu=power11: -mpower11; \
    mcpu=power10: -mpower10; \
    mcpu=power9: -mpower9; \
*************** extern int rs6000_vector_align[];
*** 532,540 ****
  				 || TARGET_VSX				 \
  				 || TARGET_HARD_FLOAT)
  
! /* E500 cores only support plain "sync", not lwsync.  */
  #define TARGET_NO_LWSYNC (rs6000_cpu == PROCESSOR_PPC8540 \
! 			  || rs6000_cpu == PROCESSOR_PPC8548)
  
  
  /* Which machine supports the various reciprocal estimate instructions.  */
--- 533,545 ----
  				 || TARGET_VSX				 \
  				 || TARGET_HARD_FLOAT)
  
! /* E500 and MPC8xx cores require all should-be-zero bits in sync to
!    actually be zero; using lwsync (L=1) causes a fault on these cores.
!    Classic cores (601, 603, 604, 750 etc.) simply ignore the L field
!    and always do a full hwsync.  */
  #define TARGET_NO_LWSYNC (rs6000_cpu == PROCESSOR_PPC8540 \
! 			  || rs6000_cpu == PROCESSOR_PPC8548 \
! 			  || rs6000_cpu == PROCESSOR_MPCCORE)
  
  
  /* Which machine supports the various reciprocal estimate instructions.  */
diff -Nrcpad gcc-16-20260613/gcc/config/rs6000/rs6000.opt gcc-16-20260620/gcc/config/rs6000/rs6000.opt
*** gcc-16-20260613/gcc/config/rs6000/rs6000.opt	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config/rs6000/rs6000.opt	Sat Jun 20 22:32:05 2026
*************** Target Undocumented Mask(POWER10) Var(rs
*** 595,600 ****
--- 595,604 ----
  mpower11
  Target Undocumented Mask(POWER11) Var(rs6000_isa_flags) WarnRemoved
  
+ ;; Potential future machine
+ mfuture
+ Target Undocumented Mask(FUTURE) Var(rs6000_isa_flags) Warn(Do not use %<-mfuture>, use %<-mcpu=future>)
+ 
  mprefixed
  Target Mask(PREFIXED) Var(rs6000_isa_flags)
  Generate (do not generate) prefixed memory instructions.
diff -Nrcpad gcc-16-20260613/gcc/config.gcc gcc-16-20260620/gcc/config.gcc
*** gcc-16-20260613/gcc/config.gcc	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/config.gcc	Sat Jun 20 22:32:05 2026
*************** powerpc*-*-*)
*** 555,561 ****
  	extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
  	extra_headers="${extra_headers} amo.h"
  	case x$with_cpu in
! 	    xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower1[01]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
  		cpu_is_64bit=yes
  		;;
  	esac
--- 555,561 ----
  	extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
  	extra_headers="${extra_headers} amo.h"
  	case x$with_cpu in
! 	    xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower1[01]|xfuture|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
  		cpu_is_64bit=yes
  		;;
  	esac
*************** case "${target}" in
*** 5870,5876 ****
  				eval "with_$which=405"
  				;;
  			"" | common | native \
! 			| power[3456789] | power1[01] | power5+ | power6x \
  			| powerpc | powerpc64 | powerpc64le \
  			| rs64 \
  			| 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
--- 5870,5876 ----
  				eval "with_$which=405"
  				;;
  			"" | common | native \
! 			| power[3456789] | power1[01] | future | power5+ | power6x \
  			| powerpc | powerpc64 | powerpc64le \
  			| rs64 \
  			| 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
diff -Nrcpad gcc-16-20260613/gcc/configure gcc-16-20260620/gcc/configure
*** gcc-16-20260613/gcc/configure	Sat Jun 13 22:32:18 2026
--- gcc-16-20260620/gcc/configure	Sat Jun 20 22:32:16 2026
*************** else
*** 26256,26261 ****
--- 26256,26264 ----
        x86_64-*-linux-gnux32*)
  	gcc_cv_as_flags=--x32
  	;;
+       x86_64-*-linux-gnuabi32 | x86_64-*-mingw32abi32)
+ 	gcc_cv_as_flags=--32
+ 	;;
        x86_64-*-* | sparcv9-*-* | sparc64-*-*)
  	gcc_cv_as_flags=--64
  	;;
*************** $as_echo "#define TLS_SECTION_ASM_FLAG '
*** 28114,28120 ****
      conftest_s='
        .section .tdata,"aw'$tls_section_flag'",@progbits'
      case "$target" in
!       i?86-*-*)
  	tls_as_opt="$tls_as_opt $as_32_opt"
  	conftest_s="$conftest_s
  foo:	.long	25
--- 28117,28123 ----
      conftest_s='
        .section .tdata,"aw'$tls_section_flag'",@progbits'
      case "$target" in
!       i?86-*-* | x86_64-*-linux-gnuabi32 | x86_64-*-mingw32abi32)
  	tls_as_opt="$tls_as_opt $as_32_opt"
  	conftest_s="$conftest_s
  foo:	.long	25
diff -Nrcpad gcc-16-20260613/gcc/configure.ac gcc-16-20260620/gcc/configure.ac
*** gcc-16-20260613/gcc/configure.ac	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/configure.ac	Sat Jun 20 22:32:05 2026
*************** changequote(,)dnl
*** 4008,4014 ****
      conftest_s='
        .section .tdata,"aw'$tls_section_flag'",@progbits'
      case "$target" in
!       i?86-*-*)
  	tls_as_opt="$tls_as_opt $as_32_opt"
  	conftest_s="$conftest_s
  foo:	.long	25
--- 4008,4014 ----
      conftest_s='
        .section .tdata,"aw'$tls_section_flag'",@progbits'
      case "$target" in
!       i?86-*-* | x86_64-*-linux-gnuabi32 | x86_64-*-mingw32abi32)
  	tls_as_opt="$tls_as_opt $as_32_opt"
  	conftest_s="$conftest_s
  foo:	.long	25
diff -Nrcpad gcc-16-20260613/gcc/cp/ChangeLog gcc-16-20260620/gcc/cp/ChangeLog
*** gcc-16-20260613/gcc/cp/ChangeLog	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/cp/ChangeLog	Sat Jun 20 22:32:05 2026
***************
*** 1,3 ****
--- 1,37 ----
+ 2026-06-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-06-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125764
+ 	* reflect.cc (eval_can_substitute): Don't call
+ 	convert_from_reference on types.
+ 
+ 2026-06-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-06-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125759
+ 	* reflect.cc (get_reflection): Do STRIP_REFERENCE_REF.
+ 
+ 2026-06-16  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-05-04  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR c++/65271
+ 	* parser.cc (cp_parser_class_specifier): Accept &&.
+ 
+ 2026-06-16  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-06-16  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125770
+ 	* decl2.cc (mark_used): Check complain & tf_error before giving
+ 	an error.
+ 
  2026-06-10  Marek Polacek  <polacek@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260613/gcc/cp/decl2.cc gcc-16-20260620/gcc/cp/decl2.cc
*** gcc-16-20260613/gcc/cp/decl2.cc	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/cp/decl2.cc	Sat Jun 20 22:32:05 2026
*************** mark_used (tree decl, tsubst_flags_t com
*** 6806,6813 ****
  
    if (builtin_pack_fn_p (decl))
      {
!       error ("use of built-in parameter pack %qD outside of a template",
! 	     DECL_NAME (decl));
        return false;
      }
  
--- 6806,6814 ----
  
    if (builtin_pack_fn_p (decl))
      {
!       if (complain & tf_error)
! 	error ("use of built-in parameter pack %qD outside of a template",
! 	       DECL_NAME (decl));
        return false;
      }
  
diff -Nrcpad gcc-16-20260613/gcc/cp/parser.cc gcc-16-20260620/gcc/cp/parser.cc
*** gcc-16-20260613/gcc/cp/parser.cc	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/cp/parser.cc	Sat Jun 20 22:32:05 2026
*************** cp_parser_class_specifier (cp_parser* pa
*** 29826,29831 ****
--- 29826,29832 ----
        case CPP_SEMICOLON:
        case CPP_MULT:
        case CPP_AND:
+       case CPP_AND_AND:
        case CPP_OPEN_PAREN:
        case CPP_CLOSE_PAREN:
        case CPP_COMMA:
diff -Nrcpad gcc-16-20260613/gcc/cp/reflect.cc gcc-16-20260620/gcc/cp/reflect.cc
*** gcc-16-20260613/gcc/cp/reflect.cc	Sat Jun 13 22:32:06 2026
--- gcc-16-20260620/gcc/cp/reflect.cc	Sat Jun 20 22:32:05 2026
*************** tree
*** 135,140 ****
--- 135,141 ----
  get_reflection (location_t loc, tree t, reflect_kind kind/*=REFLECT_UNDEF*/)
  {
    STRIP_ANY_LOCATION_WRAPPER (t);
+   t = STRIP_REFERENCE_REF (t);
  
    /* Constant template parameters and pack-index-expressions cannot
       appear as operands of the reflection operator.  */
*************** eval_can_substitute (location_t loc, con
*** 5513,5519 ****
  	return throw_exception (loc, ctx,
  				"invalid argument to can_substitute",
  				fun, non_constant_p, jump_target);
!       a = convert_from_reference (a);
        TREE_VEC_ELT (rvec, i) = a;
      }
    if (DECL_TYPE_TEMPLATE_P (r) || DECL_TEMPLATE_TEMPLATE_PARM_P (r))
--- 5514,5521 ----
  	return throw_exception (loc, ctx,
  				"invalid argument to can_substitute",
  				fun, non_constant_p, jump_target);
!       if (!TYPE_P (a))
! 	a = convert_from_reference (a);
        TREE_VEC_ELT (rvec, i) = a;
      }
    if (DECL_TYPE_TEMPLATE_P (r) || DECL_TEMPLATE_TEMPLATE_PARM_P (r))
diff -Nrcpad gcc-16-20260613/gcc/doc/extend.texi gcc-16-20260620/gcc/doc/extend.texi
*** gcc-16-20260613/gcc/doc/extend.texi	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/doc/extend.texi	Sat Jun 20 22:32:06 2026
*************** The preprocessor symbols @code{__SEG_FS}
*** 1618,1630 ****
  defined when these address spaces are supported.
  @end table
  
  @anchor{Function Attributes}
  @anchor{Variable Attributes}
  @anchor{Type Attributes}
  @anchor{Label Attributes}
  @anchor{Enumerator Attributes}
  @anchor{Statement Attributes}
- @node Attributes
  @section Attributes Specific to GCC
  @cindex attributes
  @cindex declaring attributes
--- 1618,1630 ----
  defined when these address spaces are supported.
  @end table
  
+ @node Attributes
  @anchor{Function Attributes}
  @anchor{Variable Attributes}
  @anchor{Type Attributes}
  @anchor{Label Attributes}
  @anchor{Enumerator Attributes}
  @anchor{Statement Attributes}
  @section Attributes Specific to GCC
  @cindex attributes
  @cindex declaring attributes
*************** ordinary functions or C++ member functio
*** 1807,1816 ****
  * Attribute Syntax::            Formal syntax for traditional GNU attributes.
  @end menu
  
  @anchor{Common Function Attributes}
  @anchor{Common Variable Attributes}
  @anchor{Common Type Attributes}
- @node Common Attributes
  @subsection Common Attributes
  
  The following GNU-specific attributes are supported on most targets in
--- 1807,1816 ----
  * Attribute Syntax::            Formal syntax for traditional GNU attributes.
  @end menu
  
+ @node Common Attributes
  @anchor{Common Function Attributes}
  @anchor{Common Variable Attributes}
  @anchor{Common Type Attributes}
  @subsection Common Attributes
  
  The following GNU-specific attributes are supported on most targets in
*************** The default for the attribute is control
*** 5731,5738 ****
  * Xstormy16 Attributes::
  @end menu
  
- @anchor{AArch64 Function Attributes}
  @node AArch64 Attributes
  @subsubsection AArch64 Attributes
  
  The following target-specific function attributes are available for the
--- 5731,5738 ----
  * Xstormy16 Attributes::
  @end menu
  
  @node AArch64 Attributes
+ @anchor{AArch64 Function Attributes}
  @subsubsection AArch64 Attributes
  
  The following target-specific function attributes are available for the
*************** architectural feature rules specified ab
*** 5954,5961 ****
  
  @end table
  
- @anchor{AMD GCN Function Attributes}
  @node AMD GCN Attributes
  @subsubsection AMD GCN Attributes
  
  These attributes are supported by the AMD GCN back end:
--- 5954,5961 ----
  
  @end table
  
  @node AMD GCN Attributes
+ @anchor{AMD GCN Function Attributes}
  @subsubsection AMD GCN Attributes
  
  These attributes are supported by the AMD GCN back end:
*************** OpenACC/OpenMP).
*** 6047,6056 ****
  @end table
  @end table
  
  @anchor{ARC Function Attributes}
  @anchor{ARC Type Attributes}
  @anchor{ARC Variable Attributes}
- @node ARC Attributes
  @subsubsection ARC Attributes
  
  These attributes are supported by the ARC back end:
--- 6047,6056 ----
  @end table
  @end table
  
+ @node ARC Attributes
  @anchor{ARC Function Attributes}
  @anchor{ARC Type Attributes}
  @anchor{ARC Variable Attributes}
  @subsubsection ARC Attributes
  
  These attributes are supported by the ARC back end:
*************** without involving the additional semanti
*** 6145,6153 ****
  loads and stores of data declared @code{uncached}.
  @end table
  
  @anchor{ARM Function Attributes}
  @anchor{ARM Type Attributes}
- @node ARM Attributes
  @subsubsection ARM Attributes
  
  These attributes are supported for ARM targets:
--- 6145,6153 ----
  loads and stores of data declared @code{uncached}.
  @end table
  
+ @node ARM Attributes
  @anchor{ARM Function Attributes}
  @anchor{ARM Type Attributes}
  @subsubsection ARM Attributes
  
  These attributes are supported for ARM targets:
*************** most Symbian OS code uses @code{__declsp
*** 6326,6334 ****
  
  @end table
  
  @anchor{AVR Function Attributes}
  @anchor{AVR Variable Attributes}
- @node AVR Attributes
  @subsubsection AVR Attributes
  
  These attributes are supported by the AVR back end:
--- 6326,6334 ----
  
  @end table
  
+ @node AVR Attributes
  @anchor{AVR Function Attributes}
  @anchor{AVR Variable Attributes}
  @subsubsection AVR Attributes
  
  These attributes are supported by the AVR back end:
*************** See also the @option{-mabsdata} @ref{AVR
*** 6671,6679 ****
  
  @end table
  
  @anchor{Blackfin Function Attributes}
  @anchor{Blackfin Variable Attributes}
- @node Blackfin Attributes
  @subsubsection Blackfin Attributes
  
  These attributes are supported by the Blackfin back end:
--- 6671,6679 ----
  
  @end table
  
+ @node Blackfin Attributes
  @anchor{Blackfin Function Attributes}
  @anchor{Blackfin Variable Attributes}
  @subsubsection Blackfin Attributes
  
  These attributes are supported by the Blackfin back end:
*************** the specific section named @code{.l1.dat
*** 6789,6797 ****
  attribute are put into the specific section named @code{.l1.data.B}.
  @end table
  
  @anchor{BPF Function Attributes}
  @anchor{BPF Type Attributes}
- @node BPF Attributes
  @subsubsection BPF Attributes
  
  These attributes are supported by the BPF back end:
--- 6789,6797 ----
  attribute are put into the specific section named @code{.l1.data.B}.
  @end table
  
+ @node BPF Attributes
  @anchor{BPF Function Attributes}
  @anchor{BPF Type Attributes}
  @subsubsection BPF Attributes
  
  These attributes are supported by the BPF back end:
*************** of that type. The behavior is equivalent
*** 6823,6830 ****
  wrapping every such access with @code{__builtin_preserve_access_index}.
  @end table
  
- @anchor{C-SKY Function Attributes}
  @node C-SKY Attributes
  @subsubsection C-SKY Attributes
  
  These attributes are supported by the C-SKY back end:
--- 6823,6830 ----
  wrapping every such access with @code{__builtin_preserve_access_index}.
  @end table
  
  @node C-SKY Attributes
+ @anchor{C-SKY Function Attributes}
  @subsubsection C-SKY Attributes
  
  These attributes are supported by the C-SKY back end:
*************** are ignored with a warning otherwise.  @
*** 6847,6854 ****
  @end table
  
  
- @anchor{Epiphany Function Attributes}
  @node Epiphany Attributes
  @subsubsection Epiphany Attributes
  
  These attributes are supported by the Epiphany back end:
--- 6847,6854 ----
  @end table
  
  
  @node Epiphany Attributes
+ @anchor{Epiphany Function Attributes}
  @subsubsection Epiphany Attributes
  
  These attributes are supported by the Epiphany back end:
*************** command-line switch and @code{#pragma lo
*** 6929,6937 ****
  @end table
  
  
  @anchor{H8/300 Function Attributes}
  @anchor{H8/300 Variable Attributes}
- @node H8/300 Attributes
  @subsubsection H8/300 Attributes
  
  These attributes are available for H8/300 targets:
--- 6929,6937 ----
  @end table
  
  
+ @node H8/300 Attributes
  @anchor{H8/300 Function Attributes}
  @anchor{H8/300 Variable Attributes}
  @subsubsection H8/300 Attributes
  
  These attributes are available for H8/300 targets:
*************** on data in the tiny data section.  Note
*** 7006,7014 ****
  slightly under 32KB of data.
  @end table
  
  @anchor{IA-64 Function Attributes}
  @anchor{IA-64 Variable Attributes}
- @node IA-64 Attributes
  @subsubsection IA-64 Attributes
  
  These attributes are supported on IA-64 targets:
--- 7006,7014 ----
  slightly under 32KB of data.
  @end table
  
+ @node IA-64 Attributes
  @anchor{IA-64 Function Attributes}
  @anchor{IA-64 Variable Attributes}
  @subsubsection IA-64 Attributes
  
  These attributes are supported on IA-64 targets:
*************** independent and hence this attribute mus
*** 7053,7061 ****
  defined by shared libraries.
  @end table
  
  @anchor{LoongArch Function Attributes}
  @anchor{LoongArch Variable Attributes}
- @node LoongArch Attributes
  @subsubsection LoongArch Attributes
  
  The following attributes are supported by the LoongArch back end:
--- 7053,7061 ----
  defined by shared libraries.
  @end table
  
+ @node LoongArch Attributes
  @anchor{LoongArch Function Attributes}
  @anchor{LoongArch Variable Attributes}
  @subsubsection LoongArch Attributes
  
  The following attributes are supported by the LoongArch back end:
*************** specially.  Currently the only supported
*** 7383,7390 ****
  @code{normal} and @code{extreme}.
  @end table
  
- @anchor{M32C Function Attributes}
  @node M32C Attributes
  @subsubsection M32C Attributes
  
  These attributes are supported by the M32C back end:
--- 7383,7390 ----
  @code{normal} and @code{extreme}.
  @end table
  
  @node M32C Attributes
+ @anchor{M32C Function Attributes}
  @subsubsection M32C Attributes
  
  These attributes are supported by the M32C back end:
*************** function entry and exit sequences suitab
*** 7455,7463 ****
  when this attribute is present.
  @end table
  
  @anchor{M32R/D Function Attributes}
  @anchor{M32R/D Variable Attributes}
- @node M32R/D Attributes
  @subsubsection M32R/D Attributes
  
  These attributes are supported by the M32R/D back end:
--- 7455,7463 ----
  when this attribute is present.
  @end table
  
+ @node M32R/D Attributes
  @anchor{M32R/D Function Attributes}
  @anchor{M32R/D Variable Attributes}
  @subsubsection M32R/D Attributes
  
  These attributes are supported by the M32R/D back end:
*************** and may not be reachable with the @code{
*** 7497,7504 ****
  generates the much slower @code{seth/add3/jl} instruction sequence).
  @end table
  
- @anchor{m68k Function Attributes}
  @node m68k Attributes
  @subsubsection m68k Attributes
  
  These attributes are supported by the m68k back end:
--- 7497,7504 ----
  generates the much slower @code{seth/add3/jl} instruction sequence).
  @end table
  
  @node m68k Attributes
+ @anchor{m68k Function Attributes}
  @subsubsection m68k Attributes
  
  These attributes are supported by the m68k back end:
*************** sequences and replaces the return instru
*** 7526,7533 ****
  instruction.  This attribute is available only on fido.
  @end table
  
- @anchor{MicroBlaze Function Attributes}
  @node MicroBlaze Attributes
  @subsubsection MicroBlaze Attributes
  
  These attributes are supported on MicroBlaze targets:
--- 7526,7533 ----
  instruction.  This attribute is available only on fido.
  @end table
  
  @node MicroBlaze Attributes
+ @anchor{MicroBlaze Function Attributes}
  @subsubsection MicroBlaze Attributes
  
  These attributes are supported on MicroBlaze targets:
*************** emits appropriate prologue code and gene
*** 7572,7580 ****
  using @code{rtid} instead of @code{rtsd}.
  @end table
  
  @anchor{Microsoft Windows Function Attributes}
  @anchor{Microsoft Windows Variable Attributes}
- @node Microsoft Windows Attributes
  @subsubsection Microsoft Windows Attributes
  
  @cindex @code{__declspec}
--- 7572,7580 ----
  using @code{rtid} instead of @code{rtsd}.
  @end table
  
+ @node Microsoft Windows Attributes
  @anchor{Microsoft Windows Function Attributes}
  @anchor{Microsoft Windows Variable Attributes}
  @subsubsection Microsoft Windows Attributes
  
  @cindex @code{__declspec}
*************** linkers work.  See @code{section} attrib
*** 7733,7740 ****
  The @code{shared} attribute is only available on Microsoft Windows@.
  @end table
  
- @anchor{MIPS Function Attributes}
  @node MIPS Attributes
  @subsubsection MIPS Attributes
  
  These attributes are supported by the MIPS back end:
--- 7733,7740 ----
  The @code{shared} attribute is only available on Microsoft Windows@.
  @end table
  
  @node MIPS Attributes
+ @anchor{MIPS Function Attributes}
  @subsubsection MIPS Attributes
  
  These attributes are supported by the MIPS back end:
*************** The function can read the instruction st
*** 7903,7911 ****
  If there is no argument supplied, the default of @code{"yes"} applies.
  @end table
  
  @anchor{MSP430 Function Attributes}
  @anchor{MSP430 Variable Attributes}
- @node MSP430 Attributes
  @subsubsection MSP430 Attributes
  
  These attributes are supported by the MSP430 back end:
--- 7903,7911 ----
  If there is no argument supplied, the default of @code{"yes"} applies.
  @end table
  
+ @node MSP430 Attributes
  @anchor{MSP430 Function Attributes}
  @anchor{MSP430 Variable Attributes}
  @subsubsection MSP430 Attributes
  
  These attributes are supported by the MSP430 back end:
*************** is used, and the @code{.lower} prefix is
*** 8009,8016 ****
  
  @end table
  
- @anchor{NDS32 Function Attributes}
  @node NDS32 Attributes
  @subsubsection NDS32 Attributes
  
  These attributes are supported by the NDS32 back end:
--- 8009,8016 ----
  
  @end table
  
  @node NDS32 Attributes
+ @anchor{NDS32 Function Attributes}
  @subsubsection NDS32 Attributes
  
  These attributes are supported by the NDS32 back end:
*************** Provide a user-defined function to handl
*** 8074,8082 ****
  @end table
  @end table
  
  @anchor{Nvidia PTX Function Attributes}
  @anchor{Nvidia PTX Variable Attributes}
- @node Nvidia PTX Attributes
  @subsubsection Nvidia PTX Attributes
  
  These attributes are supported by the Nvidia PTX back end:
--- 8074,8082 ----
  @end table
  @end table
  
+ @node Nvidia PTX Attributes
  @anchor{Nvidia PTX Function Attributes}
  @anchor{Nvidia PTX Variable Attributes}
  @subsubsection Nvidia PTX Attributes
  
  These attributes are supported by the Nvidia PTX back end:
*************** within one thread block refer to the sam
*** 8103,8112 ****
  The runtime does not initialize variables in this memory space.
  @end table
  
  @anchor{PowerPC Function Attributes}
  @anchor{PowerPC Type Attributes}
  @anchor{PowerPC Variable Attributes}
- @node PowerPC Attributes
  @subsubsection PowerPC Attributes
  
  These attributes are supported by the PowerPC back end:
--- 8103,8112 ----
  The runtime does not initialize variables in this memory space.
  @end table
  
+ @node PowerPC Attributes
  @anchor{PowerPC Function Attributes}
  @anchor{PowerPC Type Attributes}
  @anchor{PowerPC Variable Attributes}
  @subsubsection PowerPC Attributes
  
  These attributes are supported by the PowerPC back end:
*************** These attributes mainly are intended to
*** 8335,8342 ****
  @code{__pixel}, and @code{__bool} AltiVec keywords.
  @end table
  
- @anchor{RISC-V Function Attributes}
  @node RISC-V Attributes
  @subsubsection RISC-V Attributes
  
  These attributes are supported by the RISC-V back end:
--- 8335,8342 ----
  @code{__pixel}, and @code{__bool} AltiVec keywords.
  @end table
  
  @node RISC-V Attributes
+ @anchor{RISC-V Function Attributes}
  @subsubsection RISC-V Attributes
  
  These attributes are supported by the RISC-V back end:
*************** and @code{zbb} extensions and tunes it f
*** 8449,8457 ****
  
  @end table
  
  @anchor{RL78 Function Attributes}
  @anchor{RL78 Variable Attributes}
- @node RL78 Attributes
  @subsubsection RL78 Attributes
  
  These attributes are supported by the RL78 back end:
--- 8449,8457 ----
  
  @end table
  
+ @node RL78 Attributes
  @anchor{RL78 Function Attributes}
  @anchor{RL78 Variable Attributes}
  @subsubsection RL78 Attributes
  
  These attributes are supported by the RL78 back end:
*************** which can be accessed more efficiently t
*** 8482,8489 ****
  
  @end table
  
- @anchor{RX Function Attributes}
  @node RX Attributes
  @subsubsection RX Attributes
  
  These attributes are supported by the RX back end:
--- 8482,8489 ----
  
  @end table
  
  @node RX Attributes
+ @anchor{RX Function Attributes}
  @subsubsection RX Attributes
  
  These attributes are supported by the RX back end:
*************** function (i.e.@: it retains the normal C
*** 8539,8546 ****
  @code{interrupt} attribute for a description of its arguments.
  @end table
  
- @anchor{S/390 Function Attributes}
  @node S/390 Attributes
  @subsubsection S/390 Attributes
  
  These attributes are supported on the S/390:
--- 8539,8546 ----
  @code{interrupt} attribute for a description of its arguments.
  @end table
  
  @node S/390 Attributes
+ @anchor{S/390 Function Attributes}
  @subsubsection S/390 Attributes
  
  These attributes are supported on the S/390:
*************** change any feature macros.  For example,
*** 8609,8616 ****
  does not undefine the @code{__VEC__} macro.
  @end table
  
- @anchor{SH Function Attributes}
  @node SH Attributes
  @subsubsection SH Attributes
  
  These attributes are supported on the SH family of processors:
--- 8609,8616 ----
  does not undefine the @code{__VEC__} macro.
  @end table
  
  @node SH Attributes
+ @anchor{SH Function Attributes}
  @subsubsection SH Attributes
  
  These attributes are supported on the SH family of processors:
*************** On SH targets this attribute is similar
*** 8706,8721 ****
  but it does not save and restore all registers.
  @end table
  
- @anchor{Symbian OS Function Attributes}
  @node Symbian OS Attributes
  @subsubsection Symbian OS Attributes
  
  @xref{Microsoft Windows Attributes}, for discussion of the
  @code{dllexport} and @code{dllimport} attributes.
  
  @anchor{V850 Function Attributes}
  @anchor{V850 Variable Attributes}
- @node V850 Attributes
  @subsubsection V850 Attributes
  
  The V850 back end supports these attributes:
--- 8706,8721 ----
  but it does not save and restore all registers.
  @end table
  
  @node Symbian OS Attributes
+ @anchor{Symbian OS Function Attributes}
  @subsubsection Symbian OS Attributes
  
  @xref{Microsoft Windows Attributes}, for discussion of the
  @code{dllexport} and @code{dllimport} attributes.
  
+ @node V850 Attributes
  @anchor{V850 Function Attributes}
  @anchor{V850 Variable Attributes}
  @subsubsection V850 Attributes
  
  The V850 back end supports these attributes:
*************** Use it to explicitly place a variable in
*** 8754,8761 ****
  of memory.
  @end table
  
- @anchor{Visium Function Attributes}
  @node Visium Attributes
  @subsubsection Visium Attributes
  
  These attributes are supported by the Visium back end:
--- 8754,8761 ----
  of memory.
  @end table
  
  @node Visium Attributes
+ @anchor{Visium Function Attributes}
  @subsubsection Visium Attributes
  
  These attributes are supported by the Visium back end:
*************** function entry and exit sequences suitab
*** 8771,8780 ****
  when this attribute is present.
  @end table
  
  @anchor{x86 Function Attributes}
  @anchor{x86 Type Attributes}
  @anchor{x86 Variable Attributes}
- @node x86 Attributes
  @subsubsection x86 Attributes
  
  These attributes are supported by the x86 back end:
--- 8771,8780 ----
  when this attribute is present.
  @end table
  
+ @node x86 Attributes
  @anchor{x86 Function Attributes}
  @anchor{x86 Type Attributes}
  @anchor{x86 Variable Attributes}
  @subsubsection x86 Attributes
  
  These attributes are supported by the x86 back end:
*************** see @ref{x86 Options}, for details of ho
*** 9782,9790 ****
  @end table
  
  
  @anchor{Xstormy16 Function Attributes}
  @anchor{Xstormy16 Variable Attributes}
- @node Xstormy16 Attributes
  @subsubsection Xstormy16 Attributes
  
  These attributes are supported by the Xstormy16 back end:
--- 9782,9790 ----
  @end table
  
  
+ @node Xstormy16 Attributes
  @anchor{Xstormy16 Function Attributes}
  @anchor{Xstormy16 Variable Attributes}
  @subsubsection Xstormy16 Attributes
  
  These attributes are supported by the Xstormy16 back end:
diff -Nrcpad gcc-16-20260613/gcc/doc/invoke.texi gcc-16-20260620/gcc/doc/invoke.texi
*** gcc-16-20260613/gcc/doc/invoke.texi	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/doc/invoke.texi	Sat Jun 20 22:32:06 2026
*************** problems or, in some cases, to provide w
*** 21141,21148 ****
  for documentation of these internal parameters.
  @end table
  
- @anchor{Submodel Options}
  @node Target-Specific Options
  @section Target-Specific Options
  @cindex submodel options
  @cindex hardware-specific options
--- 21141,21148 ----
  for documentation of these internal parameters.
  @end table
  
  @node Target-Specific Options
+ @anchor{Submodel Options}
  @section Target-Specific Options
  @cindex submodel options
  @cindex hardware-specific options
*************** Supported values for @var{cpu_type} are
*** 31588,31595 ****
  @samp{e6500}, @samp{ec603e}, @samp{G3}, @samp{G4}, @samp{G5},
  @samp{titan}, @samp{power3}, @samp{power4}, @samp{power5}, @samp{power5+},
  @samp{power6}, @samp{power6x}, @samp{power7}, @samp{power8},
! @samp{power9}, @samp{power10}, @samp{power11}, @samp{powerpc}, @samp{powerpc64},
! @samp{powerpc64le}, @samp{rs64}, and @samp{native}.
  
  @option{-mcpu=powerpc}, @option{-mcpu=powerpc64}, and
  @option{-mcpu=powerpc64le} specify pure 32-bit PowerPC (either
--- 31588,31595 ----
  @samp{e6500}, @samp{ec603e}, @samp{G3}, @samp{G4}, @samp{G5},
  @samp{titan}, @samp{power3}, @samp{power4}, @samp{power5}, @samp{power5+},
  @samp{power6}, @samp{power6x}, @samp{power7}, @samp{power8},
! @samp{power9}, @samp{power10}, @samp{power11}, @samp{future}, @samp{powerpc},
! @samp{powerpc64}, @samp{powerpc64le}, @samp{rs64}, and @samp{native}.
  
  @option{-mcpu=powerpc}, @option{-mcpu=powerpc64}, and
  @option{-mcpu=powerpc64le} specify pure 32-bit PowerPC (either
diff -Nrcpad gcc-16-20260613/gcc/expmed.cc gcc-16-20260620/gcc/expmed.cc
*** gcc-16-20260613/gcc/expmed.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/expmed.cc	Sat Jun 20 22:32:06 2026
*************** make_tree (tree type, rtx x)
*** 5393,5398 ****
--- 5393,5401 ----
        t = wide_int_to_tree (type, rtx_mode_t (x, TYPE_MODE (type)));
        return t;
  
+     case CONST_POLY_INT:
+       return wide_int_to_tree (type, const_poly_int_value (x));
+ 
      case CONST_DOUBLE:
        STATIC_ASSERT (HOST_BITS_PER_WIDE_INT * 2 <= MAX_BITSIZE_MODE_ANY_INT);
        if (TARGET_SUPPORTS_WIDE_INT == 0 && GET_MODE (x) == VOIDmode)
*************** make_tree (tree type, rtx x)
*** 5484,5492 ****
        /* fall through.  */
  
      default:
-       if (CONST_POLY_INT_P (x))
- 	return wide_int_to_tree (t, const_poly_int_value (x));
- 
        t = build_decl (RTL_LOCATION (x), VAR_DECL, NULL_TREE, type);
  
        /* If TYPE is a POINTER_TYPE, we might need to convert X from
--- 5487,5492 ----
diff -Nrcpad gcc-16-20260613/gcc/fortran/ChangeLog gcc-16-20260620/gcc/fortran/ChangeLog
*** gcc-16-20260613/gcc/fortran/ChangeLog	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/fortran/ChangeLog	Sat Jun 20 22:32:06 2026
***************
*** 1,3 ****
--- 1,170 ----
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125430
+ 	* trans-decl.cc (build_function_decl): Set TREE_PUBLIC for all
+ 	module-contained procedures so submodules compiled as separate
+ 	translation units can reach them via host association.  Also set
+ 	DECL_VISIBILITY to VISIBILITY_HIDDEN for PRIVATE procedures,
+ 	matching the existing treatment of module variables.
+ 
+ 2026-06-15  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/125527
+ 	* class.cc (gfc_find_derived_vtab): Stash module namespace and
+ 	use it as the last place to search for the vtab before building
+ 	a new one.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125535
+ 	* trans-array.cc (gfc_constructor_is_owned_alloc_comp): New function.
+ 	(gfc_trans_array_constructor_value): Add OWNED_SWEEP parameter and,
+ 	when set, suppress the per-element finalization.  Pass it through the
+ 	recursive call.
+ 	(trans_array_constructor): Compute OWNED_SWEEP and, when set,
+ 	deallocate the allocatable components of the whole temporary in one
+ 	sweep.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125650
+ 	* match.cc (match_association_list): Handle ASSOCIATE selectors
+ 	that are overloaded intrinsic operator expressions by extending
+ 	them with gfc_extend_expr at parse time, so the associate name is
+ 	typed before the construct body is parsed.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125481
+ 	* interface.cc (gfc_compare_actual_formal): Add missing check that
+ 	rejects a procedure-pointer actual argument corresponding to a
+ 	data-object dummy argument (F23:15.5.2.5, para 2).  Restrict to
+ 	EXPR_VARIABLE to avoid false positives on calls through procedure
+ 	pointer components.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125527
+ 	* class.cc (gfc_find_derived_vtab): Stop the top-level namespace
+ 	walk at module/submodule boundaries to avoid escaping a submodule
+ 	into its ancestor module namespace.
+ 	* openmp.cc (gfc_omp_requires_add_clause): Likewise; treat the
+ 	submodule as its own program unit for OMP REQUIRES.
+ 	(gfc_match_omp_requires): Likewise; allow OMP REQUIRES in a submodule
+ 	spec part even when gfc_current_ns->parent is now non-NULL.
+ 	(gfc_match_omp_atomic): Likewise.
+ 	* parse.cc (parse_module): After processing USE statements and
+ 	host-association traversal, link the submodule namespace to its
+ 	ancestor module namespace so internal subprograms are visible via
+ 	host association (Fortran 2018, 14.6.1.3).
+ 	(clean_up_modules): Reset gfc_current_ns->parent before gfc_done_2
+ 	to prevent double-free of the ancestor module namespace.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125528
+ 	* class.cc (find_typebound_proc_uop): Set root = NULL instead of
+ 	returning NULL when derived type lacks f2k_derived, so parent-type
+ 	type-bound procedures and operators are still found via inheritance.
+ 	* match.cc (resolve_assoc_operand): New helper.
+ 	(infer_typebound_uop_type): New helper.
+ 	(extend_assoc_op): New helper.
+ 	(match_association_list): Handle ASSOCIATE selectors that are
+ 	type-bound user-defined operator expressions, including nested cases.
+ 	* resolve.cc (resolve_typebound_procedures): Move resolve_symbol
+ 	call for the parent type before the early return so inherited
+ 	type-bound bindings are resolved even when the child type has none
+ 	of its own.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125529
+ 	* resolve.cc (check_default_none_expr): Use d->code instead of
+ 	sym->ns->code to locate the DO CONCURRENT forall_iterator list,
+ 	avoiding a wrong-union-member read when the symbol's namespace is
+ 	an ASSOCIATE body.  Skip leading underscore when comparing iterator
+ 	names for shadow iterators.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125530
+ 	* match.cc (gfc_match_call): Route ASSOCIATE names followed by '%'
+ 	to match_typebound_call without first resolving the selector, to
+ 	avoid prematurely marking a contained-function selector as EXTERNAL.
+ 	* symbol.cc (find_derived_types): Also search type-bound procedure
+ 	names via gfc_find_typebound_proc when inferring the type of an
+ 	inferred-type ASSOCIATE name; exclude vtable types.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125531
+ 	* primary.cc (gfc_match_varspec): Before erroring on a zero-argument
+ 	COMPCALL, check for a same-named data component and fall back to the
+ 	data-component path.  For inferred-type ASSOCIATE names, retry
+ 	gfc_find_component with noaccess=true when the normal search fails.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	* resolve.cc (replace_in_code_recursive): Add EXEC_BLOCK case to
+ 	replace shadow iterator references in ASSOCIATE selector expressions
+ 	and the ASSOCIATE body namespace.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125534
+ 	* trans-stmt.cc (gfc_trans_allocate): Use GFC_TYPE_ARRAY_RANK from
+ 	the GFC descriptor type when se.expr is a descriptor, rather than
+ 	expr->rank, for the rank passed to gfc_allocate_pdt_comp.  Apply
+ 	the same fix to the CLASS path.
+ 	(gfc_trans_deallocate): Likewise for gfc_deallocate_pdt_comp.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125535
+ 	* trans-expr.cc (gfc_conv_procedure_call): Move post block append
+ 	to after the deep copy of allocatable components for transformational
+ 	intrinsics, so that argument temporaries are not freed before the
+ 	result components are copied.
+ 
  2026-06-09  Paul Thomas  <pault@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260613/gcc/fortran/class.cc gcc-16-20260620/gcc/fortran/class.cc
*** gcc-16-20260613/gcc/fortran/class.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/fortran/class.cc	Sat Jun 20 22:32:06 2026
*************** gfc_find_derived_vtab (gfc_symbol *deriv
*** 2461,2469 ****
    if (derived->attr.pdt_template)
      return NULL;
  
!   /* Find the top-level namespace.  */
    for (ns = gfc_current_ns; ns; ns = ns->parent)
!     if (!ns->parent)
        break;
  
    /* If the type is a class container, use the underlying derived type.  */
--- 2461,2474 ----
    if (derived->attr.pdt_template)
      return NULL;
  
!   /* Find the top-level namespace, stopping at module/submodule boundaries.
!      A submodule's namespace may have its parent pointer set to the ancestor
!      module namespace for host-association purposes; we must not escape that
!      boundary, because vtables for types defined in a submodule belong in
!      the submodule namespace, not in its parent module.  */
    for (ns = gfc_current_ns; ns; ns = ns->parent)
!     if (!ns->parent
! 	|| (ns->proc_name && ns->proc_name->attr.flavor == FL_MODULE))
        break;
  
    /* If the type is a class container, use the underlying derived type.  */
*************** gfc_find_derived_vtab (gfc_symbol *deriv
*** 2486,2491 ****
--- 2491,2497 ----
    /* Work in the gsymbol namespace if the top-level namespace is a module.
       This ensures that the vtable is unique, which is required since we use
       its address in SELECT TYPE.  */
+   gfc_namespace *module_ns = ns;
    if (gsym && gsym->ns && ns && ns->proc_name
        && ns->proc_name->attr.flavor == FL_MODULE)
      ns = gsym->ns;
*************** gfc_find_derived_vtab (gfc_symbol *deriv
*** 2511,2516 ****
--- 2517,2527 ----
  	gfc_find_symbol (name, ns, 0, &vtab);
        if (vtab == NULL)
  	gfc_find_symbol (name, derived->ns, 0, &vtab);
+       /* If all else fails, look in the module/submodule namespace so that
+ 	 the module variable and procedure body translations find the same
+ 	 frontend symbol and backend decl.  */
+       if (vtab == NULL && module_ns != ns)
+ 	gfc_find_symbol (name, module_ns, 0, &vtab);
  
        if (vtab == NULL)
  	{
diff -Nrcpad gcc-16-20260613/gcc/fortran/interface.cc gcc-16-20260620/gcc/fortran/interface.cc
*** gcc-16-20260613/gcc/fortran/interface.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/fortran/interface.cc	Sat Jun 20 22:32:06 2026
*************** gfc_compare_actual_formal (gfc_actual_ar
*** 3817,3822 ****
--- 3817,3840 ----
  	  goto match;
  	}
  
+       /* F23:15.5.2.5, para 2: A procedure pointer actual argument cannot correspond
+ 	 to a data-object dummy argument (reverse of the two checks above).
+ 	 Only flag EXPR_VARIABLE to avoid false positives on function calls
+ 	 through procedure pointer components (e.g. o%f(args)).  */
+       if (!f->sym->attr.proc_pointer
+ 	  && f->sym->attr.flavor != FL_PROCEDURE
+ 	  && a->expr->expr_type == EXPR_VARIABLE
+ 	  && (a->expr->symtree->n.sym->attr.proc_pointer
+ 	      || gfc_is_proc_ptr_comp (a->expr)))
+ 	{
+ 	  if (where)
+ 	    gfc_error ("Procedure pointer actual argument at %L cannot "
+ 		       "be passed to data-object dummy argument %qs",
+ 		       &a->expr->where, f->sym->name);
+ 	  ok = false;
+ 	  goto match;
+ 	}
+ 
        /* Class array variables and expressions store array info in a
  	 different place from non-class objects; consolidate the logic
  	 to access it here instead of repeating it below.  Note that
diff -Nrcpad gcc-16-20260613/gcc/fortran/match.cc gcc-16-20260620/gcc/fortran/match.cc
*** gcc-16-20260613/gcc/fortran/match.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/fortran/match.cc	Sat Jun 20 22:32:06 2026
*************** check_coarray_assoc (const char *name, g
*** 1980,1985 ****
--- 1980,2134 ----
    return true;
  }
  
+ /* Try to resolve an EXPR_FUNCTION operand so its return type is known.
+    Called during ASSOCIATE selector parsing, before type-bound operator
+    extension, when the operand is an unresolved generic constructor call
+    such as `scalar_1D_t(initializer, order=2, ...)`.  Errors are suppressed
+    since we are still in the parsing phase.  */
+ 
+ static void
+ resolve_assoc_operand (gfc_expr *e)
+ {
+   if (!e || e->ts.type != BT_UNKNOWN || e->expr_type != EXPR_FUNCTION)
+     return;
+ 
+   /* First, try full expression resolution (works when argument types are
+      already known at parse time).  */
+   gfc_push_suppress_errors ();
+   gfc_resolve_expr (e);
+   gfc_pop_suppress_errors ();
+ 
+   if (e->ts.type != BT_UNKNOWN)
+     return;
+ 
+   /* Fallback for generic constructor interfaces such as
+        scalar_1D_t(initializer, order=2, cells=16, x_min=0D0, x_max=5D0)
+      where full argument resolution is not possible at parse time.
+      If the function name resolves to a generic interface that wraps a
+      derived type (a constructor interface), infer the return type as
+      that derived type.  */
+   if (!e->symtree || !e->symtree->n.sym)
+     return;
+ 
+   gfc_symbol *dt_sym = gfc_find_dt_in_generic (e->symtree->n.sym);
+   if (dt_sym && gfc_fl_struct (dt_sym->attr.flavor))
+     {
+       e->ts.type = BT_DERIVED;
+       e->ts.u.derived = dt_sym;
+     }
+ }
+ 
+ /* Infer the return type of a type-bound user-defined operator without
+    converting the expression node or triggering gfc_resolve_symbol on the
+    return type.  This is used during ASSOCIATE selector parsing to propagate
+    type information bottom-up through nested UDO expressions such as
+    (.div. (.grad. x)), so that the outer gfc_extend_expr can locate the
+    type-bound .div. once the type of (.grad. x) is known.
+ 
+    Calling gfc_extend_expr for this purpose would partially resolve the
+    return type's derived-type symbol (setting resolve_symbol_called before
+    resolve_typebound_procedures has run), which prevents the subsequent
+    outer gfc_extend_expr from properly resolving the type-bound operator
+    on the return type.  We avoid that by reading the return type directly
+    from the procedure's result variable without triggering resolution.  */
+ 
+ static void
+ infer_typebound_uop_type (gfc_expr *e)
+ {
+   if (!e || e->expr_type != EXPR_OP || e->value.op.op != INTRINSIC_USER
+       || e->ts.type != BT_UNKNOWN)
+     return;
+ 
+   /* Find the operand and strip parentheses.  */
+   gfc_expr *operand = e->value.op.op1;
+   while (operand && operand->expr_type == EXPR_OP
+ 	 && operand->value.op.op == INTRINSIC_PARENTHESES)
+     operand = operand->value.op.op1;
+ 
+   if (!operand || operand->ts.type != BT_DERIVED || !operand->ts.u.derived)
+     return;
+ 
+   /* Look up the UDO binding in the derived type's namespace (and its
+      parent types, via the recursion in find_typebound_proc_uop).  This
+      does not call resolve_symbol, so it leaves resolve_symbol_called
+      untouched for all types involved.  */
+   bool ok = true;
+   gfc_symtree *tb_uop
+     = gfc_find_typebound_user_op (operand->ts.u.derived, &ok,
+ 				  e->value.op.uop->name, false, NULL);
+   if (!tb_uop || !tb_uop->n.tb)
+     return;
+ 
+   gfc_typebound_proc *tb = tb_uop->n.tb;
+   if (!tb->is_generic || !tb->u.generic)
+     return;
+ 
+   /* Take the first specific binding.  specific_st is set from module reading;
+      its n.tb is the gfc_typebound_proc for that specific binding (same as
+      what resolve_typebound_procedures later stores in g->specific).  Follow
+      the chain specific_st->n.tb->u.specific->n.sym to reach the actual
+      implementing function symbol, whose ts holds the return type.
+      This mirrors what build_compcall_for_operator does via
+      g->specific->u.specific->n.sym->ts after resolution.  */
+   gfc_tbp_generic *g = tb->u.generic;
+   if (!g->specific_st || !g->specific_st->n.tb)
+     return;
+ 
+   gfc_typebound_proc *specific_tb = g->specific_st->n.tb;
+   if (specific_tb->is_generic || !specific_tb->u.specific
+       || !specific_tb->u.specific->n.sym)
+     return;
+ 
+   gfc_symbol *proc = specific_tb->u.specific->n.sym;
+   if (proc->ts.type != BT_UNKNOWN)
+     e->ts = proc->ts;
+ }
+ 
+ /* Recursively propagate type information bottom-up through a nested UDO
+    expression tree so that when gfc_extend_expr is called on the outermost
+    operator during ASSOCIATE selector parsing, the inner operands already have
+    their types set and the type-bound lookup can succeed.  Uses
+    infer_typebound_uop_type rather than gfc_extend_expr to avoid triggering
+    resolve_symbol on the return types, which would prevent the outer
+    gfc_extend_expr from working correctly.  */
+ 
+ static void
+ extend_assoc_op (gfc_expr *e)
+ {
+   if (!e || e->expr_type != EXPR_OP)
+     return;
+ 
+   /* Bottom-up: process children first.  */
+   extend_assoc_op (e->value.op.op1);
+   extend_assoc_op (e->value.op.op2);
+ 
+   /* Propagate the child's type upward through parentheses nodes.
+      gfc_extend_expr's matching_typebound_op checks ts.type BEFORE stripping
+      INTRINSIC_PARENTHESES wrappers, so an untyped parentheses node prevents
+      the outer operator from being found.  */
+   if (e->value.op.op == INTRINSIC_PARENTHESES
+       && e->ts.type == BT_UNKNOWN
+       && e->value.op.op1
+       && e->value.op.op1->ts.type != BT_UNKNOWN)
+     {
+       e->ts = e->value.op.op1->ts;
+       return;
+     }
+ 
+   /* Only handle unresolved user-defined operators.  */
+   if (e->value.op.op != INTRINSIC_USER || e->ts.type != BT_UNKNOWN)
+     return;
+ 
+   /* Try to infer the type of each operand if it is an unresolved constructor
+      call (EXPR_FUNCTION whose return type is still BT_UNKNOWN).  */
+   resolve_assoc_operand (e->value.op.op1);
+   resolve_assoc_operand (e->value.op.op2);
+ 
+   /* Infer this operator's return type from the type-bound procedure's result
+      variable, without calling gfc_resolve_symbol on the return type.  */
+   infer_typebound_uop_type (e);
+ }
+ 
  match
  match_association_list (bool for_change_team = false)
  {
*************** match_association_list (bool for_change_
*** 2142,2152 ****
  	    }
  	}
        else if (newAssoc->target->ts.type == BT_UNKNOWN
  	       && newAssoc->target->expr_type == EXPR_OP)
  	{
! 	  /* This will work for sure if the operator is type bound to a use
! 	     associated derived type.  */
! 	  gfc_expr *tmp =gfc_copy_expr (newAssoc->target);
  	  if (gfc_extend_expr (tmp) == MATCH_YES)
  	    gfc_replace_expr (newAssoc->target, tmp);
  	  else
--- 2291,2341 ----
  	    }
  	}
        else if (newAssoc->target->ts.type == BT_UNKNOWN
+ 	       && newAssoc->target->expr_type == EXPR_OP
+ 	       && newAssoc->target->value.op.op == INTRINSIC_USER)
+ 	{
+ 	  /* If the selector is an unresolved type-bound user-defined operator
+ 	     expression, try to extend it now so the associate name gets a usable
+ 	     type.  For nested operators such as
+ 	       (.div. (.grad. x))
+ 	     first propagate types bottom-up through the inner operands
+ 	     (extend_assoc_op).  For a direct operator applied to a constructor
+ 	     call such as
+ 	       (.div. vector_t(init_fn, n=8))
+ 	     additionally resolve the direct operands as constructor calls
+ 	     (resolve_assoc_operand).  Then call gfc_extend_expr on the
+ 	     outermost operator.  Only handle INTRINSIC_USER here; arithmetic
+ 	     operators are left to the normal resolution pass.  */
+ 	  gfc_expr *tmp = gfc_copy_expr (newAssoc->target);
+ 	  extend_assoc_op (tmp->value.op.op1);
+ 	  extend_assoc_op (tmp->value.op.op2);
+ 	  resolve_assoc_operand (tmp->value.op.op1);
+ 	  resolve_assoc_operand (tmp->value.op.op2);
+ 	  /* Suppress errors from gfc_extend_expr: during parsing the full
+ 	     resolution has not run yet, so gfc_resolve_expr(COMPCALL) may
+ 	     fail even when the type-bound operator was found and the node
+ 	     was correctly converted to EXPR_COMPCALL.  Accept the conversion
+ 	     in that case and let the normal resolution pass finish it.  */
+ 	  gfc_push_suppress_errors ();
+ 	  match ext_m = gfc_extend_expr (tmp);
+ 	  gfc_pop_suppress_errors ();
+ 	  if (ext_m == MATCH_YES
+ 	      || (tmp->expr_type == EXPR_COMPCALL
+ 		  && tmp->ts.type != BT_UNKNOWN))
+ 	    gfc_replace_expr (newAssoc->target, tmp);
+ 	  else
+ 	    gfc_free_expr (tmp);
+ 	}
+       else if (newAssoc->target->ts.type == BT_UNKNOWN
  	       && newAssoc->target->expr_type == EXPR_OP)
  	{
! 	  /* The selector is an unresolved expression involving an overloaded
! 	     intrinsic operator (e.g. a `+' bound via an explicit interface
! 	     to a function returning CHARACTER).  Try to extend it now, the
! 	     same way the type-bound user-defined operator case above does
! 	     for INTRINSIC_USER, so the associate name gets a usable type
! 	     before the body of the ASSOCIATE construct is parsed.  */
! 	  gfc_expr *tmp = gfc_copy_expr (newAssoc->target);
  	  if (gfc_extend_expr (tmp) == MATCH_YES)
  	    gfc_replace_expr (newAssoc->target, tmp);
  	  else
*************** gfc_match_call (void)
*** 5854,5865 ****
       target type.  */
    if (((sym->attr.flavor != FL_PROCEDURE
  	|| gfc_is_function_return_value (sym, gfc_current_ns))
!        && (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS))
! 		||
!       (sym->assoc && sym->assoc->target
!        && gfc_resolve_expr (sym->assoc->target)
!        && (sym->assoc->target->ts.type == BT_DERIVED
! 	   || sym->assoc->target->ts.type == BT_CLASS)))
      return match_typebound_call (st);
  
    /* If it does not seem to be callable (include functions so that the
--- 6043,6060 ----
       target type.  */
    if (((sym->attr.flavor != FL_PROCEDURE
  	|| gfc_is_function_return_value (sym, gfc_current_ns))
! 	&& (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS))
!       ||
!       /* Skip gfc_resolve_expr for ASSOCIATE names followed by '%'.
! 	 resolving a contained-function selector before CONTAINS is
! 	 parsed prematurely, marks it EXTERNAL, conflicting with its
! 	 later INTERNAL declaration.  */
! 	(sym->assoc && sym->assoc->target && gfc_peek_ascii_char () == '%')
!       ||
! 	(sym->assoc && sym->assoc->target
! 	 && gfc_resolve_expr (sym->assoc->target)
! 	 && (sym->assoc->target->ts.type == BT_DERIVED
! 	     || sym->assoc->target->ts.type == BT_CLASS)))
      return match_typebound_call (st);
  
    /* If it does not seem to be callable (include functions so that the
diff -Nrcpad gcc-16-20260613/gcc/fortran/openmp.cc gcc-16-20260620/gcc/fortran/openmp.cc
*** gcc-16-20260613/gcc/fortran/openmp.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/fortran/openmp.cc	Sat Jun 20 22:32:06 2026
*************** gfc_omp_requires_add_clause (gfc_omp_req
*** 7611,7616 ****
--- 7611,7622 ----
        if (gfc_state_stack->previous
  	  && gfc_state_stack->previous->state == COMP_INTERFACE)
  	break;
+       /* A submodule namespace may have its parent set to the ancestor module
+ 	 for host-association purposes.  Do not escape the submodule boundary:
+ 	 the submodule itself is the program unit for OMP REQUIRES purposes.  */
+       if (prog_unit->proc_name
+ 	  && prog_unit->proc_name->attr.flavor == FL_MODULE)
+ 	break;
        prog_unit = prog_unit->parent;
      }
  
*************** gfc_match_omp_requires (void)
*** 7694,7700 ****
--- 7700,7712 ----
    bool first = true;
    locus old_loc;
  
+   /* A submodule's namespace may have its parent pointer set to the ancestor
+      module namespace for host-association purposes.  The submodule spec part
+      is still a valid program-unit spec part for OMP REQUIRES.  Only reject
+      the directive when we are genuinely nested inside a procedure.  */
    if (gfc_current_ns->parent
+       && !(gfc_current_ns->proc_name
+ 	   && gfc_current_ns->proc_name->attr.flavor == FL_MODULE)
        && (!gfc_state_stack->previous
  	  || gfc_state_stack->previous->state != COMP_INTERFACE))
      {
*************** gfc_match_omp_atomic (void)
*** 8232,8238 ****
    if (c->memorder == OMP_MEMORDER_UNSET)
      {
        gfc_namespace *prog_unit = gfc_current_ns;
!       while (prog_unit->parent)
  	prog_unit = prog_unit->parent;
        switch (prog_unit->omp_requires & OMP_REQ_ATOMIC_MEM_ORDER_MASK)
  	{
--- 8244,8252 ----
    if (c->memorder == OMP_MEMORDER_UNSET)
      {
        gfc_namespace *prog_unit = gfc_current_ns;
!       while (prog_unit->parent
! 	     && !(prog_unit->proc_name
! 		  && prog_unit->proc_name->attr.flavor == FL_MODULE))
  	prog_unit = prog_unit->parent;
        switch (prog_unit->omp_requires & OMP_REQ_ATOMIC_MEM_ORDER_MASK)
  	{
diff -Nrcpad gcc-16-20260613/gcc/fortran/parse.cc gcc-16-20260620/gcc/fortran/parse.cc
*** gcc-16-20260613/gcc/fortran/parse.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/fortran/parse.cc	Sat Jun 20 22:32:06 2026
*************** parse_module (void)
*** 7392,7397 ****
--- 7392,7423 ----
      {
        use_modules ();
        gfc_traverse_ns (gfc_current_ns, set_syms_host_assoc);
+ 
+       /* Link the submodule namespace to the parent (sub)module namespace so
+ 	 that internal subprograms of the ancestor module are accessible via
+ 	 host association (Fortran 2018, 14.6.1.3).  The parent namespace is
+ 	 already in gfc_global_ns_list when both units are compiled together.
+ 	 The submodule's fully-qualified name is "parent.child"; strip the
+ 	 child part to obtain the parent's name, then search the global list.  */
+       {
+ 	const char *submod_name = gfc_new_block->name;
+ 	const char *dot = strrchr (submod_name, '.');
+ 	if (dot != NULL)
+ 	  {
+ 	    size_t plen = (size_t) (dot - submod_name);
+ 	    char parent_name[GFC_MAX_SYMBOL_LEN + 1];
+ 	    gcc_assert (plen < sizeof (parent_name));
+ 	    memcpy (parent_name, submod_name, plen);
+ 	    parent_name[plen] = '\0';
+ 	    for (gfc_namespace *ns = gfc_global_ns_list; ns; ns = ns->sibling)
+ 	      if (ns->proc_name
+ 		  && strcmp (ns->proc_name->name, parent_name) == 0)
+ 		{
+ 		  gfc_current_ns->parent = ns;
+ 		  break;
+ 		}
+ 	  }
+       }
      }
  
    st = parse_spec (ST_NONE);
*************** clean_up_modules (gfc_gsymbol *&gsym)
*** 7550,7555 ****
--- 7576,7586 ----
    if (gsym->ns)
      {
        gfc_current_ns = gsym->ns;
+       /* Disconnect any host-association parent link set for submodules
+ 	 (see parse_module): each module/submodule namespace in gfc_gsym_root
+ 	 is independently managed, so gfc_symbol_done_2 must not walk up to
+ 	 and double-free a sibling top-level namespace.  */
+       gfc_current_ns->parent = NULL;
        gfc_derived_types = gfc_current_ns->derived_types;
        gfc_done_2 ();
        gsym->ns = NULL;
diff -Nrcpad gcc-16-20260613/gcc/fortran/primary.cc gcc-16-20260620/gcc/fortran/primary.cc
*** gcc-16-20260613/gcc/fortran/primary.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/fortran/primary.cc	Sat Jun 20 22:32:06 2026
*************** gfc_match_varspec (gfc_expr *primary, in
*** 2715,2720 ****
--- 2715,2733 ----
  		primary->value.compcall.actual = NULL;
  	      else
  		{
+ 		  /* Before erroring, check whether there is also a data
+ 		     component with this name.  Use noaccess=true so
+ 		     that private components are also found.  */
+ 		  if (sym && gfc_find_component (sym, name, true, true, NULL))
+ 		    {
+ 		      /* Restore expr to EXPR_VARIABLE and let the data
+ 			 component path below handle it.  */
+ 		      primary->expr_type = EXPR_VARIABLE;
+ 		      gfc_free_actual_arglist (primary->value.compcall.actual);
+ 		      primary->value.compcall.actual = NULL;
+ 		      tbp = NULL;
+ 		      goto try_data_component;
+ 		    }
  		  gfc_error ("Expected argument list at %C");
  		  return MATCH_ERROR;
  		}
*************** gfc_match_varspec (gfc_expr *primary, in
*** 2723,2732 ****
  	  break;
  	}
  
        previous = component;
  
        if (!inquiry && !intrinsic)
! 	component = gfc_find_component (sym, name, false, false, &tmp);
        else
  	component = NULL;
  
--- 2736,2757 ----
  	  break;
  	}
  
+     try_data_component:
+ 
        previous = component;
  
        if (!inquiry && !intrinsic)
! 	{
! 	  component = gfc_find_component (sym, name, false, false, &tmp);
! 	  /* For inferred-type ASSOCIATE names the parse-time candidate type
! 	     may not be the final type; a private component in the candidate
! 	     type may correspond to a public component in the correct type.
! 	     Accept it tentatively so that resolution can fix up the type.  */
! 	  if (!component && !tbp
! 	      && primary->symtree && primary->symtree->n.sym->assoc
! 	      && primary->symtree->n.sym->assoc->inferred_type)
! 	    component = gfc_find_component (sym, name, true, false, &tmp);
! 	}
        else
  	component = NULL;
  
diff -Nrcpad gcc-16-20260613/gcc/fortran/resolve.cc gcc-16-20260620/gcc/fortran/resolve.cc
*** gcc-16-20260613/gcc/fortran/resolve.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/fortran/resolve.cc	Sat Jun 20 22:32:06 2026
*************** check_default_none_expr (gfc_expr **e, i
*** 8581,8595 ****
  	      ns2 = ns2->parent;
  	    }
  
! 	  /* A DO CONCURRENT iterator cannot appear in a locality spec.  */
! 	  if (sym->ns->code->ext.concur.forall_iterator)
  	    {
! 	      gfc_forall_iterator *iter
! 		= sym->ns->code->ext.concur.forall_iterator;
! 	      for (; iter; iter = iter->next)
! 		if (iter->var->symtree
! 		    && strcmp(sym->name, iter->var->symtree->name) == 0)
! 		  return 0;
  	    }
  
  	  /* A named constant is not a variable, so skip test.  */
--- 8581,8603 ----
  	      ns2 = ns2->parent;
  	    }
  
! 	  /* A DO CONCURRENT iterator cannot appear in a locality spec.
! 	     Use d->code (the DO CONCURRENT node) rather than sym->ns->code,
! 	     which may be a different code type (e.g. EXEC_ASSOCIATE) whose
! 	     ext union would be read incorrectly.  */
! 	  for (gfc_forall_iterator *iter = d->code->ext.concur.forall_iterator;
! 	       iter; iter = iter->next)
  	    {
! 	      if (!iter->var || !iter->var->symtree)
! 		continue;
! 	      const char *iter_name = iter->var->symtree->name;
! 	      /* Shadow iterators (from inline type-spec: integer :: i = ...)
! 		 store the iterator with a leading underscore internally; the
! 		 user-visible name does not have the underscore.  */
! 	      if (iter->shadow)
! 		iter_name++;
! 	      if (strcmp (sym->name, iter_name) == 0)
! 		return 0;
  	    }
  
  	  /* A named constant is not a variable, so skip test.  */
*************** gfc_count_forall_iterators (gfc_code *co
*** 12588,12594 ****
     3) call gfc_resolve_forall_body to resolve the FORALL body.  */
  
  /* Custom recursive expression walker that replaces symbols.
!    This ensures we visit ALL expressions including those in array subscripts.  */
  
  static void
  replace_in_expr_recursive (gfc_expr *expr, gfc_symbol *old_sym, gfc_symtree *new_st)
--- 12596,12603 ----
     3) call gfc_resolve_forall_body to resolve the FORALL body.  */
  
  /* Custom recursive expression walker that replaces symbols.
!    Visits all expressions including array subscripts.  Also called from
!    replace_in_code_recursive to handle ASSOCIATE selector expressions.  */
  
  static void
  replace_in_expr_recursive (gfc_expr *expr, gfc_symbol *old_sym, gfc_symtree *new_st)
*************** replace_in_code_recursive (gfc_code *cod
*** 12715,12720 ****
--- 12724,12742 ----
  	     they'll be handled separately */
  	  break;
  
+ 	case EXEC_BLOCK:
+ 	  /* Replace in ASSOCIATE selector expressions and the body.
+ 	     The body of an EXEC_BLOCK lives in c->ext.block.ns->code, not
+ 	     c->block->next, so without this case both selectors and body
+ 	     are silently skipped, leaving shadow iterator references unreplaced
+ 	     and producing wrong values at runtime.  */
+ 	  for (gfc_association_list *alist = c->ext.block.assoc;
+ 	       alist; alist = alist->next)
+ 	    replace_in_expr_recursive (alist->target, old_sym, new_st);
+ 	  if (c->ext.block.ns)
+ 	    replace_in_code_recursive (c->ext.block.ns->code, old_sym, new_st);
+ 	  break;
+ 
  	default:
  	  break;
  	}
*************** resolve_typebound_procedures (gfc_symbol
*** 16997,17009 ****
    int op;
    gfc_symbol* super_type;
  
!   if (!derived->f2k_derived || !derived->f2k_derived->tb_sym_root)
!     return true;
! 
    super_type = gfc_get_derived_super_type (derived);
    if (super_type)
      resolve_symbol (super_type);
  
    resolve_bindings_derived = derived;
    resolve_bindings_result = true;
  
--- 17019,17035 ----
    int op;
    gfc_symbol* super_type;
  
!   /* Resolve the super-type first so that inherited bindings (including
!      user operators) are fully resolved before we look them up via
!      gfc_find_typebound_user_op.  This must happen even when 'derived'
!      has no direct type-bound bindings of its own.  */
    super_type = gfc_get_derived_super_type (derived);
    if (super_type)
      resolve_symbol (super_type);
  
+   if (!derived->f2k_derived || !derived->f2k_derived->tb_sym_root)
+     return true;
+ 
    resolve_bindings_derived = derived;
    resolve_bindings_result = true;
  
diff -Nrcpad gcc-16-20260613/gcc/fortran/symbol.cc gcc-16-20260620/gcc/fortran/symbol.cc
*** gcc-16-20260613/gcc/fortran/symbol.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/fortran/symbol.cc	Sat Jun 20 22:32:06 2026
*************** find_derived_types (gfc_symbol *sym, gfc
*** 2491,2497 ****
    if (st->n.sym && st->n.sym->attr.flavor == FL_DERIVED
        && !st->n.sym->attr.is_class
        && ((contained && st->n.sym->attr.use_assoc) || !contained)
!       && gfc_find_component (st->n.sym, name, true, true, NULL))
      {
        /* Do the stashing, if required.  */
        cts++;
--- 2491,2501 ----
    if (st->n.sym && st->n.sym->attr.flavor == FL_DERIVED
        && !st->n.sym->attr.is_class
        && ((contained && st->n.sym->attr.use_assoc) || !contained)
!       && !st->n.sym->attr.vtype
!       && (gfc_find_component (st->n.sym, name, true, true, NULL)
! 	  || (st->n.sym->f2k_derived
! 	      && gfc_find_typebound_proc (st->n.sym, NULL, name, true,
! 					 NULL))))
      {
        /* Do the stashing, if required.  */
        cts++;
diff -Nrcpad gcc-16-20260613/gcc/fortran/trans-array.cc gcc-16-20260620/gcc/fortran/trans-array.cc
*** gcc-16-20260613/gcc/fortran/trans-array.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/fortran/trans-array.cc	Sat Jun 20 22:32:06 2026
*************** gfc_trans_array_constructor_subarray (st
*** 2143,2159 ****
  }
  
  
  /* Assign the values to the elements of an array constructor.  DYNAMIC
     is true if descriptor DESC only contains enough data for the static
     size calculated by gfc_get_array_constructor_size.  When true, memory
!    for the dynamic parts must be allocated using realloc.  */
  
  static void
  gfc_trans_array_constructor_value (stmtblock_t * pblock,
  				   stmtblock_t * finalblock,
  				   tree type, tree desc,
  				   gfc_constructor_base base, tree * poffset,
! 				   tree * offsetvar, bool dynamic)
  {
    tree tmp;
    tree start = NULL_TREE;
--- 2143,2198 ----
  }
  
  
+ /* Return true if every leaf element of an array constructor is a function
+    reference returning derived type DER, which has allocatable components.
+    Such results are moved (shallow-copied) into the constructor temporary, so
+    the temporary owns their allocatable components and they can all be freed
+    in a single sweep over the whole temporary.  Returns false as soon as an
+    element is anything else - notably a variable, whose allocatable components
+    are aliased rather than owned by the temporary and must not be freed.  */
+ 
+ static bool
+ gfc_constructor_is_owned_alloc_comp (gfc_constructor_base base,
+ 				     gfc_symbol *der)
+ {
+   gfc_constructor *c;
+ 
+   if (base == NULL)
+     return false;
+ 
+   for (c = gfc_constructor_first (base); c; c = gfc_constructor_next (c))
+     {
+       gfc_expr *e = c->expr;
+       if (e->expr_type == EXPR_ARRAY)
+ 	{
+ 	  if (!gfc_constructor_is_owned_alloc_comp (e->value.constructor, der))
+ 	    return false;
+ 	}
+       else if (!(e->expr_type == EXPR_FUNCTION
+ 		 && e->ts.type == BT_DERIVED
+ 		 && e->ts.u.derived == der))
+ 	return false;
+     }
+   return true;
+ }
+ 
+ 
  /* Assign the values to the elements of an array constructor.  DYNAMIC
     is true if descriptor DESC only contains enough data for the static
     size calculated by gfc_get_array_constructor_size.  When true, memory
!    for the dynamic parts must be allocated using realloc.  OWNED_SWEEP is
!    true when the caller will free the allocatable components of every
!    constructor element in one sweep over the whole temporary; in that case
!    the per-element finalization built here is suppressed to avoid a double
!    free.  */
  
  static void
  gfc_trans_array_constructor_value (stmtblock_t * pblock,
  				   stmtblock_t * finalblock,
  				   tree type, tree desc,
  				   gfc_constructor_base base, tree * poffset,
! 				   tree * offsetvar, bool dynamic,
! 				   bool owned_sweep)
  {
    tree tmp;
    tree start = NULL_TREE;
*************** gfc_trans_array_constructor_value (stmtb
*** 2221,2227 ****
  	  /* Array constructors can be nested.  */
  	  gfc_trans_array_constructor_value (&body, finalblock, type,
  					     desc, c->expr->value.constructor,
! 					     poffset, offsetvar, dynamic);
  	}
        else if (c->expr->rank > 0)
  	{
--- 2260,2267 ----
  	  /* Array constructors can be nested.  */
  	  gfc_trans_array_constructor_value (&body, finalblock, type,
  					     desc, c->expr->value.constructor,
! 					     poffset, offsetvar, dynamic,
! 					     owned_sweep);
  	}
        else if (c->expr->rank > 0)
  	{
*************** gfc_trans_array_constructor_value (stmtb
*** 2257,2263 ****
  	      *poffset = fold_build2_loc (input_location, PLUS_EXPR,
  					  gfc_array_index_type,
  					  *poffset, gfc_index_one_node);
! 	      if (finalblock)
  		gfc_add_block_to_block (finalblock, &se.finalblock);
  	    }
  	  else
--- 2297,2307 ----
  	      *poffset = fold_build2_loc (input_location, PLUS_EXPR,
  					  gfc_array_index_type,
  					  *poffset, gfc_index_one_node);
! 	      /* Unless the whole temporary is being swept by the caller, add
! 		 the per-element finalization.  The sweep is used when every
! 		 element is an owned function result, which is the only way to
! 		 correctly free elements produced inside an implied-do loop.  */
! 	      if (finalblock && !owned_sweep)
  		gfc_add_block_to_block (finalblock, &se.finalblock);
  	    }
  	  else
*************** trans_array_constructor (gfc_ss * ss, lo
*** 2910,2915 ****
--- 2954,2960 ----
    char *msg;
    stmtblock_t finalblock;
    bool finalize_required;
+   bool owned_sweep = false;
  
    /* Save the old values for nested checking.  */
    old_first_len = first_len;
*************** trans_array_constructor (gfc_ss * ss, lo
*** 3095,3104 ****
    if (IS_PDT (expr))
     finalize_required = true;
  
    gfc_trans_array_constructor_value (&outer_loop->pre,
  				     finalize_required ? &finalblock : NULL,
  				     type, desc, c, &offset, &offsetvar,
! 				     dynamic);
  
    /* If the array grows dynamically, the upper bound of the loop variable
       is determined by the array's final upper bound.  */
--- 3140,3164 ----
    if (IS_PDT (expr))
     finalize_required = true;
  
+   /* If every element of the constructor is a function result with allocatable
+      components, those components are owned by the temporary and are freed in a
+      single sweep over the whole array below.  This is the only way to free the
+      elements produced inside an implied-do loop, where a single compile-time
+      element stands for many runtime elements.  */
+   owned_sweep = finalize_required
+     && expr->ts.type == BT_DERIVED
+     && expr->ts.u.derived->attr.alloc_comp
+     && gfc_constructor_is_owned_alloc_comp (c, expr->ts.u.derived);
+ 
    gfc_trans_array_constructor_value (&outer_loop->pre,
  				     finalize_required ? &finalblock : NULL,
  				     type, desc, c, &offset, &offsetvar,
! 				     dynamic, owned_sweep);
! 
!   if (owned_sweep)
!     gfc_add_expr_to_block (&finalblock,
! 			   gfc_deallocate_alloc_comp_no_caf (expr->ts.u.derived,
! 							     desc, 1, true));
  
    /* If the array grows dynamically, the upper bound of the loop variable
       is determined by the array's final upper bound.  */
diff -Nrcpad gcc-16-20260613/gcc/fortran/trans-decl.cc gcc-16-20260620/gcc/fortran/trans-decl.cc
*** gcc-16-20260613/gcc/fortran/trans-decl.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/fortran/trans-decl.cc	Sat Jun 20 22:32:06 2026
*************** build_function_decl (gfc_symbol * sym, b
*** 2580,2590 ****
  	      && flag_module_private)))
      sym->attr.access = ACCESS_PRIVATE;
  
    if (!current_function_decl
        && !sym->attr.entry_master && !sym->attr.is_main_program
        && (sym->attr.access != ACCESS_PRIVATE || sym->binding_label
! 	  || sym->attr.public_used))
!     TREE_PUBLIC (fndecl) = 1;
  
    if (sym->attr.referenced || sym->attr.entry_master)
      TREE_USED (fndecl) = 1;
--- 2580,2606 ----
  	      && flag_module_private)))
      sym->attr.access = ACCESS_PRIVATE;
  
+   bool in_module_contains = sym->module && sym->ns->proc_name
+ 			     && sym->ns->proc_name->attr.flavor == FL_MODULE;
+ 
    if (!current_function_decl
        && !sym->attr.entry_master && !sym->attr.is_main_program
        && (sym->attr.access != ACCESS_PRIVATE || sym->binding_label
! 	  || sym->attr.public_used || in_module_contains))
!     {
!       TREE_PUBLIC (fndecl) = 1;
! 
!       /* Mirror the variable treatment (see gfc_finish_var_decl): PRIVATE
! 	 module procedures get global linkage but hidden visibility so the
! 	 symbol is reachable from submodules in the same link without being
! 	 exported to external DSOs.  */
!       if (in_module_contains && sym->attr.access == ACCESS_PRIVATE
! 	  && !sym->attr.public_used)
! 	{
! 	  DECL_VISIBILITY (fndecl) = VISIBILITY_HIDDEN;
! 	  DECL_VISIBILITY_SPECIFIED (fndecl) = true;
! 	}
!     }
  
    if (sym->attr.referenced || sym->attr.entry_master)
      TREE_USED (fndecl) = 1;
diff -Nrcpad gcc-16-20260613/gcc/fortran/trans-expr.cc gcc-16-20260620/gcc/fortran/trans-expr.cc
*** gcc-16-20260613/gcc/fortran/trans-expr.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/fortran/trans-expr.cc	Sat Jun 20 22:32:06 2026
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 9037,9048 ****
    /* Follow the function call with the argument post block.  */
    if (byref)
      {
-       gfc_add_block_to_block (&se->pre, &post);
- 
        /* Transformational functions of derived types with allocatable
! 	 components must have the result allocatable components copied when the
! 	 argument is actually given.  This is unnecessry for REDUCE because the
! 	 wrapper for the OPERATION function takes care of this.  */
        arg = expr->value.function.actual;
        if (result && arg && expr->rank
  	  && isym && isym->transformational
--- 9037,9046 ----
    /* Follow the function call with the argument post block.  */
    if (byref)
      {
        /* Transformational functions of derived types with allocatable
! 	 components must have the result allocatable components copied
! 	 BEFORE the argument post block is appended.  Copying the result
! 	 first, then freeing the argument, gives the correct order.  */
        arg = expr->value.function.actual;
        if (result && arg && expr->rank
  	  && isym && isym->transformational
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 9070,9075 ****
--- 9068,9075 ----
  					    NULL, GFC_CAF_COARRAY_NOCOARRAY);
  	  gfc_add_expr_to_block (&se->pre, tmp);
  	}
+ 
+       gfc_add_block_to_block (&se->pre, &post);
      }
    else
      {
diff -Nrcpad gcc-16-20260613/gcc/fortran/trans-stmt.cc gcc-16-20260620/gcc/fortran/trans-stmt.cc
*** gcc-16-20260613/gcc/fortran/trans-stmt.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/fortran/trans-stmt.cc	Sat Jun 20 22:32:06 2026
*************** gfc_trans_allocate (gfc_code * code, gfc
*** 7695,7702 ****
  	    param_list = expr->param_list;
  	  else
  	    param_list = expr->symtree->n.sym->param_list;
  	  tmp = gfc_allocate_pdt_comp (expr->ts.u.derived, se.expr,
! 				       expr->rank, param_list);
  	  gfc_add_expr_to_block (&block, tmp);
  	}
        /* Ditto for CLASS expressions.  */
--- 7695,7709 ----
  	    param_list = expr->param_list;
  	  else
  	    param_list = expr->symtree->n.sym->param_list;
+ 	  /* For array allocations the allocate-shape-spec expression has
+ 	     rank 0 even though the symbol is an array.  Use the rank from
+ 	     the array descriptor when se.expr is a GFC descriptor so that
+ 	     gfc_allocate_pdt_comp loops over all elements.  */
+ 	  int pdt_rank = (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (se.expr))
+ 			  ? GFC_TYPE_ARRAY_RANK (TREE_TYPE (se.expr))
+ 			  : expr->rank);
  	  tmp = gfc_allocate_pdt_comp (expr->ts.u.derived, se.expr,
! 				       pdt_rank, param_list);
  	  gfc_add_expr_to_block (&block, tmp);
  	}
        /* Ditto for CLASS expressions.  */
*************** gfc_trans_allocate (gfc_code * code, gfc
*** 7708,7715 ****
  	    param_list = expr->param_list;
  	  else
  	    param_list = expr->symtree->n.sym->param_list;
  	  tmp = gfc_allocate_pdt_comp (CLASS_DATA (expr)->ts.u.derived,
! 				       se.expr, expr->rank, param_list);
  	  gfc_add_expr_to_block (&block, tmp);
  	}
        else if (code->expr3 && code->expr3->mold
--- 7715,7725 ----
  	    param_list = expr->param_list;
  	  else
  	    param_list = expr->symtree->n.sym->param_list;
+ 	  int pdt_rank = (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (se.expr))
+ 			  ? GFC_TYPE_ARRAY_RANK (TREE_TYPE (se.expr))
+ 			  : expr->rank);
  	  tmp = gfc_allocate_pdt_comp (CLASS_DATA (expr)->ts.u.derived,
! 				       se.expr, pdt_rank, param_list);
  	  gfc_add_expr_to_block (&block, tmp);
  	}
        else if (code->expr3 && code->expr3->mold
*************** gfc_trans_deallocate (gfc_code *code)
*** 7965,7974 ****
        if (expr->ts.type == BT_DERIVED
  	  && ((expr->ts.u.derived->attr.pdt_type && param_list)
  	      || expr->ts.u.derived->attr.pdt_comp))
! 	tmp = gfc_deallocate_pdt_comp (expr->ts.u.derived, se.expr, expr->rank);
        else if (IS_CLASS_PDT (expr) && expr->symtree->n.sym->param_list)
! 	tmp = gfc_deallocate_pdt_comp (CLASS_DATA (expr)->ts.u.derived,
! 				       se.expr, expr->rank);
  
        if (tmp)
  	gfc_add_expr_to_block (&se.pre, tmp);
--- 7975,7994 ----
        if (expr->ts.type == BT_DERIVED
  	  && ((expr->ts.u.derived->attr.pdt_type && param_list)
  	      || expr->ts.u.derived->attr.pdt_comp))
! 	{
! 	  int pdt_rank = (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (se.expr))
! 			  ? GFC_TYPE_ARRAY_RANK (TREE_TYPE (se.expr))
! 			  : expr->rank);
! 	  tmp = gfc_deallocate_pdt_comp (expr->ts.u.derived, se.expr, pdt_rank);
! 	}
        else if (IS_CLASS_PDT (expr) && expr->symtree->n.sym->param_list)
! 	{
! 	  int pdt_rank = (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (se.expr))
! 			  ? GFC_TYPE_ARRAY_RANK (TREE_TYPE (se.expr))
! 			  : expr->rank);
! 	  tmp = gfc_deallocate_pdt_comp (CLASS_DATA (expr)->ts.u.derived,
! 					 se.expr, pdt_rank);
! 	}
  
        if (tmp)
  	gfc_add_expr_to_block (&se.pre, tmp);
diff -Nrcpad gcc-16-20260613/gcc/gimple-range-fold.cc gcc-16-20260620/gcc/gimple-range-fold.cc
*** gcc-16-20260613/gcc/gimple-range-fold.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/gimple-range-fold.cc	Sat Jun 20 22:32:06 2026
*************** fold_using_range::relation_fold_and_or (
*** 1566,1572 ****
      return;
  
    if (reverse_op2)
!     relation2 = relation_negate (relation2);
  
    // x && y is false if the relation intersection of the true cases is NULL.
    if (is_and && relation_intersect (relation1, relation2) == VREL_UNDEFINED)
--- 1566,1572 ----
      return;
  
    if (reverse_op2)
!     relation2 = relation_swap (relation2);
  
    // x && y is false if the relation intersection of the true cases is NULL.
    if (is_and && relation_intersect (relation1, relation2) == VREL_UNDEFINED)
diff -Nrcpad gcc-16-20260613/gcc/ipa-param-manipulation.cc gcc-16-20260620/gcc/ipa-param-manipulation.cc
*** gcc-16-20260613/gcc/ipa-param-manipulation.cc	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/ipa-param-manipulation.cc	Sat Jun 20 22:32:06 2026
*************** ipa_param_body_adjustments::prepare_debu
*** 1386,1393 ****
  	}
  
        gcc_assert (TREE_CODE (value) == SSA_NAME);
!       tree *d = m_dead_ssa_debug_equiv.get (value);
!       m_dead_ssa_debug_equiv.put (dead_ssa, *d);
        return true;
      }
  
--- 1386,1393 ----
  	}
  
        gcc_assert (TREE_CODE (value) == SSA_NAME);
!       tree d = *m_dead_ssa_debug_equiv.get (value);
!       m_dead_ssa_debug_equiv.put (dead_ssa, d);
        return true;
      }
  
diff -Nrcpad gcc-16-20260613/gcc/testsuite/ChangeLog gcc-16-20260620/gcc/testsuite/ChangeLog
*** gcc-16-20260613/gcc/testsuite/ChangeLog	Sat Jun 13 22:32:07 2026
--- gcc-16-20260620/gcc/testsuite/ChangeLog	Sat Jun 20 22:32:06 2026
***************
*** 1,3 ****
--- 1,316 ----
+ 2026-06-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-06-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125764
+ 	* g++.dg/reflect/can_substitute3.C: New test.
+ 
+ 2026-06-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-06-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125759
+ 	* g++.dg/reflect/expr17.C: New test.
+ 
+ 2026-06-17  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2026-06-09  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR middle-end/125621
+ 	* gcc.target/aarch64/torture/pr125621.c: New test.
+ 
+ 2026-06-17  Kishan Parmar  <kishan@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2026-05-27  Kishan Parmar  <kishan@linux.ibm.com>
+ 		    Surya Kumari Jangala  <jskumari@linux.ibm.com>
+ 
+ 	PR target/125448
+ 	* gcc.target/powerpc/mpc860_no_lwsync.c: Restrict to ilp32 targets.
+ 
+ 2026-06-17  Kishan Parmar  <kishan@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2026-05-22  Steve Markgraf  <steve@steve-m.de>
+ 
+ 	* gcc.target/powerpc/mpc860_no_lwsync.c: New test.
+ 
+ 2026-06-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2026-05-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/125148
+ 	* gcc.target/aarch64/sve/highway_run.c: New test.
+ 
+ 2026-06-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2026-06-03  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125431
+ 	* gfortran.dg/vect/pr125431.f90: New test.
+ 
+ 2026-06-17  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	Backported from master:
+ 	2026-06-15  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR target/125795
+ 	* gcc.target/aarch64/pr125795.c: New test.
+ 
+ 2026-06-17  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/125501
+ 	* gcc.dg/pr125501.c: New.
+ 
+ 2026-06-16  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-06-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125776
+ 	* gcc.dg/torture/pr125776-1.c: New test.
+ 	* gcc.dg/torture/pr125776-2.c: New test.
+ 
+ 2026-06-16  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-06-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125774
+ 	* gcc.dg/torture/pr125774-1.c: New test.
+ 
+ 2026-06-16  Carter Rennick  <carter.rennick@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-04-24  Carter Rennick  <carter.rennick@gmail.com>
+ 
+ 	PR target/120144
+ 	* gcc.dg/torture/pr120144.c: New test.
+ 
+ 2026-06-16  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-05-04  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR c++/65271
+ 	* g++.dg/cpp0x/rv-decl1.C: New test.
+ 
+ 2026-06-16  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2026-05-24  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125419
+ 	* gcc.dg/torture/pr125419-1.c: New test.
+ 
+ 2026-06-16  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-06-16  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125770
+ 	* g++.dg/reflect/members_of15.C: New test.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125430
+ 	* gfortran.dg/module_private_2.f90: Remove scan-tree-dump-times
+ 	assertion for 'priv'; PRIVATE module procedures now have global
+ 	linkage with hidden visibility and are no longer optimized away.
+ 	* gfortran.dg/public_private_module_2.f90: Add xfail markers to
+ 	scan-assembler-not for 'two' and 'six'; update comment to mention
+ 	procedures alongside variables.
+ 	* gfortran.dg/public_private_module_7.f90: Add xfail marker to
+ 	scan-assembler-not for '__m_common_attrs_MOD_other'.
+ 	* gfortran.dg/public_private_module_8.f90: Add xfail marker to
+ 	scan-assembler-not for '__m_MOD_myotherlen'.
+ 	* gfortran.dg/submodule_private_host.f90: New test.
+ 	* gfortran.dg/submodule_private_host_aux.f90: New auxiliary file.
+ 	* gfortran.dg/warn_unused_function_2.f90: Remove 'defined but not
+ 	used' expectation for s1; PRIVATE module procedures now have
+ 	global linkage and no longer trigger the unused-function warning.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125535
+ 	* gfortran.dg/asan/implied_do_alloc_comp_leak_1.f90: New test.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125650
+ 	* gfortran.dg/associate_81.f90: New test.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125481
+ 	* gfortran.dg/generic_37.f90: New test.
+ 	* gfortran.dg/generic_38.f90: New test.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125527
+ 	* gfortran.dg/submodule_host_assoc_1.f90: New test.
+ 	* gfortran.dg/submodule_host_assoc_1_aux.f90: New test.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125528
+ 	* gfortran.dg/associate_80.f90: New test.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125529
+ 	* gfortran.dg/do_concurrent_assoc_default_none.f90: New test.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125530
+ 	* gfortran.dg/associate_contained_func_typebound.f90: New test.
+ 	* gfortran.dg/associate_contained_func_typebound_2.f90: New
+ 	run-time test exercising generic resolution and a module-scope
+ 	selector.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125531
+ 	* gfortran.dg/associate_infer_program_type.f90: New test.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	* gfortran.dg/do_concurrent_assoc_iter_1.f90: New test.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125534
+ 	* gfortran.dg/pdt_array_alloc_1.f90: New test.
+ 
+ 2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125535
+ 	* gfortran.dg/implied_do_alloc_comp_1.f90: New test.
+ 
+ 2026-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-06-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125652
+ 	* gcc.dg/torture/pr125652.c: New testcase.
+ 
+ 2026-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-06-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125646
+ 	* gcc.dg/vect/pr125646.c: New testcase.
+ 
+ 2026-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125553
+ 	* gcc.dg/torture/pr125553.c: New testcase.
+ 
+ 2026-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125545
+ 	* gcc.dg/torture/pr125545.c: New testcase.
+ 
+ 2026-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125502
+ 	* gcc.dg/torture/pr125502.c: New testcase.
+ 
+ 2026-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2026-06-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125477
+ 	* gcc.dg/torture/pr125477.c: New testcase.
+ 
+ 2026-06-15  Kishan Parmar  <kishan@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2026-05-04  Kishan Parmar  <kishan@linux.ibm.com>
+ 
+ 	* gcc.target/powerpc/future-1.c: New test.
+ 	* gcc.target/powerpc/future-2.c: Likewise.
+ 
+ 2026-06-13  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-06-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/125252
+ 	* gcc.dg/pr125252.c
+ 
+ 2026-06-13  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-25  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/124303
+ 	* gcc.dg/pr124303.c: New test.
+ 
+ 2026-06-13  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-05-06  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/124985
+ 	* gcc.dg/Wreturn-nested-3.c: New test.
+ 	* gcc.dg/pr124985.c: New test.
+ 
  2026-06-11  Georg-Johann Lay  <avr@gjlay.de>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260613/gcc/testsuite/g++.dg/cpp0x/rv-decl1.C gcc-16-20260620/gcc/testsuite/g++.dg/cpp0x/rv-decl1.C
*** gcc-16-20260613/gcc/testsuite/g++.dg/cpp0x/rv-decl1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/g++.dg/cpp0x/rv-decl1.C	Sat Jun 20 22:32:07 2026
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/65271
+ // { dg-do compile { target c++11 } }
+ 
+ struct {} && m0 = {};
+ union  {} && m1 = {};
+ class  {} && m2 = {};
+ enum   {} && m3 = {};
diff -Nrcpad gcc-16-20260613/gcc/testsuite/g++.dg/reflect/can_substitute3.C gcc-16-20260620/gcc/testsuite/g++.dg/reflect/can_substitute3.C
*** gcc-16-20260613/gcc/testsuite/g++.dg/reflect/can_substitute3.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/g++.dg/reflect/can_substitute3.C	Sat Jun 20 22:32:08 2026
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/125764
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ template <typename T>
+ struct S {};
+ 
+ static_assert(can_substitute(^^S, {^^int&()}));
diff -Nrcpad gcc-16-20260613/gcc/testsuite/g++.dg/reflect/expr17.C gcc-16-20260620/gcc/testsuite/g++.dg/reflect/expr17.C
*** gcc-16-20260613/gcc/testsuite/g++.dg/reflect/expr17.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/g++.dg/reflect/expr17.C	Sat Jun 20 22:32:08 2026
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/125759
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ consteval auto foo(auto&&... xs) { return (^^xs, ...); }
+ constexpr auto r1 = foo (0);
+ constexpr auto r2 = foo (0, 1u);
diff -Nrcpad gcc-16-20260613/gcc/testsuite/g++.dg/reflect/members_of15.C gcc-16-20260620/gcc/testsuite/g++.dg/reflect/members_of15.C
*** gcc-16-20260613/gcc/testsuite/g++.dg/reflect/members_of15.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/g++.dg/reflect/members_of15.C	Sat Jun 20 22:32:08 2026
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/125770
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ consteval {
+     members_of(^^::, std::meta::access_context::unchecked());
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.dg/pr125501.c gcc-16-20260620/gcc/testsuite/gcc.dg/pr125501.c
*** gcc-16-20260613/gcc/testsuite/gcc.dg/pr125501.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.dg/pr125501.c	Sat Jun 20 22:32:09 2026
***************
*** 0 ****
--- 1,35 ----
+ // { dg-do run }
+ // { dg-options "-O3" }
+ 
+ #include <stdint.h>
+ int64_t g2, g27, g10;
+ static void *g13, *g24;
+ _Bool f11___trans_tmp_1, f11_c17;
+ void __attribute__((noinline)) f11(int64_t a0, void *a4, void *a5)
+ {
+     _Bool ob6;
+     int32_t v12;
+     int64_t v15;
+ lbl_entry:
+ lbl_sw_def4:
+     ob6 = g13 == a4;
+     if (ob6 || f11_c17) return;
+     if (f11___trans_tmp_1) v12 = g10;
+     a0 = (char *)a5 - (char *)a4;
+     ob6 = 0 == a0;
+     *(_Bool *)4 = 0;
+     if (ob6) goto lbl_b22;
+     __builtin_unreachable();
+ lbl_b22:
+     g27 = v12;
+     switch (v15)
+     {
+         case 6009053803839173278: goto lbl_sw_def4;
+         case 70689892217558167: goto lbl_entry;
+     }
+ }
+ 
+ int main()
+ {
+     f11(0, 0, g24);
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr120144.c gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr120144.c
*** gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr120144.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr120144.c	Sat Jun 20 22:32:09 2026
***************
*** 0 ****
--- 1,8 ----
+ /* PR target/120144 */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target int128 } */
+ 
+ int f(unsigned __int128 t)
+ {
+   return __builtin_clzg(t);
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125419-1.c gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125419-1.c
*** gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125419-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125419-1.c	Sat Jun 20 22:32:09 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* PR tree-optimization/125419 */
+ 
+ signed  g13, g29, g27, g26, g17;
+ void f2(void)__attribute__((returns_twice));
+ void f1(bool c14)
+ {
+   int sj15;
+   if (c14) sj15 = sj15;
+   f2();
+   c14 = 0;
+   do {
+     int c11 = g27;
+     if (c11) goto lbl_br22;
+     goto lbl_br24;
+ lbl_br22:
+     c14 = sj15;
+     c11 = g29 = g13;
+     if (c11) goto lbl_br22;
+ lbl_br24:
+     g26 = g17;
+   } while (c14);
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125477.c gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125477.c
*** gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125477.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125477.c	Sat Jun 20 22:32:09 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ 
+ void f123(void) __attribute__((__returns_twice__));
+ int c;
+ volatile int i;
+ void e(long *a, long *d, int f) {
+ g:
+   if (i)
+     return;
+   f123();
+   for (;;) {
+     __asm__ goto("" : : : : g);
+     c = 0;
+     for (; c < f; c++)
+       a[c] = d[c];
+   }
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125502.c gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125502.c
*** gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125502.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125502.c	Sat Jun 20 22:32:09 2026
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ 
+ int f() __attribute__((returns_twice));
+ typedef short v16i16 __attribute__((vector_size(32)));
+ void f3(short);
+ void f4()
+ {
+     v16i16 vec6, vec11;
+     short v13;
+     vec6[0] = f();
+     vec11 = vec6;
+     f3(v13);
+     v13 = vec11[2];
+     f4();
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125545.c gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125545.c
*** gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125545.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125545.c	Sat Jun 20 22:32:09 2026
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ 
+ int b(int c)
+ {
+   int a;
+   __asm__ goto("" : "=r"(a) : : : d);
+ d:
+   return c && a != 42 && a >= 42;
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125553.c gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125553.c
*** gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125553.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125553.c	Sat Jun 20 22:32:09 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ 
+ #include <stdint.h>
+ 
+ typedef int64_t v8i64 __attribute__((vector_size(64)));
+ int64_t g2, g17;
+ void *g24;
+ static v8i64 g25;
+ 
+ void hash()
+ {
+   v8i64 vec6;
+ lbl_b3:
+   *(v8i64 *)g24 = g25;
+   uint64_t __ov_tmp_g17 = __builtin_sub_overflow(g2, g2, &__ov_tmp_g17);
+   g17 = __ov_tmp_g17;
+   g25 = vec6;
+   vec6 = *(v8i64 *)g24;
+   g2 = vec6[0];
+   goto lbl_b3;
+   g25[7];
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125652.c gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125652.c
*** gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125652.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125652.c	Sat Jun 20 22:32:09 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target int32plus } */
+ 
+ #include <stdint.h>
+ 
+ int a, b, c, d;
+ 
+ void e(int64_t f, int64_t g)
+ {
+   int64_t h = 1, *i, **j;
+   while (1)
+     {
+       i = &h;
+       j = &i;
+       if (h <= h + f - ~h)
+         break;
+       *i += g;
+     }
+   c *= 2;
+   d = a >> b + d;
+ }
+ 
+ int f123()
+ {
+   e(-2147483627, 4611686018427387904);
+   return 0;
+ }
+ 
+ int main()
+ {
+   return f123();
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125774-1.c gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125774-1.c
*** gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125774-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125774-1.c	Sat Jun 20 22:32:09 2026
***************
*** 0 ****
--- 1,48 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } { "" } } */
+ /* PR tree-optimization/125774 */
+ 
+ __attribute__((noipa))
+ _Bool __GIMPLE (ssa,startwith("dom2"))
+ f (int a, int b)
+ {
+   _Bool _3;
+   _Bool _4;
+   _Bool _5;
+ 
+   __BB(2):
+   _3 = a_1(D) > b_2(D);
+   _4 = b_2(D) > a_1(D);
+   _5 = _3 | _4;
+   return _5;
+ }
+ 
+ __attribute__((noipa))
+ _Bool __GIMPLE (ssa,startwith("dom2"))
+ f1 (int a, int b)
+ {
+   _Bool _3;
+   _Bool _4;
+   _Bool _5;
+ 
+   __BB(2):
+   _3 = a_1(D) > b_2(D);
+   _4 = a_1(D) < b_2(D);
+   _5 = _3 | _4;
+   return _5;
+ }
+ 
+ int main()
+ {
+   int a = 10, b = 10;
+   if (f(a,b))
+     __builtin_abort();
+   if (f1(a,b))
+     __builtin_abort();
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "return 1" "optimized" } } */
+ /* Both functions should be optimized to `a_1 != b_2`. */
+ /* { dg-final { scan-tree-dump-times "a_1.D. != b_2.D." 2 "optimized" { target __OPTIMIZE__ } } } */
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125776-1.c gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125776-1.c
*** gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125776-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125776-1.c	Sat Jun 20 22:32:09 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fcompare-debug" } */
+ /* PR tree-optimization/125776 */
+ 
+ int a, b, d, e, f;
+ long c;
+ void g();
+ void h() {
+   unsigned i;
+   for (;;) {
+     unsigned j = a ? a : d;
+     i += j;
+     f = b & 40 | b > 4;
+     e = a ? a : b;
+     if (e)
+       break;
+     if (j)
+       g();
+   }
+   c = i;
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125776-2.c gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125776-2.c
*** gcc-16-20260613/gcc/testsuite/gcc.dg/torture/pr125776-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.dg/torture/pr125776-2.c	Sat Jun 20 22:32:09 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fcompare-debug" } */
+ /* PR tree-optimization/125776 */
+ int a, b, d, e, f;
+ long c;
+ void g();
+ void h(int i) {
+   for (;;) {
+     i++;
+     int j = a  ? a : d;
+     i = i > 0 ? i : -i;
+     f = b & 40 | b > 4;
+     e = a ? a : b;
+     if (e)
+       break;
+     if (j)
+       g();
+   }
+   c = i;
+ }
+ 
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.dg/vect/pr125646.c gcc-16-20260620/gcc/testsuite/gcc.dg/vect/pr125646.c
*** gcc-16-20260613/gcc/testsuite/gcc.dg/vect/pr125646.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.dg/vect/pr125646.c	Sat Jun 20 22:32:09 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fno-tree-fre -fno-tree-forwprop" } */
+ 
+ int a;
+ int main()
+ {
+   int c = 1;
+   while (1)
+     {
+       a = 2 * a;
+       c = -1 - 1 / c;
+       if (!c)
+ 	break;
+       a = -2 * a;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.target/aarch64/pr125795.c gcc-16-20260620/gcc/testsuite/gcc.target/aarch64/pr125795.c
*** gcc-16-20260613/gcc/testsuite/gcc.target/aarch64/pr125795.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.target/aarch64/pr125795.c	Sat Jun 20 22:32:10 2026
***************
*** 0 ****
--- 1,47 ----
+ /* PR target/125795 */
+ /* { dg-do run } */
+ /* { dg-options "-O2 -funroll-loops" } */
+ 
+ /* This loop is vectorized with LD2 (deinterleave) and TBL (lane reversal),
+    then unrolled.  The unrolled body builds a full-width (32 FPR) early-ra
+    color group, which used to trigger a "1U << 32" undefined shift in
+    early_ra::allocate_colors.  As a result the long-lived TBL permute index
+    was wrongly allocated to the same FPR as an LD2 tuple destination and got
+    clobbered, so the result was miscomputed.  */
+ 
+ extern void abort (void);
+ 
+ #define N 256
+ 
+ static int __attribute__ ((noipa))
+ foo (void)
+ {
+   int k[N];
+   int k2[N];
+   int i;
+ 
+   for (i = 0; i < N; i++)
+     k2[i] = i;
+ 
+   for (i = 0; i < 64; i++)
+     {
+       k[i] = k2[2 * i + 0];
+       k[255 - i] = k2[2 * i + 1];
+       k[64 + i] = k2[2 * i + 128];
+       k[191 - i] = k2[2 * i + 129];
+     }
+ 
+   for (i = 0; i < N; i++)
+     if (k[i] != ((i < 128) ? (2 * i) : (511 - 2 * i)))
+       return 1;
+ 
+   return 0;
+ }
+ 
+ int
+ main (void)
+ {
+   if (foo ())
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.target/aarch64/sve/highway_run.c gcc-16-20260620/gcc/testsuite/gcc.target/aarch64/sve/highway_run.c
*** gcc-16-20260613/gcc/testsuite/gcc.target/aarch64/sve/highway_run.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.target/aarch64/sve/highway_run.c	Sat Jun 20 22:32:10 2026
***************
*** 0 ****
--- 1,55 ----
+ /* { dg-do run { target aarch64_sve_hw } } */
+ /* { dg-require-effective-target lp64 } */
+ /* { dg-options "-O2" } */
+ 
+ #include <arm_sve.h>
+ 
+ extern void abort (void) __attribute__ ((noreturn));
+ 
+ volatile int cond = 1;
+ 
+ int __attribute__ ((noipa))
+ a (void)
+ {
+   return cond;
+ }
+ 
+ #define TEST_LOAD(TYPE, NAME, BITS)					\
+   int __attribute__ ((noipa))						\
+   test_##NAME (void)							\
+   {									\
+     TYPE *g = __builtin_malloc (sizeof (TYPE));				\
+     int c = 0;								\
+     if (!g)								\
+       abort ();								\
+     g[0] = 0;								\
+     if (a ())								\
+       {									\
+ 	g[0] = 1;							\
+ 	c = 2;								\
+       }									\
+     svint##BITS##_t d						\
+       = svld1_s##BITS (svptrue_pat_b##BITS (SV_VL1), g);		\
+     svbool_t e = svcmpgt_s##BITS (svptrue_b##BITS (), d,		\
+ 				  svdup_n_s##BITS (0));		\
+     int f = svptest_any (svptrue_pat_b##BITS (SV_VL1), e);		\
+     if (f && c != 2)							\
+       abort ();								\
+     return f;								\
+   }
+ 
+ TEST_LOAD (signed char, byte, 8)
+ TEST_LOAD (short, short, 16)
+ TEST_LOAD (int, int, 32)
+ TEST_LOAD (long, long, 64)
+ 
+ int
+ main (void)
+ {
+   if (!test_byte ()
+       || !test_short ()
+       || !test_int ()
+       || !test_long ())
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.target/aarch64/torture/pr125621.c gcc-16-20260620/gcc/testsuite/gcc.target/aarch64/torture/pr125621.c
*** gcc-16-20260613/gcc/testsuite/gcc.target/aarch64/torture/pr125621.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.target/aarch64/torture/pr125621.c	Sat Jun 20 22:32:10 2026
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=armv8.2-a+sve -fsanitize=undefined" } */
+ #include <arm_sve.h>
+ 
+ long foo(long x) {
+   return (long)svcntd() * x;
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.target/powerpc/future-1.c gcc-16-20260620/gcc/testsuite/gcc.target/powerpc/future-1.c
*** gcc-16-20260613/gcc/testsuite/gcc.target/powerpc/future-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.target/powerpc/future-1.c	Sat Jun 20 22:32:11 2026
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mdejagnu-cpu=future -O2" } */
+ 
+ /* Basic check to see if the compiler supports -mcpu=future and if it defines
+    _ARCH_FUTURE.  */
+ 
+ #ifndef _ARCH_FUTURE
+ #error "-mcpu=future is not supported"
+ #endif
+ 
+ void foo (void)
+ {
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.target/powerpc/future-2.c gcc-16-20260620/gcc/testsuite/gcc.target/powerpc/future-2.c
*** gcc-16-20260613/gcc/testsuite/gcc.target/powerpc/future-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.target/powerpc/future-2.c	Sat Jun 20 22:32:11 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ /* Check if we can set the future target via a target attribute.  */
+ 
+ __attribute__((__target__("cpu=power9")))
+ void foo_p9 (void)
+ {
+ }
+ 
+ __attribute__((__target__("cpu=power10")))
+ void foo_p10 (void)
+ {
+ }
+ 
+ __attribute__((__target__("cpu=power11")))
+ void foo_p11 (void)
+ {
+ }
+ 
+ __attribute__((__target__("cpu=future")))
+ void foo_future (void)
+ {
+ }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gcc.target/powerpc/mpc860_no_lwsync.c gcc-16-20260620/gcc/testsuite/gcc.target/powerpc/mpc860_no_lwsync.c
*** gcc-16-20260613/gcc/testsuite/gcc.target/powerpc/mpc860_no_lwsync.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gcc.target/powerpc/mpc860_no_lwsync.c	Sat Jun 20 22:32:11 2026
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */
+ /* { dg-options "-mcpu=860 -O2" } */
+ 
+ /* Check that we do not emit lwsync when targeting MPC8xx (MPCCORE),
+    since the MPC8xx core does not support and faults on this instruction.  */
+ 
+ void
+ store_release (int *ptr, int val)
+ {
+   __atomic_store_n (ptr, val, __ATOMIC_RELEASE);
+ }
+ 
+ /* { dg-final { scan-assembler-not "\mlwsync\M" } } */
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/asan/implied_do_alloc_comp_leak_1.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/asan/implied_do_alloc_comp_leak_1.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/asan/implied_do_alloc_comp_leak_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/asan/implied_do_alloc_comp_leak_1.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,45 ----
+ !{ dg-do run }
+ 
+ ! PR fortran/XYZZY
+ 
+ ! An array constructor with an implied-do whose element is a function result
+ ! of derived type with allocatable components moves the result into the
+ ! constructor temporary, which then owns those components.  The per-element
+ ! finalization only freed the last slot written by the loop, leaking the
+ ! allocatable components of every other element.  Checked under -fsanitize=address.
+ 
+ module m
+   implicit none
+   type :: t
+     real, allocatable :: v(:)
+   end type
+ contains
+   pure function make (x) result (r)
+     real, intent(in) :: x(:)
+     type(t) :: r
+     r%v = x
+   end function
+ end module
+ 
+ program implied_do_alloc_comp_leak_1
+   use m
+   implicit none
+   integer, parameter :: n = 4
+   type(t), allocatable :: a(:), b(:,:)
+   real :: h(2, n)
+   integer :: i, j
+ 
+   do i = 1, n
+     h(:, i) = [real(i), real(2 * i)]
+   end do
+ 
+   ! Flat implied-do of function results.
+   a = [(make (h(:, i)), i = 1, n)]
+   if (any (a(n)%v /= h(:, n))) stop 1
+   deallocate (a)
+ 
+   ! Nested implied-do feeding a transformational intrinsic.
+   b = reshape ([([(make (h(:, i)), j = 1, 1)], i = 1, n)], [1, n])
+   if (any (b(1, 2)%v /= h(:, 2))) stop 2
+   deallocate (b)
+ end program
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/associate_80.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/associate_80.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/associate_80.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/associate_80.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,83 ----
+ ! { dg-do run }
+ !
+ ! Test ASSOCIATE selectors that are type-bound user-defined operators (UDOs),
+ ! including inherited operators and nested expressions such as
+ ! .div. (.grad. x).  PR fortran/125515
+ !
+ module associate_80_m
+   implicit none
+ 
+   type :: scalar_t
+     real :: val
+   contains
+     generic :: operator(.grad.) => do_grad
+     procedure, private :: do_grad
+     generic :: operator(.sq.)   => do_sq
+     procedure, private :: do_sq
+     generic :: get => get_val
+     procedure :: get_val
+   end type
+ 
+   type, extends(scalar_t) :: vector_t
+   contains
+     generic :: operator(.div.) => do_div
+     procedure, private :: do_div
+   end type
+ 
+ contains
+ 
+   ! .grad. on scalar_t -> vector_t
+   pure function do_grad (self) result (r)
+     class(scalar_t), intent(in) :: self
+     type(vector_t) :: r
+     r%val = self%val * 2.0
+   end function
+ 
+   ! .sq. on scalar_t -> scalar_t
+   pure function do_sq (self) result (r)
+     class(scalar_t), intent(in) :: self
+     type(scalar_t) :: r
+     r%val = self%val * self%val
+   end function
+ 
+   ! .div. on vector_t -> scalar_t
+   pure function do_div (self) result (r)
+     class(vector_t), intent(in) :: self
+     type(scalar_t) :: r
+     r%val = self%val / 2.0
+   end function
+ 
+   pure function get_val (self) result (r)
+     class(scalar_t), intent(in) :: self
+     real :: r
+     r = self%val
+   end function
+ 
+ end module associate_80_m
+ 
+ program associate_80
+   use associate_80_m
+   implicit none
+ 
+   type(scalar_t) :: s
+   s%val = 3.0
+ 
+   ! Case 1: direct type-bound UDO as ASSOCIATE selector
+   associate (g => .grad. s)
+     if (abs (g%val - 6.0) > 1.0e-6) stop 1
+     if (abs (g%get () - 6.0) > 1.0e-6) stop 2
+   end associate
+ 
+   ! Case 2: inherited UDO (.sq. defined on scalar_t, used via scalar_t)
+   associate (q => .sq. s)
+     if (abs (q%val - 9.0) > 1.0e-6) stop 3
+   end associate
+ 
+   ! Case 3: nested UDOs — .div. (.grad. s)
+   ! .grad. s gives vector_t with val=6, .div. gives scalar_t with val=3
+   associate (r => .div. (.grad. s))
+     if (abs (r%val - 3.0) > 1.0e-6) stop 4
+     if (abs (r%get () - 3.0) > 1.0e-6) stop 5
+   end associate
+ 
+ end program associate_80
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/associate_81.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/associate_81.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/associate_81.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/associate_81.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,44 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/125650
+ !
+ ! Verify that an ASSOCIATE selector that is an overloaded intrinsic operator
+ ! expression (here a CHARACTER-returning `+', bound via an explicit
+ ! interface) is extended to a function call early enough that the
+ ! associate name receives a known type before the body of the ASSOCIATE
+ ! construct is parsed.  Previously the associate name stayed untyped,
+ ! a substring reference to it was matched incorrectly, and the wrong
+ ! reference reached the back end, causing an ICE in trans-expr.cc.
+ 
+ module associate_81_m
+   implicit none
+ 
+   interface operator(+)
+     module procedure concat
+   end interface
+ 
+ contains
+ 
+   function concat (dd1, dd2)
+     implicit none
+     character(len = 8) :: concat
+     character(len = 3), intent(in) :: dd1
+     character(len = 5), intent(in) :: dd2
+     concat = dd1 // dd2
+   end function
+ 
+ end module
+ 
+ program associate_81
+   use associate_81_m
+   implicit none
+ 
+   character(len = 3) :: arg1 = 'aaa'
+   character(len = 5) :: arg2 = 'ccccc'
+ 
+   associate (aa => arg1, bb => arg2, cc => arg1 + arg2)
+     if (cc /= 'aaaccccc') stop 1
+     if (cc(3:5) /= 'acc') stop 2
+   end associate
+ 
+ end program
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/associate_contained_func_typebound.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/associate_contained_func_typebound.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/associate_contained_func_typebound.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/associate_contained_func_typebound.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,54 ----
+ ! { dg-do compile }
+ ! { dg-options "" }
+ !
+ ! PR fortran/125530
+ ! ASSOCIATE with a contained-function selector giving spurious errors when
+ ! type-bound (including generic) procedures are called on the associate name.
+ 
+ module tbp_m
+   implicit none
+   type :: t
+     integer :: n = 0
+   contains
+     procedure :: direct_call
+     procedure :: target_of_generic
+     generic   :: generic_call => target_of_generic
+   end type
+ contains
+   subroutine direct_call (self)
+     class(t), intent(in) :: self
+     print *, self%n
+   end subroutine
+   subroutine target_of_generic (self)
+     class(t), intent(in) :: self
+     print *, self%n
+   end subroutine
+ end module
+ 
+ ! Direct type-bound call.
+ subroutine test_direct ()
+   use tbp_m
+   implicit none
+   associate (x => make_t())
+     call x%direct_call()
+   end associate
+ contains
+   function make_t() result(r)
+     type(t) :: r
+     r%n = 1
+   end function
+ end subroutine
+ 
+ ! Generic type-bound call.
+ subroutine test_generic ()
+   use tbp_m
+   implicit none
+   associate (x => make_t())
+     call x%generic_call()
+   end associate
+ contains
+   function make_t() result(r)
+     type(t) :: r
+     r%n = 2
+   end function
+ end subroutine
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/associate_contained_func_typebound_2.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/associate_contained_func_typebound_2.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/associate_contained_func_typebound_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/associate_contained_func_typebound_2.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,73 ----
+ ! { dg-do run }
+ ! { dg-options "" }
+ !
+ ! PR fortran/125530
+ ! ASSOCIATE with a contained-function selector must allow type-bound
+ ! (including generic) procedure calls on the associate name, and resolve
+ ! them to the correct target.  Run-time companion to
+ ! associate_contained_func_typebound.f90.
+ 
+ module m
+   implicit none
+   type :: t
+     integer :: n = 0
+   contains
+     procedure :: direct_call
+     procedure :: target_of_generic1
+     procedure :: target_of_generic2
+     generic   :: generic_call => target_of_generic1, target_of_generic2
+   end type
+   integer :: ctr = 0
+ contains
+   subroutine direct_call (self)
+     class(t), intent(in) :: self
+     ctr = ctr + self%n
+   end subroutine
+   subroutine target_of_generic1 (self)
+     class(t), intent(in) :: self
+     ctr = ctr + self%n * 10
+   end subroutine
+   subroutine target_of_generic2 (self, arg)
+     class(t), intent(in) :: self
+     integer, intent(in) :: arg
+     ctr = ctr + (self%n + arg) * 100
+   end subroutine
+ end module
+ 
+ module m2
+   use m
+   implicit none
+ contains
+   ! Selector is a contained function.
+   subroutine test_direct ()
+     associate (x => make_t ())
+       call x%direct_call ()
+     end associate
+   contains
+     function make_t () result (r)
+       type(t) :: r
+       r%n = 1
+     end function
+   end subroutine
+ 
+   ! Selector is the module-scope function; generic resolved by argument count.
+   subroutine test_generic ()
+     associate (x => make_t ())
+       call x%generic_call ()
+       call x%generic_call (1)
+     end associate
+   end subroutine
+ 
+   function make_t () result (r)
+     type(t) :: r
+     r%n = 2
+   end function
+ end module
+ 
+ program p
+   use m
+   use m2
+   call test_generic    ! 2*10 + (2+1)*100 = 320
+   call test_direct     ! + 1            = 321
+   if (ctr /= 321) stop 1
+ end program p
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/associate_infer_program_type.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/associate_infer_program_type.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/associate_infer_program_type.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/associate_infer_program_type.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do compile }
+ ! { dg-options "" }
+ !
+ ! PR fortran/125531
+ ! ASSOCIATE with a contained-function selector, using the result's data
+ ! components as arguments to another function (also from CONTAINS), where
+ ! the result type is defined in program scope.  This used to fail with
+ ! "Invalid association target".
+ !
+ program test
+   implicit none
+ 
+   type :: args_t
+     integer :: order_ = 4
+     integer :: cells_ = 20
+     double precision :: x_min_ = 0d0, x_max_ = 1d0
+   end type
+ 
+   associate(args => get_args())
+     associate(result => compute(args%order_, args%cells_))
+       print *, result
+     end associate
+   end associate
+ 
+ contains
+ 
+   function get_args() result(r)
+     type(args_t) :: r
+     r%order_ = 2
+     r%cells_ = 10
+   end function
+ 
+   function compute(order, cells) result(r)
+     integer, intent(in) :: order, cells
+     integer :: r
+     r = order * cells
+   end function
+ 
+ end program
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/do_concurrent_assoc_default_none.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/do_concurrent_assoc_default_none.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/do_concurrent_assoc_default_none.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/do_concurrent_assoc_default_none.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,35 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=f2018" }
+ !
+ ! PR fortran/125529
+ ! DO CONCURRENT with inline type-spec iterators and DEFAULT(NONE) inside an
+ ! ASSOCIATE block used to ICE (segfault in check_default_none_expr).  The
+ ! bug was that sym->ns->code was used instead of d->code to locate the
+ ! forall_iterator list; for symbols in an ASSOCIATE or enclosing procedure
+ ! namespace the wrong union member was read, giving a garbage pointer.
+ ! Additionally, shadow iterators store their name with a leading underscore
+ ! internally, so the comparison against user-visible names must strip it.
+ 
+ subroutine test_associate_default_none (a, b)
+   implicit none
+   integer, intent(in)  :: a(10,10)
+   integer, intent(out) :: b(10,10)
+   do concurrent (integer :: i = 1:10, j = 1:10) &
+       default(none) shared(a, b)
+     associate (tmp => a(i,j))
+       b(i,j) = tmp + 1
+     end associate
+   end do
+ end subroutine
+ 
+ ! Verify that a genuinely missing variable still gets an error.
+ subroutine test_missing_var (a, b, c)
+   implicit none
+   integer, intent(in)  :: a(10,10), c
+   integer, intent(out) :: b(10,10)
+   do concurrent (integer :: i = 1:10, j = 1:10) &
+       default(none) shared(a, b)
+     ! { dg-error "not specified in a locality spec" "" { target *-*-* } .-1 }
+     b(i,j) = a(i,j) + c   ! { dg-error "not specified in a locality spec" }
+   end do
+ end subroutine
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/do_concurrent_assoc_iter_1.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/do_concurrent_assoc_iter_1.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/do_concurrent_assoc_iter_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/do_concurrent_assoc_iter_1.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do run }
+ ! PR fortran/125532
+ ! DO CONCURRENT with inline type-spec iterator used inside an ASSOCIATE body
+ ! produced wrong values: replace_in_code_recursive lacked an EXEC_BLOCK case
+ ! so shadow iterator references were not replaced.
+ program do_concurrent_assoc_iter_1
+   implicit none
+   integer :: a(5), b(5)
+   a = 0
+   b = 0
+   ! Iterator k used in the ASSOCIATE selector and in the body.
+   do concurrent (integer :: k = 1:5)
+     associate (sq => k * k)
+       a(k) = sq
+     end associate
+   end do
+   ! Iterator k used only inside the body (not in selector).
+   do concurrent (integer :: k = 1:5)
+     associate (v => k)
+       b(v) = k + 10
+     end associate
+   end do
+   if (any (a /= [1, 4, 9, 16, 25])) stop 1
+   if (any (b /= [11, 12, 13, 14, 15])) stop 2
+ end program
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/generic_37.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/generic_37.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/generic_37.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/generic_37.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,70 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/125481
+ !
+ ! Wrong generic resolution when actual argument is a procedure pointer and
+ ! the generic has two specific procedures -- one with a procedure-pointer
+ ! dummy argument and one with a REAL(8) dummy argument.  gfortran was
+ ! selecting the REAL(8) specific (F23:15.5.2.5, para 2 violation).
+ 
+ module m
+   implicit none
+ 
+   abstract interface
+     pure function init_i (x) result (y)
+       real (8), intent (in) :: x(:)
+       real (8), allocatable :: y(:)
+     end function
+   end interface
+ 
+   type :: t
+     real (8), allocatable :: vals(:)
+   end type
+ 
+   interface make_t
+     module procedure make_t_from_func   ! first dummy: procedure pointer
+     module procedure make_t_constant    ! first dummy: real(8)
+   end interface
+ 
+ contains
+ 
+   function make_t_from_func (f, n) result (r)
+     procedure (init_i), pointer :: f
+     integer, intent (in) :: n
+     type (t) :: r
+     integer :: i
+     r%vals = f ([(real (i, 8), i = 1, n)])
+   end function
+ 
+   function make_t_constant (c, n) result (r)
+     real (8), intent (in) :: c
+     integer, intent (in) :: n
+     type (t) :: r
+     integer :: i
+     r%vals = [(c, i = 1, n)]
+   end function
+ 
+   pure function identity (x) result (y)
+     real (8), intent (in) :: x(:)
+     real (8), allocatable :: y(:)
+     y = x
+   end function
+ 
+ end module m
+ 
+ program test
+   use m
+   implicit none
+   procedure (init_i), pointer :: f => identity
+   type (t) :: x
+   integer :: i
+ 
+   x = make_t (f, 4)
+   do i = 1, 4
+     if (abs (x%vals(i) - real (i, 8)) > epsilon (x%vals(i))) STOP 1
+   end do
+ 
+   x = make_t (42.0d0, 4)
+   if (any (abs (x%vals - 42.0d0) > epsilon (x%vals(1)))) stop 2
+ 
+ end program test
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/generic_38.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/generic_38.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/generic_38.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/generic_38.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,44 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/125481
+ !
+ ! Verify that passing a procedure pointer actual argument to a plain
+ ! data-object dummy argument is rejected with a clear diagnostic
+ ! (F23:15.5.2.5, para 2).
+ 
+ module m_err
+   implicit none
+ 
+   abstract interface
+     function func_t (x) result (y)
+       real(8), intent(in) :: x
+       real(8) :: y
+     end function
+   end interface
+ 
+   type :: t
+     procedure(func_t), pointer, nopass :: fp => null()
+   end type
+ 
+ contains
+ 
+   subroutine takes_data (x)
+     real(8), intent(in) :: x
+     print *, x
+   end subroutine
+ 
+ end module m_err
+ 
+ program test
+   use m_err
+   implicit none
+   procedure(func_t), pointer :: f => null()
+   type(t) :: obj
+ 
+   ! Procedure pointer variable passed to a data-object dummy.
+   call takes_data (f)       ! { dg-error "cannot be passed to data-object dummy argument" }
+ 
+   ! Procedure pointer component passed to a data-object dummy.
+   call takes_data (obj%fp)  ! { dg-error "cannot be passed to data-object dummy argument" }
+ 
+ end program test
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/implied_do_alloc_comp_1.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/implied_do_alloc_comp_1.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/implied_do_alloc_comp_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/implied_do_alloc_comp_1.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do run }
+ ! Test that a nested implied-do array constructor with a derived-type
+ ! constructor whose argument uses an outer loop variable produces correct
+ ! results when the derived type has an allocatable component.
+ !
+ ! PR fortran/125535
+ 
+ module m
+   implicit none
+   type :: t
+     real, allocatable :: v(:)
+   end type
+ contains
+   pure function make(x) result(r)
+     real, intent(in) :: x(:)
+     type(t) :: r
+     r%v = x
+   end function
+ end module
+ 
+ program implied_do_alloc_comp
+   use m
+   implicit none
+   integer, parameter :: n=3, k=2
+   type(t), allocatable :: a(:,:)
+   real :: h(k, n)
+   integer :: i, j
+ 
+   h(1,:) = [10., 20., 30.]
+   h(2,:) = [11., 21., 31.]
+ 
+   ! Nested implied-do where inner DT constructor uses outer variable i.
+   ! Without the fix this produces heap-use-after-free and wrong values.
+   a = reshape([([(make(h(:,i)), j=1,1)], i=1,n)], [1,n])
+ 
+   if (any(a(1,1)%v /= h(:,1))) stop 1
+   if (any(a(1,2)%v /= h(:,2))) stop 2
+   if (any(a(1,3)%v /= h(:,3))) stop 3
+ end program
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/module_private_2.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/module_private_2.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/module_private_2.f90	Sat Jun 13 22:32:13 2026
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/module_private_2.f90	Sat Jun 20 22:32:12 2026
*************** contains
*** 29,34 ****
      b => export1
    end subroutine pub
  end module m
! ! { dg-final { scan-tree-dump-times "priv" 0 "optimized" } }
  ! { dg-final { scan-tree-dump-times "export1 \\(\\)" 1 "optimized" } }
  ! { dg-final { scan-tree-dump-times "export2 \\(\\)" 1 "optimized" } }
--- 29,35 ----
      b => export1
    end subroutine pub
  end module m
! ! priv now has TREE_PUBLIC (VISIBILITY_HIDDEN) for submodule host-association,
! ! so it is no longer optimized away.
  ! { dg-final { scan-tree-dump-times "export1 \\(\\)" 1 "optimized" } }
  ! { dg-final { scan-tree-dump-times "export2 \\(\\)" 1 "optimized" } }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/pdt_array_alloc_1.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/pdt_array_alloc_1.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/pdt_array_alloc_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/pdt_array_alloc_1.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,30 ----
+ ! { dg-do run }
+ ! Test that allocating an array of parameterized derived type initializes
+ ! the allocatable components of ALL elements, not just element 0.
+ ! PR fortran/125534
+ 
+ module m
+   implicit none
+   integer, parameter :: default_real = kind(0.)
+   type :: tensor_t(k)
+     integer, kind :: k = default_real
+     real(k), allocatable :: values_(:)
+   end type
+ end module
+ 
+ program pdt_array_alloc
+   use m
+   implicit none
+   integer, parameter :: n = 5
+   type(tensor_t), allocatable :: a(:)
+   integer :: i
+ 
+   allocate(a(n))
+   ! Without the fix, only a(1)%values_ was initialized (nullified);
+   ! a(2)..a(n) had garbage pointers and the assignment below would crash.
+   do i = 1, n
+     a(i)%values_ = [real(i), real(i*2)]
+   end do
+ 
+   if (any(a(3)%values_ /= [3., 6.])) stop 1
+ end program
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/public_private_module_2.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/public_private_module_2.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/public_private_module_2.f90	Sat Jun 13 22:32:13 2026
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/public_private_module_2.f90	Sat Jun 20 22:32:12 2026
*************** module mod
*** 19,26 ****
    integer, bind(C,name='') :: qq
  end module mod
  
! ! The two xfails below have appeared with the introduction of submodules. 'iii' and
  ! 'mmm' now are TREE_PUBLIC but has DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN set.
  
        ! { dg-final { scan-assembler "__mod_MOD_aa" } }
        ! { dg-final { scan-assembler-not "iii" { xfail *-*-* } } }
--- 19,28 ----
    integer, bind(C,name='') :: qq
  end module mod
  
! ! The xfails below have appeared with the introduction of submodules. 'iii' and
  ! 'mmm' now are TREE_PUBLIC but has DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN set.
+ ! Similarly 'two' and 'six' (PRIVATE procedures) now have TREE_PUBLIC +
+ ! VISIBILITY_HIDDEN so that submodules can reach them via host association.
  
        ! { dg-final { scan-assembler "__mod_MOD_aa" } }
        ! { dg-final { scan-assembler-not "iii" { xfail *-*-* } } }
*************** CONTAINS
*** 64,74 ****
  END MODULE
  
  ! { dg-final { scan-assembler "__m_MOD_one" } }
! ! { dg-final { scan-assembler-not "two" } }
  ! { dg-final { scan-assembler "three" } }
  ! { dg-final { scan-assembler-not "four" } }
  ! { dg-final { scan-assembler "five" } }
! ! { dg-final { scan-assembler-not "six" } }
  ! { dg-final { scan-assembler "seven" } }
  ! { dg-final { scan-assembler "nine" } }
  ! { dg-final { scan-assembler "__m_MOD_ten" } }
--- 66,76 ----
  END MODULE
  
  ! { dg-final { scan-assembler "__m_MOD_one" } }
! ! { dg-final { scan-assembler-not "two" { xfail *-*-* } } }
  ! { dg-final { scan-assembler "three" } }
  ! { dg-final { scan-assembler-not "four" } }
  ! { dg-final { scan-assembler "five" } }
! ! { dg-final { scan-assembler-not "six" { xfail *-*-* } } }
  ! { dg-final { scan-assembler "seven" } }
  ! { dg-final { scan-assembler "nine" } }
  ! { dg-final { scan-assembler "__m_MOD_ten" } }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/public_private_module_7.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/public_private_module_7.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/public_private_module_7.f90	Sat Jun 13 22:32:13 2026
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/public_private_module_7.f90	Sat Jun 20 22:32:12 2026
*************** contains
*** 25,29 ****
    end function get_key
  end module m_common_attrs
  
! ! { dg-final { scan-assembler-not "__m_common_attrs_MOD_other" } }
  ! { dg-final { scan-assembler "__m_common_attrs_MOD_get_key_len" } }
--- 25,29 ----
    end function get_key
  end module m_common_attrs
  
! ! { dg-final { scan-assembler-not "__m_common_attrs_MOD_other" { xfail *-*-* } } }
  ! { dg-final { scan-assembler "__m_common_attrs_MOD_get_key_len" } }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/public_private_module_8.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/public_private_module_8.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/public_private_module_8.f90	Sat Jun 13 22:32:13 2026
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/public_private_module_8.f90	Sat Jun 20 22:32:12 2026
*************** contains
*** 44,49 ****
    end subroutine bar
  end module m
  
! ! { dg-final { scan-assembler-not "__m_MOD_myotherlen" } }
  ! { dg-final { scan-assembler "__m_MOD_bar" } }
  ! { dg-final { scan-assembler "__m_MOD_mylen" } }
--- 44,49 ----
    end subroutine bar
  end module m
  
! ! { dg-final { scan-assembler-not "__m_MOD_myotherlen" { xfail *-*-* } } }
  ! { dg-final { scan-assembler "__m_MOD_bar" } }
  ! { dg-final { scan-assembler "__m_MOD_mylen" } }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/submodule_host_assoc_1.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/submodule_host_assoc_1.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/submodule_host_assoc_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/submodule_host_assoc_1.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,28 ----
+ ! { dg-do run }
+ ! { dg-additional-sources submodule_host_assoc_1_aux.f90 }
+ !
+ ! PR fortran/125527
+ !
+ ! A submodule must be able to access internal subprograms of its ancestor
+ ! module via host association (Fortran 2018, 14.6.1.3).
+ ! gfortran was incorrectly rejecting such references with
+ ! "has no IMPLICIT type" when the internal procedure was declared PRIVATE.
+ 
+ module m
+   implicit none
+   private
+   public :: test
+ 
+   interface
+     module subroutine test()
+     end subroutine
+   end interface
+ 
+ contains
+   pure function double_it(x) result(y)
+     double precision, intent(in) :: x
+     double precision :: y
+     y = 2.0d0 * x
+   end function
+ 
+ end module m
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/submodule_host_assoc_1_aux.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/submodule_host_assoc_1_aux.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/submodule_host_assoc_1_aux.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/submodule_host_assoc_1_aux.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,15 ----
+ ! Auxiliary file for submodule_host_assoc_1.f90
+ ! { dg-skip-if "" { *-*-* } }
+ submodule(m) s
+   implicit none
+ contains
+   module subroutine test()
+     if (abs(double_it(3.0d0) - 6.0d0) > 1d-10) stop 1
+   end subroutine
+ end submodule s
+ 
+ program p
+   use m
+   implicit none
+   call test()
+ end program p
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/submodule_private_host.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/submodule_private_host.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/submodule_private_host.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/submodule_private_host.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,29 ----
+ ! { dg-do run }
+ ! { dg-additional-sources submodule_private_host_aux.f90 }
+ !
+ ! PR fortran/125430
+ !
+ ! Module-contained procedures with PRIVATE access must retain global ELF
+ ! linkage so that submodules compiled as separate translation units can
+ ! reach them via host association.
+ 
+ module m
+   implicit none
+   private
+   public :: pub
+ 
+   interface
+     module subroutine pub(x)
+       double precision, intent(out) :: x
+     end subroutine
+   end interface
+ 
+ contains
+ 
+   pure function priv(n) result(x)
+     integer, intent(in) :: n
+     double precision :: x
+     x = dble(n) * 0.5d0
+   end function
+ 
+ end module
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/submodule_private_host_aux.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/submodule_private_host_aux.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/submodule_private_host_aux.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/submodule_private_host_aux.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,17 ----
+ ! Auxiliary file for submodule_private_host.f90
+ ! { dg-skip-if "" { *-*-* } }
+ submodule(m) ms
+   implicit none
+ contains
+   module procedure pub
+     x = priv(6)
+   end procedure
+ end submodule
+ 
+ program p
+   use m, only : pub
+   implicit none
+   double precision x
+   call pub(x)
+   if (abs(x - 3.0d0) > 1d-10) stop 1
+ end program
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/vect/pr125431.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/vect/pr125431.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/vect/pr125431.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/vect/pr125431.f90	Sat Jun 20 22:32:12 2026
***************
*** 0 ****
--- 1,16 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-O2 -ffp-contract=off" }
+ ! { dg-additional-options "-march=armv8.3-a" { target { aarch64*-*-* } } }
+ 
+ subroutine foo(a,b,c)
+ 
+   complex :: a(6,6)
+   complex :: b(6,6)
+   complex :: c(6,6)
+ 
+   c = MATMUL(a, b)
+ 
+ end subroutine foo
+ 
+ ! { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" { target { vect_float } }  } }
+ ! { dg-final { scan-tree-dump-not "Found COMPLEX_MUL" "vect" } }
diff -Nrcpad gcc-16-20260613/gcc/testsuite/gfortran.dg/warn_unused_function_2.f90 gcc-16-20260620/gcc/testsuite/gfortran.dg/warn_unused_function_2.f90
*** gcc-16-20260613/gcc/testsuite/gfortran.dg/warn_unused_function_2.f90	Sat Jun 13 22:32:13 2026
--- gcc-16-20260620/gcc/testsuite/gfortran.dg/warn_unused_function_2.f90	Sat Jun 20 22:32:12 2026
*************** module m
*** 13,19 ****
  
  contains
  
!   subroutine s1            ! { dg-warning "defined but not used" }
      call s2(s3)
      contains
        subroutine s4        ! { dg-warning "defined but not used" }
--- 13,19 ----
  
  contains
  
!   subroutine s1
      call s2(s3)
      contains
        subroutine s4        ! { dg-warning "defined but not used" }
diff -Nrcpad gcc-16-20260613/gcc/tree-chrec.cc gcc-16-20260620/gcc/tree-chrec.cc
*** gcc-16-20260613/gcc/tree-chrec.cc	Sat Jun 13 22:32:14 2026
--- gcc-16-20260620/gcc/tree-chrec.cc	Sat Jun 20 22:32:12 2026
*************** chrec_fold_plus_poly_poly (enum tree_cod
*** 127,132 ****
--- 127,142 ----
  
    if (chrec_zerop (right))
      return left;
+   /* When we have an evolution in a non-wrapping type and in the process of
+      accumulating CHREC_RIGHT there was overflow this indicates in the
+      association that happened in accumulating the CHRECs clearly involved UB.
+      Avoid this.  When accumulating two CHRECs we basically turn
+      (a + INCR1) + INCR2 into a + (INCR1 + INCR2) which is not always valid.
+      Note this check only catches few invalid cases.  */
+   else if ((INTEGRAL_TYPE_P (type) && ! TYPE_OVERFLOW_WRAPS (type))
+ 	   && TREE_CODE (right) == INTEGER_CST
+ 	   && TREE_OVERFLOW (right))
+     return chrec_dont_know;
    else
      return build_polynomial_chrec
        (CHREC_VARIABLE (poly0), left, right);
diff -Nrcpad gcc-16-20260613/gcc/tree-if-conv.cc gcc-16-20260620/gcc/tree-if-conv.cc
*** gcc-16-20260613/gcc/tree-if-conv.cc	Sat Jun 13 22:32:14 2026
--- gcc-16-20260620/gcc/tree-if-conv.cc	Sat Jun 20 22:32:12 2026
*************** again:
*** 2277,2291 ****
    if (!gimple_extract_op (arg0_def_stmt, &arg0_op))
      return;
  
!   /* At this point there should be no ssa names occuring in abnormals.  */
!   gcc_assert (!arg0_op.operands_occurs_in_abnormal_phi ());
  
    gimple *arg1_def_stmt = SSA_NAME_DEF_STMT (*arg1);
    if (!gimple_extract_op (arg1_def_stmt, &arg1_op))
      return;
  
!   /* At this point there should be no ssa names occuring in abnormals.  */
!   gcc_assert (!arg1_op.operands_occurs_in_abnormal_phi ());
  
    /* No factoring can happen if the codes are different
       or the number operands.  */
--- 2277,2293 ----
    if (!gimple_extract_op (arg0_def_stmt, &arg0_op))
      return;
  
!   /* Might pick up abnormals from previous bbs so stop the loop.  */
!   if (arg0_op.operands_occurs_in_abnormal_phi ())
!     return;
  
    gimple *arg1_def_stmt = SSA_NAME_DEF_STMT (*arg1);
    if (!gimple_extract_op (arg1_def_stmt, &arg1_op))
      return;
  
!   /* Might pick up abnormals from previous bbs so stop the loop.  */
!   if (arg1_op.operands_occurs_in_abnormal_phi ())
!     return;
  
    /* No factoring can happen if the codes are different
       or the number operands.  */
diff -Nrcpad gcc-16-20260613/gcc/tree-ssa-dom.cc gcc-16-20260620/gcc/tree-ssa-dom.cc
*** gcc-16-20260613/gcc/tree-ssa-dom.cc	Sat Jun 13 22:32:14 2026
--- gcc-16-20260620/gcc/tree-ssa-dom.cc	Sat Jun 20 22:32:13 2026
*************** dom_opt_dom_walker::set_global_ranges_fr
*** 1429,1434 ****
--- 1429,1440 ----
        || !assert_unreachable_fallthru_edge_p (pred_e))
      return;
  
+   // Bail if the condition leading to the assert has 2 ssa-names.
+   // See PR 125501.
+   if ((TREE_CODE (gimple_cond_lhs (stmt)) == SSA_NAME
+       && TREE_CODE (gimple_cond_rhs (stmt)) == SSA_NAME))
+     return;
+ 
    tree name;
    FOR_EACH_GORI_EXPORT_NAME (m_ranger->gori_ssa (), pred_e->src, name)
      if (all_uses_feed_or_dominated_by_stmt (name, stmt)
diff -Nrcpad gcc-16-20260613/gcc/tree-ssa-forwprop.cc gcc-16-20260620/gcc/tree-ssa-forwprop.cc
*** gcc-16-20260613/gcc/tree-ssa-forwprop.cc	Sat Jun 13 22:32:14 2026
--- gcc-16-20260620/gcc/tree-ssa-forwprop.cc	Sat Jun 20 22:32:13 2026
*************** optimize_vector_load (gimple_stmt_iterat
*** 4419,4425 ****
  	  gimple *use_stmt = USE_STMT (use_p);
  	  if (is_gimple_debug (use_stmt))
  	    continue;
! 	  if (!is_gimple_assign (use_stmt))
  	    {
  	      rewrite = false;
  	      break;
--- 4419,4431 ----
  	  gimple *use_stmt = USE_STMT (use_p);
  	  if (is_gimple_debug (use_stmt))
  	    continue;
! 	  tree use_lhs;
! 	  if (!is_gimple_assign (use_stmt)
! 	      /* For alias reasons we move the use to the place of the
! 		 load.  Avoid this when abnormals are involved.  */
! 	      || ((TREE_CODE ((use_lhs = gimple_assign_lhs (use_stmt)))
! 		   == SSA_NAME)
! 		  && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (use_lhs)))
  	    {
  	      rewrite = false;
  	      break;
diff -Nrcpad gcc-16-20260613/gcc/tree-ssa-phiopt.cc gcc-16-20260620/gcc/tree-ssa-phiopt.cc
*** gcc-16-20260613/gcc/tree-ssa-phiopt.cc	Sat Jun 13 22:32:14 2026
--- gcc-16-20260620/gcc/tree-ssa-phiopt.cc	Sat Jun 20 22:32:13 2026
*************** is_factor_profitable (gimple *def_stmt,
*** 267,272 ****
--- 267,274 ----
    FOR_EACH_IMM_USE_FAST (use_p, iter, arg)
      {
        gimple *use_stmt = USE_STMT (use_p);
+       if (is_gimple_debug (use_stmt))
+ 	continue;
        basic_block use_bb = gimple_bb (use_stmt);
        if (dominated_by_p (CDI_DOMINATORS, merge, use_bb))
  	return true;
diff -Nrcpad gcc-16-20260613/gcc/tree-ssa-reassoc.cc gcc-16-20260620/gcc/tree-ssa-reassoc.cc
*** gcc-16-20260613/gcc/tree-ssa-reassoc.cc	Sat Jun 13 22:32:14 2026
--- gcc-16-20260620/gcc/tree-ssa-reassoc.cc	Sat Jun 20 22:32:13 2026
*************** insert_stmt_after (gimple *stmt, gimple
*** 1521,1527 ****
        return;
      }
    else if (gimple_code (insert_point) == GIMPLE_ASM
! 	   && gimple_asm_nlabels (as_a <gasm *> (insert_point)) != 0)
      /* We have no idea where to insert - it depends on where the
         uses will be placed.  */
      gcc_unreachable ();
--- 1521,1528 ----
        return;
      }
    else if (gimple_code (insert_point) == GIMPLE_ASM
! 	   && gimple_asm_nlabels (as_a <gasm *> (insert_point)) != 0
! 	   && !single_succ_p (gimple_bb (insert_point)))
      /* We have no idea where to insert - it depends on where the
         uses will be placed.  */
      gcc_unreachable ();
diff -Nrcpad gcc-16-20260613/gcc/tree-ssa-sccvn.cc gcc-16-20260620/gcc/tree-ssa-sccvn.cc
*** gcc-16-20260613/gcc/tree-ssa-sccvn.cc	Sat Jun 13 22:32:14 2026
--- gcc-16-20260620/gcc/tree-ssa-sccvn.cc	Sat Jun 20 22:32:13 2026
*************** visit_nary_op (tree lhs, gassign *stmt)
*** 5779,5787 ****
      case BIT_FIELD_REF:
        if (TREE_CODE (TREE_OPERAND (rhs1, 0)) == SSA_NAME)
  	{
! 	  tree op0 = TREE_OPERAND (rhs1, 0);
! 	  gassign *ass = dyn_cast <gassign *> (SSA_NAME_DEF_STMT (op0));
! 	  if (ass
  	      && !gimple_has_volatile_ops (ass)
  	      && vn_get_stmt_kind (ass) == VN_REFERENCE)
  	    {
--- 5779,5788 ----
      case BIT_FIELD_REF:
        if (TREE_CODE (TREE_OPERAND (rhs1, 0)) == SSA_NAME)
  	{
! 	  tree op0 = vn_valueize (TREE_OPERAND (rhs1, 0));
! 	  gassign *ass;
! 	  if (TREE_CODE (op0) == SSA_NAME
! 	      && (ass = dyn_cast <gassign *> (SSA_NAME_DEF_STMT (op0)))
  	      && !gimple_has_volatile_ops (ass)
  	      && vn_get_stmt_kind (ass) == VN_REFERENCE)
  	    {
diff -Nrcpad gcc-16-20260613/gcc/tree-vect-loop-manip.cc gcc-16-20260620/gcc/tree-vect-loop-manip.cc
*** gcc-16-20260613/gcc/tree-vect-loop-manip.cc	Sat Jun 13 22:32:14 2026
--- gcc-16-20260620/gcc/tree-vect-loop-manip.cc	Sat Jun 20 22:32:13 2026
*************** vect_loop_versioning (loop_vec_info loop
*** 4428,4434 ****
  	     && (!loop_outer (loop_to_version)->inner->next
  		 || vect_loop_vectorized_call (loop_to_version))
  	     && (!loop_outer (loop_to_version)->inner->next
! 		 || !loop_outer (loop_to_version)->inner->next->next))
  	loop_to_version = loop_outer (loop_to_version);
      }
  
--- 4428,4435 ----
  	     && (!loop_outer (loop_to_version)->inner->next
  		 || vect_loop_vectorized_call (loop_to_version))
  	     && (!loop_outer (loop_to_version)->inner->next
! 		 || !loop_outer (loop_to_version)->inner->next->next)
! 	     && can_duplicate_loop_p (loop_outer (loop_to_version)))
  	loop_to_version = loop_outer (loop_to_version);
      }
  
diff -Nrcpad gcc-16-20260613/gcc/tree-vect-patterns.cc gcc-16-20260620/gcc/tree-vect-patterns.cc
*** gcc-16-20260613/gcc/tree-vect-patterns.cc	Sat Jun 13 22:32:14 2026
--- gcc-16-20260620/gcc/tree-vect-patterns.cc	Sat Jun 20 22:32:13 2026
*************** target_supports_mult_synth_alg (struct a
*** 4244,4250 ****
  static gimple *
  synth_lshift_by_additions (vec_info *vinfo,
  			   tree dest, tree op, HOST_WIDE_INT amnt,
! 			   stmt_vec_info stmt_info)
  {
    HOST_WIDE_INT i;
    tree itype = TREE_TYPE (op);
--- 4244,4250 ----
  static gimple *
  synth_lshift_by_additions (vec_info *vinfo,
  			   tree dest, tree op, HOST_WIDE_INT amnt,
! 			   stmt_vec_info stmt_info, tree vectype)
  {
    HOST_WIDE_INT i;
    tree itype = TREE_TYPE (op);
*************** synth_lshift_by_additions (vec_info *vin
*** 4258,4264 ****
          = gimple_build_assign (tmp_var, PLUS_EXPR, prev_res, prev_res);
        prev_res = tmp_var;
        if (i < amnt - 1)
! 	append_pattern_def_seq (vinfo, stmt_info, stmt);
        else
  	return stmt;
      }
--- 4258,4264 ----
          = gimple_build_assign (tmp_var, PLUS_EXPR, prev_res, prev_res);
        prev_res = tmp_var;
        if (i < amnt - 1)
! 	append_pattern_def_seq (vinfo, stmt_info, stmt, vectype);
        else
  	return stmt;
      }
*************** synth_lshift_by_additions (vec_info *vin
*** 4276,4282 ****
  static tree
  apply_binop_and_append_stmt (vec_info *vinfo,
  			     tree_code code, tree op1, tree op2,
! 			     stmt_vec_info stmt_vinfo, bool synth_shift_p)
  {
    if (integer_zerop (op2)
        && (code == LSHIFT_EXPR
--- 4276,4283 ----
  static tree
  apply_binop_and_append_stmt (vec_info *vinfo,
  			     tree_code code, tree op1, tree op2,
! 			     stmt_vec_info stmt_vinfo, tree vectype,
! 			     bool synth_shift_p)
  {
    if (integer_zerop (op2)
        && (code == LSHIFT_EXPR
*************** apply_binop_and_append_stmt (vec_info *v
*** 4294,4306 ****
        && synth_shift_p)
      {
        stmt = synth_lshift_by_additions (vinfo, tmp_var, op1,
! 					TREE_INT_CST_LOW (op2), stmt_vinfo);
!       append_pattern_def_seq (vinfo, stmt_vinfo, stmt);
        return tmp_var;
      }
  
    stmt = gimple_build_assign (tmp_var, code, op1, op2);
!   append_pattern_def_seq (vinfo, stmt_vinfo, stmt);
    return tmp_var;
  }
  
--- 4295,4308 ----
        && synth_shift_p)
      {
        stmt = synth_lshift_by_additions (vinfo, tmp_var, op1,
! 					TREE_INT_CST_LOW (op2), stmt_vinfo,
! 					vectype);
!       append_pattern_def_seq (vinfo, stmt_vinfo, stmt, vectype);
        return tmp_var;
      }
  
    stmt = gimple_build_assign (tmp_var, code, op1, op2);
!   append_pattern_def_seq (vinfo, stmt_vinfo, stmt, vectype);
    return tmp_var;
  }
  
*************** vect_synth_mult_by_constant (vec_info *v
*** 4396,4402 ****
      {
        tree tmp_op = vect_recog_temp_ssa_var (multtype, NULL);
        stmt = gimple_build_assign (tmp_op, CONVERT_EXPR, op);
!       append_pattern_def_seq (vinfo, stmt_vinfo, stmt);
        op = tmp_op;
      }
  
--- 4398,4404 ----
      {
        tree tmp_op = vect_recog_temp_ssa_var (multtype, NULL);
        stmt = gimple_build_assign (tmp_op, CONVERT_EXPR, op);
!       append_pattern_def_seq (vinfo, stmt_vinfo, stmt, vectype);
        op = tmp_op;
      }
  
*************** vect_synth_mult_by_constant (vec_info *v
*** 4420,4426 ****
  	  if (synth_shift_p)
  	    stmt
  	      = synth_lshift_by_additions (vinfo, accum_tmp, accumulator,
! 					   alg.log[i], stmt_vinfo);
  	  else
  	    stmt = gimple_build_assign (accum_tmp, LSHIFT_EXPR, accumulator,
  					 shft_log);
--- 4422,4428 ----
  	  if (synth_shift_p)
  	    stmt
  	      = synth_lshift_by_additions (vinfo, accum_tmp, accumulator,
! 					   alg.log[i], stmt_vinfo, vectype);
  	  else
  	    stmt = gimple_build_assign (accum_tmp, LSHIFT_EXPR, accumulator,
  					 shft_log);
*************** vect_synth_mult_by_constant (vec_info *v
*** 4428,4441 ****
  	case alg_add_t_m2:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, op, shft_log,
! 					   stmt_vinfo, synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, accumulator,
  				       tmp_var);
  	  break;
  	case alg_sub_t_m2:
  	  tmp_var = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, op,
  						 shft_log, stmt_vinfo,
! 						 synth_shift_p);
  	  /* In some algorithms the first step involves zeroing the
  	     accumulator.  If subtracting from such an accumulator
  	     just emit the negation directly.  */
--- 4430,4443 ----
  	case alg_add_t_m2:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, op, shft_log,
! 					   stmt_vinfo, vectype, synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, accumulator,
  				       tmp_var);
  	  break;
  	case alg_sub_t_m2:
  	  tmp_var = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, op,
  						 shft_log, stmt_vinfo,
! 						 vectype, synth_shift_p);
  	  /* In some algorithms the first step involves zeroing the
  	     accumulator.  If subtracting from such an accumulator
  	     just emit the negation directly.  */
*************** vect_synth_mult_by_constant (vec_info *v
*** 4448,4473 ****
  	case alg_add_t2_m:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, tmp_var, op);
  	  break;
  	case alg_sub_t2_m:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, MINUS_EXPR, tmp_var, op);
  	  break;
  	case alg_add_factor:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, accumulator,
  				       tmp_var);
  	  break;
  	case alg_sub_factor:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, MINUS_EXPR, tmp_var,
  				      accumulator);
  	  break;
--- 4450,4479 ----
  	case alg_add_t2_m:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, vectype,
! 					   synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, tmp_var, op);
  	  break;
  	case alg_sub_t2_m:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, vectype,
! 					   synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, MINUS_EXPR, tmp_var, op);
  	  break;
  	case alg_add_factor:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, vectype,
! 					   synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, accumulator,
  				       tmp_var);
  	  break;
  	case alg_sub_factor:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, vectype,
! 					   synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, MINUS_EXPR, tmp_var,
  				      accumulator);
  	  break;
*************** vect_synth_mult_by_constant (vec_info *v
*** 4478,4484 ****
  	 but rather return it directly.  */
  
        if ((i < alg.ops - 1) || needs_fixup || cast_to_unsigned_p)
! 	append_pattern_def_seq (vinfo, stmt_vinfo, stmt);
        accumulator = accum_tmp;
      }
    if (variant == negate_variant)
--- 4484,4490 ----
  	 but rather return it directly.  */
  
        if ((i < alg.ops - 1) || needs_fixup || cast_to_unsigned_p)
! 	append_pattern_def_seq (vinfo, stmt_vinfo, stmt, vectype);
        accumulator = accum_tmp;
      }
    if (variant == negate_variant)
*************** vect_synth_mult_by_constant (vec_info *v
*** 4487,4493 ****
        stmt = gimple_build_assign (accum_tmp, NEGATE_EXPR, accumulator);
        accumulator = accum_tmp;
        if (cast_to_unsigned_p)
! 	append_pattern_def_seq (vinfo, stmt_vinfo, stmt);
      }
    else if (variant == add_variant)
      {
--- 4493,4499 ----
        stmt = gimple_build_assign (accum_tmp, NEGATE_EXPR, accumulator);
        accumulator = accum_tmp;
        if (cast_to_unsigned_p)
! 	append_pattern_def_seq (vinfo, stmt_vinfo, stmt, vectype);
      }
    else if (variant == add_variant)
      {
*************** vect_synth_mult_by_constant (vec_info *v
*** 4495,4501 ****
        stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, accumulator, op);
        accumulator = accum_tmp;
        if (cast_to_unsigned_p)
! 	append_pattern_def_seq (vinfo, stmt_vinfo, stmt);
      }
    /* Move back to a signed if needed.  */
    if (cast_to_unsigned_p)
--- 4501,4507 ----
        stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, accumulator, op);
        accumulator = accum_tmp;
        if (cast_to_unsigned_p)
! 	append_pattern_def_seq (vinfo, stmt_vinfo, stmt, vectype);
      }
    /* Move back to a signed if needed.  */
    if (cast_to_unsigned_p)
diff -Nrcpad gcc-16-20260613/gcc/tree-vect-slp-patterns.cc gcc-16-20260620/gcc/tree-vect-slp-patterns.cc
*** gcc-16-20260613/gcc/tree-vect-slp-patterns.cc	Sat Jun 13 22:32:14 2026
--- gcc-16-20260620/gcc/tree-vect-slp-patterns.cc	Sat Jun 20 22:32:13 2026
*************** complex_mul_pattern::matches (complex_op
*** 1043,1048 ****
--- 1043,1053 ----
    if (op != MINUS_PLUS)
      return IFN_LAST;
  
+   /* It's only valid to form FMAs and MUL with -ffp-contract=fast.  */
+   if (flag_fp_contract_mode != FP_CONTRACT_FAST
+       && FLOAT_TYPE_P (SLP_TREE_VECTYPE (*node)))
+     return IFN_LAST;
+ 
    auto childs = *ops;
    auto l0node = SLP_TREE_CHILDREN (childs[0]);
  
*************** complex_mul_pattern::matches (complex_op
*** 1055,1065 ****
    auto_vec<slp_tree> left_op, right_op;
    slp_tree add0 = NULL;
  
!   /* Check if we may be a multiply add.  It's only valid to form FMAs
!      with -ffp-contract=fast.  */
    if (!mul0
-       && (flag_fp_contract_mode == FP_CONTRACT_FAST
- 	  || !FLOAT_TYPE_P (SLP_TREE_VECTYPE (*node)))
        && vect_match_expression_p (l0node[0], PLUS_EXPR))
      {
        auto vals = SLP_TREE_CHILDREN (l0node[0]);
--- 1060,1067 ----
    auto_vec<slp_tree> left_op, right_op;
    slp_tree add0 = NULL;
  
!   /* Check if we may be a multiply add.  */
    if (!mul0
        && vect_match_expression_p (l0node[0], PLUS_EXPR))
      {
        auto vals = SLP_TREE_CHILDREN (l0node[0]);
*************** complex_fms_pattern::matches (complex_op
*** 1290,1295 ****
--- 1292,1302 ----
    if (!vect_match_expression_p (root, MINUS_EXPR))
      return IFN_LAST;
  
+   /* It's only valid to form FMSs with -ffp-contract=fast.  */
+   if (flag_fp_contract_mode != FP_CONTRACT_FAST
+       && FLOAT_TYPE_P (SLP_TREE_VECTYPE (*ref_node)))
+     return IFN_LAST;
+ 
    /* TODO: Support invariants here, with the new layout CADD now
  	   can match before we get a chance to try CFMS.  */
    auto nodes = SLP_TREE_CHILDREN (root);
