diff -Nrcpad gcc-14-20260507/LAST_UPDATED gcc-14-20260514/LAST_UPDATED
*** gcc-14-20260507/LAST_UPDATED	Thu May  7 22:32:17 2026
--- gcc-14-20260514/LAST_UPDATED	Thu May 14 22:32:17 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-14 revision 73064473c6a1cb9c53ea6cd7996a76ce2f8acc22
--- 1 ----
! Obtained from git: releases/gcc-14 revision a3f19edc013cf59b7452f8adecbb123b38cfb98d
diff -Nrcpad gcc-14-20260507/MD5SUMS gcc-14-20260514/MD5SUMS
*** gcc-14-20260507/MD5SUMS	Thu May  7 22:32:21 2026
--- gcc-14-20260514/MD5SUMS	Thu May 14 22:32:21 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-14-20260507.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-14-20260514.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
*************** fc9280b02bc68e4fb1ef8d51ccc25061  Change
*** 23,29 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! d23907798b7e38641e1f0b574c9bfdac  LAST_UPDATED
  1671040823f8eb8436a06fdd18065e02  MAINTAINERS
  304c3887135aefa27c21292ec585b0a3  Makefile.def
  8dd93fbf2e32bcbd2faba10e3b8ba2b0  Makefile.in
--- 23,29 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 42062a4363936fb5cd3fa530cecc573d  LAST_UPDATED
  1671040823f8eb8436a06fdd18065e02  MAINTAINERS
  304c3887135aefa27c21292ec585b0a3  Makefile.def
  8dd93fbf2e32bcbd2faba10e3b8ba2b0  Makefile.in
*************** bc7394806417778d77541ba1ec0e4a70  gcc/BA
*** 505,511 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! d22500ffb16eceb2ba370e53446e5fef  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 505,511 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! cc5eaefd41950283271d057844b81f48  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 541,547 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 2c6af6e97d97b98ef66efb451f2c5f00  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 541,547 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! b9a3241fa8928ea521797a723db61f51  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** fccc6d65638a2ce66ebc6b06766912c2  gcc/co
*** 4066,4072 ****
  4f7ab8c57b3148a31d24838528313ef2  gcc/config/i386/i386-rust.h
  0b364691ba7ec8239d70f50a091cf271  gcc/config/i386/i386.cc
  050a9384b955805718fbe5df50684b1c  gcc/config/i386/i386.h
! 10f2715bdc3b495650de24d35e708bf4  gcc/config/i386/i386.md
  85b5302c87709e4b2325868fe370b441  gcc/config/i386/i386.opt
  fb32c950c45e643174eb7c58d7f4218f  gcc/config/i386/i386.opt.urls
  95e430a8a19e9226167376a9a7ca34d9  gcc/config/i386/i386elf.h
--- 4066,4072 ----
  4f7ab8c57b3148a31d24838528313ef2  gcc/config/i386/i386-rust.h
  0b364691ba7ec8239d70f50a091cf271  gcc/config/i386/i386.cc
  050a9384b955805718fbe5df50684b1c  gcc/config/i386/i386.h
! a5c014fb748487abc6ef15ae4a09f055  gcc/config/i386/i386.md
  85b5302c87709e4b2325868fe370b441  gcc/config/i386/i386.opt
  fb32c950c45e643174eb7c58d7f4218f  gcc/config/i386/i386.opt.urls
  95e430a8a19e9226167376a9a7ca34d9  gcc/config/i386/i386elf.h
*************** eb0e2e62caf98260cc2641216d140ae9  gcc/cp
*** 5403,5409 ****
  dee1bc8866869d1becc1c1459cf3853d  gcc/cp/cfns.h
  cece9d48fd49b2e27c93c08c799d3a43  gcc/cp/class.cc
  c2cee7941d7a9d85eb87f70b7f8495ac  gcc/cp/config-lang.in
! acaebf97f6bc714675715ed5cdf22b10  gcc/cp/constexpr.cc
  e2342416928d82aea826d50f04c9f56c  gcc/cp/constraint.cc
  7f4cf1f0f93d7aa0443c94e023845d1c  gcc/cp/contracts.cc
  5b547c5fd539f8a214ed271c5a475a85  gcc/cp/contracts.h
--- 5403,5409 ----
  dee1bc8866869d1becc1c1459cf3853d  gcc/cp/cfns.h
  cece9d48fd49b2e27c93c08c799d3a43  gcc/cp/class.cc
  c2cee7941d7a9d85eb87f70b7f8495ac  gcc/cp/config-lang.in
! 026229212c889f6c39190cda24f50cfd  gcc/cp/constexpr.cc
  e2342416928d82aea826d50f04c9f56c  gcc/cp/constraint.cc
  7f4cf1f0f93d7aa0443c94e023845d1c  gcc/cp/contracts.cc
  5b547c5fd539f8a214ed271c5a475a85  gcc/cp/contracts.h
*************** dce7dac7e905ada28c6563d930b531eb  gcc/fo
*** 5874,5880 ****
  b954a317257afa3149e46a5bce58d9c2  gcc/fold-const.cc
  62f9c541bc34eb653f289ecd29c7848a  gcc/fold-const.h
  5cce8057cb6a40c0ce23fcd6497d35c0  gcc/fold-mem-offsets.cc
! cddc97356e2c8fa9cfb538edb033b492  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
--- 5874,5880 ----
  b954a317257afa3149e46a5bce58d9c2  gcc/fold-const.cc
  62f9c541bc34eb653f289ecd29c7848a  gcc/fold-const.h
  5cce8057cb6a40c0ce23fcd6497d35c0  gcc/fold-mem-offsets.cc
! 58f0e2496fee2a2e2e0521cc204f5cf4  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
*************** fbb872b566e2ec4cfaf854a2bc7b0670  gcc/fo
*** 5901,5907 ****
  d2b5e19b5750919b1dc193e2846090e8  gcc/fortran/Make-lang.in
  628502163ecbbf74cc0f64c524199ed0  gcc/fortran/arith.cc
  2cc199a14e3d9dcce43322fc86fc1263  gcc/fortran/arith.h
! 52732cfaa58afb755f57e871203c6280  gcc/fortran/array.cc
  c6240012d4d50e01e012119cb17ff776  gcc/fortran/bbt.cc
  6a6916e85a5a32415c36443edbd50feb  gcc/fortran/check.cc
  60518e7636bd17a7ea38f743f2cd2c6f  gcc/fortran/class.cc
--- 5901,5907 ----
  d2b5e19b5750919b1dc193e2846090e8  gcc/fortran/Make-lang.in
  628502163ecbbf74cc0f64c524199ed0  gcc/fortran/arith.cc
  2cc199a14e3d9dcce43322fc86fc1263  gcc/fortran/arith.h
! 95937ab0db2312f4c4043e43862b1e04  gcc/fortran/array.cc
  c6240012d4d50e01e012119cb17ff776  gcc/fortran/bbt.cc
  6a6916e85a5a32415c36443edbd50feb  gcc/fortran/check.cc
  60518e7636bd17a7ea38f743f2cd2c6f  gcc/fortran/class.cc
*************** af0d7f72f88d0810924a6a579045eeab  gcc/fo
*** 5913,5926 ****
  2df1006a61dabc70f90426595056788a  gcc/fortran/cpp.h
  aa3e28e6adf564765577a4f376bb9d05  gcc/fortran/data.cc
  2a77523a8c759e7a5e480175dfce3e06  gcc/fortran/data.h
! 6b5d95421eafe28315fbe36ecacac443  gcc/fortran/decl.cc
  c4bd3bd07738a9a85beae142aa8054e3  gcc/fortran/dependency.cc
  fb3b0f1414056b23597f5e270a953409  gcc/fortran/dependency.h
  af59533c4bfc13e7b07e6ec1c164832c  gcc/fortran/dump-parse-tree.cc
  8e370801f4b220b49e7bc0024382e8b7  gcc/fortran/error.cc
  e3557d087bbbdf3b8f63250a32e95b5c  gcc/fortran/expr.cc
  5790e4e2fb5a21288fcb647a0dca23c4  gcc/fortran/f95-lang.cc
! 7e5624e7daaba902f7b3b3ee4abd8bcd  gcc/fortran/frontend-passes.cc
  f12471f71a85ea43d5295d1190faf890  gcc/fortran/gfc-diagnostic.def
  21286a817891898ac50a2b843007652d  gcc/fortran/gfc-internals.texi
  c4a213d76d236acb33bf86ba3c71e93d  gcc/fortran/gfortran.h
--- 5913,5926 ----
  2df1006a61dabc70f90426595056788a  gcc/fortran/cpp.h
  aa3e28e6adf564765577a4f376bb9d05  gcc/fortran/data.cc
  2a77523a8c759e7a5e480175dfce3e06  gcc/fortran/data.h
! b300ba7667c841f599e5fa5d695f7f6c  gcc/fortran/decl.cc
  c4bd3bd07738a9a85beae142aa8054e3  gcc/fortran/dependency.cc
  fb3b0f1414056b23597f5e270a953409  gcc/fortran/dependency.h
  af59533c4bfc13e7b07e6ec1c164832c  gcc/fortran/dump-parse-tree.cc
  8e370801f4b220b49e7bc0024382e8b7  gcc/fortran/error.cc
  e3557d087bbbdf3b8f63250a32e95b5c  gcc/fortran/expr.cc
  5790e4e2fb5a21288fcb647a0dca23c4  gcc/fortran/f95-lang.cc
! 7c23ef1dad92623cea6aa89eb2047b13  gcc/fortran/frontend-passes.cc
  f12471f71a85ea43d5295d1190faf890  gcc/fortran/gfc-diagnostic.def
  21286a817891898ac50a2b843007652d  gcc/fortran/gfc-internals.texi
  c4a213d76d236acb33bf86ba3c71e93d  gcc/fortran/gfortran.h
*************** e85c32445c6de7c1d06b379a0d1f12ad  gcc/fo
*** 5950,5957 ****
  ba11ab9ac11e6a78fa7706263e42f1fc  gcc/fortran/options.cc
  b39625edcc7118caa07695e1e5e22e50  gcc/fortran/parse.cc
  6afe26dd3f7a33ff8c524687d1958f05  gcc/fortran/parse.h
! 9461c80354482673fdfa5e97754b0abd  gcc/fortran/primary.cc
! 1e8189098fb2fdc82570f4567604be79  gcc/fortran/resolve.cc
  9b448d9bb5190ad6da14b055dc7eeba0  gcc/fortran/scanner.cc
  1cfffbabece85f419a6ca2676917e619  gcc/fortran/scanner.h
  be0b83b5f771bbe50926a1109ebd9e09  gcc/fortran/simplify.cc
--- 5950,5957 ----
  ba11ab9ac11e6a78fa7706263e42f1fc  gcc/fortran/options.cc
  b39625edcc7118caa07695e1e5e22e50  gcc/fortran/parse.cc
  6afe26dd3f7a33ff8c524687d1958f05  gcc/fortran/parse.h
! b0f71d6c6b0789fdfbad3ae3d91d033a  gcc/fortran/primary.cc
! 91c5e1c5707705dd1142c4f8076d77f2  gcc/fortran/resolve.cc
  9b448d9bb5190ad6da14b055dc7eeba0  gcc/fortran/scanner.cc
  1cfffbabece85f419a6ca2676917e619  gcc/fortran/scanner.h
  be0b83b5f771bbe50926a1109ebd9e09  gcc/fortran/simplify.cc
*************** c0fda053eecaf4f55c32d4fe8c8db3e5  gcc/fo
*** 5964,5974 ****
  700878379c55cdec457b83a922d93699  gcc/fortran/trans-common.cc
  c420f80da3e0e794311a9b90c49abce5  gcc/fortran/trans-const.cc
  5644e20cd4aa0324875834a377cf89a4  gcc/fortran/trans-const.h
! 70965dc0e9082ba334b94e88dfdd2e4e  gcc/fortran/trans-decl.cc
  8d3ea3cc90401cb925547c79abb1c955  gcc/fortran/trans-expr.cc
  50146a04d803fafbc56c31ef04c375c3  gcc/fortran/trans-intrinsic.cc
  9bfdb89867309e2ece2578749f55ece8  gcc/fortran/trans-io.cc
! 0a79d8f68201e631e188013e31166c86  gcc/fortran/trans-openmp.cc
  0a23775591d7d3e4fdb603d7bd9febb1  gcc/fortran/trans-stmt.cc
  1b5e4247678ad0441b5b0f26de2ebd4f  gcc/fortran/trans-stmt.h
  e6081de6c57d50b44beba6f37c54a0fe  gcc/fortran/trans-types.cc
--- 5964,5974 ----
  700878379c55cdec457b83a922d93699  gcc/fortran/trans-common.cc
  c420f80da3e0e794311a9b90c49abce5  gcc/fortran/trans-const.cc
  5644e20cd4aa0324875834a377cf89a4  gcc/fortran/trans-const.h
! c49d475a70d43717d33bdc077b48252b  gcc/fortran/trans-decl.cc
  8d3ea3cc90401cb925547c79abb1c955  gcc/fortran/trans-expr.cc
  50146a04d803fafbc56c31ef04c375c3  gcc/fortran/trans-intrinsic.cc
  9bfdb89867309e2ece2578749f55ece8  gcc/fortran/trans-io.cc
! cbc674d013227615460f385a31608c98  gcc/fortran/trans-openmp.cc
  0a23775591d7d3e4fdb603d7bd9febb1  gcc/fortran/trans-stmt.cc
  1b5e4247678ad0441b5b0f26de2ebd4f  gcc/fortran/trans-stmt.h
  e6081de6c57d50b44beba6f37c54a0fe  gcc/fortran/trans-types.cc
*************** e8a9eb01b9451a357155e7152df1c669  gcc/ta
*** 8062,8068 ****
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 7e54cdf7ee23c819c547bff8056b3e4b  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 8062,8068 ----
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 6a58c400d7207da35619a0242ff04f22  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** f7798123f560a2563579e7610c9e701c  gcc/te
*** 19500,19506 ****
  d74bbc201fde13d804d767363c281130  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda13.C
  ad90458ad42ff08d4a1c948d0770dd89  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda14.C
  51978f30a781d2e3a3434b8d371737b6  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda15.C
! 87abca8eb660254fbf201e771eef3751  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C
  e8adbb443f8b231b244ffbcd64ee7da2  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda3.C
  0a50eb80a181d4196ff68849d37d2615  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda4.C
  cb8eabd8ed2aec8d2d6ba1aa825f9307  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda5.C
--- 19500,19506 ----
  d74bbc201fde13d804d767363c281130  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda13.C
  ad90458ad42ff08d4a1c948d0770dd89  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda14.C
  51978f30a781d2e3a3434b8d371737b6  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda15.C
! 0221584b2593a7b483e89830bc37b1d7  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C
  e8adbb443f8b231b244ffbcd64ee7da2  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda3.C
  0a50eb80a181d4196ff68849d37d2615  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda4.C
  cb8eabd8ed2aec8d2d6ba1aa825f9307  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda5.C
*************** e9ee7a058b99aafd367d4607dea8fd61  gcc/te
*** 20286,20291 ****
--- 20286,20292 ----
  f078be8dacba182f7d71dbd5dc780d67  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid3.C
  d5cf00e36fa4ba1a100d8370416e1bc2  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid4.C
  a9a14bb307d24157192c2d361ae5fcbe  gcc/testsuite/g++.dg/cpp2a/constexpr-union1.C
+ 7c347df7a530f4b435982cde93fd790e  gcc/testsuite/g++.dg/cpp2a/constexpr-union10.C
  4fd1e359f10f22a9e4ac5656c39367e2  gcc/testsuite/g++.dg/cpp2a/constexpr-union2.C
  64db89fe8184ef8910fbbef6f4db6984  gcc/testsuite/g++.dg/cpp2a/constexpr-union3.C
  c0b015cd02e07242444c2700f64e070a  gcc/testsuite/g++.dg/cpp2a/constexpr-union4.C
*************** d044056d4248cb78637686f3d28272bb  gcc/te
*** 52831,52836 ****
--- 52832,52838 ----
  5dd2285e0a64c83e08b6d68b6cd36eba  gcc/testsuite/gcc.dg/tree-ssa/pr117142.c
  5f36d3d6eda4211f506ed2e65fc779c4  gcc/testsuite/gcc.dg/tree-ssa/pr117423.c
  b0891b1dddf226da47f4f976abdd7cb0  gcc/testsuite/gcc.dg/tree-ssa/pr119085.c
+ 71eb14b3ae5faf81c5226dc766d48edd  gcc/testsuite/gcc.dg/tree-ssa/pr122976.c
  78e6c5fe63f7305009c8a79840fe20dc  gcc/testsuite/gcc.dg/tree-ssa/pr13146.c
  eab19e0c04884cd782c9879cbe292109  gcc/testsuite/gcc.dg/tree-ssa/pr14341.c
  9945ed7002a5f7d4918e8ff5eb4cb647  gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c
*************** dc0ac30205a49a37f80c833e996ed4d2  gcc/te
*** 75455,75460 ****
--- 75457,75463 ----
  f99f88a6e994ad6e55e065e41bc58f8f  gcc/testsuite/gcc.target/i386/pr12329.c
  fd0c95fcad577a49c3553f21604c3b61  gcc/testsuite/gcc.target/i386/pr123484.c
  0871390dda9d3f14f2d642eb1d5aa640  gcc/testsuite/gcc.target/i386/pr124056.c
+ d9ed650f309dc0e24daeb25d90c34fa0  gcc/testsuite/gcc.target/i386/pr124316.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
*************** eb835cbff61dc3a5d2c957d0e87c6ab0  gcc/te
*** 96924,96929 ****
--- 96927,96934 ----
  905750ad1d8a5ad625ad891d24861b35  gcc/testsuite/gfortran.dg/gomp/parallel-master-1.f90
  141c35f9d62b46a7e1b14aa4806260cb  gcc/testsuite/gfortran.dg/gomp/parallel-master-2.f90
  dd42ad4341c4916a5494d5d3c6a52b40  gcc/testsuite/gfortran.dg/gomp/pr100965.f90
+ 390de4d65a27e4b7a8643dbffb713189  gcc/testsuite/gfortran.dg/gomp/pr101760.f90
+ 8b20a4cfa3b2f8bd56fdd2e034a5a32a  gcc/testsuite/gfortran.dg/gomp/pr102314.f90
  e32d4057d47aefb786a7e251839952e3  gcc/testsuite/gfortran.dg/gomp/pr102430.f90
  8c46c1ee06eca3c9ecb211ced2a97c89  gcc/testsuite/gfortran.dg/gomp/pr102431.f90
  a1a9be8c9080ba2ba338bc6f63b406e3  gcc/testsuite/gfortran.dg/gomp/pr102621.f90
*************** edeec1fe2488c7117f56e10734af03dc  gcc/te
*** 96939,96944 ****
--- 96944,96950 ----
  697c52a53eea166cade44a3f935b8caf  gcc/testsuite/gfortran.dg/gomp/pr107214-7.f90
  1474c5a5881d7047f1212bc8cfb8ef92  gcc/testsuite/gfortran.dg/gomp/pr107214-8.f90
  3beded12a494129bebcc732d85089896  gcc/testsuite/gfortran.dg/gomp/pr107214.f90
+ 9413acb66d424e7e859e5b387d479808  gcc/testsuite/gfortran.dg/gomp/pr107425.f90
  616305573acc701769497c1eee637edc  gcc/testsuite/gfortran.dg/gomp/pr114825.f90
  9a6817790a272cd8153d4303d324c00f  gcc/testsuite/gfortran.dg/gomp/pr26224.f
  d2c74a71f2bea0005d853821e6f0142c  gcc/testsuite/gfortran.dg/gomp/pr27573.f90
*************** f166fdd0a6158ee4997aa03d50735f03  gcc/te
*** 99389,99394 ****
--- 99395,99401 ----
  5b2aa5e5d8aa97b69f0cc98bc9709f3f  gcc/testsuite/gfortran.dg/pr78741.f90
  18ef55c7791c30ff0793ca246df65036  gcc/testsuite/gfortran.dg/pr78758.f90
  c7abc49e43c3b6377a0e019f9f4292ac  gcc/testsuite/gfortran.dg/pr79315.f90
+ 76b2c561e2cc2dffb48457fae519ab01  gcc/testsuite/gfortran.dg/pr79524.f90
  7dde52ec5dffa2ae8586c577cf97f742  gcc/testsuite/gfortran.dg/pr79886.f90
  c0b10ae015725070f4297a1ba8927463  gcc/testsuite/gfortran.dg/pr79966.f90
  21b5f06229f04696cc787b63748c5de0  gcc/testsuite/gfortran.dg/pr80494.f90
*************** cc82665e1d54c6a2d5a100788c474853  gcc/te
*** 99437,99442 ****
--- 99444,99450 ----
  42d21294436ebefdc995a697f0266fd9  gcc/testsuite/gfortran.dg/pr85082.f90
  4355c9f07079d67c1134f6106f8fcb0b  gcc/testsuite/gfortran.dg/pr85138_1.f90
  024b55ef8c68dc11bd1d65bbc8cf1b13  gcc/testsuite/gfortran.dg/pr85138_2.f90
+ 9c97d6fc9b5f00f49d5a36517bc8222d  gcc/testsuite/gfortran.dg/pr85352.f90
  bf416564a457b9444387855732e4d265  gcc/testsuite/gfortran.dg/pr85357.f90
  286fa2d8f5b3fa55fd3173261d6b4eea  gcc/testsuite/gfortran.dg/pr85520.f90
  3daad136d0cfc95d8964dc923c7cc4ac  gcc/testsuite/gfortran.dg/pr85521_1.f90
*************** f9cd7fe0c8cb7be5b0846aa6c3eb0b93  gcc/te
*** 99637,99643 ****
--- 99645,99654 ----
  9a2df63b77cda57168f292b09bde71b3  gcc/testsuite/gfortran.dg/pr93686_4.f90
  0636d4a049257c8e3f6c32b4b7309697  gcc/testsuite/gfortran.dg/pr93714_1.f90
  93b8b244bce4583a43c29d892e177744  gcc/testsuite/gfortran.dg/pr93714_2.f90
+ 9a8647e0b1ef01e06d45cc2715ae05e8  gcc/testsuite/gfortran.dg/pr93715.f90
  4d2e245917c39b1bcaeea6010bcb6284  gcc/testsuite/gfortran.dg/pr93792.f90
+ 1c1c17dce5c14eb846c34e6f6eba3b12  gcc/testsuite/gfortran.dg/pr93814.f90
+ 5494bfcb0d61c11d34ea0b6e4e610c45  gcc/testsuite/gfortran.dg/pr93832.f90
  8b7bf068692a6a31b63dd4963c050e98  gcc/testsuite/gfortran.dg/pr93835.f08
  6736173bcc319bca35f5453a7bca947b  gcc/testsuite/gfortran.dg/pr94030_1.f90
  b0f8acfae3746c459e5af7bcca222814  gcc/testsuite/gfortran.dg/pr94030_2.f90
*************** f17ab40b1ca95ac01da77049baa72103  gcc/te
*** 99646,99651 ****
--- 99657,99663 ----
  bf6d4fa9d116ccede014485a892d0d71  gcc/testsuite/gfortran.dg/pr94380.f90
  b9faba8aac0e0dd38443caeb527db93d  gcc/testsuite/gfortran.dg/pr94397.F90
  16d161f7900dd36eabcbaea6cd9c1b6e  gcc/testsuite/gfortran.dg/pr94708.f90
+ e49db1fd07a952483324884a3682a4e8  gcc/testsuite/gfortran.dg/pr94978.f90
  b3aa92652c768e489db71c4bdec58492  gcc/testsuite/gfortran.dg/pr95053.f
  4643a453de4a8df5432d833cf8bfa122  gcc/testsuite/gfortran.dg/pr95053_2.f90
  9a887ac1c462736f729ec4ec967c8be2  gcc/testsuite/gfortran.dg/pr95053_3.f90
*************** c8c260dea52e24ac6be6641b8f123d9a  gcc/te
*** 99728,99733 ****
--- 99740,99746 ----
  a056a75dc3c7830d385da1c0b9d587bc  gcc/testsuite/gfortran.dg/pr96711.f90
  a94ae73a3b6b9628990c54fb08f2950c  gcc/testsuite/gfortran.dg/pr96737.f90
  74a709306836d044b8cd43d035aecdf2  gcc/testsuite/gfortran.dg/pr96859.f90
