diff -Nrcpad gcc-15-20260703/LAST_UPDATED gcc-15-20260710/LAST_UPDATED
*** gcc-15-20260703/LAST_UPDATED	Fri Jul  3 22:32:22 2026
--- gcc-15-20260710/LAST_UPDATED	Fri Jul 10 22:32:24 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-15 revision cd02f68b56336df7f4d2e358b0fae21dcb5aa6af
--- 1 ----
! Obtained from git: releases/gcc-15 revision 5422486d4bc728688dd2c874cb014fadf745b2da
diff -Nrcpad gcc-15-20260703/MD5SUMS gcc-15-20260710/MD5SUMS
*** gcc-15-20260703/MD5SUMS	Fri Jul  3 22:32:27 2026
--- gcc-15-20260710/MD5SUMS	Fri Jul 10 22:32:28 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20260703.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20260710.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 25,31 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 701e7e27d8571463ef2c36a6b602938f  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
--- 25,31 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 89814e7193f424340ddc1196e76492eb  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
*************** c5258891437b4abaf168ed1b1a5b2189  gcc/BA
*** 514,520 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 468bb7779bafa6050694d0add17bc5d2  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 514,520 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! f9f60156cba5f99eba7925abdc3ba245  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 551,557 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 920e70c620b06104690ff421bc7e9a95  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 551,557 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 73e182073d41edbf1a1af11187a587ec  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** d3fb594d11281112ff8d8f304a000c4e  gcc/co
*** 4190,4196 ****
  c9b93fa3cbcff84e37b470c61a4c7f65  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! b44da4b2d3aa31065c68dde766063260  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
  ba79dc9cffbca47e10d361aeb3d716f3  gcc/config/i386/i386-features.cc
  94adc181549d171cf2618530e3b49ff7  gcc/config/i386/i386-features.h
--- 4190,4196 ----
  c9b93fa3cbcff84e37b470c61a4c7f65  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! b168b5f210f9503533227bd72c729e45  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
  ba79dc9cffbca47e10d361aeb3d716f3  gcc/config/i386/i386-features.cc
  94adc181549d171cf2618530e3b49ff7  gcc/config/i386/i386-features.h
*************** cd13b51383c99c08d86250b61fed3805  gcc/co
*** 4903,4909 ****
  540013c309ceb3efb2b16d728b1fc726  gcc/config/pru/t-pru
  a5e691ce14017f2a89283ed510bb78fd  gcc/config/riscv/arch-canonicalize
  e9380b9ebae1389099358b86feb64220  gcc/config/riscv/autovec-opt.md
! 257ef39a997b6782e80bfe268f7765bc  gcc/config/riscv/autovec.md
  1b5bf211ae4f1c676fc56b08b23e7d66  gcc/config/riscv/bitmanip.md
  41ad36f502789bcb62ddd76fa56ba00d  gcc/config/riscv/constraints.md
  4e0968dc35562b151fd162778542718f  gcc/config/riscv/corev.def
--- 4903,4909 ----
  540013c309ceb3efb2b16d728b1fc726  gcc/config/pru/t-pru
  a5e691ce14017f2a89283ed510bb78fd  gcc/config/riscv/arch-canonicalize
  e9380b9ebae1389099358b86feb64220  gcc/config/riscv/autovec-opt.md
! 178d1f6037ed130b949c7cc0d4d81cbc  gcc/config/riscv/autovec.md
  1b5bf211ae4f1c676fc56b08b23e7d66  gcc/config/riscv/bitmanip.md
  41ad36f502789bcb62ddd76fa56ba00d  gcc/config/riscv/constraints.md
  4e0968dc35562b151fd162778542718f  gcc/config/riscv/corev.def
*************** e55807da6a1aeac0ce3d312b43660237  gcc/co
*** 5261,5267 ****
  b21e76d3061916df429b986025c99cd6  gcc/config/sh/sh-protos.h
  6253fe9b08dd339c658cfa4033464ac3  gcc/config/sh/sh.cc
  bc3cf16ed45eb962cf4f8b13a97b724f  gcc/config/sh/sh.h
! 41f79e8504a610cef908cbc11ec9b1f7  gcc/config/sh/sh.md
  ec5ab32d7efddf71dc540a3ebec3f02c  gcc/config/sh/sh.opt
  670e5840056f2d5bcfb8444910abd200  gcc/config/sh/sh.opt.urls
  f88c001b1bae674e16a4440ff9eba0b6  gcc/config/sh/sh1.md
--- 5261,5267 ----
  b21e76d3061916df429b986025c99cd6  gcc/config/sh/sh-protos.h
  6253fe9b08dd339c658cfa4033464ac3  gcc/config/sh/sh.cc
  bc3cf16ed45eb962cf4f8b13a97b724f  gcc/config/sh/sh.h
! f2a5b84dc1482c849236fe0b17faa7ef  gcc/config/sh/sh.md
  ec5ab32d7efddf71dc540a3ebec3f02c  gcc/config/sh/sh.opt
  670e5840056f2d5bcfb8444910abd200  gcc/config/sh/sh.opt.urls
  f88c001b1bae674e16a4440ff9eba0b6  gcc/config/sh/sh1.md
*************** ee3fb2cc9b9557d3895f527353160bd4  gcc/cp
*** 5548,5554 ****
  a4fc328db28f375cb129e7d3b1a96683  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
! 29ad894cf15be394844155a0ebb602c6  gcc/cp/coroutines.cc
  be1619275f92c0a0eb6eb83c1e3c7f6b  gcc/cp/coroutines.h
  df06c0e1088c92bdb99eab5152b9f656  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
--- 5548,5554 ----
  a4fc328db28f375cb129e7d3b1a96683  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
! 3fa73049fe8fdc3b123451119c7635f6  gcc/cp/coroutines.cc
  be1619275f92c0a0eb6eb83c1e3c7f6b  gcc/cp/coroutines.h
  df06c0e1088c92bdb99eab5152b9f656  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
*************** a798cdca802a57ffa3473ab610b37c86  gcc/fo
*** 6063,6069 ****
  c93bd28b3de1f9c783e16fc6ec4aab32  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 7b47406a7d4f723c949dac2f9c1501b8  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6063,6069 ----
  c93bd28b3de1f9c783e16fc6ec4aab32  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! ff52e62e1a391dcf02098eb58c169dd2  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** d85e2f2fc3ee4721563bd47719063fb6  gcc/fo
*** 6109,6115 ****
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  9982bdf75ac5c9630f66edd2aea1fe8b  gcc/fortran/dump-parse-tree.cc
  860343539ea7488e7bb44b94ea2b0f77  gcc/fortran/error.cc
! c51719103621c7d22803dcc683314e14  gcc/fortran/expr.cc
  88fde92a0336c0454c5baa0f3c24888a  gcc/fortran/f95-lang.cc
  9e933a215ff39d7f5ddd5bbce3f846ea  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
--- 6109,6115 ----
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  9982bdf75ac5c9630f66edd2aea1fe8b  gcc/fortran/dump-parse-tree.cc
  860343539ea7488e7bb44b94ea2b0f77  gcc/fortran/error.cc
! 67ace3d58d1c7d3baa7f7110ad229995  gcc/fortran/expr.cc
  88fde92a0336c0454c5baa0f3c24888a  gcc/fortran/f95-lang.cc
  9e933a215ff39d7f5ddd5bbce3f846ea  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
*************** a760d1c20bec269a79250200bfc880c1  gcc/fo
*** 6141,6147 ****
  8376eba2060129f13c5146a7773b2af7  gcc/fortran/options.cc
  2e829a5546ff491798ea9e9a22f75f9c  gcc/fortran/parse.cc
  09678ef13dc709d251be943d808544b8  gcc/fortran/parse.h
! 5c2d54d3cd692d45c1ce75bd538ba932  gcc/fortran/primary.cc
  de578eb8602c967586824c6730999883  gcc/fortran/resolve.cc
  853897286a4ee54af01b95fad77fb872  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
--- 6141,6147 ----
  8376eba2060129f13c5146a7773b2af7  gcc/fortran/options.cc
  2e829a5546ff491798ea9e9a22f75f9c  gcc/fortran/parse.cc
  09678ef13dc709d251be943d808544b8  gcc/fortran/parse.h
! d83cdb550afc7b9d56db2d6828d66d4b  gcc/fortran/primary.cc
  de578eb8602c967586824c6730999883  gcc/fortran/resolve.cc
  853897286a4ee54af01b95fad77fb872  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
*************** de578eb8602c967586824c6730999883  gcc/fo
*** 6150,6162 ****
  abd1247d4f726490e981994fe5fc3124  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! bb8ad9abb96ac91292a61b3c7fbde987  gcc/fortran/trans-array.cc
  a4f5f15bbfd3cf3b780e3a8875ebf0df  gcc/fortran/trans-array.h
  134a72b3349d427eccb35198acc48a71  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  0fe2b2c02eb1dadc79a71d2577983c50  gcc/fortran/trans-decl.cc
