diff -Nrcpad gcc-15-20260508/LAST_UPDATED gcc-15-20260515/LAST_UPDATED
*** gcc-15-20260508/LAST_UPDATED	Fri May  8 22:32:19 2026
--- gcc-15-20260515/LAST_UPDATED	Fri May 15 22:32:21 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-15 revision 2e0170d1304aeeeeaff0e4d3b58f48ef8dfd83cd
--- 1 ----
! Obtained from git: releases/gcc-15 revision 0777b034250d57793379eb242722b569c72d435b
diff -Nrcpad gcc-15-20260508/MD5SUMS gcc-15-20260515/MD5SUMS
*** gcc-15-20260508/MD5SUMS	Fri May  8 22:32:24 2026
--- gcc-15-20260515/MD5SUMS	Fri May 15 22:32:26 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20260508.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20260515.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 25,31 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 880bea14a71d3d3ca2deecdc95cecddd  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
--- 25,31 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 96eb6cf2be466a611d12b52249cd8822  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 514,520 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 95617a7143dd1529385ee8ba837bfc3a  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 514,520 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 9435f2d32ae391ea198f5d5032267c6a  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 551,557 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 22ae0ce0d52b04c0711a8ded859436d8  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 551,557 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 0e9d668409310c7d5e7ef72d384c04fb  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ec6799501b2eb2923d5de6a66169dbd2  gcc/ON
*** 563,569 ****
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 27e32df26c006a24818ede58755e2df8  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 563,569 ----
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 206ea122de4c99ca541552082f529590  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** f1c71b64e1c84e240c7b5aea7331a32a  gcc/ad
*** 738,744 ****
  b197c097238ab059c90fd0c9452e6a76  gcc/ada/einfo-utils.adb
  9294b28a2b5738443be8b4fcd83a2391  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! c8215fc59c32d3e426200668c4fc8caa  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
--- 738,744 ----
  b197c097238ab059c90fd0c9452e6a76  gcc/ada/einfo-utils.adb
  9294b28a2b5738443be8b4fcd83a2391  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! e2f638673992d25b9275953519599e33  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
*************** ad6d5aa3f46cecc1cc7e6f14db186364  gcc/ad
*** 796,802 ****
  116919038aa6e7d0ec9ce9ab609f0bc2  gcc/ada/exp_dist.ads
  c5ca94cffafc304193b3e436bceb3fb3  gcc/ada/exp_fixd.adb
  9633ee578c6cb9ea5577a5cade68bdcc  gcc/ada/exp_fixd.ads
! 167a195d76a1493bfa2c789250e5b9ea  gcc/ada/exp_imgv.adb
  9fc56117157205ad4de1209b42148d67  gcc/ada/exp_imgv.ads
  9f1bbeb12a811457cfb88a7e17ca9740  gcc/ada/exp_intr.adb
  923affd79668e065bae4808313b11bf9  gcc/ada/exp_intr.ads
--- 796,802 ----
  116919038aa6e7d0ec9ce9ab609f0bc2  gcc/ada/exp_dist.ads
  c5ca94cffafc304193b3e436bceb3fb3  gcc/ada/exp_fixd.adb
  9633ee578c6cb9ea5577a5cade68bdcc  gcc/ada/exp_fixd.ads
! 6e5168db26034525c37e53a6122f3b06  gcc/ada/exp_imgv.adb
  9fc56117157205ad4de1209b42148d67  gcc/ada/exp_imgv.ads
  9f1bbeb12a811457cfb88a7e17ca9740  gcc/ada/exp_intr.adb
  923affd79668e065bae4808313b11bf9  gcc/ada/exp_intr.ads
*************** da03d35f4d69ea6f735edce7df124c15  gcc/ad
*** 859,865 ****
  a66c2acc9fb0d70b4c6209180d10b200  gcc/ada/gcc-interface/utils.cc
  7b0d708fd189018a87468ef844fc3811  gcc/ada/gcc-interface/utils2.cc
  20ab1d2ee73423b8b0fababbae54659c  gcc/ada/gen_il-fields.ads
! 580645a6185724324a0a7aad4f86301c  gcc/ada/gen_il-gen-gen_entities.adb
  ebed5be70c8d5e75b9d3e8ea56e94729  gcc/ada/gen_il-gen-gen_nodes.adb
  fa07e4c6240b8cfff6d7d98112fee236  gcc/ada/gen_il-gen.adb
  c979a98c6b57608c79d578871fa0c58a  gcc/ada/gen_il-gen.ads
--- 859,865 ----
  a66c2acc9fb0d70b4c6209180d10b200  gcc/ada/gcc-interface/utils.cc
  7b0d708fd189018a87468ef844fc3811  gcc/ada/gcc-interface/utils2.cc
  20ab1d2ee73423b8b0fababbae54659c  gcc/ada/gen_il-fields.ads
! 2f546cdb7448f908e8cb114df99cc70d  gcc/ada/gen_il-gen-gen_entities.adb
  ebed5be70c8d5e75b9d3e8ea56e94729  gcc/ada/gen_il-gen-gen_nodes.adb
  fa07e4c6240b8cfff6d7d98112fee236  gcc/ada/gen_il-gen.adb
  c979a98c6b57608c79d578871fa0c58a  gcc/ada/gen_il-gen.ads
*************** d9c0725d061adffdf400457d91be3aed  gcc/c/
*** 3259,3265 ****
  5466f6371f54fce4ae89206f7792bd01  gcc/c/c-lang.h
  dec36cf5c6a91b9509a566b6c8625548  gcc/c/c-objc-common.cc
  f9dc3d10fbfaa2d38905bc4e2579ba2b  gcc/c/c-objc-common.h
! 8deedc954a73dc5f92b48f4cf8de9955  gcc/c/c-parser.cc
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  14bdaa79be5634bd1cc7ff907c7a444b  gcc/c/c-tree.h
--- 3259,3265 ----
  5466f6371f54fce4ae89206f7792bd01  gcc/c/c-lang.h
  dec36cf5c6a91b9509a566b6c8625548  gcc/c/c-objc-common.cc
  f9dc3d10fbfaa2d38905bc4e2579ba2b  gcc/c/c-objc-common.h
! 00b5b3a5c994f6892708cad5e4bd35c6  gcc/c/c-parser.cc
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  14bdaa79be5634bd1cc7ff907c7a444b  gcc/c/c-tree.h
*************** ce627f4de03a506a4263a68742891105  gcc/co
*** 3774,3780 ****
  6b425f8df921557284017d42be8efc3c  gcc/config/avr/avr-passes.def
  faa9a440c205461733203401725ce58c  gcc/config/avr/avr-protos.h
  eb753641e5bf09dbcc2be97e61be8767  gcc/config/avr/avr-stdint.h
! 8a849386c979c950c1b2bdb782a79567  gcc/config/avr/avr.cc
  08a0b2010b152c01b9bb5883c3d62b7f  gcc/config/avr/avr.h
  fd2a227251c0157ea7263c83436c3387  gcc/config/avr/avr.md
  01f3921785c44d9f7a522cba81a86fd0  gcc/config/avr/avr.opt
--- 3774,3780 ----
  6b425f8df921557284017d42be8efc3c  gcc/config/avr/avr-passes.def
  faa9a440c205461733203401725ce58c  gcc/config/avr/avr-protos.h
  eb753641e5bf09dbcc2be97e61be8767  gcc/config/avr/avr-stdint.h
! 974976d84962a5b6ff190ebc2f3779ba  gcc/config/avr/avr.cc
  08a0b2010b152c01b9bb5883c3d62b7f  gcc/config/avr/avr.h
  fd2a227251c0157ea7263c83436c3387  gcc/config/avr/avr.md
  01f3921785c44d9f7a522cba81a86fd0  gcc/config/avr/avr.opt
*************** e6d58e7505c28a23d3cd4e70e534521e  gcc/co
*** 3784,3795 ****
  66196007356392102d57b2751db19590  gcc/config/avr/constraints.md
  c6568ca3d3967dc4577de343df313df3  gcc/config/avr/driver-avr.cc
  6ed585b465646e6ca546cf3c7dfb041d  gcc/config/avr/elf.h
! 28aee5cb582edae79e10d384f4fa3141  gcc/config/avr/gen-avr-mmcu-specs.cc
  16aa5070fa9fc0e8ea08da2e81fa07ed  gcc/config/avr/gen-avr-mmcu-texi.cc
  6d9c1db61d58bad0e31aa7b00e2e9ffb  gcc/config/avr/genmultilib.awk
  436f7e20c4996793d1ea94555c59b608  gcc/config/avr/predicates.md
  3ecab14b4beaf91d8871dc902cee93b0  gcc/config/avr/ranges.h
! 179675e6a0350df567e3c94048b799b5  gcc/config/avr/specs.h
  6e6e06457d93dd95436762e8db93c538  gcc/config/avr/stdfix.h
  c9ff75ab151759fe329687b82352f34b  gcc/config/avr/t-avr
  8936068e99e1a52f6c98d17c9b83df34  gcc/config/bfin/bfin-modes.def
--- 3784,3795 ----
  66196007356392102d57b2751db19590  gcc/config/avr/constraints.md
  c6568ca3d3967dc4577de343df313df3  gcc/config/avr/driver-avr.cc
  6ed585b465646e6ca546cf3c7dfb041d  gcc/config/avr/elf.h
! 5b66e60edaae382611699bdfb090bdfc  gcc/config/avr/gen-avr-mmcu-specs.cc
  16aa5070fa9fc0e8ea08da2e81fa07ed  gcc/config/avr/gen-avr-mmcu-texi.cc
  6d9c1db61d58bad0e31aa7b00e2e9ffb  gcc/config/avr/genmultilib.awk
  436f7e20c4996793d1ea94555c59b608  gcc/config/avr/predicates.md
  3ecab14b4beaf91d8871dc902cee93b0  gcc/config/avr/ranges.h
! 0945248f84a38536e6ae07c2491065fd  gcc/config/avr/specs.h
  6e6e06457d93dd95436762e8db93c538  gcc/config/avr/stdfix.h
  c9ff75ab151759fe329687b82352f34b  gcc/config/avr/t-avr
  8936068e99e1a52f6c98d17c9b83df34  gcc/config/bfin/bfin-modes.def
*************** b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/co
*** 4204,4210 ****
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
  984423facca351215a6d7f335c0d40bb  gcc/config/i386/i386.cc
  0150b759a527c67bf0c83ed700545456  gcc/config/i386/i386.h
! b11338b14cbd4aba1791f2007169faf0  gcc/config/i386/i386.md
  5a3c6fa6266505bbc0789e269da6e250  gcc/config/i386/i386.opt
  56dd2039e03b3ae92142eb68be464b98  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
--- 4204,4210 ----
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
  984423facca351215a6d7f335c0d40bb  gcc/config/i386/i386.cc
  0150b759a527c67bf0c83ed700545456  gcc/config/i386/i386.h
! f18cf29cbb64fefcd1a9c6956492f539  gcc/config/i386/i386.md
  5a3c6fa6266505bbc0789e269da6e250  gcc/config/i386/i386.opt
  56dd2039e03b3ae92142eb68be464b98  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5501,5507 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 970863258a853054024b1527409edbfe  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5501,5507 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! ac49ba366bd35d54c9c7b6963f196a5b  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** fce8de27014c109814b3f69be6a5d4f6  gcc/cp
*** 5542,5548 ****
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  65891fa261ce5aa3474ed32683a124d3  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! ea043095301b104b0d04f08fa408bb14  gcc/cp/constexpr.cc
  a4fc328db28f375cb129e7d3b1a96683  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
--- 5542,5548 ----
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  65891fa261ce5aa3474ed32683a124d3  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! 1ac6bc6e736a3d77ebbc7270782fc4f5  gcc/cp/constexpr.cc
  a4fc328db28f375cb129e7d3b1a96683  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
*************** a798cdca802a57ffa3473ab610b37c86  gcc/fo
*** 6061,6067 ****
  c93bd28b3de1f9c783e16fc6ec4aab32  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! bf7b7015fd756fe4846bf59b43870c4a  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6061,6067 ----
  c93bd28b3de1f9c783e16fc6ec4aab32  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 979f9ff81b1e591dd1cb91a9003828eb  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** c38eb0f2f19a6cb4b79be761670131e8  gcc/fo
*** 6089,6095 ****
  db21881c77a22fd3dbfe253c364af5ee  gcc/fortran/Make-lang.in
  25a2099206e1596859cfc2d787790f32  gcc/fortran/arith.cc
  6b01ec523f3bee8e2469370d106896e3  gcc/fortran/arith.h
! 1f47886d616538f880e240f661990624  gcc/fortran/array.cc
  59221f5e105887dce9d0c1b7694aa86f  gcc/fortran/bbt.cc
  f50392141734ee3c270214455cbabf98  gcc/fortran/check.cc
  e37adaebb3dd766f8fad75bfa57d49d7  gcc/fortran/class.cc