+ 3b72f7e6589a60bc5e040e31c77484b8  gcc/testsuite/gfortran.dg/pr96986.f90
  76f063a5164cc2eff42c50fc9b9989a1  gcc/testsuite/gfortran.dg/pr97036.f90
  70cac68f93e5398eb60f3aa67f709e6a  gcc/testsuite/gfortran.dg/pr97095.f
  f219dfba008fc41e9e809107b3498d57  gcc/testsuite/gfortran.dg/pr97272.f90
*************** ac7a115cd070672d90d6479104a15e65  gcc/tr
*** 110648,110654 ****
  fa283611866c6ad433cfe860538eb2b3  gcc/tree-profile.cc
  bdc9bab14ae5624d86bc275c54f2c859  gcc/tree-scalar-evolution.cc
  fe964e6bef89af1a79d00c19713660bd  gcc/tree-scalar-evolution.h
! 61291ea514d85b325f8bc6bb41f88bce  gcc/tree-sra.cc
  1e9cd044620373c14038fbd39740fd14  gcc/tree-sra.h
  76ef7a403eba76cb39fe06d695ab266a  gcc/tree-ssa-address.cc
  a35227be3c2b85c69d7e31275f1f7092  gcc/tree-ssa-address.h
--- 110661,110667 ----
  fa283611866c6ad433cfe860538eb2b3  gcc/tree-profile.cc
  bdc9bab14ae5624d86bc275c54f2c859  gcc/tree-scalar-evolution.cc
  fe964e6bef89af1a79d00c19713660bd  gcc/tree-scalar-evolution.h
! 4f6d8d52d63b5cf641ebacec6098ba31  gcc/tree-sra.cc
  1e9cd044620373c14038fbd39740fd14  gcc/tree-sra.h
  76ef7a403eba76cb39fe06d695ab266a  gcc/tree-ssa-address.cc
  a35227be3c2b85c69d7e31275f1f7092  gcc/tree-ssa-address.h
*************** c3ccd07160a9bea2e0993c0c8a7d7693  libstd
*** 124074,124080 ****
  2125d10b9efc27578fdc1bd1b2298706  libstdc++-v3/config/cpu/sh/atomicity.h
  eeb172443402d009e2791dabc328b0b0  libstdc++-v3/config/cpu/sparc/atomic_word.h
  52cd5ecd93103febc0f09c9b88cce85c  libstdc++-v3/config/cpu/sparc/atomicity.h
! c09efc996de5e464e95c5d8321c9a71d  libstdc++-v3/config/io/basic_file_stdio.cc
  b3a8d294ffed3fe630224835ecb5387b  libstdc++-v3/config/io/basic_file_stdio.h
  c582707e4e9d2bf26bb0e80fb1d53b37  libstdc++-v3/config/io/c_io_stdio.h
  13ad2dfe48847bf3980a6d745cbc75e1  libstdc++-v3/config/locale/darwin/ctype_members.cc
--- 124087,124093 ----
  2125d10b9efc27578fdc1bd1b2298706  libstdc++-v3/config/cpu/sh/atomicity.h
  eeb172443402d009e2791dabc328b0b0  libstdc++-v3/config/cpu/sparc/atomic_word.h
  52cd5ecd93103febc0f09c9b88cce85c  libstdc++-v3/config/cpu/sparc/atomicity.h
! 06aa47bd91e3e34c1961d79233986030  libstdc++-v3/config/io/basic_file_stdio.cc
  b3a8d294ffed3fe630224835ecb5387b  libstdc++-v3/config/io/basic_file_stdio.h
  c582707e4e9d2bf26bb0e80fb1d53b37  libstdc++-v3/config/io/c_io_stdio.h
  13ad2dfe48847bf3980a6d745cbc75e1  libstdc++-v3/config/locale/darwin/ctype_members.cc
*************** a1bd8822ec35d463c058a8af51bed685  libstd
*** 124129,124135 ****
  1d5d357556d430f0638b33befc73aeac  libstdc++-v3/config/os/bsd/darwin/ctype_base.h
  ab68656c8c4b1603af9e0b5ff12988d8  libstdc++-v3/config/os/bsd/darwin/ctype_configure_char.cc
  47c702f417ba236bf6d6ca7c1b19c7ba  libstdc++-v3/config/os/bsd/darwin/ctype_inline.h
! 6c77ec588eb9291ea3403c24ed37310d  libstdc++-v3/config/os/bsd/darwin/os_defines.h
  9e91dfcb11e4c78744df0e1e0cf69b5b  libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
  df41d5e227c08bc35c33e096800b3c6a  libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h
  721aa5e60a5fb4b0605b6d4aa22139fa  libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc
--- 124142,124148 ----
  1d5d357556d430f0638b33befc73aeac  libstdc++-v3/config/os/bsd/darwin/ctype_base.h
  ab68656c8c4b1603af9e0b5ff12988d8  libstdc++-v3/config/os/bsd/darwin/ctype_configure_char.cc
  47c702f417ba236bf6d6ca7c1b19c7ba  libstdc++-v3/config/os/bsd/darwin/ctype_inline.h
! 2697d2e83a232a955e077a12a6844ecc  libstdc++-v3/config/os/bsd/darwin/os_defines.h
  9e91dfcb11e4c78744df0e1e0cf69b5b  libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
  df41d5e227c08bc35c33e096800b3c6a  libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h
  721aa5e60a5fb4b0605b6d4aa22139fa  libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc
*************** e7438a4bf7383459b5993ae739e430e8  libstd
*** 124138,124144 ****
  bfb3dd275dda6d404949711f0c5f2150  libstdc++-v3/config/os/bsd/freebsd/ctype_base.h
  721aa5e60a5fb4b0605b6d4aa22139fa  libstdc++-v3/config/os/bsd/freebsd/ctype_configure_char.cc
  47c702f417ba236bf6d6ca7c1b19c7ba  libstdc++-v3/config/os/bsd/freebsd/ctype_inline.h
! 53fd4a78322a664b8c31bc608ef31c2e  libstdc++-v3/config/os/bsd/freebsd/os_defines.h
  0f421f2ece494b1918ba1bfa718f339f  libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
  d3e30350bc6d2476b9b3183ae7030144  libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc
  bc1000065b5a226b93bc602a72b93061  libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
--- 124151,124157 ----
  bfb3dd275dda6d404949711f0c5f2150  libstdc++-v3/config/os/bsd/freebsd/ctype_base.h
  721aa5e60a5fb4b0605b6d4aa22139fa  libstdc++-v3/config/os/bsd/freebsd/ctype_configure_char.cc
  47c702f417ba236bf6d6ca7c1b19c7ba  libstdc++-v3/config/os/bsd/freebsd/ctype_inline.h
! bd0e5156d3a91e84842bfb8f3ab5c225  libstdc++-v3/config/os/bsd/freebsd/os_defines.h
  0f421f2ece494b1918ba1bfa718f339f  libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
  d3e30350bc6d2476b9b3183ae7030144  libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc
  bc1000065b5a226b93bc602a72b93061  libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
*************** a49c1f48702d35a11b6493d099cee092  libstd
*** 124210,124216 ****
  d66f986053e4755f0517ff5cfe90b2b5  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
  d9b077b82911753368f65f3014d3311d  libstdc++-v3/doc/doxygen/doxygroups.cc
! 520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
  92f5430d44f06426f0d19bffc186ad05  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
  0417f3646df4b35e1e898c85ad0b6e3f  libstdc++-v3/doc/doxygen/user.cfg.in
--- 124223,124229 ----
  d66f986053e4755f0517ff5cfe90b2b5  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
  d9b077b82911753368f65f3014d3311d  libstdc++-v3/doc/doxygen/doxygroups.cc
! 0afaede288e1533644cb1445cf4ff813  libstdc++-v3/doc/doxygen/mainpage.html
  92f5430d44f06426f0d19bffc186ad05  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
  0417f3646df4b35e1e898c85ad0b6e3f  libstdc++-v3/doc/doxygen/user.cfg.in
*************** c72b1c964202f34f94adedd186dee7ec  libstd
*** 124674,124680 ****
  28aee543f6c9d197b0af864e888f0122  libstdc++-v3/include/bits/char_traits.h
  6859feb7dcc6695a2c6234641b888038  libstdc++-v3/include/bits/charconv.h
  a2af06290cb60d50293e7486d3c7cd47  libstdc++-v3/include/bits/chrono.h
! 852f5e0c4254adc1ac53f52e42d875e3  libstdc++-v3/include/bits/chrono_io.h
  88b76f5a51860ba832b9dc12ecb77d11  libstdc++-v3/include/bits/codecvt.h
  51b1ac432b9720acddaea7defbbb9885  libstdc++-v3/include/bits/concept_check.h
  8a0280a1d69fd047e88fcd22a0723686  libstdc++-v3/include/bits/cow_string.h
--- 124687,124693 ----
  28aee543f6c9d197b0af864e888f0122  libstdc++-v3/include/bits/char_traits.h
  6859feb7dcc6695a2c6234641b888038  libstdc++-v3/include/bits/charconv.h
  a2af06290cb60d50293e7486d3c7cd47  libstdc++-v3/include/bits/chrono.h
! 71825bdeeb9037cdabe7393b23b9c699  libstdc++-v3/include/bits/chrono_io.h
  88b76f5a51860ba832b9dc12ecb77d11  libstdc++-v3/include/bits/codecvt.h
  51b1ac432b9720acddaea7defbbb9885  libstdc++-v3/include/bits/concept_check.h
  8a0280a1d69fd047e88fcd22a0723686  libstdc++-v3/include/bits/cow_string.h
*************** cc051c68674baf68361ca6695a77f7e6  libstd
*** 124765,124771 ****
  907c7d176657af94b77491ce0f265e60  libstdc++-v3/include/bits/stl_algo.h
  95200a3c8308380b76dad0e566b0eb67  libstdc++-v3/include/bits/stl_algobase.h
  1c3aabbb99d2602f69668b80beb790ae  libstdc++-v3/include/bits/stl_bvector.h
! 6768219e2c3fc30ed6027137aafb710c  libstdc++-v3/include/bits/stl_construct.h
  1be5734c1db6c9de0fedf7fa1d5e102a  libstdc++-v3/include/bits/stl_deque.h
  294c786967cfe73187d740c03e84a825  libstdc++-v3/include/bits/stl_function.h
  75cf6d6cb1c1d44bd3a905a9544df4bc  libstdc++-v3/include/bits/stl_heap.h
--- 124778,124784 ----
  907c7d176657af94b77491ce0f265e60  libstdc++-v3/include/bits/stl_algo.h
  95200a3c8308380b76dad0e566b0eb67  libstdc++-v3/include/bits/stl_algobase.h
  1c3aabbb99d2602f69668b80beb790ae  libstdc++-v3/include/bits/stl_bvector.h
! 4b245adc74fa1b780288d189dc03fd95  libstdc++-v3/include/bits/stl_construct.h
  1be5734c1db6c9de0fedf7fa1d5e102a  libstdc++-v3/include/bits/stl_deque.h
  294c786967cfe73187d740c03e84a825  libstdc++-v3/include/bits/stl_function.h
  75cf6d6cb1c1d44bd3a905a9544df4bc  libstdc++-v3/include/bits/stl_heap.h
*************** c6032f2d838adebc4bc1d0950adc8b46  libstd
*** 124778,124784 ****
  f5e8c41953cb4347962897fc765d5458  libstdc++-v3/include/bits/stl_multiset.h
  669eaba4823456e8a1e6a9e197c42f3b  libstdc++-v3/include/bits/stl_numeric.h
  374756112e988839d875892a66893a3f  libstdc++-v3/include/bits/stl_pair.h
! 8485f57bded7cb8f9b8b2e0fb2800e3a  libstdc++-v3/include/bits/stl_queue.h
  a3c6aa8aebb44198e86d15d59d6f59f8  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  3d31700ac326c163f7b606ab559287ed  libstdc++-v3/include/bits/stl_relops.h
  6bb1f0ee3fc6dd015f3f5a78e64f42ac  libstdc++-v3/include/bits/stl_set.h
--- 124791,124797 ----
  f5e8c41953cb4347962897fc765d5458  libstdc++-v3/include/bits/stl_multiset.h
  669eaba4823456e8a1e6a9e197c42f3b  libstdc++-v3/include/bits/stl_numeric.h
  374756112e988839d875892a66893a3f  libstdc++-v3/include/bits/stl_pair.h
! 726e81b14d0fa8940bdb370956ae84de  libstdc++-v3/include/bits/stl_queue.h
  a3c6aa8aebb44198e86d15d59d6f59f8  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  3d31700ac326c163f7b606ab559287ed  libstdc++-v3/include/bits/stl_relops.h
  6bb1f0ee3fc6dd015f3f5a78e64f42ac  libstdc++-v3/include/bits/stl_set.h
*************** d62b6536665a7c5121695fb1c49c5eef  libstd
*** 125363,125369 ****
  b6af1bbc3368d9c5b5a8c7182f8272ec  libstdc++-v3/include/std/bit
  6c83353fc8d46581132ab76a4ff6552a  libstdc++-v3/include/std/bitset
  ac89056b371085656f9349b818aa8656  libstdc++-v3/include/std/charconv
! c858ae1b237dd656e75aa2b8f7c38210  libstdc++-v3/include/std/chrono
  e43c8d137c20c10ac051954a254c532c  libstdc++-v3/include/std/codecvt
  650adbddee3c473863f9d814c33e8ea3  libstdc++-v3/include/std/complex
  c63a0eb6ee6b9b0e85f677d7da244361  libstdc++-v3/include/std/concepts
--- 125376,125382 ----
  b6af1bbc3368d9c5b5a8c7182f8272ec  libstdc++-v3/include/std/bit
  6c83353fc8d46581132ab76a4ff6552a  libstdc++-v3/include/std/bitset
  ac89056b371085656f9349b818aa8656  libstdc++-v3/include/std/charconv
! 7e8bb6bce5ceb37682d2e18968d54f92  libstdc++-v3/include/std/chrono
  e43c8d137c20c10ac051954a254c532c  libstdc++-v3/include/std/codecvt
  650adbddee3c473863f9d814c33e8ea3  libstdc++-v3/include/std/complex
  c63a0eb6ee6b9b0e85f677d7da244361  libstdc++-v3/include/std/concepts
*************** dcfcd93b1470ad7b25a150c5ab816dc8  libstd
*** 125410,125416 ****
  dfaa6ea502378573b76189598bfc35a9  libstdc++-v3/include/std/source_location
  a4bf4110ab3c9203418e54ab2fad45eb  libstdc++-v3/include/std/span
  150494e3c4d2c69af905516415888605  libstdc++-v3/include/std/spanstream
! f099bc998c2758cb164c891167ce8c5d  libstdc++-v3/include/std/sstream
  b8320e4989287bb5b75ee2f3a6a9cc1c  libstdc++-v3/include/std/stack
  e2180104cb451cf0f541fa955a037698  libstdc++-v3/include/std/stacktrace
  a0df6d15b0b61f28637877eac9b32416  libstdc++-v3/include/std/stdexcept
--- 125423,125429 ----
  dfaa6ea502378573b76189598bfc35a9  libstdc++-v3/include/std/source_location
  a4bf4110ab3c9203418e54ab2fad45eb  libstdc++-v3/include/std/span
  150494e3c4d2c69af905516415888605  libstdc++-v3/include/std/spanstream
! 4dd158ea6d8f1f0e80431f6a8dc90f32  libstdc++-v3/include/std/sstream
  b8320e4989287bb5b75ee2f3a6a9cc1c  libstdc++-v3/include/std/stack
  e2180104cb451cf0f541fa955a037698  libstdc++-v3/include/std/stacktrace
  a0df6d15b0b61f28637877eac9b32416  libstdc++-v3/include/std/stdexcept
*************** e656fe3f99236050e70b771efe8cdbb3  libstd
*** 125423,125429 ****
  ea3475b6634d2e3d92998c1122691d82  libstdc++-v3/include/std/system_error
  d5da6c002707c25c3a0b22aa5845de07  libstdc++-v3/include/std/text_encoding
  4d1e7ccb1f7585f38eaa965dd767a630  libstdc++-v3/include/std/thread
! 785909b510b6bb356faba5abd45a6593  libstdc++-v3/include/std/tuple
  1af43cc9821b85474ef33eaedfb68531  libstdc++-v3/include/std/type_traits
  91fe9927d579813b014eed3896aafbcd  libstdc++-v3/include/std/typeindex
  c87dc9131494e6b9211a14f41b1817d9  libstdc++-v3/include/std/unordered_map
--- 125436,125442 ----
  ea3475b6634d2e3d92998c1122691d82  libstdc++-v3/include/std/system_error
  d5da6c002707c25c3a0b22aa5845de07  libstdc++-v3/include/std/text_encoding
  4d1e7ccb1f7585f38eaa965dd767a630  libstdc++-v3/include/std/thread
! bcbfbf2cd32183607c57aaf14b1f52b0  libstdc++-v3/include/std/tuple
  1af43cc9821b85474ef33eaedfb68531  libstdc++-v3/include/std/type_traits
  91fe9927d579813b014eed3896aafbcd  libstdc++-v3/include/std/typeindex
  c87dc9131494e6b9211a14f41b1817d9  libstdc++-v3/include/std/unordered_map
*************** eb207810586ea846576007018322c6e1  libstd
*** 125700,125706 ****
  6310bd84805ba8da0ba88ee4704b7289  libstdc++-v3/src/c++17/floating_to_chars.cc
  592a23526d9d99eb397853d1e41dc3af  libstdc++-v3/src/c++17/fs_dir.cc
  f2cf236e640646a50b7abadbdae9a13b  libstdc++-v3/src/c++17/fs_ops.cc
! 4caf7cdad3b78037fc52bfcf6fcb19b7  libstdc++-v3/src/c++17/fs_path.cc
  61f48e97e9a36854804ce85d6f144e1d  libstdc++-v3/src/c++17/memory_resource.cc
  7d6a7293171f60a9406995fb4ddab5bd  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
--- 125713,125719 ----
  6310bd84805ba8da0ba88ee4704b7289  libstdc++-v3/src/c++17/floating_to_chars.cc
  592a23526d9d99eb397853d1e41dc3af  libstdc++-v3/src/c++17/fs_dir.cc
  f2cf236e640646a50b7abadbdae9a13b  libstdc++-v3/src/c++17/fs_ops.cc
! d6b8a7f042b82185ff2f6dbbd00ea3b5  libstdc++-v3/src/c++17/fs_path.cc
  61f48e97e9a36854804ce85d6f144e1d  libstdc++-v3/src/c++17/memory_resource.cc
  7d6a7293171f60a9406995fb4ddab5bd  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
*************** edfaeb1bc759bccb53b3d9624f21c2be  libstd
*** 125722,125729 ****
  d3813c41a1a392d3bd3fc819324240d4  libstdc++-v3/src/c++20/Makefile.am
  1a78ce3875810d2fbde4c0259e6da49c  libstdc++-v3/src/c++20/Makefile.in
  bc750f6d75cc3d48552863c2403f8857  libstdc++-v3/src/c++20/sstream-inst.cc
! e9e89f4578e59d252e4caaf0b63d6dfb  libstdc++-v3/src/c++20/tzdata.zi
! 5d16ea0508da4381f59ba503f633e830  libstdc++-v3/src/c++20/tzdb.cc
  5cda0f038c8a42d9ac9d35d23cac6c57  libstdc++-v3/src/c++20/tzdb_globals.h
  b65cec48a384351b09d3d7d12ee37660  libstdc++-v3/src/c++23/Makefile.am
  5405bc5d3053e91ab5f6209a6e20a377  libstdc++-v3/src/c++23/Makefile.in
--- 125735,125742 ----
  d3813c41a1a392d3bd3fc819324240d4  libstdc++-v3/src/c++20/Makefile.am
  1a78ce3875810d2fbde4c0259e6da49c  libstdc++-v3/src/c++20/Makefile.in
  bc750f6d75cc3d48552863c2403f8857  libstdc++-v3/src/c++20/sstream-inst.cc
! e868493d039d86bca105c23a24b87383  libstdc++-v3/src/c++20/tzdata.zi
! 59c47c266be6acb340eebc5d5a52ea78  libstdc++-v3/src/c++20/tzdb.cc
  5cda0f038c8a42d9ac9d35d23cac6c57  libstdc++-v3/src/c++20/tzdb_globals.h
  b65cec48a384351b09d3d7d12ee37660  libstdc++-v3/src/c++23/Makefile.am
  5405bc5d3053e91ab5f6209a6e20a377  libstdc++-v3/src/c++23/Makefile.in
*************** e3f61f582ecf58daf9067b80d518c249  libstd
*** 127237,127243 ****
  0fec65974cb6f5812af2edc743e20e00  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/95788.cc
  de351e8d21347f48b3c1745ab1d1164d  libstdc++-v3/testsuite/20_util/specialized_algorithms/destroy/constrained.cc
  122fcdc0346fb41ec738602d721a1126  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc
! 44738eac1a7caa467741f819e5770e42  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
  c4cb80eeb9e22fd9ca3df8d210abb00b  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc
  806a4d85a82c14d68ce64ea6a7245ab7  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc
  50a11c290676b6f106cb647a502e64ac  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc
--- 127250,127257 ----
  0fec65974cb6f5812af2edc743e20e00  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/95788.cc
  de351e8d21347f48b3c1745ab1d1164d  libstdc++-v3/testsuite/20_util/specialized_algorithms/destroy/constrained.cc
  122fcdc0346fb41ec738602d721a1126  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc
! 3d215c86194df15b75fdf87c57f36962  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc
! b4d18cf9ee1aac3b114e2840f50538f9  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
  c4cb80eeb9e22fd9ca3df8d210abb00b  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc
  806a4d85a82c14d68ce64ea6a7245ab7  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc
  50a11c290676b6f106cb647a502e64ac  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc
*************** a4d8ad071879c6906f7fce75376fd7f9  libstd
*** 127357,127362 ****
--- 127371,127377 ----
  d23b1a747046dfeaadefce18d2c02b12  libstdc++-v3/testsuite/20_util/tuple/cons/101960.cc
  187ef5eb9d79f3cb6e7970796ffabd33  libstdc++-v3/testsuite/20_util/tuple/cons/102270.cc
  9a6dc1f9548e126de2581231c632a19f  libstdc++-v3/testsuite/20_util/tuple/cons/114147.cc
+ acc813dd1edb9480437149d28cd4faf0  libstdc++-v3/testsuite/20_util/tuple/cons/121771.cc
  663ba20c45ee2bbf63a3146a5cac0f23  libstdc++-v3/testsuite/20_util/tuple/cons/41530.cc
  783384ae9c6ca19657a9c90778e7fc96  libstdc++-v3/testsuite/20_util/tuple/cons/44487.cc
  034dacfd01ba7e63192ee47bc865c854  libstdc++-v3/testsuite/20_util/tuple/cons/45228.cc
*************** f36240251845dcaf230295841eba7646  libstd
*** 129352,129357 ****
--- 129367,129373 ----
  a70e420831c858a101440ad9ee1c8cf4  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/5.cc
  cfdc458b3774704d0d63dc4d8f1d92e9  libstdc++-v3/testsuite/23_containers/multiset/requirements/partial_specialization/1.cc
  77b71a9f5e9d611e3cc7b879e78658ac  libstdc++-v3/testsuite/23_containers/multiset/requirements/typedefs.cc
+ c2def03f80594fdacabf96a3fe28473a  libstdc++-v3/testsuite/23_containers/priority_queue/118088.cc
  7f0e30f8df9b60251d6205e919b8e00f  libstdc++-v3/testsuite/23_containers/priority_queue/67085.cc
  9f8fd4de0112a6c04d13168021e79ed1  libstdc++-v3/testsuite/23_containers/priority_queue/77528.cc
  c293382ebc0258702f13f7b675577d1f  libstdc++-v3/testsuite/23_containers/priority_queue/92878_92947.cc
*************** ccf234c11b313b8cf8ae976eba6a599c  libstd
*** 130060,130067 ****
  fb48eef9819fb9b9420c789b10345994  libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc
  49e7077b6d0fc87fecd23a8bda909ccd  libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
  7a66bf7f5aca27ddc8ca203f2f55a9b6  libstdc++-v3/testsuite/23_containers/vector/cons/destroy-adl.cc
! 006fc011a43ddbf758237846b0e783c2  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
! 4620aebd78f00de979bb2e05d7655e23  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
  3c482a502f4b14275ffc4a8bdb723de3  libstdc++-v3/testsuite/23_containers/vector/cons/moveable.cc
  030430e7c08653a216e024bffde111c8  libstdc++-v3/testsuite/23_containers/vector/cons/moveable2.cc
  98f7d0a5529604ca7db7ae3c26222e15  libstdc++-v3/testsuite/23_containers/vector/cons/noexcept_move_construct.cc