! d4f512509f36461a2b01f58a4dd4e23c  gcc/fortran/trans-expr.cc
  60e5a65089ed48eb92c5c82d487a4c47  gcc/fortran/trans-intrinsic.cc
  98aa7d58758baa33999a0070d6f0176e  gcc/fortran/trans-io.cc
  62232a16bc62a73bd54116692688baf7  gcc/fortran/trans-openmp.cc
--- 6150,6162 ----
  abd1247d4f726490e981994fe5fc3124  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! 7c6aea7f4b156b8dd1c498513dbf7b1e  gcc/fortran/trans-array.cc
  a4f5f15bbfd3cf3b780e3a8875ebf0df  gcc/fortran/trans-array.h
  134a72b3349d427eccb35198acc48a71  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  0fe2b2c02eb1dadc79a71d2577983c50  gcc/fortran/trans-decl.cc
! 32241d88d2af91b3753c84abe6c16582  gcc/fortran/trans-expr.cc
  60e5a65089ed48eb92c5c82d487a4c47  gcc/fortran/trans-intrinsic.cc
  98aa7d58758baa33999a0070d6f0176e  gcc/fortran/trans-io.cc
  62232a16bc62a73bd54116692688baf7  gcc/fortran/trans-openmp.cc
*************** b3a965e425e6cf7888319667faf58da9  gcc/sy
*** 8450,8456 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 8db7a4704c8ac2d2d729fce7d40ec1d2  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8450,8456 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! c3febcc2f322aa932b293336dd426e82  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** ea31517e527d7eb88edeeab341ec1a8b  gcc/te
*** 21924,21930 ****
  a36a7ca1d0eff1f81629dd71a462961f  gcc/testsuite/g++.dg/cpp2a/decomp1-aux.cc
  97d028d9e7af8226aa281ebcad5bf29f  gcc/testsuite/g++.dg/cpp2a/decomp1.C
  3f0f0087d8090182027f49fb3162aad7  gcc/testsuite/g++.dg/cpp2a/decomp10.C
! aad29b064fff817ac1e3a613ef44faf8  gcc/testsuite/g++.dg/cpp2a/decomp2.C
  8f3b9a6346c7c909ec6ae92d8da636ac  gcc/testsuite/g++.dg/cpp2a/decomp3.C
  c45bd99bf81821c6c33a6bec2da4fce3  gcc/testsuite/g++.dg/cpp2a/decomp4.C
  0cbb7f35ec543d54c041228759e5d4b2  gcc/testsuite/g++.dg/cpp2a/decomp5.C
--- 21924,21930 ----
  a36a7ca1d0eff1f81629dd71a462961f  gcc/testsuite/g++.dg/cpp2a/decomp1-aux.cc
  97d028d9e7af8226aa281ebcad5bf29f  gcc/testsuite/g++.dg/cpp2a/decomp1.C
  3f0f0087d8090182027f49fb3162aad7  gcc/testsuite/g++.dg/cpp2a/decomp10.C
! b43ef64f974b1072708b231b049e3ed4  gcc/testsuite/g++.dg/cpp2a/decomp2.C
  8f3b9a6346c7c909ec6ae92d8da636ac  gcc/testsuite/g++.dg/cpp2a/decomp3.C
  c45bd99bf81821c6c33a6bec2da4fce3  gcc/testsuite/g++.dg/cpp2a/decomp4.C
  0cbb7f35ec543d54c041228759e5d4b2  gcc/testsuite/g++.dg/cpp2a/decomp5.C
*************** e94286eccc733d11a63447fdd9bada99  gcc/te
*** 73160,73166 ****
  3a8f07748adbffc9bb3f16173e9a3fd9  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-4.c
  74dfb9efd2ea82e303d28ac1d2ec908b  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-5.c
  91b223ff92af83526eb2bf8c06358638  gcc/testsuite/gcc.target/arm/thumb2-switchstatement.c
! 661cd52deb4f860aae4c6c1b1e062e57  gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
  b5cb0cc39d4570e0da1e85821a82e816  gcc/testsuite/gcc.target/arm/tlscall.c
  bbfeab1d19ae8a86996efa5896bc515a  gcc/testsuite/gcc.target/arm/unaligned-argument-1.c
  07b58b9d3cae47b57b137b31a0ea472c  gcc/testsuite/gcc.target/arm/unaligned-argument-2.c
--- 73160,73166 ----
  3a8f07748adbffc9bb3f16173e9a3fd9  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-4.c
  74dfb9efd2ea82e303d28ac1d2ec908b  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-5.c
  91b223ff92af83526eb2bf8c06358638  gcc/testsuite/gcc.target/arm/thumb2-switchstatement.c
! fd1c37fe38d5528dd562aa4b0d4ee01c  gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
  b5cb0cc39d4570e0da1e85821a82e816  gcc/testsuite/gcc.target/arm/tlscall.c
  bbfeab1d19ae8a86996efa5896bc515a  gcc/testsuite/gcc.target/arm/unaligned-argument-1.c
  07b58b9d3cae47b57b137b31a0ea472c  gcc/testsuite/gcc.target/arm/unaligned-argument-2.c
*************** d9ed650f309dc0e24daeb25d90c34fa0  gcc/te
*** 80521,80526 ****
--- 80521,80527 ----
  2ff14347296d11b5e3b328e3957e5191  gcc/testsuite/gcc.target/i386/pr124710-1.c
  79c874a97f648ff278ec1765414620b1  gcc/testsuite/gcc.target/i386/pr124710-2.c
  dc1ca8471081be67fdad4d340997d425  gcc/testsuite/gcc.target/i386/pr125351.c
+ f91ae39059fe7fb51f459d3446010197  gcc/testsuite/gcc.target/i386/pr126148.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
  31ead0ee84b382ba03e3561931bc6e40  gcc/testsuite/gcc.target/i386/pr14289-1.c
*************** e990c042b373d09f16b69f4b30f0ac20  gcc/te
*** 90000,90005 ****
--- 90001,90007 ----
  760a0af9a3e372a59914485a818d7454  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr125215.c
  455f4d6d561c03a39a904e17bbb00820  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr125478.c
  cfd8a75e04799147b00e32b4c36ce0e7  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr125670.c
+ c3dec765eb396a84ec70aad7d3b6248f  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr126049.c
  ee8bcba5f6876f2027f0f263f81465aa  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/extract_last-1.c
  7ff884bfa2e6cf9bc4c6172466538515  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/extract_last-10.c
  b2792e9264dcd6fa2e88f495d51677e6  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/extract_last-11.c
*************** d5753d3f6bf92409af4a8ed1584a9000  gcc/te
*** 94612,94617 ****
--- 94614,94620 ----
  4a850593fc1a7bbabb90b46094c87964  gcc/testsuite/gcc.target/sh/hiconst.c
  ae8390e15b5eaf5fd9c40f8bb42c7724  gcc/testsuite/gcc.target/sh/memset.c
  cdd0e79dc0c4fb2425cf6753e465a85e  gcc/testsuite/gcc.target/sh/mfmovd.c
+ e0c2175829f132bf44d0a7d6f8cf419f  gcc/testsuite/gcc.target/sh/pr122948.c
  9439f7da71328f8113b757d9c4130319  gcc/testsuite/gcc.target/sh/pr21255-1.c
  de6f77c59627b198d6e5048192e2f128  gcc/testsuite/gcc.target/sh/pr21255-2-mb.c
  475ae84e95ba85931d38a06a5d6f12f8  gcc/testsuite/gcc.target/sh/pr21255-2-ml.c
*************** eede070a28c17448e8635dfa208829ae  gcc/te
*** 100555,100560 ****
--- 100558,100564 ----
  084d73893a30ee8bc9420fc82f944f3c  gcc/testsuite/gfortran.dg/asan/asan.exp
  3b8425a2f59699b47aac6da29c11aba9  gcc/testsuite/gfortran.dg/asan/associate_58.f90
  e9f58df1de071d2b106b16b3af8f6764  gcc/testsuite/gfortran.dg/asan/associate_59.f90
+ f3a2f2d532dfb58980122e4734146c0d  gcc/testsuite/gfortran.dg/asan/assumed_rank_26.f90
  32f63bfc5a1fd9dda988b63c860b03bd  gcc/testsuite/gfortran.dg/asan/finalize_1.f90
  66de6cb3bf07d14487491fac7d1ee72f  gcc/testsuite/gfortran.dg/asan/pointer_assign_16.f90
  68c306b7235f43b669fee04a590362d9  gcc/testsuite/gfortran.dg/asan/pr110415-2.f90
*************** cc6ac3aa934c104c85fad8e43ae6985d  gcc/te
*** 105974,105979 ****
--- 105978,105987 ----
  48782be659f3ec5c8d9cba03ca6cc43d  gcc/testsuite/gfortran.dg/pr103286.f90
  ce86820082e25f5aad2607f9163c3cf4  gcc/testsuite/gfortran.dg/pr103312.f90
  ab2e9f64b18aaf6df9600288ded6ce51  gcc/testsuite/gfortran.dg/pr103366.f90