--- 6089,6095 ----
  db21881c77a22fd3dbfe253c364af5ee  gcc/fortran/Make-lang.in
  25a2099206e1596859cfc2d787790f32  gcc/fortran/arith.cc
  6b01ec523f3bee8e2469370d106896e3  gcc/fortran/arith.h
! 2ea735e94d401cba796d5ac34b8e92fb  gcc/fortran/array.cc
  59221f5e105887dce9d0c1b7694aa86f  gcc/fortran/bbt.cc
  f50392141734ee3c270214455cbabf98  gcc/fortran/check.cc
  e37adaebb3dd766f8fad75bfa57d49d7  gcc/fortran/class.cc
*************** d85e2f2fc3ee4721563bd47719063fb6  gcc/fo
*** 6109,6115 ****
  860343539ea7488e7bb44b94ea2b0f77  gcc/fortran/error.cc
  c51719103621c7d22803dcc683314e14  gcc/fortran/expr.cc
  88fde92a0336c0454c5baa0f3c24888a  gcc/fortran/f95-lang.cc
! 76bb26929c446b45cc1efbf25d27ea82  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
  594106f4945aba24162f5490e0fec580  gcc/fortran/gfortran.h
--- 6109,6115 ----
  860343539ea7488e7bb44b94ea2b0f77  gcc/fortran/error.cc
  c51719103621c7d22803dcc683314e14  gcc/fortran/expr.cc
  88fde92a0336c0454c5baa0f3c24888a  gcc/fortran/f95-lang.cc
! 37c53834b70f08c47e70d4483807b402  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
  594106f4945aba24162f5490e0fec580  gcc/fortran/gfortran.h
*************** f654eecadb8cabd4c371426eb83f08b1  gcc/fo
*** 6139,6146 ****
  8376eba2060129f13c5146a7773b2af7  gcc/fortran/options.cc
  2e829a5546ff491798ea9e9a22f75f9c  gcc/fortran/parse.cc
  09678ef13dc709d251be943d808544b8  gcc/fortran/parse.h
! 8c815c31f49f2be21bde29058fe60166  gcc/fortran/primary.cc
! db182b9f9bffc428002f5b5b6fb821b8  gcc/fortran/resolve.cc
  853897286a4ee54af01b95fad77fb872  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  47b3ac143dd07e65789786d79d86b9d9  gcc/fortran/simplify.cc
--- 6139,6146 ----
  8376eba2060129f13c5146a7773b2af7  gcc/fortran/options.cc
  2e829a5546ff491798ea9e9a22f75f9c  gcc/fortran/parse.cc
  09678ef13dc709d251be943d808544b8  gcc/fortran/parse.h
! 5c2d54d3cd692d45c1ce75bd538ba932  gcc/fortran/primary.cc
! e09da035372e070805f34ad9ed40ef6f  gcc/fortran/resolve.cc
  853897286a4ee54af01b95fad77fb872  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  47b3ac143dd07e65789786d79d86b9d9  gcc/fortran/simplify.cc
*************** a4f5f15bbfd3cf3b780e3a8875ebf0df  gcc/fo
*** 6153,6163 ****
  134a72b3349d427eccb35198acc48a71  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
! 6866300c032ec0247d520a77be27d9fa  gcc/fortran/trans-decl.cc
  01324cafeb9b406383009169af3608b8  gcc/fortran/trans-expr.cc
  2fc2e705f2020d62f54715e4698b69d6  gcc/fortran/trans-intrinsic.cc
  a26cd103074d9ae2f87ac35ba1b90970  gcc/fortran/trans-io.cc
! 861633525188f39f6eac2e6673146d9f  gcc/fortran/trans-openmp.cc
  03aafb32bf3170c38549a2536ebb7e4c  gcc/fortran/trans-stmt.cc
  3e46866176ab0bac5fb67ed27515535d  gcc/fortran/trans-stmt.h
  b798d7499d8f9c9573d942f87340af9e  gcc/fortran/trans-types.cc
--- 6153,6163 ----
  134a72b3349d427eccb35198acc48a71  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
! 17f575af09b1f1abf424e7c5c79836a0  gcc/fortran/trans-decl.cc
  01324cafeb9b406383009169af3608b8  gcc/fortran/trans-expr.cc
  2fc2e705f2020d62f54715e4698b69d6  gcc/fortran/trans-intrinsic.cc
  a26cd103074d9ae2f87ac35ba1b90970  gcc/fortran/trans-io.cc
! 62232a16bc62a73bd54116692688baf7  gcc/fortran/trans-openmp.cc
  03aafb32bf3170c38549a2536ebb7e4c  gcc/fortran/trans-stmt.cc
  3e46866176ab0bac5fb67ed27515535d  gcc/fortran/trans-stmt.h
  b798d7499d8f9c9573d942f87340af9e  gcc/fortran/trans-types.cc
*************** b3a965e425e6cf7888319667faf58da9  gcc/sy
*** 8448,8454 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 43c264e35e79c15d4ee27105c7d9101b  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8448,8454 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 5d48776363bdcd92c2603a3c3edb852f  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** e82c7b7752e66456db57ee27e9f0dea7  gcc/te
*** 13526,13531 ****
--- 13526,13532 ----
  9032f3bb916ba5c274bdfec86c5c4ef5  gcc/testsuite/c-c++-common/pr119618.c
  c9f6665aa9cce2133e7c5f9edba34076  gcc/testsuite/c-c++-common/pr121159.c
  f938d650e5405e1ae04ff131a9239d66  gcc/testsuite/c-c++-common/pr122188.c
+ 4d076347f661059e251ba973750b8ed5  gcc/testsuite/c-c++-common/pr124532.c
  f5dce8e27cfb8a6bfffe57596fecb796  gcc/testsuite/c-c++-common/pr19807-1.c
  8a7d9a8dd4af1ada80ca6a4b3201e073  gcc/testsuite/c-c++-common/pr19807-2.c
  39c0873a2c1c7f951e8b2f90ebc9e12d  gcc/testsuite/c-c++-common/pr19807-3.c
*************** d74bbc201fde13d804d767363c281130  gcc/te
*** 20988,20994 ****
  ad90458ad42ff08d4a1c948d0770dd89  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda14.C
  51978f30a781d2e3a3434b8d371737b6  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda15.C
  4882304f120b6e2ec91e0db6c07d5eb4  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda19.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
--- 20989,20995 ----
  ad90458ad42ff08d4a1c948d0770dd89  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda14.C
  51978f30a781d2e3a3434b8d371737b6  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda15.C
  4882304f120b6e2ec91e0db6c07d5eb4  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda19.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
*** 21856,21861 ****
--- 21857,21863 ----
  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
*************** e95698a38fe4cc0a60b4857fa65742ca  gcc/te
*** 22156,22161 ****
--- 22158,22164 ----
  dd49d8873bb047040bf7f60deb8f644f  gcc/testsuite/g++.dg/cpp2a/no_unique_address13.C
  10563ae733ee31b86846cfb852d66d9d  gcc/testsuite/g++.dg/cpp2a/no_unique_address14.C
  9c8ff2d9f37699b8813711a0c20c7e07  gcc/testsuite/g++.dg/cpp2a/no_unique_address15.C
+ 46008c21cb7f7725a5bfe2a87f3b255d  gcc/testsuite/g++.dg/cpp2a/no_unique_address16.C
  c94ac6fb1a99bf541b66d604620fa09b  gcc/testsuite/g++.dg/cpp2a/no_unique_address2.C
  67a61649264fea12fb7cc5c31bc5313e  gcc/testsuite/g++.dg/cpp2a/no_unique_address3.C
  ca2c81baf4111b5e8e15980b5237a344  gcc/testsuite/g++.dg/cpp2a/no_unique_address4.C
*************** fd0c95fcad577a49c3553f21604c3b61  gcc/te
*** 80453,80458 ****
--- 80456,80462 ----
  5263cb01b17b6df3496a998c2a8e70d8  gcc/testsuite/gcc.target/i386/pr123489.c
  0c572aee98b871b5098fcc5a78b5d069  gcc/testsuite/gcc.target/i386/pr123523.c
  fbfd31ba28ddc5c31ac2fd9d714443bb  gcc/testsuite/gcc.target/i386/pr124056.c
+ d9ed650f309dc0e24daeb25d90c34fa0  gcc/testsuite/gcc.target/i386/pr124316.c
  2ff14347296d11b5e3b328e3957e5191  gcc/testsuite/gcc.target/i386/pr124710-1.c
  79c874a97f648ff278ec1765414620b1  gcc/testsuite/gcc.target/i386/pr124710-2.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
*************** c4c86973cf0938ea1456949849582a2a  gcc/te
*** 103898,103903 ****
--- 103902,103909 ----
  72668677493c036639519f511321445d  gcc/testsuite/gfortran.dg/gomp/polymorphic-mapping-5.f90
  0cdaedb7a34b46ba225e78e6cb7f84fd  gcc/testsuite/gfortran.dg/gomp/polymorphic-mapping.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
*** 103915,103920 ****
--- 103921,103927 ----
  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
  14e2080dbf20d40b1e1572419572cae5  gcc/testsuite/gfortran.dg/gomp/pr115103.f90
  7e57554851ec1cc8a84c063d08c5e85b  gcc/testsuite/gfortran.dg/gomp/pr118790.f90
*************** cc82665e1d54c6a2d5a100788c474853  gcc/te
*** 106551,106556 ****
--- 106558,106564 ----
  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
*** 106753,106759 ****
--- 106761,106770 ----
  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
*** 106762,106767 ****
--- 106773,106779 ----
  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
*** 106844,106849 ****
--- 106856,106862 ----
  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
*************** ec7ae5b41af0b730610dc9a22fa581ed  gcc/te
*** 111610,111615 ****
--- 111623,111629 ----
  a4f52bfabfe2bc7e231d6ecd5aeefaf6  gcc/testsuite/gnat.dg/enum3.adb
  79e91643725fd540a4e8915c24d964f5  gcc/testsuite/gnat.dg/enum4.adb
  59ed0090b7193e032aae3fdff3f91c4f  gcc/testsuite/gnat.dg/enum5.adb
+ 2902659a8dc0155ec00ad737afd98480  gcc/testsuite/gnat.dg/enum6.adb
  9ec6e8c939115d52974c52ebef0dfd47  gcc/testsuite/gnat.dg/enum_rep.adb
  70cecb0f3bbaca4e003491cba4e20cbe  gcc/testsuite/gnat.dg/enum_rep.ads
  3c812d9c40899c50bf02d8f0caaf64e8  gcc/testsuite/gnat.dg/enum_rep2.adb
*************** d19a0449bac1fb497429a88904f3d658  gcc/te
*** 115549,115555 ****
  50c0f03762d429c13fd0302c79d90157  gcc/testsuite/go.test/test/varinit.go
  6447a99ae1e2eec266af1ceab6a7343c  gcc/testsuite/go.test/test/zerodivide.go
  340e08c9aef97a2da8f4cd4568d52675  gcc/testsuite/jit.dg/add-driver-options-testlib.c
! 01bc6b4ba547ea58a271d43b3041aef1  gcc/testsuite/jit.dg/all-non-failing-tests.h
  7bc42e89ae77872c8fc581b4babf1832  gcc/testsuite/jit.dg/create-code-for-hello-world-executable.h
  6599d673695ac45c69f897e7b9643cdb  gcc/testsuite/jit.dg/harness.h
  c2ab8a50f6099a876788d5e2b281249b  gcc/testsuite/jit.dg/jit.exp
--- 115563,115569 ----
  50c0f03762d429c13fd0302c79d90157  gcc/testsuite/go.test/test/varinit.go
  6447a99ae1e2eec266af1ceab6a7343c  gcc/testsuite/go.test/test/zerodivide.go
  340e08c9aef97a2da8f4cd4568d52675  gcc/testsuite/jit.dg/add-driver-options-testlib.c
! f47f41120c0afb4b98eb7248eb58b2c7  gcc/testsuite/jit.dg/all-non-failing-tests.h
  7bc42e89ae77872c8fc581b4babf1832  gcc/testsuite/jit.dg/create-code-for-hello-world-executable.h
  6599d673695ac45c69f897e7b9643cdb  gcc/testsuite/jit.dg/harness.h
  c2ab8a50f6099a876788d5e2b281249b  gcc/testsuite/jit.dg/jit.exp
*************** c1c4ffe41bbf76d4a61fec8d9b42486c  gcc/te
*** 115577,115583 ****
  af0a18ef8912906bb36ca88219c06667  gcc/testsuite/jit.dg/test-calling-external-function.c
  fcf20b943f3e9affe23adec9277064a7  gcc/testsuite/jit.dg/test-calling-function-ptr.c
  e3bf5c17797aeaea60953345b0ec836b  gcc/testsuite/jit.dg/test-cast.c
! 1abc657df5f9cfb2b57bf23048e54d17  gcc/testsuite/jit.dg/test-cold-attribute.c
  dc3f5924516f317d0e822022186a89d9  gcc/testsuite/jit.dg/test-combination.c
  2e035396a65d6176ba9798f667c5621a  gcc/testsuite/jit.dg/test-compile-to-assembler.c
  897c5ab27b1fd560e0e9f30525797a81  gcc/testsuite/jit.dg/test-compile-to-dynamic-library.c