--- 130076,130083 ----
  fb48eef9819fb9b9420c789b10345994  libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc
  49e7077b6d0fc87fecd23a8bda909ccd  libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
  7a66bf7f5aca27ddc8ca203f2f55a9b6  libstdc++-v3/testsuite/23_containers/vector/cons/destroy-adl.cc
! 74c9b0a429566c7484dbad3f54540dda  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
! 4c25cef9d3f8f62e7314ff11dc52fd71  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
  3c482a502f4b14275ffc4a8bdb723de3  libstdc++-v3/testsuite/23_containers/vector/cons/moveable.cc
  030430e7c08653a216e024bffde111c8  libstdc++-v3/testsuite/23_containers/vector/cons/moveable2.cc
  98f7d0a5529604ca7db7ae3c26222e15  libstdc++-v3/testsuite/23_containers/vector/cons/noexcept_move_construct.cc
*************** d02768a383f43d2bdb10cada8328b159  libstd
*** 132458,132463 ****
--- 132474,132480 ----
  56eb8885b97731c8e480469c9fca4246  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1057.cc
  cca2d2ccbbea4dda9fb5c4f3c39267d6  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/9404-2.cc
  b3ae8704753579a0002195a186322a0d  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/1.cc
+ 977a013f60bef4a12b598777d9f03bd4  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc
  6096791a50e73fccc36caa94a9c87920  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/2.cc
  161ab5a9afddbade1f0f4cc148e37a14  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3.cc
  5b154da1ad402e6b2ae093911748ac19  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3955.cc
*************** bd0b3ffbf0b5d42a3102341682967b7f  libstd
*** 132563,132568 ****
--- 132580,132586 ----
  69a1e1cd94571e915ecad1418d14dbef  libstdc++-v3/testsuite/27_io/filesystem/path/compare/lwg2936.cc
  d9c79dd452a58cfd063e49ff476fe370  libstdc++-v3/testsuite/27_io/filesystem/path/compare/path.cc
  841597b8188f1acb8cd097ab51e19134  libstdc++-v3/testsuite/27_io/filesystem/path/compare/strings.cc
+ 9b500ed50c013cdbd0290f1d06786f83  libstdc++-v3/testsuite/27_io/filesystem/path/concat/120029.cc
  0bab77a18fa3ca7723e4133a41f95bbf  libstdc++-v3/testsuite/27_io/filesystem/path/concat/92853.cc
  a2763ee4993b7a1eb74183a35b05454b  libstdc++-v3/testsuite/27_io/filesystem/path/concat/94063.cc
  d6cf66594b90a2255355df35b0276d5f  libstdc++-v3/testsuite/27_io/filesystem/path/concat/path.cc
*************** cc7125bc60e34f68540efd871dda5640  libstd
*** 133710,133715 ****
--- 133728,133734 ----
  ba96c96e39c464f5314b33a61dfdefd1  libstdc++-v3/testsuite/experimental/filesystem/path/compare/compare.cc
  1091b8690897ed9ab62fbefdcf505667  libstdc++-v3/testsuite/experimental/filesystem/path/compare/path.cc
  ba07232a1772681c7223e5d244165c9b  libstdc++-v3/testsuite/experimental/filesystem/path/compare/strings.cc
+ 83f8a63ee6afbdafe75f08d3ab59ded7  libstdc++-v3/testsuite/experimental/filesystem/path/concat/120029.cc
  8cc01c2bd70482e4228fdd50255efa6f  libstdc++-v3/testsuite/experimental/filesystem/path/concat/path.cc
  dfe8fa5ece3b1045a958f3f2744f6537  libstdc++-v3/testsuite/experimental/filesystem/path/concat/strings.cc
  c06b01e19066f0d4ffa4faa5202f4e3e  libstdc++-v3/testsuite/experimental/filesystem/path/construct/100630.cc
*************** e9dd29c8ada0e4f7673523df4dc8c5e7  libstd
*** 134815,134831 ****
  a0efc42f3d3e1e881d69063fe7f2c586  libstdc++-v3/testsuite/std/text_encoding/cons.cc
  bfa6a93e5c5cd2d11c1eddd5572fd5de  libstdc++-v3/testsuite/std/text_encoding/members.cc
  e9ef3f2b572f799b265913487f27690b  libstdc++-v3/testsuite/std/text_encoding/requirements.cc
! 829f62feba3a8d88bdba61776f8980da  libstdc++-v3/testsuite/std/time/clock/file/io.cc
  80a2961c5977de8c0d12064222e4427c  libstdc++-v3/testsuite/std/time/clock/file/members.cc
  bb27fc01a394046e2e420e57a1e6925f  libstdc++-v3/testsuite/std/time/clock/file/overview.cc
  811bf06fb6123b7a4dc922fa36ba8a06  libstdc++-v3/testsuite/std/time/clock/gps/1.cc
! 0a79f149c67bc35f2c5afa5f6504446d  libstdc++-v3/testsuite/std/time/clock/gps/io.cc
! 35bb731208c0d393e6eb642440f3a663  libstdc++-v3/testsuite/std/time/clock/local/io.cc
! 423a8d821e5306daefaa2d142a56c137  libstdc++-v3/testsuite/std/time/clock/system/io.cc
  b3cda48993495a5d2ff69f7f1ad2c695  libstdc++-v3/testsuite/std/time/clock/tai/1.cc
! 0f2ad290eb91c08f3de238b60ddafc29  libstdc++-v3/testsuite/std/time/clock/tai/io.cc
  33b0f61f2113641c61ba5cd53d9a52a3  libstdc++-v3/testsuite/std/time/clock/utc/1.cc
! 0d059ebbdaaad044ee1ede6c816c555f  libstdc++-v3/testsuite/std/time/clock/utc/io.cc
  01f8f5b7e0644716179c7a0f95af5d9d  libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info.cc
  2bf53d186ffb828ec6dc3552076ba23e  libstdc++-v3/testsuite/std/time/day/1.cc
  9b5b79c912b11d4f48e1fb35fb111742  libstdc++-v3/testsuite/std/time/day/io.cc
--- 134834,134850 ----
  a0efc42f3d3e1e881d69063fe7f2c586  libstdc++-v3/testsuite/std/text_encoding/cons.cc
  bfa6a93e5c5cd2d11c1eddd5572fd5de  libstdc++-v3/testsuite/std/text_encoding/members.cc
  e9ef3f2b572f799b265913487f27690b  libstdc++-v3/testsuite/std/text_encoding/requirements.cc
! 4d6ff64285bb8a204046c3acb8b3c72f  libstdc++-v3/testsuite/std/time/clock/file/io.cc
  80a2961c5977de8c0d12064222e4427c  libstdc++-v3/testsuite/std/time/clock/file/members.cc
  bb27fc01a394046e2e420e57a1e6925f  libstdc++-v3/testsuite/std/time/clock/file/overview.cc
  811bf06fb6123b7a4dc922fa36ba8a06  libstdc++-v3/testsuite/std/time/clock/gps/1.cc
! a85dcd18b61b95e1c5a533b8aacdd488  libstdc++-v3/testsuite/std/time/clock/gps/io.cc
! 8acd6f904e5c685807dd2f220313bd5b  libstdc++-v3/testsuite/std/time/clock/local/io.cc
! 13ae31163906c8eda2c2021c882bdc89  libstdc++-v3/testsuite/std/time/clock/system/io.cc
  b3cda48993495a5d2ff69f7f1ad2c695  libstdc++-v3/testsuite/std/time/clock/tai/1.cc
! a87e1152f6bc2804b93ce070a51eeb54  libstdc++-v3/testsuite/std/time/clock/tai/io.cc
  33b0f61f2113641c61ba5cd53d9a52a3  libstdc++-v3/testsuite/std/time/clock/utc/1.cc
! 91c1a13a9f62d24541dc87bd44c15db4  libstdc++-v3/testsuite/std/time/clock/utc/io.cc
  01f8f5b7e0644716179c7a0f95af5d9d  libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info.cc
  2bf53d186ffb828ec6dc3552076ba23e  libstdc++-v3/testsuite/std/time/day/1.cc
  9b5b79c912b11d4f48e1fb35fb111742  libstdc++-v3/testsuite/std/time/day/io.cc
*************** e794c3c683b129a1bc27715ff3ee3b37  libstd
*** 134896,134902 ****
  728832c3eb4e89e18aaf1a2ed1be2271  libstdc++-v3/testsuite/std/time/zoned_time/1.cc
  6e26d84ca6efe0ea496ba2fcc8ee280b  libstdc++-v3/testsuite/std/time/zoned_time/custom.cc
  6abf80ca9a7f01e8d061066eecdd2022  libstdc++-v3/testsuite/std/time/zoned_time/deduction.cc
! 2af126843677c397f37d0ec04aab8ffe  libstdc++-v3/testsuite/std/time/zoned_time/io.cc
  1ffbda059634e8047ba1c3ed8ea40cdf  libstdc++-v3/testsuite/std/time/zoned_time/req_neg.cc
  46d6b45f45908ebc179f768a8757f7de  libstdc++-v3/testsuite/std/time/zoned_time/requirements.cc
  a666cbbccdbd1212e56956d4d552eceb  libstdc++-v3/testsuite/std/time/zoned_traits.cc
--- 134915,134921 ----
  728832c3eb4e89e18aaf1a2ed1be2271  libstdc++-v3/testsuite/std/time/zoned_time/1.cc
  6e26d84ca6efe0ea496ba2fcc8ee280b  libstdc++-v3/testsuite/std/time/zoned_time/custom.cc
  6abf80ca9a7f01e8d061066eecdd2022  libstdc++-v3/testsuite/std/time/zoned_time/deduction.cc
! d959748416b21daaf2d235599ad8a5f4  libstdc++-v3/testsuite/std/time/zoned_time/io.cc
  1ffbda059634e8047ba1c3ed8ea40cdf  libstdc++-v3/testsuite/std/time/zoned_time/req_neg.cc
  46d6b45f45908ebc179f768a8757f7de  libstdc++-v3/testsuite/std/time/zoned_time/requirements.cc
  a666cbbccdbd1212e56956d4d552eceb  libstdc++-v3/testsuite/std/time/zoned_traits.cc
diff -Nrcpad gcc-14-20260507/gcc/ChangeLog gcc-14-20260514/gcc/ChangeLog
*** gcc-14-20260507/gcc/ChangeLog	Thu May  7 22:32:04 2026
--- gcc-14-20260514/gcc/ChangeLog	Thu May 14 22:32:04 2026
***************
*** 1,3 ****
--- 1,12 ----
+ 2026-05-12  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-04-15  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/122976
+ 	* tree-sra.cc (path_comparable_for_same_access): Return false if the
+ 	base is a MEM_REF with a different underlying type.
+ 
  2026-05-03  Collin Funk  <collin.funk1@gmail.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20260507/gcc/DATESTAMP gcc-14-20260514/gcc/DATESTAMP
*** gcc-14-20260507/gcc/DATESTAMP	Thu May  7 22:32:04 2026
--- gcc-14-20260514/gcc/DATESTAMP	Thu May 14 22:32:04 2026
***************
*** 1 ****
! 20260507
--- 1 ----
! 20260514
diff -Nrcpad gcc-14-20260507/gcc/config/i386/i386.md gcc-14-20260514/gcc/config/i386/i386.md
*** gcc-14-20260507/gcc/config/i386/i386.md	Thu May  7 22:32:05 2026
--- gcc-14-20260514/gcc/config/i386/i386.md	Thu May 14 22:32:05 2026
***************
*** 27624,27630 ****
    [(unspec_volatile [(match_operand:SWI48 0 "nonimmediate_operand" "rm")]
  		    UNSPECV_PTWRITE)]
    "TARGET_PTWRITE"
!   "ptwrite\t%0"
    [(set_attr "type" "other")
     (set_attr "prefix_0f" "1")
     (set_attr "prefix_rep" "1")])
--- 27624,27630 ----
    [(unspec_volatile [(match_operand:SWI48 0 "nonimmediate_operand" "rm")]
  		    UNSPECV_PTWRITE)]
    "TARGET_PTWRITE"
!   "ptwrite<imodesuffix>\t%0"
    [(set_attr "type" "other")
     (set_attr "prefix_0f" "1")
     (set_attr "prefix_rep" "1")])
diff -Nrcpad gcc-14-20260507/gcc/cp/constexpr.cc gcc-14-20260514/gcc/cp/constexpr.cc
*** gcc-14-20260507/gcc/cp/constexpr.cc	Thu May  7 22:32:06 2026
--- gcc-14-20260514/gcc/cp/constexpr.cc	Thu May 14 22:32:05 2026
*************** cxx_eval_call_expression (const constexp
*** 3228,3233 ****
--- 3228,3243 ----
  	      *slot = entry = ggc_alloc<constexpr_call> ();
  	      *entry = new_call;
  	      fb.preserve ();
+ 
+ 	      /* Unshare args going into the hash table to separate them
+ 		 from the caller's context, for better GC and to avoid
+ 		 problems with verify_gimple.  */
+ 	      tree bound = new_call.bindings;
+ 	      for (int i = 0; i < TREE_VEC_LENGTH (bound); ++i)
+ 		{
+ 		  tree &arg = TREE_VEC_ELT (bound, i);
+ 		  arg = unshare_expr_without_location (arg);
+ 		}
  	    }
  	}
        /* Calls that are in progress have their result set to NULL, so that we
*************** cxx_eval_call_expression (const constexp
*** 3286,3298 ****
  	      tree arg = TREE_VEC_ELT (bound, i);
  	      if (entry)
  		{
! 		  /* Unshare args going into the hash table to separate them
! 		     from the caller's context, for better GC and to avoid
! 		     problems with verify_gimple.  */
! 		  arg = unshare_expr_without_location (arg);
! 		  TREE_VEC_ELT (bound, i) = arg;
! 
! 		  /* And then unshare again so the callee doesn't change the
  		     argument values in the hash table. XXX Could we unshare
  		     lazily in cxx_eval_store_expression?  */
  		  arg = unshare_constructor (arg);