+ f5b2d7909d22359486a362b6e2b6e6d2  gcc/testsuite/gfortran.dg/pr103367.f90
+ c35efc88e117f86638938a16d6b88054  gcc/testsuite/gfortran.dg/pr103367_2.f90
+ 8a27376a5ce044b06ca3b47f787353d7  gcc/testsuite/gfortran.dg/pr103367_3.f90
+ 066ab4b80e43f24da3f7fe87a2cf8014  gcc/testsuite/gfortran.dg/pr103367_4.f90
  9e00f34ad9d6d78b98007d4ad68251f5  gcc/testsuite/gfortran.dg/pr103389.f90
  f2ba2e64941d368a0af432859dc114fe  gcc/testsuite/gfortran.dg/pr103471.f90
  5403c8d36e959e2211ecc4f2a1db6e1c  gcc/testsuite/gfortran.dg/pr103475.f90
*************** b9c77c8cd78fcd9e57fbfafe732a8c95  gcc/te
*** 106153,106158 ****
--- 106161,106167 ----
  9aa1b21c93a3838e52245be748b9b301  gcc/testsuite/gfortran.dg/pr124161.f90
  5bfaeea8d13a5035cf46aaab485c2803  gcc/testsuite/gfortran.dg/pr124450.f90
  864111c6768fee3f647605c5cf8db475  gcc/testsuite/gfortran.dg/pr124567.f90
+ 7e2e05a5f046a763356f94130e52c9a6  gcc/testsuite/gfortran.dg/pr126116.f90
  984f8307f36d56a0b48b5acce2dd5eb5  gcc/testsuite/gfortran.dg/pr12884.f
  64075248b9d1bffd6f380bb4e2a6eae0  gcc/testsuite/gfortran.dg/pr15129.f90
  e9cbd51db4e16292fc5dd1fead2e5a49  gcc/testsuite/gfortran.dg/pr15140.f90
*************** a3eb5dee2788fe0a6c42502ba658eddd  libffi
*** 119350,119356 ****
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! 02f5cb10c2e5c7a5397a6ddcfa0320eb  libgcc/ChangeLog
  beb78e5f6395b748fd8cdc14953c2e01  libgcc/Makefile.in
  0bd770eb6cc536bbe3915c36f8ddf753  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
--- 119359,119365 ----
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! b4bee2a1443400e18ecd9dbb482c92d3  libgcc/ChangeLog
  beb78e5f6395b748fd8cdc14953c2e01  libgcc/Makefile.in
  0bd770eb6cc536bbe3915c36f8ddf753  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
*************** ada9a39786da3b2e999f7440a17a1ed7  libgcc
*** 120597,120603 ****
  f199b38114ce849b77b38bd475d72cff  libgcc/config/t-crtfm
  060a49bb5c4a53a2125123d4cbd571de  libgcc/config/t-crtstuff-pic
  3189748f203afc9349dffab9fb4b3225  libgcc/config/t-darwin
! f699f9e7159ba2c6033406086c5c8299  libgcc/config/t-darwin-ehs
  1b055dd68e433300709a246c1b88d25b  libgcc/config/t-darwin-libgccs1
  5f05c653ae1e197bae3fc3fc5ca1e59d  libgcc/config/t-darwin-min-1
  b1115059309b9095620433d14c0042cf  libgcc/config/t-darwin-min-11
--- 120606,120612 ----
  f199b38114ce849b77b38bd475d72cff  libgcc/config/t-crtfm
  060a49bb5c4a53a2125123d4cbd571de  libgcc/config/t-crtstuff-pic
  3189748f203afc9349dffab9fb4b3225  libgcc/config/t-darwin
! 75f141eab7575727f4c39578dd723e4c  libgcc/config/t-darwin-ehs
  1b055dd68e433300709a246c1b88d25b  libgcc/config/t-darwin-libgccs1
  5f05c653ae1e197bae3fc3fc5ca1e59d  libgcc/config/t-darwin-min-1
  b1115059309b9095620433d14c0042cf  libgcc/config/t-darwin-min-11
*************** c7169b01bb969daf7e30948005f39988  libgfo
*** 121857,121863 ****
  95ba22ac86e130ffe2d943ec142f4427  libgfortran/io/format.h
  2c879686a9c5431b13c4d3a9323e5fed  libgfortran/io/inquire.c
  9a1581b774b6fa5ddc5861750824984f  libgfortran/io/intrinsics.c
! 68b0f7c5c62320c0b053455824877d6e  libgfortran/io/io.h
  3388245495015f8899db6b5cd580752d  libgfortran/io/list_read.c
  bc0fa60eac17837b1c762e97a8c08673  libgfortran/io/lock.c
  d043bdbc42f0d079e46ba78d36d7d784  libgfortran/io/open.c
--- 121866,121872 ----
  95ba22ac86e130ffe2d943ec142f4427  libgfortran/io/format.h
  2c879686a9c5431b13c4d3a9323e5fed  libgfortran/io/inquire.c
  9a1581b774b6fa5ddc5861750824984f  libgfortran/io/intrinsics.c
! a50bb3ca4a04465cd3ea0e1ad4b89d7f  libgfortran/io/io.h
  3388245495015f8899db6b5cd580752d  libgfortran/io/list_read.c
  bc0fa60eac17837b1c762e97a8c08673  libgfortran/io/lock.c
  d043bdbc42f0d079e46ba78d36d7d784  libgfortran/io/open.c
*************** fa8c3abd0f354521bcc23aa747c190fe  libgfo
*** 121865,121871 ****
  bbdb872460edfc4fcf1cd9dc179d1a09  libgfortran/io/size_from_kind.c
  e083c5b62de7b249a0804185110e86ab  libgfortran/io/transfer.c
  805eb28f9ed2d311c364b9576cc0626d  libgfortran/io/transfer128.c
! 337471349c0b56d9cd2e7efc2e52e586  libgfortran/io/unit.c
  58b5a27a16dc0ce25690263431c5f8c1  libgfortran/io/unix.c
  243898cf460c85d5c6cab26b8ef77511  libgfortran/io/unix.h
  09d8185d4c2575441cc47355b8181e2d  libgfortran/io/write.c
--- 121874,121880 ----
  bbdb872460edfc4fcf1cd9dc179d1a09  libgfortran/io/size_from_kind.c
  e083c5b62de7b249a0804185110e86ab  libgfortran/io/transfer.c
  805eb28f9ed2d311c364b9576cc0626d  libgfortran/io/transfer128.c
! 8521bd7e12ac7b487062fc8b1a8f9fc6  libgfortran/io/unit.c
  58b5a27a16dc0ce25690263431c5f8c1  libgfortran/io/unix.c
  243898cf460c85d5c6cab26b8ef77511  libgfortran/io/unix.h
  09d8185d4c2575441cc47355b8181e2d  libgfortran/io/write.c
diff -Nrcpad gcc-15-20260703/gcc/ChangeLog gcc-15-20260710/gcc/ChangeLog
*** gcc-15-20260703/gcc/ChangeLog	Fri Jul  3 22:32:05 2026
--- gcc-15-20260710/gcc/ChangeLog	Fri Jul 10 22:32:05 2026
***************
*** 1,3 ****
--- 1,30 ----
+ 2026-07-09  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-07-08  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/126148
+ 	* config/i386/i386-expand.cc (ix86_gen_ccmp_first): Restrict
+ 	floating-point modes accepted for ccmp according to the
+ 	available floating-point instruction set.
+ 
+ 2026-07-07  Icenowy Zheng  <zhengxingda@iscas.ac.cn>
+ 
+ 	Backported from master:
+ 	2026-07-01  Icenowy Zheng  <zhengxingda@iscas.ac.cn>
+ 
+ 	PR target/126049
+ 	* config/riscv/autovec.md: Change fmin/fmax reduction initial
+ 	value from inf/-inf to NaN for proper semantics of corresponding
+ 	C funtion.
+ 
+ 2026-07-05  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	PR target/67459
+ 	PR target/122948
+ 	* config/sh/sh.md (addc): Fix T bit set expression.
+ 	(subc): Likewise.
+ 
  2026-07-01  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260703/gcc/DATESTAMP gcc-15-20260710/gcc/DATESTAMP