--- 115591,115597 ----
  af0a18ef8912906bb36ca88219c06667  gcc/testsuite/jit.dg/test-calling-external-function.c
  fcf20b943f3e9affe23adec9277064a7  gcc/testsuite/jit.dg/test-calling-function-ptr.c
  e3bf5c17797aeaea60953345b0ec836b  gcc/testsuite/jit.dg/test-cast.c
! 6bfe3202df4a59189a757d8df0af0d9d  gcc/testsuite/jit.dg/test-cold-attribute.c
  dc3f5924516f317d0e822022186a89d9  gcc/testsuite/jit.dg/test-combination.c
  2e035396a65d6176ba9798f667c5621a  gcc/testsuite/jit.dg/test-compile-to-assembler.c
  897c5ab27b1fd560e0e9f30525797a81  gcc/testsuite/jit.dg/test-compile-to-dynamic-library.c
*************** cde7364d679bf019115a37fca70a6f52  gcc/te
*** 115778,115784 ****
  a658e6e3511698723b87be3277ba706d  gcc/testsuite/lib/go-torture.exp
  450868d4f15f0faade8c693e132ee071  gcc/testsuite/lib/go.exp
  8699bdd60911dccd7ce56e96f4032646  gcc/testsuite/lib/hwasan-dg.exp
! 6ad89789be50e108b9f0af832c0ad9ea  gcc/testsuite/lib/lto.exp
  645e8af17b334c4e279636a7b47dacbe  gcc/testsuite/lib/mike-g++.exp
  b2d617c3a17f3ed4084a60722369c3a8  gcc/testsuite/lib/mike-gcc.exp
  bf783dcd14ad74babc1bf3e91cc46055  gcc/testsuite/lib/modules.exp
--- 115792,115798 ----
  a658e6e3511698723b87be3277ba706d  gcc/testsuite/lib/go-torture.exp
  450868d4f15f0faade8c693e132ee071  gcc/testsuite/lib/go.exp
  8699bdd60911dccd7ce56e96f4032646  gcc/testsuite/lib/hwasan-dg.exp
! e2bfccdcb04d164f799a69e297694257  gcc/testsuite/lib/lto.exp
  645e8af17b334c4e279636a7b47dacbe  gcc/testsuite/lib/mike-g++.exp
  b2d617c3a17f3ed4084a60722369c3a8  gcc/testsuite/lib/mike-gcc.exp
  bf783dcd14ad74babc1bf3e91cc46055  gcc/testsuite/lib/modules.exp
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 132438,132444 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! f2ac188da879b8a31eee1a8aa2ed34d2  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 132452,132458 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 459caded79fe299337969b169387b260  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** ced0f87b396ff4a012df9de2ab66f94f  libstd
*** 133821,133827 ****
  2a2983a946c8ff2f85e6ee4fedaafdc7  libstdc++-v3/include/std/bit
  a2b26793e4e6009d6ffdd683cc309894  libstdc++-v3/include/std/bitset
  b992fa2a4889a430ba299555276bcf81  libstdc++-v3/include/std/charconv
! e484f02a336cd08699671bd956a54a98  libstdc++-v3/include/std/chrono
  a90e2b9ed2c236c92f3f2387a39a0ac8  libstdc++-v3/include/std/codecvt
  73ad0b394fec64fa4f07972401973741  libstdc++-v3/include/std/complex
  202856e763349869c3ec034d584405ca  libstdc++-v3/include/std/concepts
--- 133835,133841 ----
  2a2983a946c8ff2f85e6ee4fedaafdc7  libstdc++-v3/include/std/bit
  a2b26793e4e6009d6ffdd683cc309894  libstdc++-v3/include/std/bitset
  b992fa2a4889a430ba299555276bcf81  libstdc++-v3/include/std/charconv
! 3bf203fb1e55bba4dd7bc24547df175d  libstdc++-v3/include/std/chrono
  a90e2b9ed2c236c92f3f2387a39a0ac8  libstdc++-v3/include/std/codecvt
  73ad0b394fec64fa4f07972401973741  libstdc++-v3/include/std/complex
  202856e763349869c3ec034d584405ca  libstdc++-v3/include/std/concepts
*************** ee32950ba29d7cda3e788de0776d8c16  libstd
*** 133870,133876 ****
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
  4b3e4b7e34641d76a52fcd6e71a90970  libstdc++-v3/include/std/span
  148ae450ade3ff3a68ef3e55c1b19e46  libstdc++-v3/include/std/spanstream
! 885b7d229d8dcf3ad5bb087b5a5a1fb4  libstdc++-v3/include/std/sstream
  996b935103050e40bdc3c486d0a1dc98  libstdc++-v3/include/std/stack
  ceee5b8e3956e8b0b5cf0c37821eb61a  libstdc++-v3/include/std/stacktrace
  03274bc404214a9a2c8235a5ae90f4fd  libstdc++-v3/include/std/stdexcept
--- 133884,133890 ----
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
  4b3e4b7e34641d76a52fcd6e71a90970  libstdc++-v3/include/std/span
  148ae450ade3ff3a68ef3e55c1b19e46  libstdc++-v3/include/std/spanstream
! efc4373db67a73c48dd730c0477ab593  libstdc++-v3/include/std/sstream
  996b935103050e40bdc3c486d0a1dc98  libstdc++-v3/include/std/stack
  ceee5b8e3956e8b0b5cf0c37821eb61a  libstdc++-v3/include/std/stacktrace
  03274bc404214a9a2c8235a5ae90f4fd  libstdc++-v3/include/std/stdexcept
*************** c9dcdd9b0b5c806e787dc702505f57e1  libstd
*** 134161,134167 ****
  ac9644e2d8390587379964f6b7e51ef0  libstdc++-v3/src/c++17/floating_to_chars.cc
  7c668fe3f79c2610268b1bc631741ad5  libstdc++-v3/src/c++17/fs_dir.cc
  38394abc0e937c8a15f74a60356f174a  libstdc++-v3/src/c++17/fs_ops.cc
! 94b95a511b91830b1c3dbfdf235ec988  libstdc++-v3/src/c++17/fs_path.cc
  3142d663ea92c3978de4c455280d486f  libstdc++-v3/src/c++17/memory_resource.cc
  4f2f44032e04f77de92166a02f76089d  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
--- 134175,134181 ----
  ac9644e2d8390587379964f6b7e51ef0  libstdc++-v3/src/c++17/floating_to_chars.cc
  7c668fe3f79c2610268b1bc631741ad5  libstdc++-v3/src/c++17/fs_dir.cc
  38394abc0e937c8a15f74a60356f174a  libstdc++-v3/src/c++17/fs_ops.cc
! 122d8654e506222baff04d8d59eae218  libstdc++-v3/src/c++17/fs_path.cc
  3142d663ea92c3978de4c455280d486f  libstdc++-v3/src/c++17/memory_resource.cc
  4f2f44032e04f77de92166a02f76089d  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
*************** e66e202fb59625eb933c316b0bf9ee34  libstd
*** 134184,134191 ****
  fc90aab2bcae05d7286b5666cd1f2be8  libstdc++-v3/src/c++20/Makefile.in
  94b3ab191e8fe566a951ac2b4f081c40  libstdc++-v3/src/c++20/format.cc
  939eb3ac7ce3c32a8b2aac493f053893  libstdc++-v3/src/c++20/sstream-inst.cc
! 5f51e6efda14986b9b4932b46f8e73c3  libstdc++-v3/src/c++20/tzdata.zi
! 0ca5db2be138624839e42b66e2e57238  libstdc++-v3/src/c++20/tzdb.cc
  3665d657cc35c7afb8b5cc7bae0ef058  libstdc++-v3/src/c++23/Makefile.am
  d85f3a53465585d54b96880e79456c79  libstdc++-v3/src/c++23/Makefile.in
  3c95970ad4fd23117b63a99dd3241ebe  libstdc++-v3/src/c++23/libstdc++.modules.json.in
--- 134198,134205 ----
  fc90aab2bcae05d7286b5666cd1f2be8  libstdc++-v3/src/c++20/Makefile.in
  94b3ab191e8fe566a951ac2b4f081c40  libstdc++-v3/src/c++20/format.cc
  939eb3ac7ce3c32a8b2aac493f053893  libstdc++-v3/src/c++20/sstream-inst.cc
! e868493d039d86bca105c23a24b87383  libstdc++-v3/src/c++20/tzdata.zi
! b0d7e2c6204a3d2c19d2cea526f2a4df  libstdc++-v3/src/c++20/tzdb.cc
  3665d657cc35c7afb8b5cc7bae0ef058  libstdc++-v3/src/c++23/Makefile.am
  d85f3a53465585d54b96880e79456c79  libstdc++-v3/src/c++23/Makefile.in
  3c95970ad4fd23117b63a99dd3241ebe  libstdc++-v3/src/c++23/libstdc++.modules.json.in
*************** e04480d7145ce32dec8a7341a42191e0  libstd
*** 141054,141059 ****
--- 141068,141074 ----
  f8aa587512ea87bee4653998bc8698a1  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1057.cc
  b87fd9bae83b808001e3ee87d0feb501  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/9404-2.cc
  7de37da1e279afed871c3828a6207e71  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/1.cc
+ 977a013f60bef4a12b598777d9f03bd4  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc
  204f77fd451f3bd1806404fc960fd04f  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/2.cc
  c980c2a0238b7f2bf45c99ef24a3f395  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3.cc
  2c05a0e0d5e4ac8d232d3470c245b185  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3955.cc
*************** e9ef3f2b572f799b265913487f27690b  libstd
*** 143442,143448 ****
  1cd9b515badcd164d6958b0fbbbb52cf  libstdc++-v3/testsuite/std/time/clock/file/overview.cc
  811bf06fb6123b7a4dc922fa36ba8a06  libstdc++-v3/testsuite/std/time/clock/gps/1.cc
  e9c8ba287435179e8670bb6951a6b4fa  libstdc++-v3/testsuite/std/time/clock/gps/io.cc
! 77e52cac2443b4c26b20b6bb1f917624  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
--- 143457,143463 ----
  1cd9b515badcd164d6958b0fbbbb52cf  libstdc++-v3/testsuite/std/time/clock/file/overview.cc
  811bf06fb6123b7a4dc922fa36ba8a06  libstdc++-v3/testsuite/std/time/clock/gps/1.cc
  e9c8ba287435179e8670bb6951a6b4fa  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
*************** dcb9d587d1738c8bdb50039c6928431e  libstd
*** 143482,143489 ****
  a0be85b8053be995a48a4cfec6a5b675  libstdc++-v3/testsuite/std/time/parse/114279.cc
  4650244d174eff0342f84405e248bbfe  libstdc++-v3/testsuite/std/time/parse/parse.cc
  8e3bf07939ba94874a6652e2a596d549  libstdc++-v3/testsuite/std/time/syn_c++20.cc
  f9d9d1cb483f1731762a8e5787c8020b  libstdc++-v3/testsuite/std/time/time_zone/get_info_local.cc
! d041367e20c424ad627fce102335edd0  libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc
  efdc68d548df15089ce510e6bf1c33c7  libstdc++-v3/testsuite/std/time/time_zone/requirements.cc
  105f0ca3c8074ef3b2c1751d37ec2b96  libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc
  fb1501eaac6167bb3503c953bd7315db  libstdc++-v3/testsuite/std/time/traits/is_clock.cc
--- 143497,143506 ----
  a0be85b8053be995a48a4cfec6a5b675  libstdc++-v3/testsuite/std/time/parse/114279.cc
  4650244d174eff0342f84405e248bbfe  libstdc++-v3/testsuite/std/time/parse/parse.cc
  8e3bf07939ba94874a6652e2a596d549  libstdc++-v3/testsuite/std/time/syn_c++20.cc
+ 942f5bb5a199e3f7b0821958da8b265a  libstdc++-v3/testsuite/std/time/time_zone/116110.cc
+ e5f71dc7f2292314c0c9b06c3b8acf2e  libstdc++-v3/testsuite/std/time/time_zone/124513.cc
  f9d9d1cb483f1731762a8e5787c8020b  libstdc++-v3/testsuite/std/time/time_zone/get_info_local.cc
! 5c55d9e35cb8c9c5e0a207bd53fa37d2  libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc
  efdc68d548df15089ce510e6bf1c33c7  libstdc++-v3/testsuite/std/time/time_zone/requirements.cc
  105f0ca3c8074ef3b2c1751d37ec2b96  libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc
  fb1501eaac6167bb3503c953bd7315db  libstdc++-v3/testsuite/std/time/traits/is_clock.cc
*************** b7fda84fbeda06910b868e9c1900c04c  libstd
*** 143521,143527 ****
  c83ddc50378f7dedd8a117c97828123a  libstdc++-v3/testsuite/std/time/year_month_weekday_last/1.cc
  d331c4d1f095f322242d26131db04e1b  libstdc++-v3/testsuite/std/time/year_month_weekday_last/2.cc
  e794c3c683b129a1bc27715ff3ee3b37  libstdc++-v3/testsuite/std/time/year_month_weekday_last/io.cc