--- 3296,3302 ----
  	      tree arg = TREE_VEC_ELT (bound, i);
  	      if (entry)
  		{
! 		  /* Unshare again so the callee doesn't change the
  		     argument values in the hash table. XXX Could we unshare
  		     lazily in cxx_eval_store_expression?  */
  		  arg = unshare_constructor (arg);
*************** init_subob_ctx (const constexpr_ctx *ctx
*** 5281,5288 ****
    if (!AGGREGATE_TYPE_P (type) && !VECTOR_TYPE_P (type))
      /* A non-aggregate member doesn't get its own CONSTRUCTOR.  */
      return;
    if (VECTOR_TYPE_P (type)
!       && VECTOR_TYPE_P (TREE_TYPE (ctx->ctor))
        && index == NULL_TREE)
      /* A vector inside of a vector CONSTRUCTOR, e.g. when a larger
         vector is constructed from smaller vectors, doesn't get its own
--- 5285,5301 ----
    if (!AGGREGATE_TYPE_P (type) && !VECTOR_TYPE_P (type))
      /* A non-aggregate member doesn't get its own CONSTRUCTOR.  */
      return;
+ 
+   tree ctxtype = NULL_TREE;
+   if (ctx->ctor)
+     ctxtype = TREE_TYPE (ctx->ctor);
+   else if (ctx->object)
+     ctxtype = TREE_TYPE (ctx->object);
+   else
+     gcc_unreachable ();
+ 
    if (VECTOR_TYPE_P (type)
!       && VECTOR_TYPE_P (ctxtype)
        && index == NULL_TREE)
      /* A vector inside of a vector CONSTRUCTOR, e.g. when a larger
         vector is constructed from smaller vectors, doesn't get its own
*************** init_subob_ctx (const constexpr_ctx *ctx
*** 5301,5309 ****
  	new_ctx.object = build_ctor_subob_ref (index, type, ctx->object);
      }
  
!   if (is_empty_class (type))
!     /* Leave ctor null for an empty subobject, they aren't represented in the
!        result of evaluation.  */
      new_ctx.ctor = NULL_TREE;
    else
      {
--- 5314,5323 ----
  	new_ctx.object = build_ctor_subob_ref (index, type, ctx->object);
      }
  
!   if (is_empty_class (type)
!       && TREE_CODE (ctxtype) != UNION_TYPE)
!     /* Leave ctor null for an empty subobject of a non-union class, they aren't
!        represented in the result of evaluation.  */
      new_ctx.ctor = NULL_TREE;
    else
      {
diff -Nrcpad gcc-14-20260507/gcc/fortran/ChangeLog gcc-14-20260514/gcc/fortran/ChangeLog
*** gcc-14-20260507/gcc/fortran/ChangeLog	Thu May  7 22:32:06 2026
--- gcc-14-20260514/gcc/fortran/ChangeLog	Thu May 14 22:32:06 2026
***************
*** 1,3 ****
--- 1,94 ----
+ 2026-05-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-10  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/94978
+ 	* frontend-passes.cc (evaluate_loop_bound): New helper.
+ 	(inner_loop_may_be_skipped): New helper.
+ 	(do_subscript): Skip outer-loop bound warnings when nested inner loops
+ 	may be zero-trip for the substituted bound.
+ 
+ 2026-05-13  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-16  Paul Thomas  <pault@gcc.gnu.org>
+ 		    Steve Kargl  <kargls@comcast.net>
+ 
+ 	PR fortran/93832
+ 	* array.cc (resolve_array_bound): Emit error and return false
+ 	if bound expression is derived type or class.
+ 	* primary.cc (gfc_convert_to_structure_constructor): Do not
+ 	dereference NULL in character component test. Define 'shorter'
+ 	and use it help cure one of several whitespace issues.
+ 
+ 2026-05-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-11  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/93814
+ 	* trans-decl.cc (build_entry_thunks): Create local result buffer
+ 	and length temporaries for bind(c) CHARACTER entry thunks when the
+ 	master returns by reference but the thunk returns by value.
+ 
+ 2026-05-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-08  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/93715
+ 	* trans-decl.cc (gfc_trans_deferred_vars): Skip auto array
+ 	allocation for scalar coarrays.
+ 
+ 2026-05-12  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	* trans-openmp.cc (gfc_omp_finish_clause): Compute OMP_CLAUSE_SIZE
+ 	from the array domain bounds and element size for VLA types instead
+ 	of using TYPE_SIZE_UNIT directly, to avoid corrupting the type.
+ 
+ 2026-05-12  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/85352
+ 	* resolve.cc (specification_expr_symbol): New variable.
+ 	(entry_dummy_seen_p): Return whether a dummy appears in an already
+ 	seen ENTRY.
+ 	(gfc_resolve_formal_arglist): Remember the dummy whose specification
+ 	expressions are being resolved.
+ 	(resolve_variable): Accept unresolved sibling ENTRY dummy arguments
+ 	while resolving the current dummy's specification expressions.
+ 	(resolve_fl_variable): Preserve specification_expr_symbol.
+ 	(resolve_symbol_array_spec): Likewise.
+ 
+ 2026-05-09  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/107425
+ 	* trans-decl.cc (gfc_finish_var_decl): Check for
+ 	omp_affinity_iterators namespace before FL_LABEL BLOCK check.
+ 	Only route actual iterator variables through add_decl_as_local;
+ 	add other variables to the enclosing function.
+ 
+ 2026-05-09  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-06  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/79524
+ 	PR fortran/79524
+ 	* decl.cc (discard_pending_charlens): New helper.
+ 	(add_init_expr_to_sym): Drop statement-local charlens when
+ 	rejecting variable-length parameter arrays.
+ 	(variable_decl, do_parm, enumerator_decl): Save the current
+ 	namespace charlen list before parsing declarations with
+ 	initializers.
+ 	(match_procedure_decl): Adjust call to add_init_expr_to_sym.
+ 
  2026-05-06  Christopher Albert  <albert@tugraz.at>
  
  	Backported from master:
diff -Nrcpad gcc-14-20260507/gcc/fortran/array.cc gcc-14-20260514/gcc/fortran/array.cc
*** gcc-14-20260507/gcc/fortran/array.cc	Thu May  7 22:32:06 2026
--- gcc-14-20260514/gcc/fortran/array.cc	Thu May 14 22:32:06 2026
*************** resolve_array_bound (gfc_expr *e, int ch
*** 382,387 ****
--- 382,394 ----
    if (e == NULL)
      return true;
  
+   if (e->ts.type == BT_DERIVED || e->ts.type == BT_CLASS)
+     {
+       gfc_error ("Derived type or class expression for array bound at %L",
+ 		 &e->where);
+       return false;
+     }
+ 
    if (!gfc_resolve_expr (e)
        || !gfc_specification_expr (e))
      return false;
diff -Nrcpad gcc-14-20260507/gcc/fortran/decl.cc gcc-14-20260514/gcc/fortran/decl.cc
*** gcc-14-20260507/gcc/fortran/decl.cc	Thu May  7 22:32:06 2026
--- gcc-14-20260514/gcc/fortran/decl.cc	Thu May 14 22:32:06 2026
*************** discard_pending_charlen (gfc_charlen *cl
*** 130,135 ****
--- 130,156 ----
    free (cl);
  }
  
+ /* Drop the charlen nodes created while matching a declaration that is about
+    to be rejected.  Callers must clear any surviving owners before using this
+    helper, so only the statement-local nodes remain on the namespace list.  */
+ 
+ static void
+ discard_pending_charlens (gfc_charlen *saved_cl)
+ {
+   if (!gfc_current_ns)
+     return;
+ 
+   while (gfc_current_ns->cl_list != saved_cl)
+     {
+       gfc_charlen *cl = gfc_current_ns->cl_list;
+ 
+       gcc_assert (cl);
+       gfc_current_ns->cl_list = cl->next;
+       gfc_free_expr (cl->length);
+       free (cl);
+     }
+ }
+ 
  /********************* DATA statement subroutines *********************/
  
  static bool in_match_data = false;
*************** fix_initializer_charlen (gfc_typespec *t
*** 2038,2044 ****
     expression to a symbol.  */
  
  static bool
! add_init_expr_to_sym (const char *name, gfc_expr **initp, locus *var_locus)
  {
    symbol_attribute attr;
    gfc_symbol *sym;
--- 2059,2066 ----
     expression to a symbol.  */
  
  static bool
! add_init_expr_to_sym (const char *name, gfc_expr **initp, locus *var_locus,
! 		      gfc_charlen *saved_cl_list)
  {
    symbol_attribute attr;
    gfc_symbol *sym;
*************** add_init_expr_to_sym (const char *name,
*** 2126,2131 ****
--- 2148,2163 ----
  					 "at %L "
  					 "with variable length elements",
  					 &sym->declared_at);
+ 
+ 			      /* This rejection path can leave several
+ 				 declaration-local charlens on cl_list,
+ 				 including the replacement symbol charlen and
+ 				 the array-constructor typespec charlen.
+ 				 Clear the surviving owners first, then drop
+ 				 only the nodes created by this declaration.  */
+ 			      sym->ts.u.cl = NULL;
+ 			      init->ts.u.cl = NULL;
+ 			      discard_pending_charlens (saved_cl_list);
  			      return false;
  			    }
  			  clen = mpz_get_si (length->value.integer);
*************** variable_decl (int elem)
*** 2655,2660 ****
--- 2687,2693 ----
    gfc_array_spec *as;
    gfc_array_spec *cp_as; /* Extra copy for Cray Pointees.  */
    gfc_charlen *cl;
+   gfc_charlen *saved_cl_list;
    bool cl_deferred;
    locus var_locus;
    match m;
*************** variable_decl (int elem)
*** 2665,2670 ****
--- 2698,2704 ----
    initializer = NULL;
    as = NULL;
    cp_as = NULL;
+   saved_cl_list = gfc_current_ns->cl_list;
  
    /* When we get here, we've just matched a list of attributes and
       maybe a type and a double colon.  The next thing we expect to see
*************** variable_decl (int elem)
*** 3203,3209 ****
       NULL here, because we sometimes also need to check if a
       declaration *must* have an initialization expression.  */
    if (!gfc_comp_struct (gfc_current_state ()))
!     t = add_init_expr_to_sym (name, &initializer, &var_locus);
    else
      {
        if (current_ts.type == BT_DERIVED
--- 3237,3244 ----
       NULL here, because we sometimes also need to check if a
       declaration *must* have an initialization expression.  */
    if (!gfc_comp_struct (gfc_current_state ()))
!     t = add_init_expr_to_sym (name, &initializer, &var_locus,
! 			      saved_cl_list);
    else
      {
        if (current_ts.type == BT_DERIVED
*************** match_procedure_decl (void)
*** 7369,7375 ****
  	  if (m != MATCH_YES)
  	    goto cleanup;
  
! 	  if (!add_init_expr_to_sym (sym->name, &initializer, &gfc_current_locus))
  	    goto cleanup;
  
  	}
--- 7404,7412 ----
  	  if (m != MATCH_YES)
  	    goto cleanup;
  
! 	  if (!add_init_expr_to_sym (sym->name, &initializer,
! 				     &gfc_current_locus,
! 				     gfc_current_ns->cl_list))
  	    goto cleanup;
  
  	}
*************** do_parm (void)
*** 9599,9607 ****
--- 9636,9647 ----
  {
    gfc_symbol *sym;
    gfc_expr *init;
+   gfc_charlen *saved_cl_list;
    match m;
    bool t;
  
+   saved_cl_list = gfc_current_ns->cl_list;
+ 
    m = gfc_match_symbol (&sym, 0);
    if (m == MATCH_NO)
      gfc_error ("Expected variable name at %C in PARAMETER statement");
*************** do_parm (void)
*** 9642,9648 ****
        goto cleanup;
      }
  
!   t = add_init_expr_to_sym (sym->name, &init, &gfc_current_locus);
    return (t) ? MATCH_YES : MATCH_ERROR;
  
  cleanup:
--- 9682,9689 ----
        goto cleanup;
      }
  
!   t = add_init_expr_to_sym (sym->name, &init, &gfc_current_locus,
! 			    saved_cl_list);
    return (t) ? MATCH_YES : MATCH_ERROR;
  
  cleanup:
*************** enumerator_decl (void)
*** 11053,11058 ****
--- 11094,11100 ----
    char name[GFC_MAX_SYMBOL_LEN + 1];
    gfc_expr *initializer;
    gfc_array_spec *as = NULL;
+   gfc_charlen *saved_cl_list;
    gfc_symbol *sym;
    locus var_locus;
    match m;
*************** enumerator_decl (void)
*** 11060,11065 ****
--- 11102,11108 ----
    locus old_locus;
  
    initializer = NULL;
+   saved_cl_list = gfc_current_ns->cl_list;
    old_locus = gfc_current_locus;
  
    /* When we get here, we've just matched a list of attributes and
*************** enumerator_decl (void)
*** 11116,11122 ****
       to be parsed.  add_init_expr_to_sym() zeros initializer, so we
       use last_initializer below.  */
    last_initializer = initializer;
!   t = add_init_expr_to_sym (name, &initializer, &var_locus);
  
    /* Maintain enumerator history.  */
    gfc_find_symbol (name, NULL, 0, &sym);
--- 11159,11166 ----
       to be parsed.  add_init_expr_to_sym() zeros initializer, so we
       use last_initializer below.  */
    last_initializer = initializer;
!   t = add_init_expr_to_sym (name, &initializer, &var_locus,
! 			    saved_cl_list);
  
    /* Maintain enumerator history.  */
    gfc_find_symbol (name, NULL, 0, &sym);
diff -Nrcpad gcc-14-20260507/gcc/fortran/frontend-passes.cc gcc-14-20260514/gcc/fortran/frontend-passes.cc
*** gcc-14-20260507/gcc/fortran/frontend-passes.cc	Thu May  7 22:32:06 2026
--- gcc-14-20260514/gcc/fortran/frontend-passes.cc	Thu May 14 22:32:06 2026
*************** insert_index (gfc_expr *e, gfc_symbol *s
*** 2784,2789 ****
--- 2784,2849 ----
  
  }
  
+ static bool
+ evaluate_loop_bound (gfc_expr *e, gfc_symbol *sym, mpz_t val, mpz_t ret)
+ {
+   if (e->expr_type == EXPR_CONSTANT)
+     {
+       mpz_init_set (ret, e->value.integer);
+       return true;
+     }
+ 
+   return insert_index (e, sym, val, ret);
+ }
+ 
+ /* Return true if any loop nested inside LOOP_INDEX is not provably entered
+    after substituting OUTER_VAL for OUTER_SYM.  In that case the guarded array
+    reference may never be evaluated, so do not warn from the outer loop alone.  */
+ 
+ static bool
+ inner_loop_may_be_skipped (int loop_index, gfc_symbol *outer_sym, mpz_t outer_val)
+ {
+   int k;
+   do_t *lp;
+ 
+   FOR_EACH_VEC_ELT_FROM (doloop_list, k, lp, loop_index + 1)
+     {
+       gfc_code *loop = lp->c;
+       int sgn, cmp;
+       mpz_t do_start, do_end, do_step;
+ 
+       if (loop == NULL || loop->ext.iterator == NULL || loop->ext.iterator->var == NULL)
+ 	return true;
+ 
+       if (!evaluate_loop_bound (loop->ext.iterator->step, outer_sym, outer_val, do_step))
+ 	return true;
+ 
+       sgn = mpz_cmp_ui (do_step, 0);
+       if (sgn == 0)
+ 	{
+ 	  mpz_clear (do_step);
+ 	  return true;
+ 	}
+ 
+       if (!evaluate_loop_bound (loop->ext.iterator->start, outer_sym, outer_val, do_start)
+ 	  || !evaluate_loop_bound (loop->ext.iterator->end, outer_sym, outer_val, do_end))
+ 	{
+ 	  mpz_clear (do_step);
+ 	  return true;
+ 	}
+ 
+       cmp = mpz_cmp (do_end, do_start);
+       mpz_clear (do_start);
+       mpz_clear (do_end);
+       mpz_clear (do_step);
+ 
+       if ((sgn > 0 && cmp < 0) || (sgn < 0 && cmp > 0))
+ 	return true;
+     }
+ 
+   return false;
+ }
+ 
  /* Check array subscripts for possible out-of-bounds accesses in DO
     loops with constant bounds.  */
  
*************** do_subscript (gfc_expr **e)
*** 2918,2927 ****
  		  mpz_clear (rem);
  		}
  
  	      for (i = 0; i< ar->dimen; i++)
  		{
  		  mpz_t val;
! 		  if (ar->dimen_type[i] == DIMEN_ELEMENT && have_do_start
  		      && insert_index (ar->start[i], do_sym, do_start, val))
  		    {
  		      if (ar->as->lower[i]
--- 2978,2992 ----
  		  mpz_clear (rem);
  		}
  
+ 	      bool skip_start = have_do_start
+ 				&& inner_loop_may_be_skipped (j, do_sym, do_start);
+ 	      bool skip_end = have_do_end
+ 			      && inner_loop_may_be_skipped (j, do_sym, do_end);
+ 
  	      for (i = 0; i< ar->dimen; i++)
  		{
  		  mpz_t val;
! 		  if (ar->dimen_type[i] == DIMEN_ELEMENT && have_do_start && !skip_start
  		      && insert_index (ar->start[i], do_sym, do_start, val))
  		    {
  		      if (ar->as->lower[i]
*************** do_subscript (gfc_expr **e)
*** 2947,2953 ****
  		      mpz_clear (val);
  		    }
  
! 		  if (ar->dimen_type[i] == DIMEN_ELEMENT && have_do_end
  		      && insert_index (ar->start[i], do_sym, do_end, val))
  		    {
  		      if (ar->as->lower[i]
--- 3012,3018 ----
  		      mpz_clear (val);
  		    }
  
! 		  if (ar->dimen_type[i] == DIMEN_ELEMENT && have_do_end && !skip_end
  		      && insert_index (ar->start[i], do_sym, do_end, val))
  		    {
  		      if (ar->as->lower[i]
diff -Nrcpad gcc-14-20260507/gcc/fortran/primary.cc gcc-14-20260514/gcc/fortran/primary.cc
*** gcc-14-20260507/gcc/fortran/primary.cc	Thu May  7 22:32:06 2026
--- gcc-14-20260514/gcc/fortran/primary.cc	Thu May 14 22:32:06 2026
*************** gfc_convert_to_structure_constructor (gf
*** 3369,3374 ****
--- 3369,3375 ----
  	  && this_comp->ts.u.cl && this_comp->ts.u.cl->length
  	  && this_comp->ts.u.cl->length->expr_type == EXPR_CONSTANT
  	  && this_comp->ts.u.cl->length->ts.type == BT_INTEGER
+ 	  && actual->expr
  	  && actual->expr->ts.type == BT_CHARACTER
  	  && actual->expr->expr_type == EXPR_CONSTANT)
  	{
*************** gfc_convert_to_structure_constructor (gf
*** 3433,3459 ****
  	  goto cleanup;
  	}
  
!           /* If not explicitly a parent constructor, gather up the components
!              and build one.  */
!           if (comp && comp == sym->components
!                 && sym->attr.extension
! 		&& comp_tail->val
!                 && (!gfc_bt_struct (comp_tail->val->ts.type)
!                       ||
!                     comp_tail->val->ts.u.derived != this_comp->ts.u.derived))
!             {
!               bool m;
  	      gfc_actual_arglist *arg_null = NULL;
  
  	      actual->expr = comp_tail->val;
  	      comp_tail->val = NULL;
  
!               m = gfc_convert_to_structure_constructor (NULL,
! 					comp->ts.u.derived, &comp_tail->val,
! 					comp->ts.u.derived->attr.zero_comp
! 					  ? &arg_null : &actual, true);
!               if (!m)
!                 goto cleanup;
  
  	      if (comp->ts.u.derived->attr.zero_comp)
  		{
--- 3434,3460 ----
  	  goto cleanup;
  	}
  
! 	  /* If not explicitly a parent constructor, gather up the components
! 	     and build one.  */
! 	  if (comp && comp == sym->components
! 	      && sym->attr.extension
! 	      && comp_tail->val
! 	      && (!gfc_bt_struct (comp_tail->val->ts.type)
! 		  || comp_tail->val->ts.u.derived != this_comp->ts.u.derived))
! 	    {
! 	      bool m;
  	      gfc_actual_arglist *arg_null = NULL;
  
  	      actual->expr = comp_tail->val;
  	      comp_tail->val = NULL;
+ #define shorter gfc_convert_to_structure_constructor
+ 	      m = shorter (NULL, comp->ts.u.derived, &comp_tail->val,
+ 			   comp->ts.u.derived->attr.zero_comp ? &arg_null :
+ 								&actual, true);
+ #undef shorter
  
! 	      if (!m)
! 		goto cleanup;
  
  	      if (comp->ts.u.derived->attr.zero_comp)
  		{
diff -Nrcpad gcc-14-20260507/gcc/fortran/resolve.cc gcc-14-20260514/gcc/fortran/resolve.cc
*** gcc-14-20260507/gcc/fortran/resolve.cc	Thu May  7 22:32:06 2026
--- gcc-14-20260514/gcc/fortran/resolve.cc	Thu May 14 22:32:06 2026
*************** static int omp_workshare_flag;
*** 75,80 ****
--- 75,83 ----
  
  /* True if we are resolving a specification expression.  */
  static bool specification_expr = false;
+ /* The dummy whose character length or array bounds are currently being
+    resolved as a specification expression.  */
+ static gfc_symbol *specification_expr_symbol = NULL;
  
  /* The id of the last entry seen.  */
  static int current_entry_id;
*************** static bitmap_obstack labels_obstack;
*** 85,90 ****
--- 88,111 ----
  /* True when simplifying a EXPR_VARIABLE argument to an inquiry function.  */
  static bool inquiry_argument = false;
  
+ static bool
+ entry_dummy_seen_p (gfc_symbol *sym)
+ {
+   gfc_entry_list *entry;
+   gfc_formal_arglist *formal;
+ 
+   gcc_checking_assert (sym->attr.dummy && sym->ns == gfc_current_ns);
+ 
+   for (entry = gfc_current_ns->entries;
+        entry && entry->id <= current_entry_id;
+        entry = entry->next)
+     for (formal = entry->sym->formal; formal; formal = formal->next)
+       if (formal->sym && sym->name == formal->sym->name)
+ 	return true;
+ 
+   return false;
+ }
+ 
  
  /* Is the symbol host associated?  */
  static bool
*************** gfc_resolve_formal_arglist (gfc_symbol *
*** 282,287 ****
--- 303,309 ----
    for (f = proc->formal; f; f = f->next)
      {
        gfc_array_spec *as;
+       gfc_symbol *saved_specification_expr_symbol;
  
        sym = f->sym;
  
*************** gfc_resolve_formal_arglist (gfc_symbol *
*** 330,338 ****
--- 352,363 ----
  	   ? CLASS_DATA (sym)->as : sym->as;
  
        saved_specification_expr = specification_expr;
+       saved_specification_expr_symbol = specification_expr_symbol;
        specification_expr = true;
+       specification_expr_symbol = sym;
        gfc_resolve_array_spec (as, 0);
        specification_expr = saved_specification_expr;
+       specification_expr_symbol = saved_specification_expr_symbol;
  
        /* We can't tell if an array with dimension (:) is assumed or deferred
  	 shape until we know if it has the pointer or allocatable attributes.
*************** resolve_global_procedure (gfc_symbol *sy
*** 2717,2733 ****
  	  /* This can happen if a binding name has been specified.  */
  	  if (gsym->binding_label && gsym->sym_name != def_sym->name)
  	    gfc_find_symbol (gsym->sym_name, gsym->ns, 0, &def_sym);
  
! 	  if (def_sym->attr.entry_master || def_sym->attr.entry)
! 	    {
! 	      gfc_entry_list *entry;
! 	      for (entry = gsym->ns->entries; entry; entry = entry->next)
! 		if (strcmp (entry->sym->name, sym->name) == 0)
! 		  {
! 		    def_sym = entry->sym;
! 		    break;
! 		  }
! 	    }
  	}
  
        if (sym->attr.function && !gfc_compare_types (&sym->ts, &def_sym->ts))
--- 2742,2763 ----
  	  /* This can happen if a binding name has been specified.  */
  	  if (gsym->binding_label && gsym->sym_name != def_sym->name)
  	    gfc_find_symbol (gsym->sym_name, gsym->ns, 0, &def_sym);
+ 	}
  
!       /* Look up the specific entry symbol so that interface checks use
! 	 the entry's own formal argument list, not the entry master's.
! 	 This must run even when resolved == -1 (recursive resolution in
! 	 progress), because def_sym starts as the namespace proc_name
! 	 which is the entry master with the combined formals.  */
!       if (def_sym->attr.entry_master || def_sym->attr.entry)
! 	{
! 	  gfc_entry_list *entry;
! 	  for (entry = gsym->ns->entries; entry; entry = entry->next)
! 	    if (strcmp (entry->sym->name, sym->name) == 0)
! 	      {
! 		def_sym = entry->sym;
! 		break;
! 	      }
  	}
  
        if (sym->attr.function && !gfc_compare_types (&sym->ts, &def_sym->ts))
*************** resolve_variable (gfc_expr *e)
*** 6069,6100 ****
        && cs_base->current
        && cs_base->current->op != EXEC_ENTRY)
      {
-       gfc_entry_list *entry;
-       gfc_formal_arglist *formal;
        int n;
!       bool seen, saved_specification_expr;
  
        /* If the symbol is a dummy...  */
        if (sym->attr.dummy && sym->ns == gfc_current_ns)
  	{
- 	  entry = gfc_current_ns->entries;
- 	  seen = false;
- 
- 	  /* ...test if the symbol is a parameter of previous entries.  */
- 	  for (; entry && entry->id <= current_entry_id; entry = entry->next)
- 	    for (formal = entry->sym->formal; formal; formal = formal->next)
- 	      {
- 		if (formal->sym && sym->name == formal->sym->name)
- 		  {
- 		    seen = true;
- 		    break;
- 		  }
- 	      }
- 
  	  /*  If it has not been seen as a dummy, this is an error.  */
! 	  if (!seen)
  	    {
! 	      if (specification_expr)
  		gfc_error ("Variable %qs, used in a specification expression"
  			   ", is referenced at %L before the ENTRY statement "
  			   "in which it is a parameter",
--- 6099,6121 ----
        && cs_base->current
        && cs_base->current->op != EXEC_ENTRY)
      {
        int n;
!       bool saved_specification_expr;
!       gfc_symbol *saved_specification_expr_symbol;
  
        /* If the symbol is a dummy...  */
        if (sym->attr.dummy && sym->ns == gfc_current_ns)
  	{
  	  /*  If it has not been seen as a dummy, this is an error.  */
! 	  if (!entry_dummy_seen_p (sym))
  	    {
! 	      if (specification_expr
! 		  && specification_expr_symbol
! 		  && specification_expr_symbol->attr.dummy
! 		  && specification_expr_symbol->ns == gfc_current_ns
! 		  && !entry_dummy_seen_p (specification_expr_symbol))
! 		;
! 	      else if (specification_expr)
  		gfc_error ("Variable %qs, used in a specification expression"
  			   ", is referenced at %L before the ENTRY statement "
  			   "in which it is a parameter",
*************** resolve_variable (gfc_expr *e)
*** 6109,6115 ****
--- 6130,6138 ----
  
        /* Now do the same check on the specification expressions.  */
        saved_specification_expr = specification_expr;
+       saved_specification_expr_symbol = specification_expr_symbol;
        specification_expr = true;
+       specification_expr_symbol = sym;
        if (sym->ts.type == BT_CHARACTER
  	  && !gfc_resolve_expr (sym->ts.u.cl->length))
  	t = false;
*************** resolve_variable (gfc_expr *e)
*** 6123,6128 ****
--- 6146,6152 ----
  	       t = false;
  	  }
        specification_expr = saved_specification_expr;
+       specification_expr_symbol = saved_specification_expr_symbol;
  
        if (t)
  	/* Update the symbol's entry level.  */
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 13815,13821 ****
--- 13839,13847 ----
       This check is effected by the call to gfc_resolve_expr through
       is_non_constant_shape_array.  */
    bool saved_specification_expr = specification_expr;
+   gfc_symbol *saved_specification_expr_symbol = specification_expr_symbol;
    specification_expr = true;
+   specification_expr_symbol = sym;
  
    if (sym->ns->proc_name
        && (sym->ns->proc_name->attr.flavor == FL_MODULE
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 13830,13835 ****
--- 13856,13862 ----
        gfc_error ("The module or main program array %qs at %L must "
  		 "have constant shape", sym->name, &sym->declared_at);
        specification_expr = saved_specification_expr;
+       specification_expr_symbol = saved_specification_expr_symbol;
        return false;
      }
  
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 13855,13860 ****
--- 13882,13888 ----
  	  gfc_error ("Entity with assumed character length at %L must be a "
  		     "dummy argument or a PARAMETER", &sym->declared_at);
  	  specification_expr = saved_specification_expr;
+ 	  specification_expr_symbol = saved_specification_expr_symbol;
  	  return false;
  	}
  
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 13862,13867 ****
--- 13890,13896 ----
  	{
  	  gfc_error (auto_save_msg, sym->name, &sym->declared_at);
  	  specification_expr = saved_specification_expr;
+ 	  specification_expr_symbol = saved_specification_expr_symbol;
  	  return false;
  	}
  
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 13876,13881 ****
--- 13905,13911 ----
  	      gfc_error ("%qs at %L must have constant character length "
  			"in this context", sym->name, &sym->declared_at);
  	      specification_expr = saved_specification_expr;
+ 	      specification_expr_symbol = saved_specification_expr_symbol;
  	      return false;
  	    }
  	  if (sym->attr.in_common)
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 13883,13888 ****
--- 13913,13919 ----
  	      gfc_error ("COMMON variable %qs at %L must have constant "
  			 "character length", sym->name, &sym->declared_at);
  	      specification_expr = saved_specification_expr;
+ 	      specification_expr_symbol = saved_specification_expr_symbol;
  	      return false;
  	    }
  	}
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 13915,13920 ****
--- 13946,13952 ----
  	{
  	  gfc_error (auto_save_msg, sym->name, &sym->declared_at);
  	  specification_expr = saved_specification_expr;
+ 	  specification_expr_symbol = saved_specification_expr_symbol;
  	  return false;
  	}
      }
*************** resolve_fl_variable (gfc_symbol *sym, in
*** 13948,13953 ****
--- 13980,13986 ----
        else
  	goto no_init_error;
        specification_expr = saved_specification_expr;
+       specification_expr_symbol = saved_specification_expr_symbol;
        return false;
      }
  
*************** no_init_error:
*** 13956,13965 ****
--- 13989,14000 ----
      {
        bool res = resolve_fl_variable_derived (sym, no_init_flag);
        specification_expr = saved_specification_expr;
+       specification_expr_symbol = saved_specification_expr_symbol;
        return res;
      }
  
    specification_expr = saved_specification_expr;
+   specification_expr_symbol = saved_specification_expr_symbol;
    return true;
  }
  
*************** resolve_symbol_array_spec (gfc_symbol *s
*** 16305,16315 ****
--- 16340,16353 ----
    gfc_current_ns = gfc_get_spec_ns (sym);
  
    bool saved_specification_expr = specification_expr;
+   gfc_symbol *saved_specification_expr_symbol = specification_expr_symbol;
    specification_expr = true;
+   specification_expr_symbol = sym;
  
    bool result = gfc_resolve_array_spec (sym->as, check_constant);
  
    specification_expr = saved_specification_expr;
+   specification_expr_symbol = saved_specification_expr_symbol;
    gfc_current_ns = orig_current_ns;
  
    return result;
diff -Nrcpad gcc-14-20260507/gcc/fortran/trans-decl.cc gcc-14-20260514/gcc/fortran/trans-decl.cc
*** gcc-14-20260507/gcc/fortran/trans-decl.cc	Thu May  7 22:32:06 2026
--- gcc-14-20260514/gcc/fortran/trans-decl.cc	Thu May 14 22:32:06 2026
*************** gfc_finish_var_decl (tree decl, gfc_symb
*** 645,657 ****
  	  && (sym->ns->proc_name->backend_decl == current_function_decl
  	      || sym->result == sym))
  	gfc_add_decl_to_function (decl);
        else if (sym->ns->proc_name
  	       && sym->ns->proc_name->attr.flavor == FL_LABEL)
  	/* This is a BLOCK construct.  */
  	add_decl_as_local (decl);
-       else if (sym->ns->omp_affinity_iterators)
- 	/* This is a block-local iterator.  */
- 	add_decl_as_local (decl);
        else
  	gfc_add_decl_to_parent_function (decl);
      }
--- 645,670 ----
  	  && (sym->ns->proc_name->backend_decl == current_function_decl
  	      || sym->result == sym))
  	gfc_add_decl_to_function (decl);
+       else if (sym->ns->omp_affinity_iterators)
+ 	{
+ 	  /* Iterator variables are block-local; other variables in the
+ 	     iterator namespace (e.g. implicitly typed host-associated
+ 	     ones used in locator expressions) belong in the enclosing
+ 	     function.  */
+ 	  gfc_symbol *iter;
+ 	  for (iter = sym->ns->omp_affinity_iterators; iter;
+ 	       iter = iter->tlink)
+ 	    if (iter == sym)
+ 	      break;
+ 	  if (iter)
+ 	    add_decl_as_local (decl);
+ 	  else
+ 	    gfc_add_decl_to_function (decl);
+ 	}
        else if (sym->ns->proc_name
  	       && sym->ns->proc_name->attr.flavor == FL_LABEL)
  	/* This is a BLOCK construct.  */
  	add_decl_as_local (decl);
        else
  	gfc_add_decl_to_parent_function (decl);
      }
*************** build_entry_thunks (gfc_namespace * ns,
*** 3035,3049 ****
        tmp = build_int_cst (gfc_array_index_type, el->id);
        vec_safe_push (args, tmp);
  
!       if (thunk_sym->attr.function)
  	{
! 	  if (gfc_return_by_reference (ns->proc_name))
  	    {
  	      tree ref = DECL_ARGUMENTS (current_function_decl);
  	      vec_safe_push (args, ref);
  	      if (ns->proc_name->ts.type == BT_CHARACTER)
  		vec_safe_push (args, DECL_CHAIN (ref));
  	    }
  	}
  
        for (formal = gfc_sym_get_dummy_args (ns->proc_name); formal;
--- 3048,3107 ----
        tmp = build_int_cst (gfc_array_index_type, el->id);
        vec_safe_push (args, tmp);
  
!       /* When the master returns by reference, pass the result reference
! 	 and (for CHARACTER) the string length to the master call.  If the
! 	 thunk itself also returns by reference these are forwarded from
! 	 its own argument list; otherwise (bind(c) CHARACTER entry) we
! 	 create local temporaries and load the value after the call.  */
!       tree result_ref = NULL_TREE;
!       if (thunk_sym->attr.function
! 	  && gfc_return_by_reference (ns->proc_name))
  	{
! 	  if (gfc_return_by_reference (thunk_sym))
  	    {
  	      tree ref = DECL_ARGUMENTS (current_function_decl);
  	      vec_safe_push (args, ref);
  	      if (ns->proc_name->ts.type == BT_CHARACTER)
  		vec_safe_push (args, DECL_CHAIN (ref));
  	    }
+ 	  else
+ 	    {
+ 	      /* The thunk is bind(c) and returns CHARACTER by value, but
+ 		 the master returns by reference.  Create a local buffer
+ 		 and length to pass to the master call.  */
+ 	      tree chartype = gfc_get_char_type (thunk_sym->ts.kind);
+ 	      tree len;
+ 
+ 	      if (thunk_sym->ts.u.cl && thunk_sym->ts.u.cl->length)
+ 		{
+ 		  gfc_se se;
+ 		  gfc_init_se (&se, NULL);
+ 		  gfc_conv_expr (&se, thunk_sym->ts.u.cl->length);
+ 		  gfc_add_block_to_block (&body, &se.pre);
+ 		  len = se.expr;
+ 		  gfc_add_block_to_block (&body, &se.post);
+ 		}
+ 	      else
+ 		len = build_int_cst (gfc_charlen_type_node, 1);
+ 
+ 	      result_ref = build_decl (input_location, VAR_DECL,
+ 				       get_identifier ("__entry_result"),
+ 				       build_array_type (chartype,
+ 					 build_range_type (gfc_array_index_type,
+ 					   gfc_index_one_node,
+ 					   fold_convert (gfc_array_index_type,
+ 							 len))));
+ 	      DECL_ARTIFICIAL (result_ref) = 1;
+ 	      TREE_USED (result_ref) = 1;
+ 	      DECL_CONTEXT (result_ref) = current_function_decl;
+ 	      layout_decl (result_ref, 0);
+ 	      pushdecl (result_ref);
+ 
+ 	      vec_safe_push (args,
+ 			     build_fold_addr_expr_loc (input_location,
+ 						       result_ref));
+ 	      vec_safe_push (args, len);
+ 	    }
  	}
  
        for (formal = gfc_sym_get_dummy_args (ns->proc_name); formal;
*************** build_entry_thunks (gfc_namespace * ns,
*** 3090,3096 ****
        vec_safe_splice (args, string_args);
        tmp = ns->proc_name->backend_decl;
        tmp = build_call_expr_loc_vec (input_location, tmp, args);
!       if (ns->proc_name->attr.mixed_entry_master)
  	{
  	  tree union_decl, field;
  	  tree master_type = TREE_TYPE (ns->proc_name->backend_decl);
--- 3148,3171 ----
        vec_safe_splice (args, string_args);
        tmp = ns->proc_name->backend_decl;
        tmp = build_call_expr_loc_vec (input_location, tmp, args);
!       if (result_ref != NULL_TREE)
! 	{
! 	  /* The master returns by reference (void) but the bind(c) thunk
! 	     returns CHARACTER by value.  Execute the master call, then
! 	     load the first character from the local buffer.  */
! 	  gfc_add_expr_to_block (&body, tmp);
! 	  tmp = build4_loc (input_location, ARRAY_REF,
! 			    TREE_TYPE (TREE_TYPE (result_ref)),
! 			    result_ref, gfc_index_one_node,
! 			    NULL_TREE, NULL_TREE);
! 	  tmp = fold_convert (TREE_TYPE (DECL_RESULT (current_function_decl)),
! 			      tmp);
! 	  tmp = fold_build2_loc (input_location, MODIFY_EXPR,
! 			     TREE_TYPE (DECL_RESULT (current_function_decl)),
! 			     DECL_RESULT (current_function_decl), tmp);
! 	  tmp = build1_v (RETURN_EXPR, tmp);
! 	}
!       else if (ns->proc_name->attr.mixed_entry_master)
  	{
  	  tree union_decl, field;
  	  tree master_type = TREE_TYPE (ns->proc_name->backend_decl);
*************** gfc_trans_deferred_vars (gfc_symbol * pr
*** 4922,4927 ****
--- 4997,5007 ----
  					NULL_TREE);
  		  continue;
  		}
+ 	      else if (sym->attr.codimension && !sym->attr.dimension)
+ 		{
+ 		  /* Scalar coarrays do not need array allocation.  */
+ 		  continue;
+ 		}
  	      else
  		{
  		  gfc_save_backend_locus (&loc);
diff -Nrcpad gcc-14-20260507/gcc/fortran/trans-openmp.cc gcc-14-20260514/gcc/fortran/trans-openmp.cc
*** gcc-14-20260507/gcc/fortran/trans-openmp.cc	Thu May  7 22:32:06 2026
--- gcc-14-20260514/gcc/fortran/trans-openmp.cc	Thu May 14 22:32:06 2026
*************** gfc_omp_finish_clause (tree c, gimple_se
*** 1763,1771 ****
      }
    tree last = c;
    if (OMP_CLAUSE_SIZE (c) == NULL_TREE)
!     OMP_CLAUSE_SIZE (c)
!       = DECL_P (decl) ? DECL_SIZE_UNIT (decl)
! 		      : TYPE_SIZE_UNIT (TREE_TYPE (decl));
    if (gimplify_expr (&OMP_CLAUSE_SIZE (c), pre_p,
  		     NULL, is_gimple_val, fb_rvalue) == GS_ERROR)
      OMP_CLAUSE_SIZE (c) = size_int (0);
--- 1763,1801 ----
      }
    tree last = c;
    if (OMP_CLAUSE_SIZE (c) == NULL_TREE)
!     {
!       if (DECL_P (decl))
! 	 OMP_CLAUSE_SIZE (c) = DECL_SIZE_UNIT (decl);
!       else
! 	{
! 	  tree type = TREE_TYPE (decl);
! 	  tree size = TYPE_SIZE_UNIT (type);
! 	  /* For variable-length character types, TYPE_SIZE_UNIT is a
! 	     SAVE_EXPR.  Gimplifying the SAVE_EXPR (here or elsewhere)
! 	     resolves it in place, embedding a gimple temporary that
! 	     later causes an ICE in remap_type during inlining because
! 	     the temporary is not in scope (PR101760, PR102314).
! 	     Compute the size from the array domain and element size
! 	     to decouple completely from the type's SAVE_EXPRs.  */
! 	  if (size
! 	      && TREE_CODE (type) == ARRAY_TYPE
! 	      && TYPE_DOMAIN (type)
! 	      && TYPE_MAX_VALUE (TYPE_DOMAIN (type))
! 	      && !TREE_CONSTANT (TYPE_MAX_VALUE (TYPE_DOMAIN (type))))
! 	    {
! 	      tree len = TYPE_MAX_VALUE (TYPE_DOMAIN (type));
! 	      tree lb = TYPE_MIN_VALUE (TYPE_DOMAIN (type));
! 	      tree eltsz = TYPE_SIZE_UNIT (TREE_TYPE (type));
! 	      len = fold_build2 (MINUS_EXPR, TREE_TYPE (len), len, lb);
! 	      len = fold_build2 (PLUS_EXPR, TREE_TYPE (len), len,
! 				 build_one_cst (TREE_TYPE (len)));
! 	      size = fold_build2 (MULT_EXPR, sizetype,
! 				  fold_convert (sizetype, len),
! 				  fold_convert (sizetype, eltsz));
! 	    }
! 	  OMP_CLAUSE_SIZE (c) = size;
! 	}
!    }
    if (gimplify_expr (&OMP_CLAUSE_SIZE (c), pre_p,
  		     NULL, is_gimple_val, fb_rvalue) == GS_ERROR)
      OMP_CLAUSE_SIZE (c) = size_int (0);
diff -Nrcpad gcc-14-20260507/gcc/testsuite/ChangeLog gcc-14-20260514/gcc/testsuite/ChangeLog
*** gcc-14-20260507/gcc/testsuite/ChangeLog	Thu May  7 22:32:07 2026
--- gcc-14-20260514/gcc/testsuite/ChangeLog	Thu May 14 22:32:07 2026
***************
*** 1,3 ****
--- 1,74 ----
+ 2026-05-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-10  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/94978
+ 	* gfortran.dg/pr94978.f90: New test.
+ 
+ 2026-05-13  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-03-16  Paul Thomas  <pault@gcc.gnu.org>
+ 		    Steve Kargl  <kargls@comcast.net>
+ 
+ 	PR fortran/93832
+ 	* gfortran.dg/pr93832.f90: New test.
+ 
+ 2026-05-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-11  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/93814
+ 	* gfortran.dg/pr93814.f90: New test.
+ 
+ 2026-05-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-08  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/93715
+ 	* gfortran.dg/pr93715.f90: New test.
+ 
+ 2026-05-12  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-04-15  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/122976
+ 	* gcc.dg/tree-ssa/pr122976.c: New test.
+ 
+ 2026-05-12  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	* gfortran.dg/gomp/pr101760.f90: New test.
+ 	* gfortran.dg/gomp/pr102314.f90: New test.
+ 
+ 2026-05-12  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/85352
+ 	* gfortran.dg/pr85352.f90: New test.
+ 
+ 2026-05-09  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-07  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/107425
+ 	* gfortran.dg/gomp/pr107425.f90: New test.
+ 
+ 2026-05-09  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-06  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/79524
+ 	PR fortran/79524
+ 	* gfortran.dg/pr79524.f90: New test.
+ 
  2026-05-06  Christopher Albert  <albert@tugraz.at>
  
  	Backported from master:
diff -Nrcpad gcc-14-20260507/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C gcc-14-20260514/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C
*** gcc-14-20260507/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C	Thu May  7 22:32:07 2026
--- gcc-14-20260514/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C	Thu May 14 22:32:07 2026
***************
*** 1,6 ****
--- 1,9 ----
  // P0847R7
  // { dg-do run { target c++23 } }
  
+ // PR c++/124632
+ // { dg-additional-options "-Wall --param ggc-min-expand=0 --param ggc-min-heapsize=0" }
+ 
  // recursive lambdas
  
  inline constexpr int correct_result = 5 + 4 + 3 + 2 + 1; 
diff -Nrcpad gcc-14-20260507/gcc/testsuite/g++.dg/cpp2a/constexpr-union10.C gcc-14-20260514/gcc/testsuite/g++.dg/cpp2a/constexpr-union10.C
*** gcc-14-20260507/gcc/testsuite/g++.dg/cpp2a/constexpr-union10.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/gcc/testsuite/g++.dg/cpp2a/constexpr-union10.C	Thu May 14 22:32:07 2026
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/123346
+ // { dg-do compile { target c++20 } }
+ struct Unit {};
+ union Union { Unit unit; };
+ constexpr Union make(Union&& other) {
+     return Union {.unit = other.unit };
+ }
+ constexpr Union u = make(Union { .unit = Unit{} });
diff -Nrcpad gcc-14-20260507/gcc/testsuite/gcc.dg/tree-ssa/pr122976.c gcc-14-20260514/gcc/testsuite/gcc.dg/tree-ssa/pr122976.c
*** gcc-14-20260507/gcc/testsuite/gcc.dg/tree-ssa/pr122976.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/gcc/testsuite/gcc.dg/tree-ssa/pr122976.c	Thu May 14 22:32:09 2026
***************
*** 0 ****
--- 1,105 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+ 
+ typedef unsigned long NI;
+ 
+ struct inner_t_Content
+ {
+   int x[8], y[16];
+   char a[10], b[20], c[30];
+ };
+ 
+ struct inner_t {
+   NI len;
+   struct inner_t_Content* p;
+ };
+ 
+ struct outer_t {
+   struct inner_t bytes;
+   NI position;
+ };
+ 
+ struct localo_t {
+   struct outer_t fo;
+   char stuff[222];
+ };
+ 
+ struct alien_t {
+   NI Field0;
+   struct inner_t Field1;
+ };
+ 
+ static struct inner_t_Content gic;
+ struct inner_t gis;
+ struct outer_t gos;
+ volatile int vgi;
+ 
+ int __attribute__((noipa))
+ get_int (void)
+ {
+   return 0;
+ }
+ 
+ struct inner_t __attribute__((noipa))
+ get_inner_t ()
+ {
+   struct inner_t v = {0, (void *)0};
+   return v;
+ }
+ 
+ void __attribute__((noipa))
+ use_inner_t (struct inner_t v)
+ {
+   gis = v;
+ }
+ 
+ void __attribute__((noipa))
+ init (void)
+ {
+   gos.bytes.len = 15;
+   gos.bytes.p = &gic;
+ }
+ 
+ void __attribute__((noipa))
+ check (void)
+ {
+   if (gis.p != &gic)
+     __builtin_abort ();
+ }
+ 
+ static void foo (int m, struct outer_t *a)
+ {
+   struct inner_t lis;
+ 
+   if (m == 20)
+       ((struct alien_t *) a)->Field1.len = 0;
+   if (m == 21)
+     lis = get_inner_t ();
+   else
+     lis = a->bytes;
+ 
+   vgi = get_int ();
+   if (m < 1)
+     use_inner_t (lis);
+   if (get_int ())
+     vgi = ((struct alien_t *) a)->Field1.len;
+ 
+ }
+ 
+ void bar (struct outer_t pos)
+ {
+   struct localo_t los;
+   los.fo = pos;
+   los.fo.bytes.len = get_int ();
+   foo (get_int (), &los.fo);
+   gos = los.fo;
+ }
+ 
+ int main (int argc, char **argv)
+ {
+   init ();
+   for (int i = 0; i <= get_int (); i++)
+     bar (gos);
+   check ();
+   return 0;
+ }
diff -Nrcpad gcc-14-20260507/gcc/testsuite/gcc.target/i386/pr124316.c gcc-14-20260514/gcc/testsuite/gcc.target/i386/pr124316.c
*** gcc-14-20260507/gcc/testsuite/gcc.target/i386/pr124316.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/gcc/testsuite/gcc.target/i386/pr124316.c	Thu May 14 22:32:10 2026
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mptwrite" } */
+ #include <x86gprintrin.h>
+ 
+ unsigned long long ull;
+ unsigned u;
+ void foo()
+ {
+     _ptwrite64(ull);
+     _ptwrite32(u);
+ }
+ 
+ /* { dg-final { scan-assembler-times "ptwritel" 1 } } */
+ /* { dg-final { scan-assembler-times "ptwriteq" 1 } } */
diff -Nrcpad gcc-14-20260507/gcc/testsuite/gfortran.dg/gomp/pr101760.f90 gcc-14-20260514/gcc/testsuite/gfortran.dg/gomp/pr101760.f90
*** gcc-14-20260507/gcc/testsuite/gfortran.dg/gomp/pr101760.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/gcc/testsuite/gfortran.dg/gomp/pr101760.f90	Thu May 14 22:32:11 2026
***************
*** 0 ****
--- 1,14 ----
+ ! PR fortran/101760
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp -O1" }
+ 
+ ! Verify that deferred-length character variables with the TARGET attribute
+ ! in OpenMP target regions do not ICE during inlining.
+ 
+ program p
+    character(:), allocatable, target :: x
+    logical :: l
+    !$omp target map(from: l)
+    l = allocated (x)
+    !$omp end target
+ end
diff -Nrcpad gcc-14-20260507/gcc/testsuite/gfortran.dg/gomp/pr102314.f90 gcc-14-20260514/gcc/testsuite/gfortran.dg/gomp/pr102314.f90
*** gcc-14-20260507/gcc/testsuite/gfortran.dg/gomp/pr102314.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/gcc/testsuite/gfortran.dg/gomp/pr102314.f90	Thu May 14 22:32:11 2026
***************
*** 0 ****
--- 1,19 ----
+ ! PR fortran/102314
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp -O2" }
+ 
+ ! Verify that deferred-length character allocatables used inside
+ ! OpenMP target regions do not ICE during SSA verification or inlining.
+ 
+ program p
+    character(:), allocatable :: y
+    call s(y)
+    !$omp target
+    y = 'abc'
+    !$omp end target
+ contains
+    subroutine s(x)
+       character(:), allocatable :: x
+       x = '123'
+    end
+ end
diff -Nrcpad gcc-14-20260507/gcc/testsuite/gfortran.dg/gomp/pr107425.f90 gcc-14-20260514/gcc/testsuite/gfortran.dg/gomp/pr107425.f90
*** gcc-14-20260507/gcc/testsuite/gfortran.dg/gomp/pr107425.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/gcc/testsuite/gfortran.dg/gomp/pr107425.f90	Thu May 14 22:32:11 2026
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp" }
+ !
+ ! PR fortran/107425
+ ! ICE in gimplify_var_or_parm_decl when an implicitly typed variable
+ ! is used as a subscript in an iterator depend clause.
+ 
+ program p
+    integer :: x(8)
+    !$omp taskwait depend(iterator(i=1:8), in:x(j))
+ end
diff -Nrcpad gcc-14-20260507/gcc/testsuite/gfortran.dg/pr79524.f90 gcc-14-20260514/gcc/testsuite/gfortran.dg/pr79524.f90
*** gcc-14-20260507/gcc/testsuite/gfortran.dg/pr79524.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/gcc/testsuite/gfortran.dg/pr79524.f90	Thu May 14 22:32:11 2026
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! { dg-set-target-env-var MALLOC_PERTURB_ "165" }
+ ! PR fortran/79524
+ ! Reject parameter arrays with variable-length CHARACTER elements without
+ ! leaving the temporary charlen from the failed declaration on cl_list.
+ program p
+   character(*), parameter :: z(2) = [character(n) :: 'x', 'y'] ! { dg-error "Cannot initialize parameter array" }
+   character(*), parameter :: w(2) = [character(n+1) :: 'a', 'b'] ! { dg-error "Cannot initialize parameter array" }
+ end
diff -Nrcpad gcc-14-20260507/gcc/testsuite/gfortran.dg/pr85352.f90 gcc-14-20260514/gcc/testsuite/gfortran.dg/pr85352.f90
*** gcc-14-20260507/gcc/testsuite/gfortran.dg/pr85352.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/gcc/testsuite/gfortran.dg/pr85352.f90	Thu May 14 22:32:11 2026
***************
*** 0 ****
--- 1,44 ----
+ ! { dg-do compile }
+ 
+ subroutine expa (ip, iq, sabb)
+   implicit none
+   integer, intent(in) :: ip, iq
+   real :: sabb(25, 8), arg(25), argj, dist
+   integer :: i, j
+   integer :: nuca, nucb, nucab, nuco
+ 
+   arg = [(i * 7.5, i = 1, 25)]
+   nuca = nuco (ip)
+   nucb = nuco (iq)
+   nucab = nuca * nucb
+   dist = 0.7854
+   do j = 1, nucab
+     argj = min (arg(j) * dist, 80.0)
+     sabb(j, 1) = exp (-argj)
+   end do
+   call acomp (sabb, nuca)
+   return
+ entry rfinit
+   stop 1
+ end subroutine expa
+ 
+ subroutine acomp (saab, nuca)
+   implicit none
+   real :: aaint, saab
+   integer :: i, ip, iq, j, nuc1, nuca
+   dimension saab(nuca, nuca), aaint(nuc1, nuc1)
+ 
+   do i = 2, nuca
+     do j = 1, i - 1
+       saab(j, i) = saab(j, i) * 2.0d0
+       saab(i, j) = 0.0d0
+     end do
+   end do
+   return
+ entry aaexp (aaint, nuc1)
+   do ip = 2, nuc1
+     do iq = 1, ip - 1
+       aaint(iq, ip) = 0.5d0 * (aaint(iq, ip) + aaint(ip, iq))
+     end do
+   end do
+ end subroutine acomp
diff -Nrcpad gcc-14-20260507/gcc/testsuite/gfortran.dg/pr93715.f90 gcc-14-20260514/gcc/testsuite/gfortran.dg/pr93715.f90
*** gcc-14-20260507/gcc/testsuite/gfortran.dg/pr93715.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/gcc/testsuite/gfortran.dg/pr93715.f90	Thu May 14 22:32:11 2026
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! { dg-options "-fcoarray=single" }
+ !
+ ! PR fortran/93715
+ ! A scalar coarray used in asynchronous I/O caused an ICE in
+ ! gfc_trans_auto_array_allocation.
+ 
+ program p
+    integer :: a, b[*]
+    read (1, *, asynchronous='yes') a, b
+ end
diff -Nrcpad gcc-14-20260507/gcc/testsuite/gfortran.dg/pr93814.f90 gcc-14-20260514/gcc/testsuite/gfortran.dg/pr93814.f90
*** gcc-14-20260507/gcc/testsuite/gfortran.dg/pr93814.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/gcc/testsuite/gfortran.dg/pr93814.f90	Thu May 14 22:32:11 2026
***************
*** 0 ****
--- 1,99 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/93814 - ICE in build_entry_thunks with CHARACTER ENTRY
+ ! and bind(c).
+ !
+ ! Verify that CHARACTER function results with ENTRY and bind(c) compile
+ ! and execute correctly, covering all combinations of bind(c) on the
+ ! function and its entries.
+ 
+ ! Both function and entry have bind(c).
+ function f1() bind(c)
+   character :: f1, g1
+   f1 = "a"
+   return
+   entry g1() bind(c)
+   g1 = "b"
+ end
+ 
+ ! Only function has bind(c), entry does not.
+ function f2() bind(c)
+   character(1) :: f2, g2
+   f2 = "c"
+   return
+   entry g2()
+   g2 = "d"
+ end function
+ 
+ ! Only entry has bind(c), function does not.
+ function f3()
+   character(1) :: f3, g3
+   f3 = "e"
+   return
+   entry g3() bind(c)
+   g3 = "f"
+ end function
+ 
+ ! Neither function nor entry have bind(c) (baseline).
+ function f4()
+   character :: f4, g4
+   f4 = "g"
+   return
+   entry g4()
+   g4 = "h"
+ end
+ 
+ ! Integer with bind(c) (should still work).
+ function f5() bind(c)
+   integer :: f5, g5
+   f5 = 42
+   return
+   entry g5() bind(c)
+   g5 = 84
+ end
+ 
+ program p
+   interface
+     function f1() bind(c)
+       character :: f1
+     end
+     function g1() bind(c)
+       character :: g1
+     end
+     function f2() bind(c)
+       character(1) :: f2
+     end
+     function g2()
+       character(1) :: g2
+     end
+     function f3()
+       character(1) :: f3
+     end
+     function g3() bind(c)
+       character(1) :: g3
+     end
+     function f4()
+       character :: f4
+     end
+     function g4()
+       character :: g4
+     end
+     function f5() bind(c)
+       integer :: f5
+     end
+     function g5() bind(c)
+       integer :: g5
+     end
+   end interface
+ 
+   if (f1() /= "a") stop 1
+   if (g1() /= "b") stop 2
+   if (f2() /= "c") stop 3
+   if (g2() /= "d") stop 4
+   if (f3() /= "e") stop 5
+   if (g3() /= "f") stop 6
+   if (f4() /= "g") stop 7
+   if (g4() /= "h") stop 8
+   if (f5() /= 42)  stop 9
+   if (g5() /= 84)  stop 10
+ end
diff -Nrcpad gcc-14-20260507/gcc/testsuite/gfortran.dg/pr93832.f90 gcc-14-20260514/gcc/testsuite/gfortran.dg/pr93832.f90
*** gcc-14-20260507/gcc/testsuite/gfortran.dg/pr93832.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/gcc/testsuite/gfortran.dg/pr93832.f90	Thu May 14 22:32:11 2026
***************
*** 0 ****
--- 1,37 ----
+ module m
+ contains
+    subroutine comment0
+       type t
+          character :: a
+          integer :: b
+          integer :: c(t(1))            ! { dg-error "No initializer for component .b." }
+       end type
+       type(t) :: z = t('a', 2, [3])    ! { dg-error "Bad array spec of component .c." }
+    end
+ 
+    subroutine comment3a
+       type t
+          character :: a
+          integer :: b
+          integer :: c(t(1, "rubbish")) ! { dg-error "No initializer for component .c." }
+       end type
+       type(t) :: z = t('a', 2, [3])    ! { dg-error "Bad array spec of component .c." }
+    end
+ 
+    subroutine comment3b
+       type t
+          character :: a
+          integer :: b
+          integer :: c(t(1, "rubbish", [7])) ! { dg-error "Derived type or class expression" }
+       end type
+       type(t) :: z = t('a', 2, [3])    ! { dg-error "Bad array spec of component .c." }
+    end
+ 
+    subroutine comment9
+       type t
+          character :: a
+          integer :: b(t(1))            ! { dg-error "No initializer for component .b." }
+       end type
+       type(t) :: x = t('a', 2)
+    end
+ end module
diff -Nrcpad gcc-14-20260507/gcc/testsuite/gfortran.dg/pr94978.f90 gcc-14-20260514/gcc/testsuite/gfortran.dg/pr94978.f90
*** gcc-14-20260507/gcc/testsuite/gfortran.dg/pr94978.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/gcc/testsuite/gfortran.dg/pr94978.f90	Thu May 14 22:32:11 2026
***************
*** 0 ****
--- 1,24 ----
+ ! { dg-do compile }
+ ! { dg-options "-Wdo-subscript" }
+ 
+ implicit none
+ 
+ integer(4) :: i, j
+ integer(4) :: pascal(0:8, 0:8)
+ 
+ do i = 0, 8
+   pascal(i, 0) = 1
+   do j = 1, i - 1
+     pascal(i, j) = pascal(i - 1, j) + pascal(i - 1, j - 1) ! { dg-bogus "Array reference at \\(1\\) out of bounds" }
+   end do
+   do j = i, 8
+     pascal(i, j) = 0
+   end do
+   pascal(i, i) = 1
+ end do
+ 
+ do i = 0, 8
+   print '(9I4)', pascal(i, :)
+ end do
+ 
+ end
diff -Nrcpad gcc-14-20260507/gcc/testsuite/gfortran.dg/pr96986.f90 gcc-14-20260514/gcc/testsuite/gfortran.dg/pr96986.f90
*** gcc-14-20260507/gcc/testsuite/gfortran.dg/pr96986.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/gcc/testsuite/gfortran.dg/pr96986.f90	Thu May 14 22:32:11 2026
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=legacy" }
+ !
+ ! PR fortran/96986
+ ! Calling an ENTRY with no volatile arguments incorrectly required an
+ ! explicit interface because the volatile attribute from a sibling ENTRY
+ ! was checked against the master procedure's combined formal list.
+ 
+ subroutine volatile_test ()
+   implicit none
+   integer, volatile :: va
+ 
+   entry fun_a()
+   return
+ 
+   entry fun_b(va)
+     call fun_c()
+   return
+ end subroutine volatile_test
+ 
+ subroutine fun_c ()
+   implicit none
+   call fun_a()  ! Must not require explicit interface
+   return
+ end subroutine fun_c
diff -Nrcpad gcc-14-20260507/gcc/tree-sra.cc gcc-14-20260514/gcc/tree-sra.cc
*** gcc-14-20260507/gcc/tree-sra.cc	Thu May  7 22:32:12 2026
--- gcc-14-20260514/gcc/tree-sra.cc	Thu May 14 22:32:12 2026
*************** path_comparable_for_same_access (tree ex
*** 2315,2320 ****
--- 2315,2325 ----
      {
        if (!zerop (TREE_OPERAND (expr, 1)))
  	return false;
+       gcc_assert (TREE_CODE (TREE_OPERAND (expr, 0)) == ADDR_EXPR
+ 		  && DECL_P (TREE_OPERAND (TREE_OPERAND (expr, 0), 0)));
+       if (TYPE_MAIN_VARIANT (TREE_TYPE (expr))
+ 	  != TYPE_MAIN_VARIANT (TREE_TYPE (TREE_OPERAND (TREE_OPERAND (expr, 0), 0))))
+ 	return false;
      }
    else
      gcc_assert (DECL_P (expr));
diff -Nrcpad gcc-14-20260507/libstdc++-v3/config/io/basic_file_stdio.cc gcc-14-20260514/libstdc++-v3/config/io/basic_file_stdio.cc
*** gcc-14-20260507/libstdc++-v3/config/io/basic_file_stdio.cc	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/config/io/basic_file_stdio.cc	Thu May 14 22:32:13 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 338,343 ****
--- 338,349 ----
      if (__ret == 0 && ferror(this->file()))
        __ret = -1;
  #else
+ 
+ #ifdef _GLIBCXX_MAX_READ_SIZE
+     if (__builtin_expect(__n > _GLIBCXX_MAX_READ_SIZE, 0))
+       __n = _GLIBCXX_MAX_READ_SIZE;
+ #endif
+ 
      do
        __ret = read(this->fd(), __s, __n);
      while (__ret == -1L && errno == EINTR);
diff -Nrcpad gcc-14-20260507/libstdc++-v3/config/os/bsd/darwin/os_defines.h gcc-14-20260514/libstdc++-v3/config/os/bsd/darwin/os_defines.h
*** gcc-14-20260507/libstdc++-v3/config/os/bsd/darwin/os_defines.h	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/config/os/bsd/darwin/os_defines.h	Thu May 14 22:32:13 2026
***************
*** 54,57 ****
--- 54,60 ----
  // No support for referencing weak symbols without a definition.
  #define _GLIBCXX_USE_WEAK_REF 0
  
+ // read(2) can return EINVAL for n >= INT_MAX.
+ #define _GLIBCXX_MAX_READ_SIZE (__INT_MAX__ - 1)
+ 
  #endif
diff -Nrcpad gcc-14-20260507/libstdc++-v3/config/os/bsd/freebsd/os_defines.h gcc-14-20260514/libstdc++-v3/config/os/bsd/freebsd/os_defines.h
*** gcc-14-20260507/libstdc++-v3/config/os/bsd/freebsd/os_defines.h	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/config/os/bsd/freebsd/os_defines.h	Thu May 14 22:32:13 2026
***************
*** 40,43 ****
--- 40,46 ----
  #define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_CHECK 1
  #define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC defined _XOPEN_SOURCE
  
+ // read(2) can return EINVAL for n >= INT_MAX.
+ #define _GLIBCXX_MAX_READ_SIZE (__INT_MAX__ - 1)
+ 
  #endif
diff -Nrcpad gcc-14-20260507/libstdc++-v3/doc/doxygen/mainpage.html gcc-14-20260514/libstdc++-v3/doc/doxygen/mainpage.html
*** gcc-14-20260507/libstdc++-v3/doc/doxygen/mainpage.html	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/doc/doxygen/mainpage.html	Thu May 14 22:32:13 2026
***************
*** 38,44 ****
  
  <p>Here are entry points to all the pages generated by Doxygen:
     <ul>
!     <li><a href="modules.html">Modules</a></li>
  
      <li>Namespaces
      <ul>
--- 38,44 ----
  
  <p>Here are entry points to all the pages generated by Doxygen:
     <ul>
!     <li><a href="topics.html">Topics</a></li>
  
      <li>Namespaces
      <ul>
diff -Nrcpad gcc-14-20260507/libstdc++-v3/include/bits/chrono_io.h gcc-14-20260514/libstdc++-v3/include/bits/chrono_io.h
*** gcc-14-20260507/libstdc++-v3/include/bits/chrono_io.h	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/include/bits/chrono_io.h	Thu May 14 22:32:14 2026
*************** namespace __detail
*** 156,161 ****
--- 156,162 ----
  namespace __detail
  {
    // An unspecified type returned by `chrono::local_time_format`.
+   // This is called `local-time-format-t` in the standard.
    template<typename _Duration>
      struct __local_time_fmt
      {
*************** namespace __detail
*** 163,170 ****
        const string* _M_abbrev;
        const seconds* _M_offset_sec;
      };
- 
-   struct __local_fmt_t;
  }
  /// @endcond
  
--- 164,169 ----
*************** namespace __format
*** 695,707 ****
  	  using ::std::chrono::__detail::__utc_leap_second;
  	  using ::std::chrono::__detail::__local_time_fmt;
  
  	  if constexpr (__is_specialization_of<_Tp, __local_time_fmt>)
- 	    return _M_format_to_ostream(__t._M_time, __fc, false);
- 	  else
  	    {
! 	      basic_ostringstream<_CharT> __os;
! 	      __os.imbue(_M_locale(__fc));
  
  	      if constexpr (__is_specialization_of<_Tp, __utc_leap_second>)
  		__os << __t._M_date << ' ' << __t._M_time;
  	      else if constexpr (chrono::__is_time_point_v<_Tp>)
--- 694,727 ----
  	  using ::std::chrono::__detail::__utc_leap_second;
  	  using ::std::chrono::__detail::__local_time_fmt;
  
+ 	  basic_ostringstream<_CharT> __os;
+ 	  __os.imbue(_M_locale(__fc));
+ 
  	  if constexpr (__is_specialization_of<_Tp, __local_time_fmt>)
  	    {
! 	      // Format as "{:L%F %T}"
! 	      auto __days = chrono::floor<chrono::days>(__t._M_time);
! 	      __os << chrono::year_month_day(__days) << ' '
! 		   << chrono::hh_mm_ss(__t._M_time - __days);
  
+ 	      // For __local_time_fmt the __is_neg flags says whether to
+ 	      // append " %Z" to the result.
+ 	      if (__is_neg)
+ 		{
+ 		  if (!__t._M_abbrev) [[unlikely]]
+ 		    __format::__no_timezone_available();
+ 		  else if constexpr (is_same_v<_CharT, char>)
+ 		    __os << ' ' << *__t._M_abbrev;
+ 		  else
+ 		    {
+ 		      __os << L' ';
+ 		      for (char __c : *__t._M_abbrev)
+ 			__os << __c;
+ 		    }
+ 		}
+ 	    }
+ 	  else
+ 	    {
  	      if constexpr (__is_specialization_of<_Tp, __utc_leap_second>)
  		__os << __t._M_date << ' ' << __t._M_time;
  	      else if constexpr (chrono::__is_time_point_v<_Tp>)
*************** namespace __format
*** 713,718 ****
--- 733,741 ----
  		  // sys_time with period greater or equal to days:
  		  if constexpr (is_convertible_v<_Tp, chrono::sys_days>)
  		    __os << _S_date(__t);
+ 		  // Or a local_time with period greater or equal to days:
+ 		  else if constexpr (is_convertible_v<_Tp, chrono::local_days>)
+ 		    __os << _S_date(__t);
  		  else // Or it's formatted as "{:L%F %T}":
  		    {
  		      auto __days = chrono::floor<chrono::days>(__t);
*************** namespace __format
*** 727,737 ****
  		      __os << _S_plus_minus[1];
  		  __os << __t;
  		}
- 
- 	      auto __str = std::move(__os).str();
- 	      return __format::__write_padded_as_spec(__str, __str.size(),
- 						      __fc, _M_spec);
  	    }
  	}
  
        static constexpr const _CharT* _S_chars
--- 750,760 ----
  		      __os << _S_plus_minus[1];
  		  __os << __t;
  		}
  	    }
+ 
+ 	  auto __str = std::move(__os).str();
+ 	  return __format::__write_padded_as_spec(__str, __str.size(),
+ 						  __fc, _M_spec);
  	}
  
        static constexpr const _CharT* _S_chars
*************** namespace __format
*** 2022,2027 ****
--- 2045,2052 ----
  	       _FormatContext& __fc) const
  	{
  	  // Convert to __local_time_fmt with abbrev "TAI" and offset 0s.
+ 	  // We use __local_time_fmt and not sys_time (as the standard implies)
+ 	  // because %Z for sys_time would print "UTC" and we want "TAI" here.
  
  	  // Offset is 1970y/January/1 - 1958y/January/1
  	  constexpr chrono::days __tai_offset = chrono::days(4383);
*************** namespace __format
*** 2052,2057 ****
--- 2077,2084 ----
  	       _FormatContext& __fc) const
  	{
  	  // Convert to __local_time_fmt with abbrev "GPS" and offset 0s.
+ 	  // We use __local_time_fmt and not sys_time (as the standard implies)
+ 	  // because %Z for sys_time would print "UTC" and we want "GPS" here.
  
  	  // Offset is 1980y/January/Sunday[1] - 1970y/January/1
  	  constexpr chrono::days __gps_offset = chrono::days(3657);
*************** namespace __format
*** 2118,2124 ****
  	typename _FormatContext::iterator
  	format(const chrono::__detail::__local_time_fmt<_Duration>& __t,
  	       _FormatContext& __ctx) const
! 	{ return _M_f._M_format(__t, __ctx); }
  
      private:
        __format::__formatter_chrono<_CharT> _M_f;
--- 2145,2151 ----
  	typename _FormatContext::iterator
  	format(const chrono::__detail::__local_time_fmt<_Duration>& __t,
  	       _FormatContext& __ctx) const
! 	{ return _M_f._M_format(__t, __ctx, /* use %Z for {} */ true); }
  
      private:
        __format::__formatter_chrono<_CharT> _M_f;
*************** namespace __detail
*** 2837,2844 ****
  	    __is.setstate(ios_base::failbit);
  	  else
  	    {
! 	      auto __st = __p._M_sys_days + __p._M_time - *__offset;
! 	      auto __tt = tai_clock::from_utc(utc_clock::from_sys(__st));
  	      __tp = chrono::time_point_cast<_Duration>(__tt);
  	    }
  	}
--- 2864,2872 ----
  	    __is.setstate(ios_base::failbit);
  	  else
  	    {
! 	      constexpr sys_days __epoch(-days(4383)); // 1958y/1/1
! 	      auto __d = __p._M_sys_days - __epoch + __p._M_time - *__offset;
! 	      tai_time<common_type_t<_Duration, seconds>> __tt(__d);
  	      __tp = chrono::time_point_cast<_Duration>(__tt);
  	    }
  	}
*************** namespace __detail
*** 2875,2883 ****
  	    __is.setstate(ios_base::failbit);
  	  else
  	    {
! 	      auto __st = __p._M_sys_days + __p._M_time - *__offset;
! 	      auto __tt = gps_clock::from_utc(utc_clock::from_sys(__st));
! 	      __tp = chrono::time_point_cast<_Duration>(__tt);
  	    }
  	}
        return __is;
--- 2903,2912 ----
  	    __is.setstate(ios_base::failbit);
  	  else
  	    {
! 	      constexpr sys_days __epoch(days(3657)); // 1980y/1/Sunday[1]
! 	      auto __d = __p._M_sys_days - __epoch + __p._M_time - *__offset;
! 	      gps_time<common_type_t<_Duration, seconds>> __gt(__d);
! 	      __tp = chrono::time_point_cast<_Duration>(__gt);
  	    }
  	}
        return __is;
diff -Nrcpad gcc-14-20260507/libstdc++-v3/include/bits/stl_construct.h gcc-14-20260514/libstdc++-v3/include/bits/stl_construct.h
*** gcc-14-20260507/libstdc++-v3/include/bits/stl_construct.h	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/include/bits/stl_construct.h	Thu May 14 22:32:14 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 152,157 ****
--- 152,161 ----
  #endif
      }
  
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wc++17-extensions" // for if-constexpr
+ 
+ #if __cplusplus < 201103L
    template<bool>
      struct _Destroy_aux
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 162,167 ****
--- 166,180 ----
  	  for (; __first != __last; ++__first)
  	    std::_Destroy(std::__addressof(*__first));
  	}
+ 
+       template<typename _ForwardIterator, typename _Size>
+ 	static _GLIBCXX20_CONSTEXPR _ForwardIterator
+ 	__destroy_n(_ForwardIterator __first, _Size __count)
+ 	{
+ 	  for (; __count > 0; (void)++__first, --__count)
+ 	    std::_Destroy(std::__addressof(*__first));
+ 	  return __first;
+ 	}
      };
  
    template<>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 170,176 ****
--- 183,198 ----
        template<typename _ForwardIterator>
          static void
          __destroy(_ForwardIterator, _ForwardIterator) { }
+ 
+       template<typename _ForwardIterator, typename _Size>
+ 	static _ForwardIterator
+ 	__destroy_n(_ForwardIterator __first, _Size __count)
+ 	{
+ 	  std::advance(__first, __count);
+ 	  return __first;
+ 	}
      };
+ #endif
  
    /**
     * Destroy a range of objects.  If the value_type of the object has
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 184,226 ****
        typedef typename iterator_traits<_ForwardIterator>::value_type
                         _Value_type;
  #if __cplusplus >= 201103L
!       // A deleted destructor is trivial, this ensures we reject such types:
!       static_assert(is_destructible<_Value_type>::value,
! 		    "value type is destructible");
! #endif
  #if __cpp_constexpr_dynamic_alloc // >= C++20
!       if (std::__is_constant_evaluated())
! 	return std::_Destroy_aux<false>::__destroy(__first, __last);
  #endif
        std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
  	__destroy(__first, __last);
      }
  
-   template<bool>
-     struct _Destroy_n_aux
-     {
-       template<typename _ForwardIterator, typename _Size>
- 	static _GLIBCXX20_CONSTEXPR _ForwardIterator
- 	__destroy_n(_ForwardIterator __first, _Size __count)
- 	{
- 	  for (; __count > 0; (void)++__first, --__count)
- 	    std::_Destroy(std::__addressof(*__first));
- 	  return __first;
- 	}
-     };
- 
-   template<>
-     struct _Destroy_n_aux<true>
-     {
-       template<typename _ForwardIterator, typename _Size>
-         static _ForwardIterator
-         __destroy_n(_ForwardIterator __first, _Size __count)
- 	{
- 	  std::advance(__first, __count);
- 	  return __first;
- 	}
-     };
- 
    /**
     * Destroy a range of objects.  If the value_type of the object has
     * a trivial destructor, the compiler should optimize all of this
--- 206,225 ----
        typedef typename iterator_traits<_ForwardIterator>::value_type
                         _Value_type;
  #if __cplusplus >= 201103L
!       if constexpr (!is_trivially_destructible<_Value_type>::value)
! 	for (; __first != __last; ++__first)
! 	  std::_Destroy(std::__addressof(*__first));
  #if __cpp_constexpr_dynamic_alloc // >= C++20
!       else if (std::__is_constant_evaluated())
! 	for (; __first != __last; ++__first)
! 	  std::destroy_at(std::__addressof(*__first));
  #endif
+ #else
        std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
  	__destroy(__first, __last);
+ #endif
      }
  
    /**
     * Destroy a range of objects.  If the value_type of the object has
     * a trivial destructor, the compiler should optimize all of this
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 233,249 ****
        typedef typename iterator_traits<_ForwardIterator>::value_type
                         _Value_type;
  #if __cplusplus >= 201103L
!       // A deleted destructor is trivial, this ensures we reject such types:
!       static_assert(is_destructible<_Value_type>::value,
! 		    "value type is destructible");
! #endif
  #if __cpp_constexpr_dynamic_alloc // >= C++20
!       if (std::__is_constant_evaluated())
! 	return std::_Destroy_n_aux<false>::__destroy_n(__first, __count);
  #endif
!       return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>::
  	__destroy_n(__first, __count);
      }
  
  #if __glibcxx_raw_memory_algorithms // >= C++17
    template <typename _ForwardIterator>
--- 232,254 ----
        typedef typename iterator_traits<_ForwardIterator>::value_type
                         _Value_type;
  #if __cplusplus >= 201103L
!       if constexpr (!is_trivially_destructible<_Value_type>::value)
! 	for (; __count > 0; (void)++__first, --__count)
! 	  std::_Destroy(std::__addressof(*__first));
  #if __cpp_constexpr_dynamic_alloc // >= C++20
!       else if (std::__is_constant_evaluated())
! 	for (; __count > 0; (void)++__first, --__count)
! 	  std::destroy_at(std::__addressof(*__first));
  #endif
!       else
! 	std::advance(__first, __count);
!       return __first;
! #else
!       return std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
  	__destroy_n(__first, __count);
+ #endif
      }
+ #pragma GCC diagnostic pop
  
  #if __glibcxx_raw_memory_algorithms // >= C++17
    template <typename _ForwardIterator>
diff -Nrcpad gcc-14-20260507/libstdc++-v3/include/bits/stl_queue.h gcc-14-20260514/libstdc++-v3/include/bits/stl_queue.h
*** gcc-14-20260507/libstdc++-v3/include/bits/stl_queue.h	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/include/bits/stl_queue.h	Thu May 14 22:32:14 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 564,569 ****
--- 564,589 ----
        : c(std::move(__s)), comp(__x)
        { std::make_heap(c.begin(), c.end(), comp); }
  
+       priority_queue(const priority_queue&) = default;
+       priority_queue& operator=(const priority_queue&) = default;
+ 
+       priority_queue(priority_queue&& __q)
+       noexcept(__and_<is_nothrow_move_constructible<_Sequence>,
+ 		      is_nothrow_move_constructible<_Compare>>::value)
+       : c(std::move(__q.c)), comp(std::move(__q.comp))
+       { __q.c.clear(); }
+ 
+       priority_queue&
+       operator=(priority_queue&& __q)
+       noexcept(__and_<is_nothrow_move_assignable<_Sequence>,
+ 		      is_nothrow_move_assignable<_Compare>>::value)
+       {
+ 	c = std::move(__q.c);
+ 	__q.c.clear();
+ 	comp = std::move(__q.comp);
+ 	return *this;
+       }
+ 
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	explicit
  	priority_queue(const _Alloc& __a)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 592,598 ****
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	priority_queue(priority_queue&& __q, const _Alloc& __a)
! 	: c(std::move(__q.c), __a), comp(std::move(__q.comp)) { }
  #endif
  
        /**
--- 612,619 ----
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	priority_queue(priority_queue&& __q, const _Alloc& __a)
! 	: c(std::move(__q.c), __a), comp(std::move(__q.comp))
! 	{ __q.c.clear(); }
  #endif
  
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 607,614 ****
         *  the copy according to @a __x.
         *
         *  For more information on function objects, see the
!        *  documentation on @link functors functor base
!        *  classes@endlink.
         */
  #if __cplusplus < 201103L
        template<typename _InputIterator>
--- 628,634 ----
         *  the copy according to @a __x.
         *
         *  For more information on function objects, see the
!        *  documentation on @link functors functor base classes@endlink.
         */
  #if __cplusplus < 201103L
        template<typename _InputIterator>
diff -Nrcpad gcc-14-20260507/libstdc++-v3/include/std/chrono gcc-14-20260514/libstdc++-v3/include/std/chrono
*** gcc-14-20260507/libstdc++-v3/include/std/chrono	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/include/std/chrono	Thu May 14 22:32:14 2026
*************** namespace __detail
*** 3243,3249 ****
        };
        // The list above is known to be valid until (at least) this date
        // and only contains positive leap seconds.
!       const sys_seconds __expires(1766880000s); // 2025-12-28 00:00:00 UTC
  
  #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
        if (__ss > __expires)
--- 3243,3249 ----
        };
        // The list above is known to be valid until (at least) this date
        // and only contains positive leap seconds.
!       constexpr sys_seconds __expires(1798416000s); // 2026-12-28 00:00:00 UTC
  
  #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
        if (__ss > __expires)
diff -Nrcpad gcc-14-20260507/libstdc++-v3/include/std/sstream gcc-14-20260514/libstdc++-v3/include/std/sstream
*** gcc-14-20260507/libstdc++-v3/include/std/sstream	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/include/std/sstream	Thu May 14 22:32:14 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 273,280 ****
        {
  	if (char_type* __hi = _M_high_mark())
  	  {
! 	    // Set length to end of character sequence and add null terminator.
! 	    _M_string._M_set_length(_M_high_mark() - this->pbase());
  	  }
  	auto __str = std::move(_M_string);
  	_M_string.clear();
--- 273,283 ----
        {
  	if (char_type* __hi = _M_high_mark())
  	  {
! 	    if (_M_string.data() == this->pbase()) [[likely]]
! 	      // Set length to end of sequence and add null terminator.
! 	      _M_string._M_set_length(__hi - this->pbase());
! 	    else
! 	      _M_string.assign(this->pbase(), __hi);
  	  }
  	auto __str = std::move(_M_string);
  	_M_string.clear();
diff -Nrcpad gcc-14-20260507/libstdc++-v3/include/std/tuple gcc-14-20260514/libstdc++-v3/include/std/tuple
*** gcc-14-20260507/libstdc++-v3/include/std/tuple	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/include/std/tuple	Thu May 14 22:32:14 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 972,978 ****
        // Defined as a template to work around PR libstdc++/116440.
        template<typename = void>
  	constexpr explicit(!__convertible<const _Elements&...>())
! 	tuple(const _Elements&... __elements)
  	noexcept(__nothrow_constructible<const _Elements&...>())
  	requires (__constructible<const _Elements&...>())
  	: _Inherited(__elements...)
--- 972,978 ----
        // Defined as a template to work around PR libstdc++/116440.
        template<typename = void>
  	constexpr explicit(!__convertible<const _Elements&...>())
! 	tuple(const type_identity_t<_Elements>&... __elements)
  	noexcept(__nothrow_constructible<const _Elements&...>())
  	requires (__constructible<const _Elements&...>())
  	: _Inherited(__elements...)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1164,1170 ****
        template<typename _Alloc>
  	constexpr explicit(!__convertible<const _Elements&...>())
  	tuple(allocator_arg_t __tag, const _Alloc& __a,
! 	      const _Elements&... __elements)
  	requires (__constructible<const _Elements&...>())
  	: _Inherited(__tag, __a, __elements...)
  	{ }
--- 1164,1170 ----
        template<typename _Alloc>
  	constexpr explicit(!__convertible<const _Elements&...>())
  	tuple(allocator_arg_t __tag, const _Alloc& __a,
! 	      const type_identity_t<_Elements>&... __elements)
  	requires (__constructible<const _Elements&...>())
  	: _Inherited(__tag, __a, __elements...)
  	{ }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1473,1486 ****
        template<bool _NotEmpty = (sizeof...(_Elements) >= 1),
  	       _ImplicitCtor<_NotEmpty, const _Elements&...> = true>
  	constexpr
! 	tuple(const _Elements&... __elements)
  	noexcept(__nothrow_constructible<const _Elements&...>())
  	: _Inherited(__elements...) { }
  
        template<bool _NotEmpty = (sizeof...(_Elements) >= 1),
  	       _ExplicitCtor<_NotEmpty, const _Elements&...> = false>
  	explicit constexpr
! 	tuple(const _Elements&... __elements)
  	noexcept(__nothrow_constructible<const _Elements&...>())
  	: _Inherited(__elements...) { }
  
--- 1473,1486 ----
        template<bool _NotEmpty = (sizeof...(_Elements) >= 1),
  	       _ImplicitCtor<_NotEmpty, const _Elements&...> = true>
  	constexpr
! 	tuple(const __type_identity_t<_Elements>&... __elements)
  	noexcept(__nothrow_constructible<const _Elements&...>())
  	: _Inherited(__elements...) { }
  
        template<bool _NotEmpty = (sizeof...(_Elements) >= 1),
  	       _ExplicitCtor<_NotEmpty, const _Elements&...> = false>
  	explicit constexpr
! 	tuple(const __type_identity_t<_Elements>&... __elements)
  	noexcept(__nothrow_constructible<const _Elements&...>())
  	: _Inherited(__elements...) { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1565,1571 ****
  	       _ImplicitCtor<_NotEmpty, const _Elements&...> = true>
  	_GLIBCXX20_CONSTEXPR
  	tuple(allocator_arg_t __tag, const _Alloc& __a,
! 	      const _Elements&... __elements)
  	: _Inherited(__tag, __a, __elements...) { }
  
        template<typename _Alloc, bool _NotEmpty = (sizeof...(_Elements) >= 1),
--- 1565,1571 ----
  	       _ImplicitCtor<_NotEmpty, const _Elements&...> = true>
  	_GLIBCXX20_CONSTEXPR
  	tuple(allocator_arg_t __tag, const _Alloc& __a,
! 	      const __type_identity_t<_Elements>&... __elements)
  	: _Inherited(__tag, __a, __elements...) { }
  
        template<typename _Alloc, bool _NotEmpty = (sizeof...(_Elements) >= 1),
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1573,1579 ****
  	_GLIBCXX20_CONSTEXPR
  	explicit
  	tuple(allocator_arg_t __tag, const _Alloc& __a,
! 	      const _Elements&... __elements)
  	: _Inherited(__tag, __a, __elements...) { }
  
        template<typename _Alloc, typename... _UElements,
--- 1573,1579 ----
  	_GLIBCXX20_CONSTEXPR
  	explicit
  	tuple(allocator_arg_t __tag, const _Alloc& __a,
! 	      const __type_identity_t<_Elements>&... __elements)
  	: _Inherited(__tag, __a, __elements...) { }
  
        template<typename _Alloc, typename... _UElements,
diff -Nrcpad gcc-14-20260507/libstdc++-v3/src/c++17/fs_path.cc gcc-14-20260514/libstdc++-v3/src/c++17/fs_path.cc
*** gcc-14-20260507/libstdc++-v3/src/c++17/fs_path.cc	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/src/c++17/fs_path.cc	Thu May 14 22:32:14 2026
*************** path::operator+=(const path& p)
*** 880,885 ****
--- 880,897 ----
        return *this;
      }
  
+   // Handle p += p which would otherwise access dangling pointers after
+   // reallocating _M_cmpts and _M_pathname.
+   if (&p == this) [[unlikely]]
+     return *this += p.native();
+   // Handle p += *i where i is in [p.begin(),p.end()), for the same reason.
+   if (_M_type() == _Type::_Multi && p._M_type() != _Type::_Multi)
+     {
+       const auto first = _M_cmpts.begin(), last = first + _M_cmpts.size();
+       if (!std::less<>()(&p, first) && std::less<>()(&p, last)) [[unlikely]]
+ 	return *this += p.native();
+     }
+ 
  #if _GLIBCXX_FILESYSTEM_IS_WINDOWS
    if (_M_type() == _Type::_Root_name
        || (_M_type() == _Type::_Filename && _M_pathname.size() == 1))
diff -Nrcpad gcc-14-20260507/libstdc++-v3/src/c++20/tzdata.zi gcc-14-20260514/libstdc++-v3/src/c++20/tzdata.zi
*** gcc-14-20260507/libstdc++-v3/src/c++20/tzdata.zi	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/src/c++20/tzdata.zi	Thu May 14 22:32:14 2026
***************
*** 1,4 ****
! # version 2025b
  # This zic input file is in the public domain.
  R d 1916 o - Jun 14 23s 1 S
  R d 1916 1919 - O Su>=1 23s 0 -
--- 1,5 ----
! # version 2026a
! # redo posix_only
  # This zic input file is in the public domain.
  R d 1916 o - Jun 14 23s 1 S
  R d 1916 1919 - O Su>=1 23s 0 -
*************** R MT 1974 o - S 16 0s 0 -
*** 1304,1311 ****
  R MT 1975 1979 - Ap Su>=15 2 1 S
  R MT 1975 1980 - S Su>=15 2 0 -
  R MT 1980 o - Mar 31 2 1 S
! R MD 1997 ma - Mar lastSu 2 1 S
! R MD 1997 ma - O lastSu 3 0 -
  R O 1918 1919 - S 16 2s 0 -
  R O 1919 o - Ap 15 2s 1 S
  R O 1944 o - Ap 3 2s 1 S
--- 1305,1312 ----
  R MT 1975 1979 - Ap Su>=15 2 1 S
  R MT 1975 1980 - S Su>=15 2 0 -
  R MT 1980 o - Mar 31 2 1 S
! R MD 1997 2021 - Mar lastSu 2 1 S
! R MD 1997 2021 - O lastSu 3 0 -
  R O 1918 1919 - S 16 2s 0 -
  R O 1919 o - Ap 15 2s 1 S
  R O 1944 o - Ap 3 2s 1 S
*************** Z America/Tijuana -7:48:4 - LMT 1922 Ja
*** 2951,2959 ****
  -8 1 PDT 1951 S 30 2
  -8 - PST 1952 Ap 27 2
  -8 1 PDT 1952 S 28 2
! -8 - PST 1954
! -8 CA P%sT 1961
! -8 - PST 1976
  -8 u P%sT 1996
  -8 m P%sT 2001
  -8 u P%sT 2002 F 20
--- 2952,2958 ----
  -8 1 PDT 1951 S 30 2
  -8 - PST 1952 Ap 27 2
  -8 1 PDT 1952 S 28 2
! -8 CA P%sT 1967
  -8 u P%sT 1996
  -8 m P%sT 2001
  -8 u P%sT 2002 F 20
*************** Z Europe/Chisinau 1:55:20 - LMT 1880
*** 3668,3674 ****
  3 R MSK/MSD 1990 May 6 2
  2 R EE%sT 1992
  2 e EE%sT 1997
! 2 MD EE%sT
  Z Europe/Dublin -0:25:21 - LMT 1880 Au 2
  -0:25:21 - DMT 1916 May 21 2s
  -0:25:21 1 IST 1916 O 1 2s
--- 3667,3674 ----
  3 R MSK/MSD 1990 May 6 2
  2 R EE%sT 1992
  2 e EE%sT 1997
! 2 MD EE%sT 2022
! 2 E EE%sT
  Z Europe/Dublin -0:25:21 - LMT 1880 Au 2
  -0:25:21 - DMT 1916 May 21 2s
  -0:25:21 1 IST 1916 O 1 2s
diff -Nrcpad gcc-14-20260507/libstdc++-v3/src/c++20/tzdb.cc gcc-14-20260514/libstdc++-v3/src/c++20/tzdb.cc
*** gcc-14-20260507/libstdc++-v3/src/c++20/tzdb.cc	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/src/c++20/tzdb.cc	Thu May 14 22:32:14 2026
***************
*** 35,41 ****
  #include <atomic>     // atomic<T*>, atomic<int>
  #include <memory>     // atomic<shared_ptr<T>>
  #include <mutex>      // mutex
! #include <filesystem> // filesystem::read_symlink
  
  #ifdef _AIX
  # include <cstdlib>   // getenv
--- 35,45 ----
  #include <atomic>     // atomic<T*>, atomic<int>
  #include <memory>     // atomic<shared_ptr<T>>
  #include <mutex>      // mutex
! #include <iomanip>    // quoted
! 
! #if defined(_GLIBCXX_HAVE_READLINK) && defined(_GLIBCXX_HAVE_UNISTD_H)
! # include <unistd.h>  // readlink
! #endif
  
  #ifdef _AIX
  # include <cstdlib>   // getenv
*************** namespace std::chrono
*** 1188,1195 ****
    pair<vector<leap_second>, bool>
    tzdb_list::_Node::_S_read_leap_seconds()
    {
!     // This list is valid until at least 2025-12-28 00:00:00 UTC.
!     auto expires = sys_days{2025y/12/28};
      vector<leap_second> leaps
      {
        (leap_second)  78796800, // 1 Jul 1972
--- 1192,1199 ----
    pair<vector<leap_second>, bool>
    tzdb_list::_Node::_S_read_leap_seconds()
    {
!     // This list is valid until at least 2026-12-28 00:00:00 UTC.
!     constexpr auto expires = sys_days{2026y/12/28};
      vector<leap_second> leaps
      {
        (leap_second)  78796800, // 1 Jul 1972
*************** namespace std::chrono
*** 1734,1761 ****
    tzdb::current_zone() const
    {
      // TODO cache this function's result?
  
  #ifndef _AIX
!     // Repeat the preprocessor condition used by filesystem::read_symlink,
!     // to avoid a dependency on src/c++17/fs_ops.o if it won't work anyway.
! #if defined(_GLIBCXX_HAVE_READLINK) && defined(_GLIBCXX_HAVE_SYS_STAT_H)
!     error_code ec;
!     // This should be a symlink to e.g. /usr/share/zoneinfo/Europe/London
!     auto path = filesystem::read_symlink("/etc/localtime", ec);
!     if (!ec)
        {
! 	auto first = path.begin(), last = path.end();
! 	if (std::distance(first, last) > 2)
  	  {
! 	    --last;
! 	    string name = last->string();
! 	    if (auto tz = do_locate_zone(this->zones, this->links, name))
! 	      return tz;
! 	    --last;
! 	    name = last->string() + '/' + name;
! 	    if (auto tz = do_locate_zone(this->zones, this->links, name))
  	      return tz;
  	  }
        }
  #endif
      // Otherwise, look for a file naming the time zone.
--- 1738,1824 ----
    tzdb::current_zone() const
    {
      // TODO cache this function's result?
+     // Could check the modification time of /etc/localtime, and not re-read
+     // it if it hasn't changed. reload_tzdb() could clear the cache too,
+     // to have a way to force a re-read.
  
  #ifndef _AIX
! #if defined(_GLIBCXX_HAVE_READLINK) && defined(_GLIBCXX_HAVE_UNISTD_H)
!     string_view str;
!     char buf[128]; // strlen("../usr/share/zoneinfo/...") is usually < 55
!     string dynbuf;
!     // /etc/localtime should be a symlink that ends with a zone name,
!     // e.g. /etc/localtime -> /usr/share/zoneinfo/Europe/London
!     // https://www.freedesktop.org/software/systemd/man/latest/localtime.html
!     // This should work on GNU/Linux, macOS, NetBSD, and OpenBSD.
!     // Some FreeBSD systems also use a symlink for /etc/localtime.
!     // Use readlink directly to avoid std::filesystem overhead.
!     if (auto n = ::readlink("/etc/localtime", buf, sizeof(buf)); n > 0)
        {
! 	if (static_cast<size_t>(n) < sizeof(buf))
! 	  str = string_view(buf, n);
! 	else [[unlikely]]
  	  {
! 	    // We read the symlink but it didn't fit in buf[], use dynbuf.
! 	    do
! 	      {
! 		n *= 2;
! 		dynbuf.__resize_and_overwrite(n, [](char* p, size_t len) {
! 		  auto n2 = ::readlink("/etc/localtime", p, len);
! 		  if (n2 == -1) // symlink removed or replaced by file?!
! 		    __throw_runtime_error("tzdb: error reading /etc/localtime");
! 		  const size_t r = n2;
! 		  return r < len ? r : 0;
! 		});
! 	      }
! 	    while (dynbuf.empty());
! 	    str = dynbuf;
! 	  }
!       }
! 
!     if (!str.empty())
!       {
! 	// Remove any redundant slashes so we can match zone names.
! 	// e.g. /usr/share/zoneinfo/Europe//London is a valid symlink,
! 	// but won't match against "Europe/London".
! 	if (auto pos = str.rfind("//"); pos != str.npos) [[unlikely]]
! 	  {
! 	    if (str.data() != dynbuf.data())
! 	      dynbuf = str;
! 	    string::size_type spos = pos;
! 	    do
! 	      {
! 		dynbuf.erase(spos, 1);
! 		spos = dynbuf.rfind("//", spos);
! 	      }
! 	    while (spos != dynbuf.npos);
! 	    str = dynbuf;
! 	  }
! 
! 	// Check the trailing components of the path against known zone names.
! 	// Valid IANA times zones can have one, two, or three parts, e.g.
! 	// "UTC", "Europe/London", and "America/Indiana/Indianapolis".
! 	// Custom tzdata.zi files could in theory use four or more parts.
! 
! 	auto pos = str.rfind('/');
! 	while (pos != str.npos && pos != 0)
! 	  {
! 	    if (auto tz = do_locate_zone(this->zones, this->links,
! 					 str.substr(pos + 1)))
  	      return tz;
+ 	    pos = str.rfind('/', pos - 1);
  	  }
+ 	// If we didn't match yet, try once more so that we will match
+ 	// a symlink to a relative path such as "Europe/London"
+ 	// or symlink to an absolute path such as "/Europe/London".
+ 	// Both cases seem unlikely because it would require either
+ 	// /etc/Europe or /Europe to be a directory (or a symlink to one)
+ 	// containing the TZif files, but it's theoretically possible.
+ 	// If pos==npos then pos+1 wraps to 0 and we use the whole string.
+ 	// If pos==0 then substr(1) discards the leading slash.
+ 	if (auto tz = do_locate_zone(this->zones, this->links,
+ 				     str.substr(pos + 1)))
+ 	  return tz;
        }
  #endif
      // Otherwise, look for a file naming the time zone.
*************** namespace std::chrono
*** 1792,1798 ****
  		  return tz;
  	      }
        }
! #else
      // AIX stores current zone in $TZ in /etc/environment but the value
      // is typically a POSIX time zone name, not IANA zone.
      // https://developer.ibm.com/articles/au-aix-posix/
--- 1855,1866 ----
  		  return tz;
  	      }
        }
! 
!     // FIXME: For DragonFly BSD /etc/localtime is a copy of one of the
!     // zone files in /usr/share/zoneinfo so we need to compare its contents
!     // to each one until we find a match.
! 
! #else // _AIX
      // AIX stores current zone in $TZ in /etc/environment but the value
      // is typically a POSIX time zone name, not IANA zone.
      // https://developer.ibm.com/articles/au-aix-posix/
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc gcc-14-20260514/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc	Thu May 14 22:32:14 2026
***************
*** 0 ****
--- 1,59 ----
+ // Copyright (C) 2017-2025 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do compile { target c++17 } }
+ 
+ #include <memory>
+ 
+ // This has a trivial destructor, but should not be destructible!
+ struct DeletedDtor {
+   ~DeletedDtor() = delete;
+ };
+ 
+ void
+ test01()
+ {
+   alignas(DeletedDtor) unsigned char buf[sizeof(DeletedDtor)];
+   auto p = ::new (buf) DeletedDtor();
+   std::destroy_n(p, 1);
+ }
+ 
+ class PrivateDtor {
+   ~PrivateDtor() { }
+ };
+ 
+ void
+ test02()
+ {
+   alignas(PrivateDtor) unsigned char buf[sizeof(PrivateDtor)];
+   auto p = ::new (buf) PrivateDtor();
+   std::destroy_n(p, 1);
+ }
+ 
+ #if __cpp_constexpr_dynamic_alloc // >= C++20
+ consteval bool
+ test03()
+ {
+   DeletedDtor* p = nullptr;
+   std::destroy_n(p, 0);
+   return true;
+ }
+ static_assert(test03());
+ #endif
+ 
+ // { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
+ // { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc gcc-14-20260514/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc	Thu May  7 22:32:13 2026
--- gcc-14-20260514/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc	Thu May 14 22:32:14 2026
*************** test01()
*** 29,36 ****
  {
    alignas(DeletedDtor) unsigned char buf[sizeof(DeletedDtor)];
    auto p = ::new (buf) DeletedDtor();
!   std::destroy(p, p + 1);	// { dg-error "here" }
!   std::destroy_n(p, 1);		// { dg-error "here" }
  }
  
  class PrivateDtor {
--- 29,35 ----
  {
    alignas(DeletedDtor) unsigned char buf[sizeof(DeletedDtor)];
    auto p = ::new (buf) DeletedDtor();
!   std::destroy(p, p + 1);
  }
  
  class PrivateDtor {
*************** test02()
*** 42,49 ****
  {
    alignas(PrivateDtor) unsigned char buf[sizeof(PrivateDtor)];
    auto p = ::new (buf) PrivateDtor();
!   std::destroy(p, p + 1);	// { dg-error "here" }
!   std::destroy_n(p, 1);		// { dg-error "here" }
  }
  
! // { dg-error "value type is destructible" "" { target *-*-* } 0 }
--- 41,59 ----
  {
    alignas(PrivateDtor) unsigned char buf[sizeof(PrivateDtor)];
    auto p = ::new (buf) PrivateDtor();
!   std::destroy(p, p + 1);
  }
  
! #if __cpp_constexpr_dynamic_alloc // >= C++20
! consteval bool
! test03()
! {
!   DeletedDtor* p = nullptr;
!   std::destroy(p, p);
!   return true;
! }
! static_assert(test03());
! #endif
! 
! // { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
! // { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/20_util/tuple/cons/121771.cc gcc-14-20260514/libstdc++-v3/testsuite/20_util/tuple/cons/121771.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/20_util/tuple/cons/121771.cc	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/libstdc++-v3/testsuite/20_util/tuple/cons/121771.cc	Thu May 14 22:32:14 2026
***************
*** 0 ****
--- 1,45 ----
+ // { dg-do compile { target c++17 } }
+ 
+ // Bug 121771 - std::tuple CTAD fails for lvalue reference to function type
+ 
+ #include <tuple>
+ #include <memory>
+ 
+ void func();
+ 
+ std::tuple t(func);
+ std::tuple<void (*)()>& r = t;
+ 
+ struct Explicit {
+     Explicit();
+     explicit Explicit(const Explicit&);
+ } ex;
+ 
+ std::tuple t2(func, 1);
+ std::tuple<void (*)(), int>& r2 = t2;
+ 
+ std::tuple t2x(ex, func);
+ std::tuple<Explicit, void (*)()>& r2x = t2x;
+ 
+ std::tuple t3(1, func, 3);
+ std::tuple<int, void (*)(), int>& r3 = t3;
+ 
+ std::tuple t3x(ex, 2, func);
+ std::tuple<Explicit, int, void (*)()>& r3x = t3x;
+ 
+ std::allocator<int> alloc;
+ 
+ std::tuple ta(std::allocator_arg, alloc, func);
+ std::tuple<void (*)()>& ra = ta;
+ 
+ std::tuple ta2(std::allocator_arg, alloc, func, 1);
+ std::tuple<void (*)(), int>& ra2 = ta2;
+ 
+ std::tuple ta2x(std::allocator_arg, alloc, ex, func);
+ std::tuple<Explicit, void (*)()>& ra2x = ta2x;
+ 
+ std::tuple ta3(std::allocator_arg, alloc, 1, func, 3);
+ std::tuple<int, void (*)(), int>& ra3 = ta3;
+ 
+ std::tuple ta3x(std::allocator_arg, alloc, ex, 2, func);
+ std::tuple<Explicit, int, void (*)()>& ra3x = ta3x;
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/23_containers/priority_queue/118088.cc gcc-14-20260514/libstdc++-v3/testsuite/23_containers/priority_queue/118088.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/23_containers/priority_queue/118088.cc	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/libstdc++-v3/testsuite/23_containers/priority_queue/118088.cc	Thu May 14 22:32:14 2026
***************
*** 0 ****
--- 1,83 ----
+ // { dg-do run { target c++11 } }
+ 
+ #include <queue>
+ #include <vector>
+ #include <testsuite_hooks.h>
+ 
+ template<typename T, typename Seq>
+ bool
+ check(std::priority_queue<T, Seq>& p)
+ {
+   if (!p.empty())
+     {
+       T prev = p.top();
+       p.pop();
+       while (!p.empty())
+ 	{
+ 	  if ( prev < p.top() )
+ 	    return false;
+ 	  prev = p.top();
+ 	  p.pop();
+ 	}
+     }
+   return true;
+ }
+ 
+ // A vector-like type that has a non-empty moved-from state.
+ struct Vector : std::vector<int>
+ {
+   using Base = std::vector<int>;
+ 
+   using Base::Base;
+ 
+   Vector(const Vector&) = default;
+   Vector& operator=(const Vector&) = default;
+ 
+   Vector(Vector&& v) : Base(static_cast<const Base&>(v))
+   {
+     invalidate_heap(v);
+   }
+ 
+   Vector(Vector&& v, const std::allocator<int>&)
+   : Base(static_cast<const Base&>(v))
+   {
+     invalidate_heap(v);
+   }
+ 
+   Vector&
+   operator=(Vector&& v)
+   {
+     static_cast<Base&>(*this) = static_cast<const Base&>(v);
+     invalidate_heap(v);
+     return *this;
+   }
+ 
+   void invalidate_heap(Base& v) { v = {1,2,3}; }
+ };
+ 
+ void
+ test_moves()
+ {
+   std::priority_queue<int, Vector> p;
+   p.push(1);
+   p.push(3);
+   p.push(5);
+   p.push(2);
+   p.push(2);
+   p.push(2);
+   p.push(2);
+   std::priority_queue<int, Vector> p2 = std::move(p);
+   VERIFY( check(p) );
+ 
+   // Allocator-extended move constructor:
+   std::priority_queue<int, Vector> p3(std::move(p2), std::allocator<int>());
+   VERIFY( check(p2) );
+ 
+   p2 = std::move(p3);
+   VERIFY( check(p3) );
+ }
+ 
+ int main()
+ {
+   test_moves();
+ }
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc gcc-14-20260514/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc	Thu May  7 22:32:14 2026
--- gcc-14-20260514/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc	Thu May 14 22:32:14 2026
*************** test02()
*** 43,53 ****
    std::vector<PrivateDtor> v;
  }
  
! // { dg-error "value type is destructible" "" { target *-*-* } 0 }
  
  // In Debug Mode the "required from here" errors come from <debug/vector>
  // { dg-error "required from here" "" { target *-*-* } 180 }
- 
- // Needed because of PR c++/92193
- // { dg-prune-output "deleted function" }
- // { dg-prune-output "private within this context" }
--- 43,50 ----
    std::vector<PrivateDtor> v;
  }
  
! // { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
! // { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
  
  // In Debug Mode the "required from here" errors come from <debug/vector>
  // { dg-error "required from here" "" { target *-*-* } 180 }
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc gcc-14-20260514/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc	Thu May  7 22:32:14 2026
--- gcc-14-20260514/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc	Thu May 14 22:32:14 2026
*************** test02()
*** 42,49 ****
    std::vector<PrivateDtor> v; // { dg-error "here" }
  }
  
! // { dg-error "value type is destructible" "" { target *-*-* } 0 }
! 
! // Needed because of PR c++/92193
! // { dg-prune-output "deleted function" }
! // { dg-prune-output "private within this context" }
--- 42,46 ----
    std::vector<PrivateDtor> v; // { dg-error "here" }
  }
  
! // { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
! // { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc gcc-14-20260514/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc	Thu May 14 22:32:14 2026
***************
*** 0 ****
--- 1,58 ----
+ // { dg-do run }
+ 
+ #include <sstream>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   const int n = 20;
+   const char data[n] = "abcde";
+   char buf[n] = "0123456789";
+   std::string expected("abcde56789\0\0\0\0\0\0\0\0\0\0", n);
+ 
+   std::ostringstream out;
+   out.rdbuf()->pubsetbuf(buf, n);
+   out << data;
+   VERIFY( out.str() == expected );
+   VERIFY( out.str() == expected );
+ #if __cplusplus >= 201103L
+   VERIFY( std::move(out).str() == expected );
+ #if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
+   expected.clear();
+ #endif
+   VERIFY( out.str() == expected );
+   VERIFY( std::move(out).str() == expected );
+ #endif
+ }
+ 
+ void
+ test02()
+ {
+   const int n = 20;
+   const char data[n] = "abcde";
+   char buf[n] = "0123456789";
+   std::string expected("abcde56789\0\0\0\0\0\0\0\0\0\0", n);
+ 
+   std::ostringstream out;
+   out << std::string(n * 2, 'a');
+   VERIFY( out.str() == std::string(n * 2, 'a') );
+   out.rdbuf()->pubsetbuf(buf, n);
+   out << data; // writes 6 chars
+   VERIFY( out.str() == expected );
+   VERIFY( out.str() == expected );
+ #if __cplusplus >= 201103L
+   VERIFY( std::move(out).str() == expected );
+ #if __cplusplus >= 202002L && _GLIBCXX_USE_CXX11_ABI
+   expected.clear();
+ #endif
+   VERIFY( out.str() == expected );
+   VERIFY( std::move(out).str() == expected );
+ #endif
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/27_io/filesystem/path/concat/120029.cc gcc-14-20260514/libstdc++-v3/testsuite/27_io/filesystem/path/concat/120029.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/27_io/filesystem/path/concat/120029.cc	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/libstdc++-v3/testsuite/27_io/filesystem/path/concat/120029.cc	Thu May 14 22:32:14 2026
***************
*** 0 ****
--- 1,72 ----
+ // { dg-do run { target c++17 } }
+ 
+ // Bug libstdc++/120029
+ // Dangling iterator usage in path::operator+=(const path& p) when this == p
+ 
+ #include <filesystem>
+ #include <testsuite_hooks.h>
+ 
+ namespace fs = std::filesystem;
+ 
+ void
+ test_root_dir()
+ {
+   fs::path p = "/";
+   p += p;
+   p += p;
+   VERIFY( p == "////" );
+   p += p.filename();
+   VERIFY( p == "////" );
+   p += *std::prev(p.end());
+   VERIFY( p == "////" );
+ }
+ 
+ void
+ test_root_name()
+ {
+   fs::path p = "C:/";
+   p += p;
+   p += p;
+   VERIFY( p == "C:/C:/C:/C:/" );
+   p += p.filename();
+   VERIFY( p == "C:/C:/C:/C:/" );
+   p += *std::prev(p.end());
+   VERIFY( p == "C:/C:/C:/C:/" );
+ }
+ 
+ void
+ test_filename()
+ {
+   fs::path p = "file";
+   p += p;
+   p += p;
+   VERIFY( p == "filefilefilefile" );
+   p += p.filename();
+   VERIFY( p == "filefilefilefilefilefilefilefile" );
+   p += *std::prev(p.end());
+   VERIFY( p == "filefilefilefilefilefilefilefilefilefilefilefilefilefilefilefile" );
+ }
+ 
+ void
+ test_multi()
+ {
+   fs::path p = "/home/username/Documents/mu";
+   p += p;
+   p += p;
+   VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu" );
+   p += p.filename();
+   VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mumu" );
+   p += *std::prev(p.end());
+   VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mumumumu" );
+   auto n = std::distance(p.begin(), p.end());
+   for (int i = 0; i < n; ++i)
+     p += *std::next(p.begin(), i);
+ }
+ 
+ int main()
+ {
+   test_root_dir();
+   test_root_name();
+   test_filename();
+   test_multi();
+ }
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/experimental/filesystem/path/concat/120029.cc gcc-14-20260514/libstdc++-v3/testsuite/experimental/filesystem/path/concat/120029.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/experimental/filesystem/path/concat/120029.cc	Thu Jan  1 00:00:00 1970
--- gcc-14-20260514/libstdc++-v3/testsuite/experimental/filesystem/path/concat/120029.cc	Thu May 14 22:32:14 2026
***************
*** 0 ****
--- 1,74 ----
+ // { dg-options "-DUSE_FILESYSTEM_TS -lstdc++fs" }
+ // { dg-do run { target c++11 } }
+ // { dg-require-filesystem-ts "" }
+ 
+ // Bug libstdc++/120029
+ // Dangling iterator usage in path::operator+=(const path& p) when this == p
+ 
+ #include <experimental/filesystem>
+ #include <testsuite_hooks.h>
+ 
+ namespace fs = std::experimental::filesystem;
+ 
+ void
+ test_root_dir()
+ {
+   fs::path p = "/";
+   p += p;
+   p += p;
+   VERIFY( p == "////" );
+   p += p.filename();
+   VERIFY( p == "////////" );
+   p += *std::prev(p.end());
+   VERIFY( p == "////////////////" );
+ }
+ 
+ void
+ test_root_name()
+ {
+   fs::path p = "C:/";
+   p += p;
+   p += p;
+   VERIFY( p == "C:/C:/C:/C:/" );
+   p += p.filename(); // For Filesystem TS the filename is "."
+   VERIFY( p == "C:/C:/C:/C:/." );
+   p += *std::prev(p.end());
+   VERIFY( p == "C:/C:/C:/C:/.." );
+ }
+ 
+ void
+ test_filename()
+ {
+   fs::path p = "file";
+   p += p;
+   p += p;
+   VERIFY( p == "filefilefilefile" );
+   p += p.filename();
+   VERIFY( p == "filefilefilefilefilefilefilefile" );
+   p += *std::prev(p.end());
+   VERIFY( p == "filefilefilefilefilefilefilefilefilefilefilefilefilefilefilefile" );
+ }
+ 
+ void
+ test_multi()
+ {
+   fs::path p = "/home/username/Documents/mu";
+   p += p;
+   p += p;
+   VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu" );
+   p += p.filename();
+   VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mumu" );
+   p += *std::prev(p.end());
+   VERIFY( p == "/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mu/home/username/Documents/mumumumu" );
+   auto n = std::distance(p.begin(), p.end());
+   for (int i = 0; i < n; ++i)
+     p += *std::next(p.begin(), i);
+ }
+ 
+ int main()
+ {
+   test_root_dir();
+   test_root_name();
+   test_filename();
+   test_multi();
+ }
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/std/time/clock/file/io.cc gcc-14-20260514/libstdc++-v3/testsuite/std/time/clock/file/io.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/std/time/clock/file/io.cc	Thu May  7 22:32:14 2026
--- gcc-14-20260514/libstdc++-v3/testsuite/std/time/clock/file/io.cc	Thu May 14 22:32:14 2026
*************** test_format()
*** 32,37 ****
--- 32,45 ----
    auto ft = clock_cast<file_clock>(sys_days(2024y/January/21)) + 0ms + 2.5s;
    s = std::format("{}", ft);
    VERIFY( s == "2024-01-21 00:00:02.500");
+ 
+   const std::chrono::file_time<std::chrono::seconds> t0{};
+   s = std::format("{:%Z %z %Ez %Oz}", t0);
+   VERIFY( s == "UTC +0000 +00:00 +00:00" );
+ 
+   s = std::format("{}", t0);
+   // chrono::file_clock epoch is unspecified, so this is libstdc++-specific.
+   VERIFY( s == "2174-01-01 00:00:00" );
  }
  
  void
*************** test_parse()
*** 49,54 ****
--- 57,77 ----
    VERIFY( tp == clock_cast<file_clock>(expected) );
    VERIFY( abbrev == "BST" );
    VERIFY( offset == 60min );
+ 
+   // Test round trip
+   std::stringstream ss;
+   ss << clock_cast<file_clock>(expected) << " 0123456";
+   VERIFY( ss >> parse("%F %T %z%Z", tp, abbrev, offset) );
+   VERIFY( ss.eof() );
+   VERIFY( (tp + offset) == clock_cast<file_clock>(expected) );
+   VERIFY( abbrev == "456" );
+   VERIFY( offset == (1h + 23min) );
+ 
+   ss.str("");
+   ss.clear();
+   ss << file_time<seconds>{};
+   VERIFY( ss >> parse("%F %T", tp) );
+   VERIFY( tp.time_since_epoch() == 0s );
  }
  
  int main()
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/std/time/clock/gps/io.cc gcc-14-20260514/libstdc++-v3/testsuite/std/time/clock/gps/io.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/std/time/clock/gps/io.cc	Thu May  7 22:32:14 2026
--- gcc-14-20260514/libstdc++-v3/testsuite/std/time/clock/gps/io.cc	Thu May 14 22:32:14 2026
*************** test_ostream()
*** 22,28 ****
    ss << gt;
    VERIFY( ss.str() == "2000-01-01 00:00:13" );
  
-   gps_time<duration<float>> gtf = gt;
    ss.str("");
    ss.clear();
    ss << (gps_time<duration<long double>>(gt) + 20ms);
--- 22,27 ----
*************** test_format()
*** 43,55 ****
    // PR libstdc++/113500
    s = std::format("{}", gt + 150ms + 10.5s);
    VERIFY( s == "2000-01-01 00:00:23.650" );
  }
  
  void
  test_parse()
  {
    using namespace std::chrono;
!   const sys_seconds expected = sys_days(2023y/August/9) + 20h + 44min + 3s;
    gps_seconds tp;
  
    minutes offset;
--- 42,60 ----
    // PR libstdc++/113500
    s = std::format("{}", gt + 150ms + 10.5s);
    VERIFY( s == "2000-01-01 00:00:23.650" );
+ 
+   s = std::format("{:%Z %z %Ez %Oz}", gt);
+   VERIFY( s == "GPS +0000 +00:00 +00:00" );
+ 
+   s = std::format("{}", gps_seconds{});
+   VERIFY( s == "1980-01-06 00:00:00" );
  }
  
  void
  test_parse()
  {
    using namespace std::chrono;
!   const sys_seconds expected = sys_days(2023y/August/9) + 20h + 43min + 45s;
    gps_seconds tp;
  
    minutes offset;
*************** test_parse()
*** 60,65 ****
--- 65,84 ----
    VERIFY( tp == clock_cast<gps_clock>(expected) );
    VERIFY( abbrev == "BST" );
    VERIFY( offset == 60min );
+ 
+   // Test round trip
+   std::stringstream ss;
+   ss << clock_cast<gps_clock>(expected) << " GPS -1234";
+   VERIFY( ss >> parse("%F %T %Z %z", tp, abbrev, offset) );
+   VERIFY( ! ss.eof() );
+   VERIFY( (tp + offset) == clock_cast<gps_clock>(expected) );
+   VERIFY( abbrev == "GPS" );
+   VERIFY( offset == -(12h + 34min) );
+ 
+   ss.str("");
+   ss << gps_seconds{};
+   VERIFY( ss >> parse("%F %T", tp) );
+   VERIFY( tp.time_since_epoch() == 0s );
  }
  
  int main()
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/std/time/clock/local/io.cc gcc-14-20260514/libstdc++-v3/testsuite/std/time/clock/local/io.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/std/time/clock/local/io.cc	Thu May  7 22:32:14 2026
--- gcc-14-20260514/libstdc++-v3/testsuite/std/time/clock/local/io.cc	Thu May 14 22:32:14 2026
***************
*** 8,21 ****
  void
  test_ostream()
  {
    using std::format;
    using namespace std::chrono;
  
!   auto st = sys_days{2000y/January/1};
!   auto tt = clock_cast<tai_clock>(st);
  
!   auto s = format("{0:%F %T %Z} == {1:%F %T %Z}", st, tt);
!   VERIFY( s == "2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI" );
  }
  
  void
--- 8,97 ----
  void
  test_ostream()
  {
+   using namespace std::chrono;
+ 
+   auto lt = local_time<seconds>(1722198122s);
+ 
+   std::ostringstream ss;
+   ss << lt;
+   auto s = ss.str();
+   ss.str("");
+   ss.clear();
+   ss << sys_time<seconds>{lt.time_since_epoch()};
+   auto s2 = ss.str();
+   VERIFY( s == s2 );
+ }
+ 
+ void
+ test_format()
+ {
    using std::format;
    using namespace std::chrono;
  
!   auto lt = local_seconds(1722198122s);
  
! #if __cpp_exceptions
!   auto args = std::make_format_args(lt);
!   try
!   {
!     (void) std::vformat("{:%Z}", args);
!     VERIFY(false);
!   }
!   catch (const std::format_error&)
!   {
!   }
!   try
!   {
!     (void) std::vformat("{:%z}", args);
!     VERIFY(false);
!   }
!   catch (const std::format_error&)
!   {
!   }
! #endif
! 
!   auto s = format("{0:%F %T %a}", lt);
!   VERIFY( s == "2024-07-28 20:22:02 Sun" );
! 
!   s = format("{}", lt);
!   VERIFY( s == "2024-07-28 20:22:02" );
! 
!   // Test formatting for chrono::local_time_format and local-time-format-t too:
!   auto ltf = local_time_format(lt);
!   s = std::format("{:%F %T %a %b}", ltf);
!   VERIFY( s == "2024-07-28 20:22:02 Sun Jul" );
! #if __cpp_exceptions
!   try
!   {
!     (void) std::format("{:%Z}", ltf);
!     VERIFY(false);
!   }
!   catch (const std::format_error&)
!   {
!   }
!   try
!   {
!     (void) std::format("{:%z}", ltf);
!     VERIFY(false);
!   }
!   catch (const std::format_error&)
!   {
!   }
! #endif
!   std::string abbrev = "FOO";
!   seconds off = -3600s;
!   ltf = local_time_format(lt, &abbrev, &off);
!   s = std::format("{}", ltf);
!   VERIFY( s == "2024-07-28 20:22:02 FOO" );
!   s = std::format("{:%Z %T %F %z %Ez}", ltf);
!   __builtin_puts(s.c_str());
!   VERIFY( s == "FOO 20:22:02 2024-07-28 -0100 -01:00" );
! 
!   s = std::format("{}", local_seconds{});
!   VERIFY( s == "1970-01-01 00:00:00" );
! 
!   s = std::format("{}", local_days{}); // PR libstdc++/120293
!   VERIFY( s == "1970-01-01" );
  }
  
  void
*************** test_parse()
*** 33,42 ****
--- 109,133 ----
    VERIFY( tp == local_seconds(expected.time_since_epoch()) );
    VERIFY( abbrev == "BST" );
    VERIFY( offset == 60min );
+ 
+   // Test round trip
+   std::stringstream ss;
+   ss << local_seconds{expected.time_since_epoch()} << " X 0123";
+   VERIFY( ss >> parse("%F %T %Z %z", tp, abbrev, offset) );
+   VERIFY( ! ss.eof() );
+   VERIFY( tp == local_seconds{expected.time_since_epoch()} );
+   VERIFY( abbrev == "X" );
+   VERIFY( offset == (1h + 23min) );
+ 
+   ss.str("");
+   ss << local_seconds{};
+   VERIFY( ss >> parse("%F %T", tp) );
+   VERIFY( tp.time_since_epoch() == 0s );
  }
  
  int main()
  {
    test_ostream();
+   test_format();
    test_parse();
  }
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/std/time/clock/system/io.cc gcc-14-20260514/libstdc++-v3/testsuite/std/time/clock/system/io.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/std/time/clock/system/io.cc	Thu May  7 22:32:14 2026
--- gcc-14-20260514/libstdc++-v3/testsuite/std/time/clock/system/io.cc	Thu May 14 22:32:14 2026
*************** test_format()
*** 64,76 ****
  		 " | 25.708 | 17:26:25.708 | 1 | 51 | 51 | 1 | 51 | 12/19/22"
  		 " | 17:26:25 | 22 | 2022 | +0000 | UTC" );
  
    auto loc = std::locale::classic();
    auto smod = std::format(loc, "{:%Ec %EC %Od %Oe %OH %OI %Om %OM %OS %Ou %OU"
  			       " %Ow %OW %Ex %EX %Oy %Ey %EY %Ez %Oz}", t);
    s = std::format("{:%c %C %d %e %H %I %m %M %S %u %U"
  		  " %w %W %x %X %y %y %Y +00:00 +00:00}",
! 		  std::chrono::time_point_cast<std::chrono::seconds>(t));
    VERIFY( smod == s );
  }
  
  void
--- 64,82 ----
  		 " | 25.708 | 17:26:25.708 | 1 | 51 | 51 | 1 | 51 | 12/19/22"
  		 " | 17:26:25 | 22 | 2022 | +0000 | UTC" );
  
+   auto st = std::chrono::time_point_cast<std::chrono::seconds>(t);
    auto loc = std::locale::classic();
    auto smod = std::format(loc, "{:%Ec %EC %Od %Oe %OH %OI %Om %OM %OS %Ou %OU"
  			       " %Ow %OW %Ex %EX %Oy %Ey %EY %Ez %Oz}", t);
    s = std::format("{:%c %C %d %e %H %I %m %M %S %u %U"
  		  " %w %W %x %X %y %y %Y +00:00 +00:00}",
! 		  st);
    VERIFY( smod == s );
+ 
+   s = std::format("{}", t);
+   VERIFY( s == "2022-12-19 17:26:25.708" );
+   s = std::format("{0:} {0:=<21}", st);
+   VERIFY( s == "2022-12-19 17:26:25 2022-12-19 17:26:25==" );
  }
  
  void
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/std/time/clock/tai/io.cc gcc-14-20260514/libstdc++-v3/testsuite/std/time/clock/tai/io.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/std/time/clock/tai/io.cc	Thu May  7 22:32:14 2026
--- gcc-14-20260514/libstdc++-v3/testsuite/std/time/clock/tai/io.cc	Thu May 14 22:32:14 2026
*************** test_ostream()
*** 16,21 ****
--- 16,46 ----
  
    auto s = format("{0:%F %T %Z} == {1:%F %T %Z}", st, tt);
    VERIFY( s == "2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI" );
+ 
+   s = std::format("{:=>21}", tt);
+   VERIFY( s == "==2000-01-01 00:00:32" );
+ }
+ 
+ void
+ test_format()
+ {
+   using std::format;
+   using namespace std::chrono;
+ 
+   auto st = sys_days{2000y/January/1};
+   auto tt = clock_cast<tai_clock>(st);
+   auto s = std::format("{}", tt);
+   VERIFY( s == "2000-01-01 00:00:32" );
+ 
+   // PR libstdc++/113500
+   s = std::format("{}", tt + 150ms);
+   VERIFY( s == "2000-01-01 00:00:32.150" );
+ 
+   s = std::format("{:%Z %z %Ez %Oz}", tt);
+   VERIFY( s == "TAI +0000 +00:00 +00:00" );
+ 
+   s = std::format("{}", tai_seconds{});
+   VERIFY( s == "1958-01-01 00:00:00" );
  }
  
  void
*************** test_parse()
*** 27,42 ****
  
    minutes offset;
    std::string abbrev;
!   std::istringstream is("8/9/23 214403 +1 BST#");
    VERIFY( is >> parse("%D %2H%2M%2S %Oz %Z", tp, abbrev, offset) );
    VERIFY( ! is.eof() );
    VERIFY( tp == clock_cast<tai_clock>(expected) );
    VERIFY( abbrev == "BST" );
    VERIFY( offset == 60min );
  }
  
  int main()
  {
    test_ostream();
    test_parse();
  }
--- 52,82 ----
  
    minutes offset;
    std::string abbrev;
!   std::istringstream is("8/9/23 214440 +1 BST#");
    VERIFY( is >> parse("%D %2H%2M%2S %Oz %Z", tp, abbrev, offset) );
    VERIFY( ! is.eof() );
    VERIFY( tp == clock_cast<tai_clock>(expected) );
    VERIFY( abbrev == "BST" );
    VERIFY( offset == 60min );
+ 
+   // Test round trip
+   std::stringstream ss;
+   ss << clock_cast<tai_clock>(expected) << " TAI 0123";
+   VERIFY( ss >> parse("%F %T %Z %z", tp, abbrev, offset) );
+   VERIFY( ! ss.eof() );
+   VERIFY( (tp + offset) == clock_cast<tai_clock>(expected) );
+   VERIFY( abbrev == "TAI" );
+   VERIFY( offset == (1h + 23min) );
+ 
+   ss.str("");
+   ss << tai_seconds{};
+   VERIFY( ss >> parse("%F %T", tp) );
+   VERIFY( tp.time_since_epoch() == 0s );
  }
  
  int main()
  {
    test_ostream();
+   test_format();
    test_parse();
  }
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/std/time/clock/utc/io.cc gcc-14-20260514/libstdc++-v3/testsuite/std/time/clock/utc/io.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/std/time/clock/utc/io.cc	Thu May  7 22:32:14 2026
--- gcc-14-20260514/libstdc++-v3/testsuite/std/time/clock/utc/io.cc	Thu May 14 22:32:14 2026
*************** test_format()
*** 116,121 ****
--- 116,128 ----
    // PR libstdc++/113500
    s = std::format("{}", leap + 100ms + 2.5s);
    VERIFY( s == "2017-01-01 00:00:01.600");