*** gcc-15-20260703/gcc/DATESTAMP	Fri Jul  3 22:32:05 2026
--- gcc-15-20260710/gcc/DATESTAMP	Fri Jul 10 22:32:05 2026
***************
*** 1 ****
! 20260703
--- 1 ----
! 20260710
diff -Nrcpad gcc-15-20260703/gcc/config/i386/i386-expand.cc gcc-15-20260710/gcc/config/i386/i386-expand.cc
*** gcc-15-20260703/gcc/config/i386/i386-expand.cc	Fri Jul  3 22:32:07 2026
--- gcc-15-20260710/gcc/config/i386/i386-expand.cc	Fri Jul 10 22:32:07 2026
*************** ix86_gen_ccmp_first (rtx_insn **prep_seq
*** 25991,26002 ****
      op_mode = GET_MODE (op1);
  
    /* We only supports following scalar comparisons that use just 1
!      instruction: DI/SI/QI/HI/DF/SF/HF.
!      Unordered/Ordered compare cannot be corretly indentified by
       ccmp so they are not supported.  */
!   if (!(op_mode == DImode || op_mode == SImode || op_mode == HImode
! 	|| op_mode == QImode || op_mode == DFmode || op_mode == SFmode
! 	|| op_mode == HFmode)
        || code == ORDERED
        || code == UNORDERED)
      {
--- 25991,26005 ----
      op_mode = GET_MODE (op1);
  
    /* We only supports following scalar comparisons that use just 1
!      instruction: DI/SI/HI/QI/XF/DF/SF/HF.
!      Unordered/Ordered compare cannot be correctly identified by
       ccmp so they are not supported.  */
!   if (!(op_mode == DImode || op_mode == SImode
! 	|| op_mode == HImode || op_mode == QImode
! 	|| ((op_mode == XFmode || op_mode == DFmode || op_mode == SFmode)
! 	    && (TARGET_80387
! 		|| (SSE_FLOAT_MODE_P (op_mode) && TARGET_SSE_MATH)))
! 	|| (op_mode == HFmode && TARGET_AVX512FP16))
        || code == ORDERED
        || code == UNORDERED)
      {
diff -Nrcpad gcc-15-20260703/gcc/config/riscv/autovec.md gcc-15-20260710/gcc/config/riscv/autovec.md
*** gcc-15-20260703/gcc/config/riscv/autovec.md	Fri Jul  3 22:32:07 2026
--- gcc-15-20260710/gcc/config/riscv/autovec.md	Fri Jul 10 22:32:07 2026
***************
*** 2395,2401 ****
    "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode)"
  {
    REAL_VALUE_TYPE rv;
!   real_inf (&rv, true);
    rtx f = const_double_from_real_value (rv, <VEL>mode);
    riscv_vector::expand_reduction (UNSPEC_REDUC_MAX,
  				  UNSPEC_REDUC_MAX_VL0_SAFE,
--- 2395,2401 ----
    "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode)"
  {
    REAL_VALUE_TYPE rv;
!   real_nan (&rv, "", 1, VOIDmode);
    rtx f = const_double_from_real_value (rv, <VEL>mode);
    riscv_vector::expand_reduction (UNSPEC_REDUC_MAX,
  				  UNSPEC_REDUC_MAX_VL0_SAFE,
***************
*** 2410,2416 ****
    "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode)"
  {
    REAL_VALUE_TYPE rv;
!   real_inf (&rv, false);
    rtx f = const_double_from_real_value (rv, <VEL>mode);
    riscv_vector::expand_reduction (UNSPEC_REDUC_MIN,
  				  UNSPEC_REDUC_MIN_VL0_SAFE,
--- 2410,2416 ----
    "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode)"
  {
    REAL_VALUE_TYPE rv;
!   real_nan (&rv, "", 1, VOIDmode);
    rtx f = const_double_from_real_value (rv, <VEL>mode);
    riscv_vector::expand_reduction (UNSPEC_REDUC_MIN,
  				  UNSPEC_REDUC_MIN_VL0_SAFE,
diff -Nrcpad gcc-15-20260703/gcc/config/sh/sh.md gcc-15-20260710/gcc/config/sh/sh.md
*** gcc-15-20260703/gcc/config/sh/sh.md	Fri Jul  3 22:32:07 2026
--- gcc-15-20260710/gcc/config/sh/sh.md	Fri Jul 10 22:32:07 2026
***************
*** 1563,1569 ****
  			  (match_operand:SI 2 "arith_reg_operand" "r"))
  		 (reg:SI T_REG)))
     (set (reg:SI T_REG)
! 	(ltu:SI (plus:SI (match_dup 1) (match_dup 2)) (match_dup 1)))]
    "TARGET_SH1"
    "addc	%2,%0"
    [(set_attr "type" "arith")])
--- 1563,1572 ----
  			  (match_operand:SI 2 "arith_reg_operand" "r"))
  		 (reg:SI T_REG)))
     (set (reg:SI T_REG)
! 	(gtu:SI (plus:DI (plus:DI (zero_extend:DI (match_dup 1))
! 				  (zero_extend:DI (match_dup 2)))
! 			 (zero_extend:DI (reg:SI T_REG)))
! 		(const_int 4294967295)))]
    "TARGET_SH1"
    "addc	%2,%0"
    [(set_attr "type" "arith")])
***************
*** 1955,1963 ****
  			    (match_operand:SI 2 "arith_reg_operand" "r"))
  		  (reg:SI T_REG)))
     (set (reg:SI T_REG)
! 	(gtu:SI (minus:SI (minus:SI (match_dup 1) (match_dup 2))
! 			  (reg:SI T_REG))
! 		(match_dup 1)))]
    "TARGET_SH1"
    "subc	%2,%0"
    [(set_attr "type" "arith")])
--- 1958,1966 ----
  			    (match_operand:SI 2 "arith_reg_operand" "r"))
  		  (reg:SI T_REG)))
     (set (reg:SI T_REG)
! 	(gtu:SI (plus:DI (zero_extend:DI (match_dup 2))
! 			 (zero_extend:DI (reg:SI T_REG)))
! 		(zero_extend:DI (match_dup 1))))]
    "TARGET_SH1"
    "subc	%2,%0"
    [(set_attr "type" "arith")])
diff -Nrcpad gcc-15-20260703/gcc/cp/coroutines.cc gcc-15-20260710/gcc/cp/coroutines.cc
*** gcc-15-20260703/gcc/cp/coroutines.cc	Fri Jul  3 22:32:07 2026
--- gcc-15-20260710/gcc/cp/coroutines.cc	Fri Jul 10 22:32:07 2026
*************** cp_coroutine_transform::build_ramp_funct
*** 5119,5125 ****
    tree coro_frame_refcount
      = coro_build_and_push_artificial_var_with_dve (loc, coro_frame_refcount_id,
  						   short_unsigned_type_node,
! 						   orig_fn_decl, NULL_TREE,
  						   deref_fp);
    /* Cleanup if both the ramp and the body have finished.  */
    tree cond
--- 5119,5127 ----
    tree coro_frame_refcount
      = coro_build_and_push_artificial_var_with_dve (loc, coro_frame_refcount_id,
  						   short_unsigned_type_node,
! 						   orig_fn_decl,
! 						   build_int_cst
! 						   (short_unsigned_type_node, 0),
  						   deref_fp);
    /* Cleanup if both the ramp and the body have finished.  */
    tree cond
diff -Nrcpad gcc-15-20260703/gcc/fortran/ChangeLog gcc-15-20260710/gcc/fortran/ChangeLog
*** gcc-15-20260703/gcc/fortran/ChangeLog	Fri Jul  3 22:32:08 2026
--- gcc-15-20260710/gcc/fortran/ChangeLog	Fri Jul 10 22:32:08 2026
***************
*** 1,3 ****
--- 1,60 ----
+ 2026-07-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/103367
+ 	* expr.cc (simplify_const_ref): Hoist the call to
+ 	remove_subobject_ref up a level.
+ 	* primary.cc (gfc_match_rvalue): Don't copy the value expr
+ 	if the type is an EXPR_VARIABLE.
+ 	* trans-array.cc (gfc_conv_array_initializer): Only copy the expr
+ 	value if it does not have a ref.
+ 
+ 2026-07-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/60576
+ 	* trans-array.cc (gfc_conv_array_parameter): For an assumed-rank
+ 	actual argument passed to a CLASS assumed-rank formal, use a
+ 	runtime-sized memcpy for the dim[] entries instead of a full
+ 	GFC_MAX_DIMENSIONS static copy.  For a fixed-rank actual to a
+ 	CLASS assumed-rank formal, pass lhs_type=false to
+ 	gfc_class_array_data_assign so the dim[] copy is sized by the
+ 	RHS descriptor type (dim_t[rank]).  Fixed-rank class formals
+ 	retain lhs_type=true.
+ 	* trans-expr.cc (gfc_conv_derived_to_class): For an assumed-rank
+ 	actual, use a runtime-sized memcpy for the derived_array descriptor
+ 	dim[] copy instead of a full GFC_MAX_DIMENSIONS static copy.
+ 
+ 2026-07-09  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/103367
+ 	* trans-array.cc (gfc_conv_array_initializer): Emit an error for
+ 	invalid residual initializer expressions before returning a safe
+ 	empty constructor.
+ 
+ 2026-07-09  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/103367
+ 	* trans-array.cc (gfc_conv_array_initializer): Return empty
+ 	constructor for unexpected expression types after parameter
+ 	substitution.
+ 
+ 2026-07-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/126018
+ 	* match.cc (gfc_match_stopcode): Adjust the f2008 error check.If the
+ 	STOP code expr type is unknown, do not error. It will be checked in
+ 	gfc_resolve_code.
+ 	* resolve.cc (gfc_resolve_code): Add checks for EXEC_STOP and
+ 	EXEC_ERROR_STOP.
+ 
  2026-06-12  Harald Anlauf  <anlauf@gmx.de>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260703/gcc/fortran/expr.cc gcc-15-20260710/gcc/fortran/expr.cc