! 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
  b817e9c1855b1b139f12f498f1c9db67  libstdc++-v3/testsuite/std/time/zoned_time/io.cc
--- 143538,143544 ----
  c83ddc50378f7dedd8a117c97828123a  libstdc++-v3/testsuite/std/time/year_month_weekday_last/1.cc
  d331c4d1f095f322242d26131db04e1b  libstdc++-v3/testsuite/std/time/year_month_weekday_last/2.cc
  e794c3c683b129a1bc27715ff3ee3b37  libstdc++-v3/testsuite/std/time/year_month_weekday_last/io.cc
! fa43bb38cebbbda727864c9b2ac9b67b  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
  b817e9c1855b1b139f12f498f1c9db67  libstdc++-v3/testsuite/std/time/zoned_time/io.cc
diff -Nrcpad gcc-15-20260508/gcc/ChangeLog gcc-15-20260515/gcc/ChangeLog
*** gcc-15-20260508/gcc/ChangeLog	Fri May  8 22:32:05 2026
--- gcc-15-20260515/gcc/ChangeLog	Fri May 15 22:32:05 2026
***************
*** 1,3 ****
--- 1,23 ----
+ 2026-05-14  Andi Kleen  <ak@gcc.gnu.org>
+ 
+ 	PR target/124316
+ 	* config/i386/i386.md (ptwrite): Add explicit mode to
+ 	instruction.
+ 
+ 2026-05-14  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2026-05-14  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/125194
+ 	* config/avr/avr.cc (avr_no_call_main_p): Remove variable...
+ 	(avr_file_end): ...and code that uses it.
+ 	(avr_insert_attributes): Same.  Add "used" to main attributes
+ 	when -mno-call-main.
+ 	* config/avr/gen-avr-mmcu-specs.cc (print_mcu): Emit code
+ 	for link_no_call_main specs.
+ 	* config/avr/specs.h (LINK_SPEC): Add %(link_no_call_main).
+ 
  2026-05-03  Collin Funk  <collin.funk1@gmail.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260508/gcc/DATESTAMP gcc-15-20260515/gcc/DATESTAMP
*** gcc-15-20260508/gcc/DATESTAMP	Fri May  8 22:32:05 2026
--- gcc-15-20260515/gcc/DATESTAMP	Fri May 15 22:32:05 2026
***************
*** 1 ****
! 20260508
--- 1 ----
! 20260515
diff -Nrcpad gcc-15-20260508/gcc/ada/ChangeLog gcc-15-20260515/gcc/ada/ChangeLog
*** gcc-15-20260508/gcc/ada/ChangeLog	Fri May  8 22:32:05 2026
--- gcc-15-20260515/gcc/ada/ChangeLog	Fri May 15 22:32:05 2026
***************
*** 1,3 ****
--- 1,15 ----
+ 2026-05-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/125240
+ 	* gen_il-gen-gen_entities.adb (Enumeration_Kind): Make
+ 	Lit_Indexes and Lit_Strings be defined for root types only.
+ 	* einfo.ads (Lit_Hash): Adjust description.
+ 	(Lit_Indexes): Likewise.
+ 	(Lit_Strings): Likewise.
+ 	(E_Enumeration_Type): Likewise.
+ 	* exp_imgv.adb (Expand_Image_Attribute): Do not fetch the root type
+ 	for enumeration types, except for character types, and adjust.
+ 
  2026-04-30  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR ada/125044
diff -Nrcpad gcc-15-20260508/gcc/ada/einfo.ads gcc-15-20260515/gcc/ada/einfo.ads
*** gcc-15-20260508/gcc/ada/einfo.ads	Fri May  8 22:32:05 2026
--- gcc-15-20260515/gcc/ada/einfo.ads	Fri May 15 22:32:05 2026
*************** package Einfo is
*** 3569,3590 ****
  --       type of the object.
  
  --    Lit_Hash [root type only]
! --       Defined in enumeration types and subtypes. Non-empty only for the
! --       case of an enumeration root type, where it contains the entity for
  --       the generated hash function. See unit Exp_Imgv for full details of
  --       the nature and use of this entity for implementing the Value
  --       attribute for the enumeration type in question.
  
! --    Lit_Indexes
! --       Defined in enumeration types and subtypes. Non-empty only for the
! --       case of an enumeration root type, where it contains the entity for
  --       the generated indexes entity. See unit Exp_Imgv for full details of
  --       the nature and use of this entity for implementing the Image and
  --       Value attributes for the enumeration type in question.
  
! --    Lit_Strings
! --       Defined in enumeration types and subtypes. Non-empty only for the
! --       case of an enumeration root type, where it contains the entity for
  --       the literals string entity. See unit Exp_Imgv for full details of
  --       the nature and use of this entity for implementing the Image and
  --       Value attributes for the enumeration type in question.
--- 3569,3587 ----
  --       type of the object.
  
  --    Lit_Hash [root type only]
! --       Defined in enumeration types and subtypes. Contains the entity for
  --       the generated hash function. See unit Exp_Imgv for full details of
  --       the nature and use of this entity for implementing the Value
  --       attribute for the enumeration type in question.
  
! --    Lit_Indexes [root type only]
! --       Defined in enumeration types and subtypes. Contains the entity for
  --       the generated indexes entity. See unit Exp_Imgv for full details of
  --       the nature and use of this entity for implementing the Image and
  --       Value attributes for the enumeration type in question.
  
! --    Lit_Strings [root type only]
! --       Defined in enumeration types and subtypes. Contains the entity for
  --       the literals string entity. See unit Exp_Imgv for full details of
  --       the nature and use of this entity for implementing the Image and
  --       Value attributes for the enumeration type in question.
*************** package Einfo is
*** 5453,5464 ****
     --  E_Enumeration_Subtype
     --    First_Entity $$$ type
     --    Renamed_Object $$$
-    --    Lit_Strings                          (root type only)
     --    First_Literal
     --    Lit_Indexes                          (root type only)
     --    Default_Aspect_Value                 (base type only)
     --    Scalar_Range
-    --    Lit_Hash                             (root type only)
     --    Enum_Pos_To_Rep                      (type only)
     --    Static_Discrete_Predicate
     --    Has_Biased_Representation
--- 5450,5461 ----
     --  E_Enumeration_Subtype
     --    First_Entity $$$ type
     --    Renamed_Object $$$
     --    First_Literal
+    --    Lit_Hash                             (root type only)
     --    Lit_Indexes                          (root type only)
+    --    Lit_Strings                          (root type only)
     --    Default_Aspect_Value                 (base type only)
     --    Scalar_Range
     --    Enum_Pos_To_Rep                      (type only)
     --    Static_Discrete_Predicate
     --    Has_Biased_Representation
diff -Nrcpad gcc-15-20260508/gcc/ada/exp_imgv.adb gcc-15-20260515/gcc/ada/exp_imgv.adb
*** gcc-15-20260508/gcc/ada/exp_imgv.adb	Fri May  8 22:32:06 2026
--- gcc-15-20260515/gcc/ada/exp_imgv.adb	Fri May 15 22:32:05 2026
*************** package body Exp_Imgv is
*** 1058,1068 ****
  
        --  Ada 2022 allows 'Image on private types, so fetch the underlying
        --  type to obtain the structure of the type. We use the base type,
!       --  not the root type for discrete types, to handle properly derived
!       --  types, but we use the root type for enumeration types, because the
!       --  literal map is attached to the root. Should be inherited ???
  
!       if Is_Real_Type (Ptyp) or else Is_Enumeration_Type (Ptyp) then
           Rtyp := Underlying_Type (Root_Type (Ptyp));
        else
           Rtyp := Underlying_Type (Base_Type (Ptyp));
--- 1058,1067 ----
  
        --  Ada 2022 allows 'Image on private types, so fetch the underlying
        --  type to obtain the structure of the type. We use the base type,
!       --  not the root type, for discrete types in order to handle derived
!       --  types, except for character types for which this is not needed.
  
!       if Is_Real_Type (Ptyp) or else Is_Character_Type (Ptyp) then
           Rtyp := Underlying_Type (Root_Type (Ptyp));
        else
           Rtyp := Underlying_Type (Base_Type (Ptyp));
*************** package body Exp_Imgv is
*** 1073,1079 ****
  
        Enum_Case := False;
  
!       if Rtyp = Standard_Boolean then
           --  Use inline expansion if the -gnatd_x switch is not passed to the
           --  compiler. Otherwise expand into a call to the runtime.
  
--- 1072,1078 ----
  
        Enum_Case := False;
  
!       if Is_Boolean_Type (Rtyp) then
           --  Use inline expansion if the -gnatd_x switch is not passed to the
           --  compiler. Otherwise expand into a call to the runtime.
  
diff -Nrcpad gcc-15-20260508/gcc/ada/gen_il-gen-gen_entities.adb gcc-15-20260515/gcc/ada/gen_il-gen-gen_entities.adb
*** gcc-15-20260508/gcc/ada/gen_il-gen-gen_entities.adb	Fri May  8 22:32:06 2026
--- gcc-15-20260515/gcc/ada/gen_il-gen-gen_entities.adb	Fri May 15 22:32:05 2026
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 548,558 ****
         (Sm (First_Literal, Node_Id),
          Sm (Has_Enumeration_Rep_Clause, Flag),
          Sm (Has_Pragma_Ordered, Flag, Impl_Base_Type_Only),
!         Sm (Lit_Indexes, Node_Id),
!         Sm (Lit_Strings, Node_Id),
          Sm (Nonzero_Is_True, Flag, Base_Type_Only,
!             Pre => "Root_Type (N) = Standard_Boolean"),
!         Sm (Lit_Hash, Node_Id, Root_Type_Only)));
  
     Cc (E_Enumeration_Type, Enumeration_Kind,
         --  Enumeration types, created by an enumeration type declaration
--- 548,558 ----
         (Sm (First_Literal, Node_Id),
          Sm (Has_Enumeration_Rep_Clause, Flag),
          Sm (Has_Pragma_Ordered, Flag, Impl_Base_Type_Only),
!         Sm (Lit_Hash, Node_Id, Root_Type_Only),
!         Sm (Lit_Indexes, Node_Id, Root_Type_Only),
!         Sm (Lit_Strings, Node_Id, Root_Type_Only),
          Sm (Nonzero_Is_True, Flag, Base_Type_Only,
!             Pre => "Root_Type (N) = Standard_Boolean")));
  
     Cc (E_Enumeration_Type, Enumeration_Kind,
         --  Enumeration types, created by an enumeration type declaration
diff -Nrcpad gcc-15-20260508/gcc/c/c-parser.cc gcc-15-20260515/gcc/c/c-parser.cc
*** gcc-15-20260508/gcc/c/c-parser.cc	Fri May  8 22:32:06 2026
--- gcc-15-20260515/gcc/c/c-parser.cc	Fri May 15 22:32:06 2026
*************** struct attr_state
*** 1709,1714 ****
--- 1709,1716 ----
  {
    /* True if we parsed a musttail attribute for return.  */
    bool musttail_p;
+ 
+   void reset () { musttail_p = false; }
  };
  
  static bool c_parser_nth_token_starts_std_attributes (c_parser *,
*************** c_parser_compound_statement_nostart (c_p
*** 7497,7503 ****
    bool in_omp_loop_block
      = omp_for_parse_state ? omp_for_parse_state->want_nested_loop : false;
    tree sl = NULL_TREE;
!   attr_state a = {};
  
    if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE))
      {
--- 7499,7505 ----
    bool in_omp_loop_block
      = omp_for_parse_state ? omp_for_parse_state->want_nested_loop : false;
    tree sl = NULL_TREE;
!   attr_state astate = {};
  
    if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE))
      {
*************** c_parser_compound_statement_nostart (c_p
*** 7589,7594 ****
--- 7591,7597 ----
  	      sl = push_stmt_list ();
  	      parser->error = false;
  	      before_labels = get_before_labels ();
+ 	      astate.reset ();
  	      continue;
  	    }
  	  else if (want_nested_loop
*************** c_parser_compound_statement_nostart (c_p
*** 7622,7627 ****
--- 7625,7631 ----
  		}
  	      parser->error = false;
  	      before_labels = get_before_labels ();
+ 	      astate.reset ();
  	      continue;
  	    }
  	  else if (c_parser_next_token_is (parser, CPP_SEMICOLON))
*************** c_parser_compound_statement_nostart (c_p
*** 7633,7638 ****
--- 7637,7643 ----
  	      /* FIXME:  Maybe issue a warning or something here?  */
  	      c_parser_consume_token (parser);
  	      before_labels = get_before_labels ();
+ 	      astate.reset ();
  	      continue;
  	    }
  	}