+ 
+   std::chrono::utc_seconds t0{};
+   s = std::format("{:%Z %z %Ez %Oz}", t0);
+   VERIFY( s == "UTC +0000 +00:00 +00:00" );
+ 
+   s = std::format("{}", t0);
+   VERIFY( s == "1970-01-01 00:00:00" );
  }
  
  void
*************** test_parse()
*** 146,151 ****
--- 153,173 ----
    VERIFY( is >> parse("%G-W%V-%u %T", tp) );
    VERIFY( ! is.eof() );
    VERIFY( tp == clock_cast<utc_clock>(expected) );
+ 
+   // Test round trip
+   std::stringstream ss;
+   ss << clock_cast<utc_clock>(expected) << " 0012 UTC";
+   VERIFY( ss >> parse("%F %T %z %Z", tp, abbrev, offset) );
+   VERIFY( ss.eof() );
+   VERIFY( (tp + offset) == clock_cast<utc_clock>(expected) );
+   VERIFY( abbrev == "UTC" );
+   VERIFY( offset == 12min );
+ 
+   ss.str("");
+   ss.clear();
+   ss << utc_seconds{};
+   VERIFY( ss >> parse("%F %T", tp) );
+   VERIFY( tp.time_since_epoch() == 0s );
  }
  
  int main()