*** gcc-15-20260703/gcc/fortran/expr.cc	Fri Jul  3 22:32:08 2026
--- gcc-15-20260710/gcc/fortran/expr.cc	Fri Jul 10 22:32:08 2026
*************** simplify_const_ref (gfc_expr *p)
*** 2086,2101 ****
        switch (p->ref->type)
  	{
  	case REF_ARRAY:
! 	  switch (p->ref->u.ar.type)
  	    {
! 	    case AR_ELEMENT:
! 	      /* <type/kind spec>, parameter :: x(<int>) = scalar_expr
! 		 will generate this.  */
! 	      if (p->expr_type != EXPR_ARRAY)
  		{
! 		  remove_subobject_ref (p, NULL);
! 		  break;
  		}
  	      if (!find_array_element (p->value.constructor, &p->ref->u.ar, &cons))
  		return false;
  
--- 2086,2111 ----
        switch (p->ref->type)
  	{
  	case REF_ARRAY:
! 	  /* <type/kind spec>, parameter :: x(<int>) = scalar_expr
! 	     will generate this.  */
! 	  if (p->expr_type != EXPR_ARRAY)
  	    {
! 	      if (p->ref->u.ar.type == AR_ELEMENT)
  		{
! 		  int dim;
! 		  for (dim = 0; dim < p->ref->u.ar.dimen; dim++)
! 		    if (!p->ref->u.ar.start[dim]
! 			|| p->ref->u.ar.start[dim]->expr_type != EXPR_CONSTANT)
! 		      return true;
  		}
+ 
+ 	      remove_subobject_ref (p, NULL);
+ 	      break;
+ 	    }
+ 
+ 	  switch (p->ref->u.ar.type)
+ 	    {
+ 	    case AR_ELEMENT:
  	      if (!find_array_element (p->value.constructor, &p->ref->u.ar, &cons))
  		return false;
  
diff -Nrcpad gcc-15-20260703/gcc/fortran/primary.cc gcc-15-20260710/gcc/fortran/primary.cc
*** gcc-15-20260703/gcc/fortran/primary.cc	Fri Jul  3 22:32:08 2026
--- gcc-15-20260710/gcc/fortran/primary.cc	Fri Jul 10 22:32:08 2026
*************** gfc_match_rvalue (gfc_expr **result)
*** 3934,3940 ****
  	 end up here.  Unfortunately, sym->value->expr_type is set to
  	 EXPR_CONSTANT, and so the if () branch would be followed without
  	 the !sym->as check.  */
!       if (sym->value && sym->value->expr_type != EXPR_ARRAY && !sym->as)
  	e = gfc_copy_expr (sym->value);
        else
  	{
--- 3934,3941 ----
  	 end up here.  Unfortunately, sym->value->expr_type is set to
  	 EXPR_CONSTANT, and so the if () branch would be followed without
  	 the !sym->as check.  */
!       if (sym->value && sym->value->expr_type != EXPR_ARRAY
! 	  && sym->value->expr_type != EXPR_VARIABLE && !sym->as)
  	e = gfc_copy_expr (sym->value);
        else
  	{
diff -Nrcpad gcc-15-20260703/gcc/fortran/trans-array.cc gcc-15-20260710/gcc/fortran/trans-array.cc
*** gcc-15-20260703/gcc/fortran/trans-array.cc	Fri Jul  3 22:32:08 2026
--- gcc-15-20260710/gcc/fortran/trans-array.cc	Fri Jul 10 22:32:08 2026
*************** gfc_conv_array_initializer (tree type, g
*** 6901,6909 ****
  
    if (expr->expr_type == EXPR_VARIABLE
        && expr->symtree->n.sym->attr.flavor == FL_PARAMETER
!       && expr->symtree->n.sym->value)
      expr = expr->symtree->n.sym->value;
  
    switch (expr->expr_type)
      {
      case EXPR_CONSTANT:
--- 6901,6923 ----
  
    if (expr->expr_type == EXPR_VARIABLE
        && expr->symtree->n.sym->attr.flavor == FL_PARAMETER
!       && expr->symtree->n.sym->value
!       && !expr->ref)
      expr = expr->symtree->n.sym->value;
  
+   /* After parameter substitution the expression should be a constant, array
+      constructor, structure constructor, or NULL.  Anything else is invalid
+      and must not ICE later in lowering.  */
+   if (expr->expr_type != EXPR_CONSTANT
+       && expr->expr_type != EXPR_STRUCTURE
+       && expr->expr_type != EXPR_ARRAY
+       && expr->expr_type != EXPR_NULL)
+     {
+       gfc_error ("Array initializer at %L does not reduce to a constant "
+ 		 "expression", &expr->where);
+       return build_constructor (type, NULL);
+     }
+ 
    switch (expr->expr_type)
      {
      case EXPR_CONSTANT:
*************** is_pointer (gfc_expr *e)
*** 9032,9037 ****
--- 9046,9079 ----
    return sym->attr.pointer || sym->attr.proc_pointer;
  }
  
+ /* Assumed-rank actual argument: the caller only allocates storage for dtype
+    rank dimensions. Copying GFC_MAX_DIMENSIONS dim entries would read past the
+    physical end of the descriptor. Copy the header fields explicitly and use a
+    runtime-sized memcpy for the dim[] entries.  */
+ void
+ gfc_resize_assumed_rank_dim_field (gfc_se *se, stmtblock_t *block, tree desc)
+ {
+   tree rank, dim_field, dim_size, copy_size, dst_ptr, src_ptr;
+ 
+   gfc_conv_descriptor_data_set (block, desc,
+ 				gfc_conv_descriptor_data_get (se->expr));
+   gfc_conv_descriptor_offset_set (block, desc,
+ 				  gfc_conv_descriptor_offset_get (se->expr));
+   gfc_add_modify (block, gfc_conv_descriptor_dtype (desc),
+ 		  gfc_conv_descriptor_dtype (se->expr));
+   rank = fold_convert (size_type_node, gfc_conv_descriptor_rank (se->expr));
+   dim_field = gfc_get_descriptor_dimension (se->expr);
+   dim_size = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (dim_field)));
+   copy_size = fold_build2_loc (input_location, MULT_EXPR,
+ 			       size_type_node, rank, dim_size);
+   dst_ptr = gfc_build_addr_expr (pvoid_type_node,
+ 				 gfc_get_descriptor_dimension (desc));
+   src_ptr = gfc_build_addr_expr (pvoid_type_node, dim_field);
+   gfc_add_expr_to_block (block, build_call_expr_loc (input_location,
+ 			 builtin_decl_explicit (BUILT_IN_MEMCPY),
+ 			 3, dst_ptr, src_ptr, copy_size));
+ }
+ 
  /* Convert an array for passing as an actual parameter.  */
  
  void
*************** gfc_conv_array_parameter (gfc_se *se, gf
*** 9306,9312 ****
  	      gfc_conv_descriptor_offset_set (&block, arr, gfc_index_zero_node);
  	      se->expr = arr;
  	    }
! 	  gfc_class_array_data_assign (&block, tmp, se->expr, true);
  
  	  /* Handle optional.  */
  	  if (fsym && fsym->attr.optional && sym && sym->attr.optional)
--- 9348,9359 ----
  	      gfc_conv_descriptor_offset_set (&block, arr, gfc_index_zero_node);
  	      se->expr = arr;
  	    }
! 	  if (expr->rank == -1)
! 	    gfc_resize_assumed_rank_dim_field (se, &block, tmp);
! 	  else if (CLASS_DATA (fsym)->as->rank == -1)
! 	    gfc_class_array_data_assign (&block, tmp, se->expr, false);
! 	  else
! 	    gfc_class_array_data_assign (&block, tmp, se->expr, true);
  
  	  /* Handle optional.  */
  	  if (fsym && fsym->attr.optional && sym && sym->attr.optional)
diff -Nrcpad gcc-15-20260703/gcc/fortran/trans-expr.cc gcc-15-20260710/gcc/fortran/trans-expr.cc
*** gcc-15-20260703/gcc/fortran/trans-expr.cc	Fri Jul  3 22:32:08 2026
--- gcc-15-20260710/gcc/fortran/trans-expr.cc	Fri Jul 10 22:32:08 2026
*************** gfc_conv_derived_to_class (gfc_se *parms
*** 961,967 ****
  	    {
  	      *derived_array
  		= gfc_create_var (TREE_TYPE (parmse->expr), "array");
! 	      gfc_add_modify (&block, *derived_array, parmse->expr);
  	    }
  
  	  if (optional)
--- 961,999 ----
  	    {
  	      *derived_array
  		= gfc_create_var (TREE_TYPE (parmse->expr), "array");
! 	      if (e->rank == -1)
! 		{
! 		  /* Assumed-rank actual: parmse->expr physically holds only
! 		     dtype.rank dims; a full struct assign reads past the end.
! 		     Copy field-by-field with a runtime-sized dim[] memcpy.
! 		     PR fortran/60576.  */
! 		  tree rank, dim_field, dim_size, copy_size, dst_ptr, src_ptr;
! 
! 		  gfc_conv_descriptor_data_set
! 		    (&block, *derived_array,
! 		     gfc_conv_descriptor_data_get (parmse->expr));
! 		  gfc_conv_descriptor_offset_set
! 		    (&block, *derived_array,
! 		     gfc_conv_descriptor_offset_get (parmse->expr));
! 		  gfc_add_modify (&block,
! 				  gfc_conv_descriptor_dtype (*derived_array),
! 				  gfc_conv_descriptor_dtype (parmse->expr));
! 		  rank = fold_convert (size_type_node,
! 				       gfc_conv_descriptor_rank (parmse->expr));
! 		  dim_field = gfc_get_descriptor_dimension (parmse->expr);
! 		  dim_size = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (dim_field)));
! 		  copy_size = fold_build2_loc (input_location, MULT_EXPR,
! 					       size_type_node, rank, dim_size);
! 		  dst_ptr = gfc_build_addr_expr
! 		    (pvoid_type_node, gfc_get_descriptor_dimension (*derived_array));
! 		  src_ptr = gfc_build_addr_expr (pvoid_type_node, dim_field);
! 		  gfc_add_expr_to_block (&block,
! 		      build_call_expr_loc (input_location,
! 					   builtin_decl_explicit (BUILT_IN_MEMCPY),
! 					   3, dst_ptr, src_ptr, copy_size));
! 		}
! 	      else
! 		gfc_add_modify (&block, *derived_array, parmse->expr);
  	    }
  
  	  if (optional)
diff -Nrcpad gcc-15-20260703/gcc/testsuite/ChangeLog gcc-15-20260710/gcc/testsuite/ChangeLog
*** gcc-15-20260703/gcc/testsuite/ChangeLog	Fri Jul  3 22:32:10 2026
--- gcc-15-20260710/gcc/testsuite/ChangeLog	Fri Jul 10 22:32:10 2026
***************
*** 1,3 ****
--- 1,106 ----
+ 2026-07-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/103367
+ 	* gfortran.dg/pr103367_2.f90: New test.
+ 	* gfortran.dg/pr103367_3.f90: New test.
+ 	* gfortran.dg/pr103367_4.f90: New test.
+ 
+ 2026-07-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/60576
+ 	* gfortran.dg/asan/assumed_rank_26.f90: New test covering both
+ 	assumed-rank and fixed-rank type actuals passed to a CLASS
+ 	assumed-rank dummy.
+ 
+ 2026-07-09  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/103367
+ 	* gfortran.dg/pr103367.f90: Expect a constant-expression error and
+ 	prune the legacy-extension warning.
+ 
+ 2026-07-09  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/103367
+ 	* gfortran.dg/pr103367.f90: New test.
+ 
+ 2026-07-09  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-07-08  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/126148
+ 	* gcc.target/i386/pr126148.c: New test.
+ 
+ 2026-07-07  Icenowy Zheng  <zhengxingda@iscas.ac.cn>
+ 
+ 	Backported from master:
+ 	2026-07-01  Icenowy Zheng  <zhengxingda@iscas.ac.cn>
+ 
+ 	PR target/126049
+ 	* gcc.target/riscv/rvv/autovec/pr126049.c: New.
+ 
+ 2026-07-07  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	Backported from master:
+ 	2025-05-09  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* g++.dg/cpp2a/decomp2.C: Require tls_runtime.
+ 
+ 2026-07-06  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	Backported from master:
+ 	2026-07-06  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* gcc.target/arm/tls-disable-literal-pool.c: Add quotation for
+ 	command line arguments.
+ 
+ 2026-07-05  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	PR target/67459
+ 	PR target/122948
+ 	* gcc.target/sh/pr122948.c: New test.
+ 
+ 2026-07-03  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	PR rtl-optimization/125173
+ 	* gcc.dg/pr125173-1.c: Remove option
+ 	-fno-fuse-ops-with-volatile-access.
+ 
+ 2026-07-03  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* lib/target-supports.exp: Add arm_arch_v7a_thumb.
+ 	* gcc.target/arm/ifcvt-size-check.c: Add options to force thumb1.
+ 	* gcc.target/arm/ivopts-2.c: Remove object size check.
+ 	* gcc.target/arm/ivopts-3.c: Likewise.
+ 	* gcc.target/arm/ivopts-4.c: Likewise.
+ 	* gcc.target/arm/ivopts-5.c: Likewise.
+ 	* gcc.target/arm/ivopts.c: Likewise.
+ 	* gcc.target/arm/max-insns-skipped.c: Scan for absence of an IT
+ 	instruction.  Remove object size check.  Use arm_arch_v7a_thumb.
+ 	* gcc.target/arm/pr43597.c: Remove object size check and use
+ 	arm_arch_v7a_thumb.
+ 	* gcc.target/arm/pr63210.c: Use arm_arch_v5t_thumb options.
+ 	* gcc.target/arm/split-live-ranges-for-shrink-wrap.c: Remove
+ 	object size check and use arm_arch_v5t_thumb options.
+ 	(cherry picked from commit
+ 	e1077ad5753148892871fa146f3948b55c46f7e3 with a slight
+ 	modification for gcc.target/arm/ivopts.c, to keep the line
+ 	about arm_iwmmxt_ok because iwmmxt was removed in gcc-16)
+ 
+ 2026-07-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/126018
+ 	* gfortran.dg/stop_function_code_1.f90: New test.
+ 
  2026-07-02  Christophe Lyon  <christophe.lyon@arm.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260703/gcc/testsuite/g++.dg/cpp2a/decomp2.C gcc-15-20260710/gcc/testsuite/g++.dg/cpp2a/decomp2.C
*** gcc-15-20260703/gcc/testsuite/g++.dg/cpp2a/decomp2.C	Fri Jul  3 22:32:11 2026
--- gcc-15-20260710/gcc/testsuite/g++.dg/cpp2a/decomp2.C	Fri Jul 10 22:32:11 2026
***************
*** 1,7 ****
  // P1091R3
  // { dg-do run { target c++11 } }
  // { dg-options "" }
! // { dg-require-effective-target tls }
  // { dg-add-options tls }
  
  namespace std {
--- 1,7 ----
  // P1091R3
  // { dg-do run { target c++11 } }
  // { dg-options "" }
! // { dg-require-effective-target tls_runtime }
  // { dg-add-options tls }
  
  namespace std {
diff -Nrcpad gcc-15-20260703/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c gcc-15-20260710/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
*** gcc-15-20260703/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c	Fri Jul  3 22:32:13 2026
--- gcc-15-20260710/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c	Fri Jul 10 22:32:14 2026
*************** __thread int x = 0;
*** 10,15 ****
  int
  bar ()
  {
!   return x; /* { dg-message "sorry, unimplemented: accessing thread-local storage is not currently supported with -mpure-code or -mslow-flash-data" } */
  }
  
--- 10,15 ----
  int
  bar ()
  {
!   return x; /* { dg-message "sorry, unimplemented: accessing thread-local storage is not currently supported with '-mpure-code' or '-mslow-flash-data'" } */
  }
  
diff -Nrcpad gcc-15-20260703/gcc/testsuite/gcc.target/i386/pr126148.c gcc-15-20260710/gcc/testsuite/gcc.target/i386/pr126148.c
*** gcc-15-20260703/gcc/testsuite/gcc.target/i386/pr126148.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260710/gcc/testsuite/gcc.target/i386/pr126148.c	Fri Jul 10 22:32:15 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -ffast-math -mapxf -mno-80387 -mfpmath=387" } */
+ 
+ int foo (int a, double b) {
+   if (a || b)
+     return 1;
+   return 0;
+ }
diff -Nrcpad gcc-15-20260703/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr126049.c gcc-15-20260710/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr126049.c
*** gcc-15-20260703/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr126049.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260710/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr126049.c	Fri Jul 10 22:32:15 2026
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target riscv_v_ok } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -O2 -ftree-vectorize" } */
+ 
+ #define NAN (__builtin_nan(""))
+ 
+ __attribute__ ((noipa)) float
+ maxx (float *arr, unsigned int sz)
+ {
+   float val = NAN;
+   unsigned int i;
+ 
+   for (i = 0; i < sz; i++)
+     val = __builtin_fmaxf (val, arr[i]);
+ 
+   return val;
+ }
+ 
+ int
+ main ()
+ {
+   float arr[] = { NAN, NAN, NAN, NAN };
+   float res = maxx (arr, 4);
+   if (!__builtin_isnan (res))
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-15-20260703/gcc/testsuite/gcc.target/sh/pr122948.c gcc-15-20260710/gcc/testsuite/gcc.target/sh/pr122948.c
*** gcc-15-20260703/gcc/testsuite/gcc.target/sh/pr122948.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260710/gcc/testsuite/gcc.target/sh/pr122948.c	Fri Jul 10 22:32:16 2026
***************
*** 0 ****
--- 1,67 ----
+ /* Verify that the T bit (carry/borrow) set expression of the subc insn is
+    correct.  */
+ /* { dg-do run } */
+ /* { dg-options "-O1" } */
+ 
+ extern void abort (void);
+ 
+ __attribute__ ((noipa)) unsigned int
+ foo (unsigned int a, unsigned int b)
+ {
+   if (b - a - 1 <= b)
+     a = 0;
+   return a;
+ }
+ 
+ __attribute__ ((noipa)) unsigned int
+ bar (unsigned int a, unsigned int b)
+ {
+   return (b - a - 1) > b;
+ }
+ 
+ __attribute__ ((noipa)) unsigned int
+ baz (unsigned int a, unsigned int b)
+ {
+   return (a + b + 1) <= a;
+ }
+ 
+ int
+ main (void)
+ {
+   if (foo (0xffffffff, 0x4e92c833) != 0)
+     abort ();
+ 
+   if (bar (0xffffffff, 0x4e92c833) != 0)
+     abort ();
+ 
+   /* b - a - 1 wraps (borrow) whenever a + 1 > b (unsigned).  */
+   if (bar (5, 3) != 1)
+     abort ();
+ 
+   if (bar (0, 0) != 1)
+     abort ();
+ 
+   if (bar (0, 5) != 0)
+     abort ();
+ 
+   /* addc carry-out: (a + b + 1) <= a.  */
+   /* 0xffffffff + 0 + 1 wraps to 0.  */
+   if (baz (0xffffffff, 0) != 1)
+     abort ();
+ 
+   if (baz (0xffffffff, 0xffffffff) != 1)
+     abort ();
+ 
+   /* wraps to 0.  */
+   if (baz (0xfffffffe, 1) != 1)
+     abort ();
+ 
+   /* 1 <= 0 is false.  */
+   if (baz (0, 0) != 0)
+     abort ();
+ 
+   if (baz (1, 2) != 0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-15-20260703/gcc/testsuite/gfortran.dg/asan/assumed_rank_26.f90 gcc-15-20260710/gcc/testsuite/gfortran.dg/asan/assumed_rank_26.f90
*** gcc-15-20260703/gcc/testsuite/gfortran.dg/asan/assumed_rank_26.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260710/gcc/testsuite/gfortran.dg/asan/assumed_rank_26.f90	Fri Jul 10 22:32:16 2026
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/60576
+ !
+ ! Stack buffer overflow when passing an assumed-rank type(T) dummy argument
+ ! to an assumed-rank class(T) dummy argument.  The caller only allocates
+ ! storage for dtype.rank dimensions in the descriptor; generating a full
+ ! GFC_MAX_DIMENSIONS copy caused a stack-buffer-overflow detected by ASan.
+ 
+ implicit none
+ type t
+   integer :: i
+ end type
+ 
+ type(T) :: at(2:3,2:4)
+ integer :: i = 0
+ 
+ call bar(at)
+ if (i /= 2) STOP 1
+ 
+ contains
+   subroutine bar(x)
+     type(t) :: x(..)
+     if (lbound(x,1) /= 1 .or. lbound(x,2) /= 1) STOP 2
+     if (size(x) /= 6) STOP 3
+     if (size(x,1) /= 2 .or. size(x,2) /= 3) STOP 4
+     if (ubound(x,1) /= 2 .or. ubound(x,2) /= 3) STOP 5
+     i = i + 1
+     call foo(x)
+   end subroutine
+   subroutine foo(x)
+     class(t) :: x(..)
+     if (lbound(x,1) /= 1 .or. lbound(x,2) /= 1) STOP 6
+     if (size(x) /= 6) STOP 7
+     if (size(x,1) /= 2 .or. size(x,2) /= 3) STOP 8
+     if (ubound(x,1) /= 2 .or. ubound(x,2) /= 3) STOP 9
+     i = i + 1
+   end subroutine
+ end
diff -Nrcpad gcc-15-20260703/gcc/testsuite/gfortran.dg/pr103367.f90 gcc-15-20260710/gcc/testsuite/gfortran.dg/pr103367.f90
*** gcc-15-20260703/gcc/testsuite/gfortran.dg/pr103367.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260710/gcc/testsuite/gfortran.dg/pr103367.f90	Fri Jul 10 22:32:16 2026
***************
*** 0 ****
--- 1,15 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/103367
+ ! Invalid initialization expressions must not ICE if they survive
+ ! semantic checking and reach array initializer lowering.
+ 
+ program p
+   type t
+     integer :: a(1,2) = 3
+   end type
+   type(t), parameter :: x(1) = t(4)
+   integer :: y(1,2) = (x(b)%a) ! { dg-error "does not reduce to a constant expression" }
+   print *, y
+ end
+ ! { dg-prune-output "Legacy Extension: REAL array index" }
diff -Nrcpad gcc-15-20260703/gcc/testsuite/gfortran.dg/pr103367_2.f90 gcc-15-20260710/gcc/testsuite/gfortran.dg/pr103367_2.f90
*** gcc-15-20260703/gcc/testsuite/gfortran.dg/pr103367_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260710/gcc/testsuite/gfortran.dg/pr103367_2.f90	Fri Jul 10 22:32:16 2026
***************
*** 0 ****
--- 1,37 ----
+ ! { dg-do compile }
+ subroutine s1
+   type t
+     integer :: a(1,2) = 3
+   end type
+   type(t), parameter :: x(1) = t(4)
+   integer, parameter :: y(1,2) = (x(1)%a(m,1)) ! { dg-error "does not reduce to a constant expression" }
+   print *, y
+ end
+ 
+ subroutine s2
+   type t
+     integer :: a(2) = 3!
+   end type
+   type(t), parameter :: x(1) = t(4)
+   integer, parameter :: y = x(1)%a(m) ! { dg-error "non-constant initialization expression" }
+   print *, y
+ end
+ 
+ subroutine s3
+   type t
+     integer :: a(1,2) = 3
+   end type
+   type(t), parameter :: x(1) = t(4)
+   integer, parameter :: y(1,2) = (x(b)%a) ! { dg-error "does not reduce to a constant expression" }
+   print *, y
+ end
+ 
+ subroutine s4
+   type t
+     integer :: a(1,2) = 3
+   end type
+   type(t), parameter :: x(1) = t(4)
+   integer :: y(1,2) = x(b)%a ! { dg-error "does not reduce to a constant expression" }
+   print *, y
+ end
+ ! { dg-prune-output "Legacy Extension: REAL array index" }
diff -Nrcpad gcc-15-20260703/gcc/testsuite/gfortran.dg/pr103367_3.f90 gcc-15-20260710/gcc/testsuite/gfortran.dg/pr103367_3.f90
*** gcc-15-20260703/gcc/testsuite/gfortran.dg/pr103367_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260710/gcc/testsuite/gfortran.dg/pr103367_3.f90	Fri Jul 10 22:32:16 2026
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do run }
+ ! PR103367 Test case from the PR, previously segfaulted.
+ program p
+   type t
+      integer :: a(1,2) = 3
+   end type
+   type(t), parameter :: x(1) = t(4)
+   integer, parameter :: y(2) = x(1)%a(1,:)
+   if (any (y /= [4, 4])) stop 1
+ end
+ 
diff -Nrcpad gcc-15-20260703/gcc/testsuite/gfortran.dg/pr103367_4.f90 gcc-15-20260710/gcc/testsuite/gfortran.dg/pr103367_4.f90
*** gcc-15-20260703/gcc/testsuite/gfortran.dg/pr103367_4.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260710/gcc/testsuite/gfortran.dg/pr103367_4.f90	Fri Jul 10 22:32:16 2026
***************
*** 0 ****
--- 1,14 ----
+ ! { dg-do run }
+ ! PR103367, this test previously
+ ! Test case from the PR segfaulted at compile time.
+ program p
+   type inner
+     integer :: n = 3
+   end type
+   type outer
+     type(inner) :: a(2) = inner(1)
+   end type
+   type(outer), parameter :: x(1) = outer(inner(4))
+   integer, parameter :: y(2) = x(1)%a%n
+   if (any (y /= [4, 4])) stop 1
+ end
diff -Nrcpad gcc-15-20260703/gcc/testsuite/gfortran.dg/pr126116.f90 gcc-15-20260710/gcc/testsuite/gfortran.dg/pr126116.f90
*** gcc-15-20260703/gcc/testsuite/gfortran.dg/pr126116.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260710/gcc/testsuite/gfortran.dg/pr126116.f90	Fri Jul 10 22:32:16 2026
***************
*** 0 ****
--- 1,19 ----
+ ! { dg-do run }
+ 
+ program check
+     implicit none
+     integer :: u
+     character(50) :: chr
+ 
+     ! 1. Correctly generate a negative unit via NEWUNIT
+     open(file="test.txt", newunit=u) ! u gets -10
+     close(u) ! u (-10) is now closed and free
+ 
+     ! 2. Internal I/O corrupts the state of unit -10
+     write(chr, *) "test"
+ 
+     ! 3. Redundant CLOSE on the valid unit 'u'.
+     ! This should be a safe no-op according to the standard,
+     ! but it triggers the runtime error/segfault!
+     close(u)
+ end program
diff -Nrcpad gcc-15-20260703/libgcc/ChangeLog gcc-15-20260710/libgcc/ChangeLog
*** gcc-15-20260703/libgcc/ChangeLog	Fri Jul  3 22:32:16 2026
--- gcc-15-20260710/libgcc/ChangeLog	Fri Jul 10 22:32:17 2026
***************
*** 1,3 ****
--- 1,12 ----
+ 2026-07-04  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2026-07-04  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR libgcc/123976
+ 	* config/t-darwin-ehs: Add md-unwind-def.h as a
+ 	pre-requisite.
+ 
  2026-06-12  Ramin Moussavi  <lordrasmus@gmail.com>
  
  	* config.host (microblaze*-linux*): Set md_unwind_header.
diff -Nrcpad gcc-15-20260703/libgcc/config/t-darwin-ehs gcc-15-20260710/libgcc/config/t-darwin-ehs
*** gcc-15-20260703/libgcc/config/t-darwin-ehs	Fri Jul  3 22:32:16 2026
--- gcc-15-20260710/libgcc/config/t-darwin-ehs	Fri Jul 10 22:32:18 2026
***************
*** 3,7 ****
  
  LIBEHSOBJS = unwind-dw2_s.o unwind-dw2-fde-darwin_s.o unwind-c_s.o
  
! unwind-dw2_s.o: gthr-default.h md-unwind-support.h unwind.h
  $(LIBEHSOBJS): libgcc_tm.h
--- 3,7 ----
  
  LIBEHSOBJS = unwind-dw2_s.o unwind-dw2-fde-darwin_s.o unwind-c_s.o
  
! unwind-dw2_s.o: gthr-default.h md-unwind-support.h md-unwind-def.h unwind.h
  $(LIBEHSOBJS): libgcc_tm.h
diff -Nrcpad gcc-15-20260703/libgfortran/io/io.h gcc-15-20260710/libgfortran/io/io.h
*** gcc-15-20260703/libgfortran/io/io.h	Fri Jul  3 22:32:17 2026
--- gcc-15-20260710/libgfortran/io/io.h	Fri Jul 10 22:32:18 2026
*************** typedef struct st_parameter_dt
*** 534,540 ****
  	     character string is being read so don't use commas to shorten a
  	     formatted field width.  */
  	  unsigned sf_read_comma : 1;
! 	  /* A namelist specific flag used to enable reading input from 
  	     line_buffer for logical reads.  */
  	  unsigned line_buffer_enabled : 1;
  	  /* An internal unit specific flag used to identify that the associated
--- 534,540 ----
  	     character string is being read so don't use commas to shorten a
  	     formatted field width.  */
  	  unsigned sf_read_comma : 1;
! 	  /* A namelist specific flag used to enable reading input from
  	     line_buffer for logical reads.  */
  	  unsigned line_buffer_enabled : 1;
  	  /* An internal unit specific flag used to identify that the associated
*************** typedef struct gfc_unit
*** 648,654 ****
  {
    int unit_number;
    stream *s;
!   
    /* Treap links.  */
    struct gfc_unit *left, *right;
    int priority;
--- 648,654 ----
  {
    int unit_number;
    stream *s;
! 
    /* Treap links.  */
    struct gfc_unit *left, *right;
    int priority;
*************** typedef struct gfc_unit
*** 705,714 ****
  
    /* The format hash table.  */
    struct format_hash_entry format_hash_table[FORMAT_HASH_SIZE];
!   
    /* Formatting buffer.  */
    struct fbuf *fbuf;
!   
    /* Function pointer, points to list_read worker functions.  */
    int (*next_char_fn_ptr) (st_parameter_dt *);
    void (*push_char_fn_ptr) (st_parameter_dt *, int);
--- 705,714 ----
  
    /* The format hash table.  */
    struct format_hash_entry format_hash_table[FORMAT_HASH_SIZE];
! 
    /* Formatting buffer.  */
    struct fbuf *fbuf;
! 
    /* Function pointer, points to list_read worker functions.  */
    int (*next_char_fn_ptr) (st_parameter_dt *);
    void (*push_char_fn_ptr) (st_parameter_dt *, int);
*************** typedef struct gfc_unit
*** 719,724 ****
--- 719,727 ----
    gfc_array_char *string_unit_desc;
    int internal_unit_kind;
  
+   /* Track when a gfc_unit is reserved for an internal unit.  */
+   bool internal_reserved;
+ 
    /* DTIO Parent/Child procedure, 0 = parent, >0 = child level.  */
    int child_dtio;
  
*************** predec_waiting_locked (gfc_unit *u)
*** 1012,1018 ****
  
       if (predec_waiting_locked (u) == 0)
           // destroy u
! 	 
       could be further optimized by making this be an __ATOMIC_RELEASE,
       and then inserting a
  
--- 1015,1021 ----
  
       if (predec_waiting_locked (u) == 0)
           // destroy u
! 
       could be further optimized by making this be an __ATOMIC_RELEASE,
       and then inserting a
  
diff -Nrcpad gcc-15-20260703/libgfortran/io/unit.c gcc-15-20260710/libgfortran/io/unit.c
*** gcc-15-20260703/libgfortran/io/unit.c	Fri Jul  3 22:32:17 2026
--- gcc-15-20260710/libgfortran/io/unit.c	Fri Jul 10 22:32:18 2026
*************** found:
*** 443,459 ****
  }
  
  
  gfc_unit *
  find_unit (int n)
  {
!   return get_gfc_unit (n, 0);
  }
  
  
  gfc_unit *
  find_or_create_unit (int n)
  {
!   return get_gfc_unit (n, 1);
  }
  
  
--- 443,487 ----
  }
  
  
+ static int close_unit_1 (gfc_unit *, int, bool);
+ 
+ 
+ /*  Helper to check if an internal unit is reserved.  */
+ 
+ static inline bool
+ is_internal_reserved (gfc_unit *u)
+ {
+   return u->internal_reserved && u->internal_unit_kind == 0;
+ }
+ 
+ 
  gfc_unit *
  find_unit (int n)
  {
!   gfc_unit *u = get_gfc_unit (n, 0);
! 
!   if (u != NULL && is_internal_reserved (u))
!     {
!       unlock_unit (u);
!       return NULL;
!     }
! 
!   return u;
  }
  
  
  gfc_unit *
  find_or_create_unit (int n)
  {
!   gfc_unit *u = get_gfc_unit (n, 1);
! 
!   if (u != NULL && is_internal_reserved (u))
!     {
!       close_unit_1 (u, 0, false);
!       u = get_gfc_unit (n, 1);
!     }
! 
!   return u;
  }
  
  
*************** get_unit (st_parameter_dt *dtp, int do_c
*** 589,594 ****
--- 617,623 ----
        dtp->u.p.unit_is_internal = 1;
        dtp->common.unit = newunit_alloc ();
        unit = get_gfc_unit (dtp->common.unit, do_create);
+       unit->internal_reserved = true;
        set_internal_unit (dtp, unit, kind);
        fbuf_init (unit, 128);
        return unit;
*************** init_units (void)
*** 751,757 ****
  
  
  static int
! close_unit_1 (gfc_unit *u, int locked)
  {
    int i, rc;
  
--- 780,786 ----
  
  
  static int
! close_unit_1 (gfc_unit *u, int locked, bool free_newunit)
  {
    int i, rc;
  
*************** close_unit_1 (gfc_unit *u, int locked)
*** 781,787 ****
    free_format_hash_table (u);
    fbuf_destroy (u);
  
!   if (u->unit_number <= NEWUNIT_START)
      newunit_free (u->unit_number);
  
    if (!locked)
--- 810,816 ----
    free_format_hash_table (u);
    fbuf_destroy (u);
  
!   if (free_newunit && u->unit_number <= NEWUNIT_START)
      newunit_free (u->unit_number);
  
    if (!locked)
*************** unlock_unit (gfc_unit *u)
*** 817,823 ****
  int
  close_unit (gfc_unit *u)
  {
!   return close_unit_1 (u, 0);
  }
  
  
--- 846,852 ----
  int
  close_unit (gfc_unit *u)
  {
!   return close_unit_1 (u, 0, true);
  }
  
  
*************** close_units (void)
*** 833,839 ****
  {
    WRLOCK (&unit_rwlock);
    while (unit_root != NULL)
!     close_unit_1 (unit_root, 1);
    RWUNLOCK (&unit_rwlock);
  
    free (newunits);
--- 862,868 ----
  {
    WRLOCK (&unit_rwlock);
    while (unit_root != NULL)
!     close_unit_1 (unit_root, 1, true);
    RWUNLOCK (&unit_rwlock);
  
    free (newunits);