*************** c_parser_compound_statement_nostart (c_p
*** 7644,7650 ****
        if (have_std_attrs)
  	{
  	  std_attrs = c_parser_std_attribute_specifier_sequence (parser);
! 	  std_attrs = c_parser_handle_musttail (parser, std_attrs, a);
  	}
        if (c_parser_next_token_is_keyword (parser, RID_CASE)
  	  || c_parser_next_token_is_keyword (parser, RID_DEFAULT)
--- 7649,7655 ----
        if (have_std_attrs)
  	{
  	  std_attrs = c_parser_std_attribute_specifier_sequence (parser);
! 	  std_attrs = c_parser_handle_musttail (parser, std_attrs, astate);
  	}
        if (c_parser_next_token_is_keyword (parser, RID_CASE)
  	  || c_parser_next_token_is_keyword (parser, RID_DEFAULT)
*************** c_parser_compound_statement_nostart (c_p
*** 7786,7791 ****
--- 7791,7797 ----
                error_at (loc, "%<else%> without a previous %<if%>");
                c_parser_consume_token (parser);
  	      before_labels = get_before_labels ();
+ 	      astate.reset ();
                continue;
              }
          }
*************** c_parser_compound_statement_nostart (c_p
*** 7798,7804 ****
  	  mark_valid_location_for_stdc_pragma (false);
  	  if (!omp_for_parse_state)
  	    c_parser_statement_after_labels (parser, NULL, before_labels,
! 					     NULL, a);
  	  else
  	    {
  	      /* In canonical loop nest form, nested loops can only appear
--- 7804,7810 ----
  	  mark_valid_location_for_stdc_pragma (false);
  	  if (!omp_for_parse_state)
  	    c_parser_statement_after_labels (parser, NULL, before_labels,
! 					     NULL, astate);
  	  else
  	    {
  	      /* In canonical loop nest form, nested loops can only appear
*************** c_parser_compound_statement_nostart (c_p
*** 7815,7820 ****
--- 7821,7827 ----
  	}
  
        parser->error = false;
+       astate.reset ();
      }
    if (last_label)
      pedwarn_c11 (label_loc, OPT_Wfree_labels,
diff -Nrcpad gcc-15-20260508/gcc/config/avr/avr.cc gcc-15-20260515/gcc/config/avr/avr.cc
*** gcc-15-20260508/gcc/config/avr/avr.cc	Fri May  8 22:32:06 2026
--- gcc-15-20260515/gcc/config/avr/avr.cc	Fri May 15 22:32:06 2026
*************** bool avr_need_clear_bss_p = false;
*** 230,238 ****
  bool avr_need_copy_data_p = false;
  bool avr_has_rodata_p = false;
  
- /* To track if we satisfy __call_main from AVR-LibC.  */
- bool avr_no_call_main_p = false;
- 
  /* Counts how often pass avr-fuse-add has been executed.  Is is kept in
     sync with cfun->machine->n_avr_fuse_add_executed and serves as an
     insn condition for shift insn splitters.  */
--- 230,235 ----
*************** avr_insert_attributes (tree node, tree *
*** 11889,11895 ****
  	      *attributes = tree_cons (get_identifier ("section"),
  				       arg, *attributes);
  	    }
! 	  avr_no_call_main_p = true;
  	}
      } // -mno-call-main
  #endif // AVR-LibC
--- 11886,11894 ----
  	      *attributes = tree_cons (get_identifier ("section"),
  				       arg, *attributes);
  	    }
! 	  if (!lookup_attribute ("used", *attributes))
! 	    *attributes = tree_cons (get_identifier ("used"),
! 				     NULL_TREE, *attributes);
  	}
      } // -mno-call-main
  #endif // AVR-LibC
*************** avr_file_end (void)
*** 12493,12507 ****
  
    if (avr_need_clear_bss_p)
      fputs (".global __do_clear_bss\n", asm_out_file);
- 
-   /* Don't let __call_main call main() and exit().
-      Defining this symbol will keep the code from being pulled
-      in from lib<mcu>.a as requested by AVR-LibC's gcrt1.S.
-      We invoke main() by other means: putting it in .init9.  */
- 
-   if (avr_no_call_main_p)
-     fputs (".global __call_main\n"
- 	   "__call_main = 0\n", asm_out_file);
  }
  
  