diff -Nrcpad gcc-14-20260507/libstdc++-v3/testsuite/std/time/zoned_time/io.cc gcc-14-20260514/libstdc++-v3/testsuite/std/time/zoned_time/io.cc
*** gcc-14-20260507/libstdc++-v3/testsuite/std/time/zoned_time/io.cc	Thu May  7 22:32:14 2026
--- gcc-14-20260514/libstdc++-v3/testsuite/std/time/zoned_time/io.cc	Thu May 14 22:32:14 2026
*************** test_format()
*** 37,42 ****
--- 37,43 ----
  	       " | 25.708 | 12:26:25.708 | 1 | 51 | 51 | 1 | 51 | 12/19/22"
  	       " | 12:26:25 | 22 | 2022 | -0500 | EST" );
  
+ #ifdef _GLIBCXX_USE_WCHAR_T
    std::wstring ws = std::format(L"{:%a | %A | %b | %B | %c"
  				 " | %C | %d | %D | %e | %F | %g | %G | %h"
  				 " | %H | %I | %j | %m | %M | %p | %r | %R"
*************** test_format()
*** 47,52 ****
--- 48,54 ----
  		 " | 12 | 12 | 353 | 12 | 26 | PM | 12:26:25 PM | 12:26"
  		 " | 25.708 | 12:26:25.708 | 1 | 51 | 51 | 1 | 51 | 12/19/22"
  		 " | 12:26:25 | 22 | 2022 | -0500 | EST" );
+ #endif
  
    auto loc = std::locale::classic();
    auto smod = std::format(loc, "{:%Ec %EC %Od %Oe %OH %OI %Om %OM %OS %Ou %OU"
*************** test_format()
*** 55,60 ****
--- 57,71 ----
  		  " %w %W %x %X %y %y %Y -05:00 -05:00}",
  		  zoned_time<seconds>(zone, time_point_cast<seconds>(t)));
    VERIFY( smod == s );
+ 
+   s = std::format("{}", zt);
+   VERIFY( s == "2022-12-19 12:26:25.708 EST" );
+   s = std::format("{1:=>30}", 1, zt);
+   VERIFY( s == "===2022-12-19 12:26:25.708 EST" );
+ #ifdef _GLIBCXX_USE_WCHAR_T
+   ws = std::format(L"{:+^34}", zoned_time<microseconds>(zone, t));
+   VERIFY( ws == L"++2022-12-19 12:26:25.708000 EST++" );
+ #endif
  }
  
  int main()