--- 12492,12497 ----
diff -Nrcpad gcc-15-20260508/gcc/config/avr/gen-avr-mmcu-specs.cc gcc-15-20260515/gcc/config/avr/gen-avr-mmcu-specs.cc
*** gcc-15-20260508/gcc/config/avr/gen-avr-mmcu-specs.cc	Fri May  8 22:32:06 2026
--- gcc-15-20260515/gcc/config/avr/gen-avr-mmcu-specs.cc	Fri May 15 22:32:06 2026
*************** print_mcu (const avr_mcu_t *mcu, const M
*** 355,360 ****
--- 355,362 ----
  
    fprintf (f, "*link_relax:\n\t%s\n\n", LINK_RELAX_SPEC);
  
+   fprintf (f, "*link_no_call_main:\n\t%s\n\n", "%{mno-call-main: --defsym __call_main=0}");
+ 
    fprintf (f, "*link_arch:\n\t%s", link_arch_spec);
    if (mi.is_device
        && rodata_pm_offset)
diff -Nrcpad gcc-15-20260508/gcc/config/avr/specs.h gcc-15-20260515/gcc/config/avr/specs.h
*** gcc-15-20260508/gcc/config/avr/specs.h	Fri May  8 22:32:06 2026
--- gcc-15-20260515/gcc/config/avr/specs.h	Fri May 15 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 67,72 ****
--- 67,73 ----
    "%(link_relax) "                              \
    "%(link_pmem_wrap) "                          \
    "%(link_rodata_in_ram) "                      \
+   "%(link_no_call_main) "                       \
    "%{shared:%eshared is not supported} "
  
  #undef  LIB_SPEC
diff -Nrcpad gcc-15-20260508/gcc/config/i386/i386.md gcc-15-20260515/gcc/config/i386/i386.md
*** gcc-15-20260508/gcc/config/i386/i386.md	Fri May  8 22:32:06 2026
--- gcc-15-20260515/gcc/config/i386/i386.md	Fri May 15 22:32:06 2026
***************
*** 29508,29514 ****
    [(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")])
--- 29508,29514 ----
    [(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-15-20260508/gcc/cp/ChangeLog gcc-15-20260515/gcc/cp/ChangeLog
*** gcc-15-20260508/gcc/cp/ChangeLog	Fri May  8 22:32:06 2026
--- gcc-15-20260515/gcc/cp/ChangeLog	Fri May 15 22:32:06 2026
***************
*** 1,3 ****
--- 1,22 ----
+ 2026-05-14  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-17  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/124632
+ 	* constexpr.cc (cxx_eval_call_expression): Unshare bindings
+ 	sooner.
+ 
+ 2026-05-14  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-04-16  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/123346
+ 	* constexpr.cc (init_subob_ctx): Do initialize new_ctx.ctor
+ 	for an empty union member.
+ 
  2026-05-01  Marek Polacek  <polacek@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260508/gcc/cp/constexpr.cc gcc-15-20260515/gcc/cp/constexpr.cc
*** gcc-15-20260508/gcc/cp/constexpr.cc	Fri May  8 22:32:07 2026
--- gcc-15-20260515/gcc/cp/constexpr.cc	Fri May 15 22:32:06 2026
*************** cxx_eval_call_expression (const constexp
*** 3260,3265 ****
--- 3260,3275 ----
  	      *entry = new_call;
  	      entry->result (ctx->manifestly_const_eval) = unknown_type_node;
  	      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 unknown_type_node,
*************** cxx_eval_call_expression (const constexp
*** 3318,3330 ****
  	      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);
--- 3328,3334 ----
  	      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
*** 5428,5435 ****
    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
--- 5432,5453 ----
    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
+     {
+       /* This can happen if the enclosing object is also an empty subobject
+ 	 (c++/125315).  */
+       gcc_checking_assert (is_empty_class (type));
+       return;
+     }
+ 
    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
*** 5448,5456 ****
  	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
      {
--- 5466,5475 ----
  	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-15-20260508/gcc/fortran/ChangeLog gcc-15-20260515/gcc/fortran/ChangeLog
*** gcc-15-20260508/gcc/fortran/ChangeLog	Fri May  8 22:32:07 2026
--- gcc-15-20260515/gcc/fortran/ChangeLog	Fri May 15 22:32:06 2026
***************
*** 1,3 ****
--- 1,108 ----
+ 2026-05-14  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-08  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/96986
+ 	* resolve.cc (resolve_global_procedure): Move entry symbol
+ 	lookup outside the resolved != -1 block.
+ 
+ 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-12  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  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/101760
+ 	PR fortran/102314
+ 	* 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-08  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-15-20260508/gcc/fortran/array.cc gcc-15-20260515/gcc/fortran/array.cc
*** gcc-15-20260508/gcc/fortran/array.cc	Fri May  8 22:32:07 2026
--- gcc-15-20260515/gcc/fortran/array.cc	Fri May 15 22:32:06 2026
*************** resolve_array_bound (gfc_expr *e, int ch
*** 471,476 ****
--- 471,483 ----
    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-15-20260508/gcc/fortran/frontend-passes.cc gcc-15-20260515/gcc/fortran/frontend-passes.cc
*** gcc-15-20260508/gcc/fortran/frontend-passes.cc	Fri May  8 22:32:07 2026
--- gcc-15-20260515/gcc/fortran/frontend-passes.cc	Fri May 15 22:32:06 2026
*************** insert_index (gfc_expr *e, gfc_symbol *s
*** 2745,2750 ****
--- 2745,2810 ----
  
  }
  
+ 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)
*** 2879,2888 ****
  		  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]
--- 2939,2953 ----
  		  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)
*** 2908,2914 ****
  		      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]
--- 2973,2979 ----
  		      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-15-20260508/gcc/fortran/primary.cc gcc-15-20260515/gcc/fortran/primary.cc
*** gcc-15-20260508/gcc/fortran/primary.cc	Fri May  8 22:32:07 2026
--- gcc-15-20260515/gcc/fortran/primary.cc	Fri May 15 22:32:06 2026
*************** gfc_convert_to_structure_constructor (gf
*** 3539,3544 ****
--- 3539,3545 ----
  	  && 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
*** 3603,3629 ****
  	  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)
  		{
--- 3604,3630 ----
  	  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-15-20260508/gcc/fortran/resolve.cc gcc-15-20260515/gcc/fortran/resolve.cc
*** gcc-15-20260508/gcc/fortran/resolve.cc	Fri May  8 22:32:07 2026
--- gcc-15-20260515/gcc/fortran/resolve.cc	Fri May 15 22:32:06 2026
*************** static int omp_workshare_flag;
*** 82,87 ****
--- 82,90 ----
  
  /* 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;
*** 92,97 ****
--- 95,118 ----
  /* 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 *
*** 289,294 ****
--- 310,316 ----
    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 *
*** 337,345 ****
--- 359,370 ----
  	   ? 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
*** 2738,2754 ****
  	  /* 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))
--- 2763,2784 ----
  	  /* 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)
*** 6345,6376 ****
        && 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",
--- 6375,6397 ----
        && 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)
*** 6385,6391 ****
--- 6406,6414 ----
  
        /* 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)
*** 6401,6406 ****
--- 6424,6430 ----
  	    }
  	}
        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
*** 14580,14586 ****
--- 14604,14612 ----
       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
*** 14595,14600 ****
--- 14621,14627 ----
        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
*** 14620,14625 ****
--- 14647,14653 ----
  	  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
*** 14627,14632 ****
--- 14655,14661 ----
  	{
  	  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
*** 14641,14646 ****
--- 14670,14676 ----
  	      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
*** 14648,14653 ****
--- 14678,14684 ----
  	      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
*** 14680,14685 ****
--- 14711,14717 ----
  	{
  	  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
*** 14713,14718 ****
--- 14745,14751 ----
        else
  	goto no_init_error;
        specification_expr = saved_specification_expr;
+       specification_expr_symbol = saved_specification_expr_symbol;
        return false;
      }
  
*************** no_init_error:
*** 14721,14730 ****
--- 14754,14765 ----
      {
        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
*** 17122,17132 ****
--- 17157,17170 ----
    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-15-20260508/gcc/fortran/trans-decl.cc gcc-15-20260515/gcc/fortran/trans-decl.cc
*** gcc-15-20260508/gcc/fortran/trans-decl.cc	Fri May  8 22:32:07 2026
--- gcc-15-20260515/gcc/fortran/trans-decl.cc	Fri May 15 22:32:06 2026
*************** gfc_finish_var_decl (tree decl, gfc_symb
*** 655,667 ****
  	  && (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);
      }
--- 655,680 ----
  	  && (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,
*** 3097,3111 ****
        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;
--- 3110,3169 ----
        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,
*** 3152,3158 ****
        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);
--- 3210,3233 ----
        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
*** 5024,5029 ****
--- 5099,5109 ----
  					NULL_TREE);
  		  continue;
  		}
+ 	      else if (sym->attr.codimension && !sym->attr.dimension)
+ 		{
+ 		  /* Scalar coarrays do not need array allocation.  */
+ 		  continue;
+ 		}
  	      else
  		{
  		  loc = input_location;
diff -Nrcpad gcc-15-20260508/gcc/fortran/trans-openmp.cc gcc-15-20260515/gcc/fortran/trans-openmp.cc
*** gcc-15-20260508/gcc/fortran/trans-openmp.cc	Fri May  8 22:32:07 2026
--- gcc-15-20260515/gcc/fortran/trans-openmp.cc	Fri May 15 22:32:06 2026
*************** gfc_omp_finish_clause (tree c, gimple_se
*** 1839,1847 ****
    else
      {
        if (OMP_CLAUSE_SIZE (c) == NULL_TREE)
! 	OMP_CLAUSE_SIZE (c)
! 	  = DECL_P (decl) ? DECL_SIZE_UNIT (decl)
! 			  : TYPE_SIZE_UNIT (TREE_TYPE (decl));
  
        tree type = TREE_TYPE (decl);
        if (POINTER_TYPE_P (type) && POINTER_TYPE_P (TREE_TYPE (type)))
--- 1839,1877 ----
    else
      {
        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;
! 	    }
! 	}
  
        tree type = TREE_TYPE (decl);
        if (POINTER_TYPE_P (type) && POINTER_TYPE_P (TREE_TYPE (type)))
diff -Nrcpad gcc-15-20260508/gcc/testsuite/ChangeLog gcc-15-20260515/gcc/testsuite/ChangeLog
*** gcc-15-20260508/gcc/testsuite/ChangeLog	Fri May  8 22:32:08 2026
--- gcc-15-20260515/gcc/testsuite/ChangeLog	Fri May 15 22:32:07 2026
***************
*** 1,3 ****
--- 1,105 ----
+ 2026-05-14  Andi Kleen  <ak@gcc.gnu.org>
+ 
+ 	PR target/124316
+ 	* gcc.target/i386/pr124316.c: New test.
+ 
+ 2026-05-14  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-17  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/124632
+ 	* g++.dg/cpp23/explicit-obj-lambda2.C: Do strict GC and -Wall.
+ 
+ 2026-05-14  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-04-16  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/123346
+ 	* g++.dg/cpp2a/constexpr-union10.C: New test.
+ 
+ 2026-05-14  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-08  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/96986
+ 	* gfortran.dg/pr96986.f90: New test.
+ 
+ 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-12  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  Christopher Albert  <albert@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-04-13  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/101760
+ 	PR fortran/102314
+ 	* 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-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/enum6.adb: 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-08  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  Martin Uecker  <uecker@tugraz.at>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260508/gcc/testsuite/c-c++-common/pr124532.c gcc-15-20260515/gcc/testsuite/c-c++-common/pr124532.c
*** gcc-15-20260508/gcc/testsuite/c-c++-common/pr124532.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/c-c++-common/pr124532.c	Fri May 15 22:32:07 2026
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile { target { musttail && { c || c++11 } } } } */
+ 
+ extern int f(void);
+ 
+ static int g(void) {
+   [[gnu::musttail]] return f();
+   return 42;
+ }
+ 
+ static int g2(void) {
+   if (1) [[gnu::musttail]] return f();
+   return 42;
+ }
diff -Nrcpad gcc-15-20260508/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C gcc-15-20260515/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C
*** gcc-15-20260508/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C	Fri May  8 22:32:08 2026
--- gcc-15-20260515/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C	Fri May 15 22:32:08 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-15-20260508/gcc/testsuite/g++.dg/cpp2a/constexpr-union10.C gcc-15-20260515/gcc/testsuite/g++.dg/cpp2a/constexpr-union10.C
*** gcc-15-20260508/gcc/testsuite/g++.dg/cpp2a/constexpr-union10.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/g++.dg/cpp2a/constexpr-union10.C	Fri May 15 22:32:08 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-15-20260508/gcc/testsuite/g++.dg/cpp2a/no_unique_address16.C gcc-15-20260515/gcc/testsuite/g++.dg/cpp2a/no_unique_address16.C
*** gcc-15-20260508/gcc/testsuite/g++.dg/cpp2a/no_unique_address16.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/g++.dg/cpp2a/no_unique_address16.C	Fri May 15 22:32:08 2026
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/125315
+ // { dg-do compile { target c++20 } }
+ // { dg-prune-output "used but never defined" }
+ 
+ struct S{~S(){}};
+ constexpr S& f(S& t);
+ struct W{[[no_unique_address]]S v;};
+ struct R:W{};
+ S s;
+ auto x=R{{f(s)}};
diff -Nrcpad gcc-15-20260508/gcc/testsuite/gcc.target/i386/pr124316.c gcc-15-20260515/gcc/testsuite/gcc.target/i386/pr124316.c
*** gcc-15-20260508/gcc/testsuite/gcc.target/i386/pr124316.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/gcc.target/i386/pr124316.c	Fri May 15 22:32:11 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-15-20260508/gcc/testsuite/gfortran.dg/gomp/pr101760.f90 gcc-15-20260515/gcc/testsuite/gfortran.dg/gomp/pr101760.f90
*** gcc-15-20260508/gcc/testsuite/gfortran.dg/gomp/pr101760.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/gfortran.dg/gomp/pr101760.f90	Fri May 15 22:32:13 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-15-20260508/gcc/testsuite/gfortran.dg/gomp/pr102314.f90 gcc-15-20260515/gcc/testsuite/gfortran.dg/gomp/pr102314.f90
*** gcc-15-20260508/gcc/testsuite/gfortran.dg/gomp/pr102314.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/gfortran.dg/gomp/pr102314.f90	Fri May 15 22:32:13 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-15-20260508/gcc/testsuite/gfortran.dg/gomp/pr107425.f90 gcc-15-20260515/gcc/testsuite/gfortran.dg/gomp/pr107425.f90
*** gcc-15-20260508/gcc/testsuite/gfortran.dg/gomp/pr107425.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/gfortran.dg/gomp/pr107425.f90	Fri May 15 22:32:13 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-15-20260508/gcc/testsuite/gfortran.dg/pr85352.f90 gcc-15-20260515/gcc/testsuite/gfortran.dg/pr85352.f90
*** gcc-15-20260508/gcc/testsuite/gfortran.dg/pr85352.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/gfortran.dg/pr85352.f90	Fri May 15 22:32:13 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-15-20260508/gcc/testsuite/gfortran.dg/pr93715.f90 gcc-15-20260515/gcc/testsuite/gfortran.dg/pr93715.f90
*** gcc-15-20260508/gcc/testsuite/gfortran.dg/pr93715.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/gfortran.dg/pr93715.f90	Fri May 15 22:32:13 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-15-20260508/gcc/testsuite/gfortran.dg/pr93814.f90 gcc-15-20260515/gcc/testsuite/gfortran.dg/pr93814.f90
*** gcc-15-20260508/gcc/testsuite/gfortran.dg/pr93814.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/gfortran.dg/pr93814.f90	Fri May 15 22:32:13 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-15-20260508/gcc/testsuite/gfortran.dg/pr93832.f90 gcc-15-20260515/gcc/testsuite/gfortran.dg/pr93832.f90
*** gcc-15-20260508/gcc/testsuite/gfortran.dg/pr93832.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/gfortran.dg/pr93832.f90	Fri May 15 22:32:13 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-15-20260508/gcc/testsuite/gfortran.dg/pr94978.f90 gcc-15-20260515/gcc/testsuite/gfortran.dg/pr94978.f90
*** gcc-15-20260508/gcc/testsuite/gfortran.dg/pr94978.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/gfortran.dg/pr94978.f90	Fri May 15 22:32:13 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-15-20260508/gcc/testsuite/gfortran.dg/pr96986.f90 gcc-15-20260515/gcc/testsuite/gfortran.dg/pr96986.f90
*** gcc-15-20260508/gcc/testsuite/gfortran.dg/pr96986.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/gfortran.dg/pr96986.f90	Fri May 15 22:32:13 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-15-20260508/gcc/testsuite/gnat.dg/enum6.adb gcc-15-20260515/gcc/testsuite/gnat.dg/enum6.adb
*** gcc-15-20260508/gcc/testsuite/gnat.dg/enum6.adb	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/gcc/testsuite/gnat.dg/enum6.adb	Fri May 15 22:32:14 2026
***************
*** 0 ****
--- 1,43 ----
+ --  { dg-do run }
+ 
+ procedure Enum6 is
+ 
+   type Base_Enum is (Ten, Twenty);
+ 
+   type Derived_Enum is new Base_Enum;
+   for Derived_Enum use (Ten => 10, Twenty => 20);
+ 
+   type Rep_Enum is (Ten, Twenty);
+   for Rep_Enum use (Ten => 10, Twenty => 20);
+ 
+   OK : Boolean := True;
+ 
+ begin
+   for E in Base_Enum loop
+     if (E = Ten and then Base_Enum'Image(E) /= "TEN")
+       or else (E = Twenty and then Base_Enum'Image(E) /= "TWENTY")
+     then
+       OK := False;
+     end if;
+   end loop;
+ 
+   for E in Derived_Enum loop
+     if (E = Ten and then Derived_Enum'Image(E) /= "TEN")
+        or else (E = Twenty and then Derived_Enum'Image(E) /= "TWENTY")
+     then
+       OK := False;
+     end if;
+   end loop;
+ 
+   for E in Rep_Enum loop
+     if (E = Ten and then Rep_Enum'Image(E) /= "TEN")
+       or else (E = Twenty and then Rep_Enum'Image(E) /= "TWENTY")
+     then
+       OK := False;
+     end if;
+   end loop;
+ 
+   if not OK then
+     raise Program_Error;
+   end if;
+ end;
diff -Nrcpad gcc-15-20260508/gcc/testsuite/jit.dg/all-non-failing-tests.h gcc-15-20260515/gcc/testsuite/jit.dg/all-non-failing-tests.h
*** gcc-15-20260508/gcc/testsuite/jit.dg/all-non-failing-tests.h	Fri May  8 22:32:13 2026
--- gcc-15-20260515/gcc/testsuite/jit.dg/all-non-failing-tests.h	Fri May 15 22:32:14 2026
***************
*** 135,142 ****
  #undef create_code
  #undef verify_code
  
! /* test-cold-attribute.c: This can't be in the testcases array as it needs
!    the `-O2` flag.  */
  
  /* test-constants.c */
  #define create_code create_code_constants
--- 135,142 ----
  #undef create_code
  #undef verify_code
  
! /* test-cold-attribute.c: This can't be in the testcases array as it needs a
!    specific optimization flag.  */
  
  /* test-constants.c */
  #define create_code create_code_constants
diff -Nrcpad gcc-15-20260508/gcc/testsuite/jit.dg/test-cold-attribute.c gcc-15-20260515/gcc/testsuite/jit.dg/test-cold-attribute.c
*** gcc-15-20260508/gcc/testsuite/jit.dg/test-cold-attribute.c	Fri May  8 22:32:13 2026
--- gcc-15-20260515/gcc/testsuite/jit.dg/test-cold-attribute.c	Fri May 15 22:32:14 2026
***************
*** 8,15 ****
  #define TEST_ESCHEWS_SET_OPTIONS
  static void set_options (gcc_jit_context *ctxt, const char *argv0)
  {
!   // Set "-O2".
!   gcc_jit_context_set_int_option(ctxt, GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL, 2);
  }
  
  #define TEST_COMPILING_TO_FILE
--- 8,15 ----
  #define TEST_ESCHEWS_SET_OPTIONS
  static void set_options (gcc_jit_context *ctxt, const char *argv0)
  {
!   // Set "-Oz".
!   gcc_jit_context_add_command_line_option (ctxt, "-Oz");
  }
  
  #define TEST_COMPILING_TO_FILE
diff -Nrcpad gcc-15-20260508/gcc/testsuite/lib/lto.exp gcc-15-20260515/gcc/testsuite/lib/lto.exp
*** gcc-15-20260508/gcc/testsuite/lib/lto.exp	Fri May  8 22:32:13 2026
--- gcc-15-20260515/gcc/testsuite/lib/lto.exp	Fri May 15 22:32:14 2026
*************** proc lto-execute-1 { src1 sid } {
*** 711,719 ****
      set i 1
      set done 0
      while { !$done } {
! 	set names [glob -nocomplain -types f -- "${dir}/${base}_${i}.{c,C,ii,\[fF\]{,90,95,03,08},d,m,mm}"]
  	if { [llength ${names}] > 1 } {
! 	    warning "lto-execute: more than one file matched ${dir}/${base}_${i}.{c,C,ii,\[fF\]{,90,95,03,08},d,m,mm}"
  	}
  	if { [llength ${names}] == 1 } {
  	    lappend src_list [lindex ${names} 0]
--- 711,729 ----
      set i 1
      set done 0
      while { !$done } {
! 	set prefix "${dir}/${base}_${i}"
! 
! 	# glob returns a case insensitive list if filesystem is case
! 	# insensitive.  To have a case sensitive list, fetch the extended list
! 	# and then filter it to avoid duplicates.
! 	regsub -all {([.^$*+?()$${}|])} $prefix {\\\1} pattern
! 	set pattern [format {^%s.(c|C|ii|[fF](|90|95|03|08)|d|m|mm)$} $pattern]
! 	set names [lsearch -inline -all -regexp \
! 	  [glob -nocomplain -types f -- "${prefix}.*"] $pattern]
! 
  	if { [llength ${names}] > 1 } {
! 	    warning "lto-execute: more than one file matched $pattern"
! 	    verbose "matching files: $names"
  	}
  	if { [llength ${names}] == 1 } {
  	    lappend src_list [lindex ${names} 0]
diff -Nrcpad gcc-15-20260508/libstdc++-v3/ChangeLog gcc-15-20260515/libstdc++-v3/ChangeLog
*** gcc-15-20260508/libstdc++-v3/ChangeLog	Fri May  8 22:32:15 2026
--- gcc-15-20260515/libstdc++-v3/ChangeLog	Fri May 15 22:32:17 2026
***************
*** 1,3 ****
--- 1,87 ----
+ 2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* src/c++17/fs_path.cc (path::operator+=): Use pointer
+ 	comparison to detect aliasing instead of a loop.
+ 
+ 2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/std/time/clock/local/io.cc: Call test_format.
+ 
+ 2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-01-07  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/123100
+ 	* include/std/sstream (basic_stringbuf::str()&&): Handle the
+ 	case where _M_string is not being used for the buffer.
+ 	* testsuite/27_io/basic_stringbuf/str/char/123100.cc: New test.
+ 
+ 2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-04-24  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/chrono (chrono::__detail::__get_leap_second_info):
+ 	Update expiry date for leap seconds list.
+ 	* src/c++20/tzdb.cc (tzdb_list::_Node::_S_read_leap_seconds):
+ 	Likewise.
+ 	* src/c++20/tzdata.zi: Import new file from 2026a release.
+ 
+ 2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122567
+ 	* src/c++20/tzdb.cc (tzdb::current_zone): Loop over all trailing
+ 	components of /etc/localtime path. Use readlink instead of
+ 	std::filesystem::read_symlink.
+ 
+ 2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/124513
+ 	* src/c++20/tzdb.cc (operator>>(istream&, at_time::Indicator&)):
+ 	Do not peek at the next character if eofbit is already set.
+ 	(istream& operator>>(istream&, at_time&)): Skip whitespace
+ 	before the first character. Handle EOF when parsing "-" as time.
+ 	Do not peek for ":" or "." if eofbit already set.
+ 	* testsuite/std/time/time_zone/116110.cc (test_apia): Remove
+ 	offset of 24h now that the UNTIL time is parsed correctly.
+ 	* testsuite/std/time/time_zone/124513.cc: New test.
+ 
+ 2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/116110
+ 	* src/c++20/tzdb.cc (operator>>(istream&, ZoneInfo&)): Adjust
+ 	inf.m_until according to indicator suffix on AT time in UNTIL.
+ 	* testsuite/std/time/time_zone/116110.cc (test_kiritimati):
+ 	Remove FIXME now that the UNTIL time is adjusted for STDOFF.
+ 	(test_apia): Adjust FIXME now that UNTIL time is adusted for
+ 	STDOFF.
+ 	* testsuite/std/time/time_zone/get_info_sys.cc: Adjust expected
+ 	results to account for corrected logic.
+ 	* testsuite/std/time/zoned_time/1.cc: Likewise.
+ 
+ 2026-05-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/116110
+ 	* src/c++20/tzdb.cc (time_zone::_M_get_sys_info): Update
+ 	info.offset and info.save to values from the active rule.
+ 	* testsuite/std/time/time_zone/116110.cc: New test.
+ 
  2026-05-05  Jonathan Wakely  <jwakely@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260508/libstdc++-v3/include/std/chrono gcc-15-20260515/libstdc++-v3/include/std/chrono
*** gcc-15-20260508/libstdc++-v3/include/std/chrono	Fri May  8 22:32:16 2026
--- gcc-15-20260515/libstdc++-v3/include/std/chrono	Fri May 15 22:32:17 2026
*************** namespace __detail
*** 3260,3266 ****
        };
        // The list above is known to be valid until (at least) this date
        // and only contains positive leap seconds.
!       constexpr sys_seconds __expires(1782604800s); // 2026-06-28 00:00:00 UTC
  
  #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
        if (__ss > __expires)
--- 3260,3266 ----
        };
        // 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-15-20260508/libstdc++-v3/include/std/sstream gcc-15-20260515/libstdc++-v3/include/std/sstream
*** gcc-15-20260508/libstdc++-v3/include/std/sstream	Fri May  8 22:32:16 2026
--- gcc-15-20260515/libstdc++-v3/include/std/sstream	Fri May 15 22:32:17 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 278,285 ****
        {
  	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();
--- 278,288 ----
        {
  	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-15-20260508/libstdc++-v3/src/c++17/fs_path.cc gcc-15-20260515/libstdc++-v3/src/c++17/fs_path.cc
*** gcc-15-20260508/libstdc++-v3/src/c++17/fs_path.cc	Fri May  8 22:32:16 2026
--- gcc-15-20260515/libstdc++-v3/src/c++17/fs_path.cc	Fri May 15 22:32:18 2026
*************** path::operator+=(const path& p)
*** 886,894 ****
      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)
!     for (const path& cmpt : *this)
!       if (&cmpt == &p) [[unlikely]]
  	return *this += p.native();
  
  #if _GLIBCXX_FILESYSTEM_IS_WINDOWS
    if (_M_type() == _Type::_Root_name
--- 886,896 ----
      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
diff -Nrcpad gcc-15-20260508/libstdc++-v3/src/c++20/tzdata.zi gcc-15-20260515/libstdc++-v3/src/c++20/tzdata.zi
*** gcc-15-20260508/libstdc++-v3/src/c++20/tzdata.zi	Fri May  8 22:32:16 2026
--- gcc-15-20260515/libstdc++-v3/src/c++20/tzdata.zi	Fri May 15 22:32:18 2026
***************
*** 1,4 ****
! # version 2025c
  # 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 Europe/Chisinau 1:55:20 - LMT 1880
*** 3666,3672 ****
  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-15-20260508/libstdc++-v3/src/c++20/tzdb.cc gcc-15-20260515/libstdc++-v3/src/c++20/tzdb.cc
*** gcc-15-20260508/libstdc++-v3/src/c++20/tzdb.cc	Fri May  8 22:32:16 2026
--- gcc-15-20260515/libstdc++-v3/src/c++20/tzdb.cc	Fri May 15 22:32:18 2026
***************
*** 35,44 ****
  #include <atomic>     // atomic<T*>, atomic<int>
  #include <memory>     // atomic<shared_ptr<T>>
  #include <mutex>      // mutex
  #if defined __GTHREADS && ! defined _GLIBCXX_HAS_GTHREADS
  # include <ext/concurrence.h> // __gnu_cxx::__mutex
  #endif
! #include <filesystem> // filesystem::read_symlink
  
  #ifdef _AIX
  # include <cstdlib>   // getenv
--- 35,48 ----
  #include <atomic>     // atomic<T*>, atomic<int>
  #include <memory>     // atomic<shared_ptr<T>>
  #include <mutex>      // mutex
+ #include <iomanip>    // quoted
  #if defined __GTHREADS && ! defined _GLIBCXX_HAS_GTHREADS
  # include <ext/concurrence.h> // __gnu_cxx::__mutex
  #endif
! 
! #if defined(_GLIBCXX_HAVE_READLINK) && defined(_GLIBCXX_HAVE_UNISTD_H)
! # include <unistd.h>  // readlink
! #endif
  
  #ifdef _AIX
  # include <cstdlib>   // getenv
*************** namespace std::chrono
*** 264,274 ****
        // If not, indic is unchanged. Callers should set a default first.
        friend istream& operator>>(istream& in, Indicator& indic)
        {
! 	auto [val, yes] = at_time::is_indicator(in.peek());
! 	if (yes)
  	  {
! 	    in.ignore(1);
! 	    indic = val;
  	  }
  	return in;
        }
--- 268,281 ----
        // If not, indic is unchanged. Callers should set a default first.
        friend istream& operator>>(istream& in, Indicator& indic)
        {
! 	if (!in.eof())
  	  {
! 	    auto [val, yes] = at_time::is_indicator(in.peek());
! 	    if (yes)
! 	      {
! 		in.ignore(1);
! 		indic = val;
! 	      }
  	  }
  	return in;
        }
*************** namespace std::chrono
*** 909,915 ****
  	  }
  
  	if (active_rule)
! 	  letters = active_rule->letters;
  	else if (first_std)
  	  letters = first_std->letters;
        }
--- 916,926 ----
  	  }
  
  	if (active_rule)
! 	  {
! 	    info.offset = ri.offset() + active_rule->save;
! 	    info.save = chrono::duration_cast<minutes>(active_rule->save);
! 	    letters = active_rule->letters;
! 	  }
  	else if (first_std)
  	  letters = first_std->letters;
        }
*************** namespace std::chrono
*** 1209,1216 ****
    pair<vector<leap_second>, bool>
    tzdb_list::_Node::_S_read_leap_seconds()
    {
!     // This list is valid until at least 2026-06-28 00:00:00 UTC.
!     constexpr auto expires = sys_days{2026y/06/28};
      vector<leap_second> leaps
      {
        (leap_second)  78796800, // 1 Jul 1972
--- 1220,1227 ----
    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
*** 1755,1782 ****
    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.
--- 1766,1852 ----
    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
*** 1813,1819 ****
  		  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/
--- 1883,1894 ----
  		  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/
*************** namespace std::chrono
*** 2050,2059 ****
      istream& operator>>(istream& in, at_time& at)
      {
        int sign = 1;
!       if (in.peek() == '-')
  	{
  	  in.ignore(1);
! 	  if (auto [val, yes] = at_time::is_indicator(in.peek()); yes)
  	    {
  	      in.ignore(1);
  	      at.time = 0s;
--- 2125,2135 ----
      istream& operator>>(istream& in, at_time& at)
      {
        int sign = 1;
!       if (ws(in).peek() == '-')
  	{
  	  in.ignore(1);
! 	  if (auto [val, yes] = at_time::is_indicator(in.peek());
! 	      in.eof() || yes)
  	    {
  	      in.ignore(1);
  	      at.time = 0s;
*************** namespace std::chrono
*** 2072,2082 ****
  	  in.ignore(1); // discard the colon.
  	  in >> i;
  	  m = minutes{i};
! 	  if (in.peek() == ':')
  	    {
  	      in.ignore(1); // discard the colon.
  	      in >> i;
! 	      if (in.peek() == '.')
  		{
  		  double frac;
  		  in >> frac;
--- 2148,2158 ----
  	  in.ignore(1); // discard the colon.
  	  in >> i;
  	  m = minutes{i};
! 	  if (!in.eof() && in.peek() == ':')
  	    {
  	      in.ignore(1); // discard the colon.
  	      in >> i;
! 	      if (!in.eof() && in.peek() == '.')
  		{
  		  double frac;
  		  in >> frac;
*************** namespace std::chrono
*** 2153,2163 ****
  	  at_time t{};
  	  // XXX DAY should support ON format, e.g. lastSun or Sun>=8
  	  in >> m >> d >> t;
- 	  // XXX UNTIL field should be interpreted
- 	  // "using the rules in effect just before the transition"
- 	  // so might need to store as year_month_day and hh_mm_ss and only
- 	  // convert to a sys_time once we know the offset in effect.
  	  inf.m_until = sys_days(year(y)/m.m/day(d)) + seconds(t.time);
  	}
        else
  	inf.m_until = sys_days(year::max()/December/31);
--- 2229,2246 ----
  	  at_time t{};
  	  // XXX DAY should support ON format, e.g. lastSun or Sun>=8
  	  in >> m >> d >> t;
  	  inf.m_until = sys_days(year(y)/m.m/day(d)) + seconds(t.time);
+ 	  if (t.indicator != at_time::Universal)
+ 	    { // UNTIL uses "the rules in effect just before the transition"
+ 	      // adjust by STDOFF
+ 	      inf.m_until -= seconds(inf.m_offset);
+ 	      if (t.indicator != at_time::Standard)
+ 		{
+ 		  if (inf.m_expanded) // Not a named Rule, SAVE is known now.
+ 		    inf.m_until -= inf.m_save;
+ 		  // else Named Rule, SAVE is unknown. FIXME: PR 116110
+ 		}
+ 	    }
  	}
        else
  	inf.m_until = sys_days(year::max()/December/31);
diff -Nrcpad gcc-15-20260508/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc gcc-15-20260515/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc
*** gcc-15-20260508/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/123100.cc	Fri May 15 22:32:18 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-15-20260508/libstdc++-v3/testsuite/std/time/clock/local/io.cc gcc-15-20260515/libstdc++-v3/testsuite/std/time/clock/local/io.cc
*** gcc-15-20260508/libstdc++-v3/testsuite/std/time/clock/local/io.cc	Fri May  8 22:32:16 2026
--- gcc-15-20260515/libstdc++-v3/testsuite/std/time/clock/local/io.cc	Fri May 15 22:32:18 2026
*************** test_parse()
*** 128,132 ****
--- 128,133 ----
  int main()
  {
    test_ostream();
+   test_format();
    test_parse();
  }
diff -Nrcpad gcc-15-20260508/libstdc++-v3/testsuite/std/time/time_zone/116110.cc gcc-15-20260515/libstdc++-v3/testsuite/std/time/time_zone/116110.cc
*** gcc-15-20260508/libstdc++-v3/testsuite/std/time/time_zone/116110.cc	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/libstdc++-v3/testsuite/std/time/time_zone/116110.cc	Fri May 15 22:32:18 2026
***************
*** 0 ****
--- 1,86 ----
+ // { dg-do run { target c++20 } }
+ // { dg-require-effective-target tzdb }
+ // { dg-require-effective-target cxx11_abi }
+ 
+ #include <chrono>
+ #include <testsuite_hooks.h>
+ 
+ using namespace std::chrono;
+ 
+ void
+ test_broken_hill()
+ {
+   /*
+   R AN 1996 2005 - Mar lastSun 2s 0 S
+   R AN 2000 o    - Aug lastSun 2s 1 D
+   Z Australia/Broken_Hill 9:25:48 -  LMT  1895 Feb
+                           10      -  AEST 1896 Aug 23
+                           9       -  ACST 1899 May
+                           9:30    AU AC%sT 1971
+                           9:30    AN AC%sT 2000
+                           9:30    AS AC%sT
+   */
+   auto* tz = locate_zone("Australia/Broken_Hill");
+   auto info = tz->get_info(sys_days(2000y/February/29d) + 23h + 23min + 23s);
+   VERIFY( info.offset == 630min );
+   VERIFY( info.save == 60min );
+   VERIFY( info.abbrev == "ACDT" );
+ }
+ 
+ void
+ test_kiritimati()
+ {
+   /* No named rules involved here, just change of fixed STDOFF at 1994-12-31:
+   Z Pacific/Kiritimati -10:29:20 - LMT 1901
+                        -10:40    - %z  1979 Oct
+                        -10       - %z  1994 Dec 31
+                         14       - %z
+   */
+   auto* tz = locate_zone("Pacific/Kiritimati");
+   local_seconds t = local_days(1994y/December/31);
+ 
+   sys_seconds ut(t.time_since_epoch() + 10h);
+   sys_info info;
+   info = tz->get_info(ut - 1s);
+   VERIFY( info.offset == -10h );
+   VERIFY( info.save == 0h );
+   VERIFY( info.abbrev == "-10" );
+   info = tz->get_info(ut);
+   VERIFY( info.offset == 14h );
+   VERIFY( info.save == 0h );
+   VERIFY( info.abbrev == "+14" );
+ }
+ 
+ void
+ test_apia()
+ {
+   /* Refers to same named rule before/after change at 2011-12-29 24:00
+      but the offset changed from -11h+1h to +13h+1h
+   Z Pacific/Apia 12:33:4  -  LMT 1892 Jul 5
+                 -11:26:56 -  LMT 1911
+                 -11:30    -  %z  1950
+                 -11       WS %z  2011 Dec 29 24
+                  13       WS %z
+   */
+   auto* tz = locate_zone("Pacific/Apia");
+   local_seconds t = local_days(2011y/December/29) + 24h;
+ 
+   // FIXME: this should be + 10h but we do not account for DST yet, so + 11h.
+   sys_seconds ut(t.time_since_epoch() + 11h );
+   sys_info info;
+   info = tz->get_info(ut - 1s);
+   VERIFY( info.offset == (-11h + info.save) );
+   VERIFY( info.save == 1h );
+   VERIFY( info.abbrev == "-10" );
+   info = tz->get_info(ut);
+   VERIFY( info.offset == (13h + info.save) );
+   VERIFY( info.save == 1h );
+   VERIFY( info.abbrev == "+14" );
+ }
+ 
+ int main()
+ {
+   test_broken_hill();
+   test_kiritimati();
+   test_apia();
+ }
diff -Nrcpad gcc-15-20260508/libstdc++-v3/testsuite/std/time/time_zone/124513.cc gcc-15-20260515/libstdc++-v3/testsuite/std/time/time_zone/124513.cc
*** gcc-15-20260508/libstdc++-v3/testsuite/std/time/time_zone/124513.cc	Thu Jan  1 00:00:00 1970
--- gcc-15-20260515/libstdc++-v3/testsuite/std/time/time_zone/124513.cc	Fri May 15 22:32:18 2026
***************
*** 0 ****
--- 1,111 ----
+ // { dg-do run { target c++20 } }
+ // { dg-require-effective-target tzdb }
+ // { dg-require-effective-target cxx11_abi }
+ // { dg-xfail-run-if "no weak override on AIX" { powerpc-ibm-aix* } }
+ 
+ #include <chrono>
+ #include <fstream>
+ #include <testsuite_hooks.h>
+ 
+ static bool override_used = false;
+ 
+ namespace __gnu_cxx
+ {
+   const char* zoneinfo_dir_override() {
+     override_used = true;
+     return "./";
+   }
+ }
+ 
+ void
+ test_mawson()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test1
+ Z Antarctica/Mawson 0 - -00 1954 F 13
+                     6 - %z  2009 O 18 2
+                     5 - %z
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test1" );
+ 
+   auto zone = locate_zone("Antarctica/Mawson");
+   auto info = zone->get_info(sys_days(2009y/October/19));
+   VERIFY( info.begin == sys_days(2009y/October/17) + 20h);
+ }
+ 
+ void
+ test_custom()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test2
+ Z Test/Zomg 3:00:00 - LMT 1990 Mar 1 2
+             4       - DST 1990 Oct 1 2
+             3       - STD 1991 Mar 1 3:30
+             3       1 DST 1991 Oct 1 3:45:01
+             3       - STD 1992 Mar 1 -
+             3       1 DST 1992 Oct 1 -u
+             3       - STD 1993 Mar 1 -s
+             3       2 DST 1993 Oct 1 -s
+             3       - STD
+ 
+ Z Test/Zoinks 0:00  -    LMT 1990 Mar 1 2
+               0:00  1:00 DST 1990 Oct 1 3
+               0:00  -    STD 1991 Mar 1 1:30
+               0:00  1:00 DST 1991 Oct 1 3:30
+               0:00  -    STD
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test2" );
+ 
+   const auto offset = 3h;
+ 
+   const time_zone* zone;
+   sys_info info;
+ 
+   zone = locate_zone("Test/Zomg");
+   info = zone->get_info(sys_days(1990y/June/1));
+   VERIFY( info.begin == sys_days(1990y/March/1) + 2h - 3h);
+   VERIFY( info.end   == sys_days(1990y/October/1) + 2h - 4h);
+ 
+   info = zone->get_info(sys_days(1991y/June/1));
+   VERIFY( info.begin == sys_days(1991y/March/1) + 3h + 30min - 3h);
+   VERIFY( info.end   == sys_days(1991y/October/1) + 3h + 45min + 1s - 4h);
+ 
+   info = zone->get_info(sys_days(1992y/June/1));
+   VERIFY( info.begin == sys_days(1992y/March/1) - 3h);
+   VERIFY( info.end   == sys_days(1992y/October/1));   // -u means midnight UTC
+ 
+   info = zone->get_info(sys_days(1992y/November/1));
+   VERIFY( info.begin == sys_days(1992y/October/1));    // -u means midnight UTC
+   VERIFY( info.end   == sys_days(1993y/March/1) - 3h); // -s means midnight STD
+ 
+   info = zone->get_info(sys_days(1993y/June/1));
+   VERIFY( info.begin == sys_days(1993y/March/1) -3h);  // -s means midnight STD
+   VERIFY( info.end   == sys_days(1993y/October/1) - 3h);
+ 
+ 
+   zone = locate_zone("Test/Zoinks");
+   info = zone->get_info(sys_days(1990y/June/1));
+   VERIFY( info.begin == sys_days(1990y/March/1) + 2h);
+   VERIFY( info.end   == sys_days(1990y/October/1) + 3h - 1h);
+ 
+   info = zone->get_info(sys_days(1991y/June/1));
+   VERIFY( info.begin == sys_days(1991y/March/1) + 1h + 30min);
+   VERIFY( info.end   == sys_days(1991y/October/1) + 3h + 30min - 1h);
+ 
+   info = zone->get_info(sys_days(1992y/June/1));
+   VERIFY( info.begin == sys_days(1991y/October/1) + 3h + 30min - 1h);
+ }
+ 
+ int main()
+ {
+   test_custom();
+   test_mawson();
+ }
diff -Nrcpad gcc-15-20260508/libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc gcc-15-20260515/libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc
*** gcc-15-20260508/libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc	Fri May  8 22:32:16 2026
--- gcc-15-20260515/libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc	Fri May 15 22:32:18 2026
*************** test_zurich()
*** 12,44 ****
    const time_zone* const tz = locate_zone("Europe/Zurich");
  
    {
!     sys_days d = 1853y/July/16;
  
!     auto info = tz->get_info(d - 1s);
!     VERIFY( info.offset == (34min + 8s) );
      VERIFY( info.abbrev == "LMT" );
  
!     info = tz->get_info(d);
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     info = tz->get_info(d + 1s);
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     info = tz->get_info(d + 0.001s);
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
    }
  
    {
      sys_days d = 1894y/June/1;
  
!     auto info = tz->get_info(d - 1s);
!     VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     info = tz->get_info(d);
      VERIFY( info.offset == 1h );
      VERIFY( info.abbrev == "CET" );
    }
--- 12,48 ----
    const time_zone* const tz = locate_zone("Europe/Zurich");
  
    {
!     sys_days d = 1853y/July/16; // On this date ...
!     auto offset = 34min + 8s;   // ... local time is this far ahead of UTC,
!     auto t = d - offset;        // so LMT to BMT transition is at this time.
  
!     auto info = tz->get_info(t - 1s);
!     VERIFY( info.offset == offset );
      VERIFY( info.abbrev == "LMT" );
  
!     info = tz->get_info(t);
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     info = tz->get_info(t + 1s);
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     info = tz->get_info(t + 0.001s);
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
    }
  
    {
      sys_days d = 1894y/June/1;
+     auto offset = 29min + 46s;
+     auto t = d - offset;
  
!     auto info = tz->get_info(t - 1s);
!     VERIFY( info.offset == offset );
      VERIFY( info.abbrev == "BMT" );
  
!     info = tz->get_info(t);
      VERIFY( info.offset == 1h );
      VERIFY( info.abbrev == "CET" );
    }
diff -Nrcpad gcc-15-20260508/libstdc++-v3/testsuite/std/time/zoned_time/1.cc gcc-15-20260515/libstdc++-v3/testsuite/std/time/zoned_time/1.cc
*** gcc-15-20260508/libstdc++-v3/testsuite/std/time/zoned_time/1.cc	Fri May  8 22:32:16 2026
--- gcc-15-20260515/libstdc++-v3/testsuite/std/time/zoned_time/1.cc	Fri May 15 22:32:18 2026
*************** test_zurich()
*** 48,71 ****
    const time_zone* const zurich = locate_zone("Europe/Zurich");
  
    {
!     sys_days d = 1853y/July/16;
  
!     auto z = zoned_seconds(zurich, sys_seconds(d) - 1s);
      auto info = z.get_info();
!     VERIFY( info.offset == (34min + 8s) );
      VERIFY( info.abbrev == "LMT" );
  
!     z = zoned_seconds(zurich, d);
      info = z.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     z = zoned_seconds(zurich, d + 1s);
      info = z.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     auto z2 = zoned_time(zurich, d + 0.001s);
      info = z2.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
--- 48,73 ----
    const time_zone* const zurich = locate_zone("Europe/Zurich");
  
    {
!     sys_days d = 1853y/July/16; // On this date ...
!     auto offset = 34min + 8s;   // ... local time is this far ahead of UTC,
!     auto t = d - offset;        // so LMT to BMT transition is at this time.
  
!     auto z = zoned_seconds(zurich, t - 1s);
      auto info = z.get_info();
!     VERIFY( info.offset == offset );
      VERIFY( info.abbrev == "LMT" );
  
!     z = zoned_seconds(zurich, t);
      info = z.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     z = zoned_seconds(zurich, t + 1s);
      info = z.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     auto z2 = zoned_time(zurich, t + 0.001s);
      info = z2.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
*************** test_zurich()
*** 73,85 ****
  
    {
      sys_days d = 1894y/June/1;
  
!     auto z = zoned_seconds(zurich, sys_seconds(d) - 1s);
      auto info = z.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     z = zoned_seconds(zurich, d);
      info = z.get_info();
      VERIFY( info.offset == 1h );
      VERIFY( info.abbrev == "CET" );
--- 75,89 ----
  
    {
      sys_days d = 1894y/June/1;
+     auto offset = 29min + 46s;
+     auto t = d - offset;
  
!     auto z = zoned_seconds(zurich, t - 1s);
      auto info = z.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     z = zoned_seconds(zurich, t);
      info = z.get_info();
      VERIFY( info.offset == 1h );
      VERIFY( info.abbrev == "CET" );
