diff -Nrcpad gcc-15-20260724/LAST_UPDATED gcc-15-20260731/LAST_UPDATED
*** gcc-15-20260724/LAST_UPDATED	Fri Jul 24 22:32:22 2026
--- gcc-15-20260731/LAST_UPDATED	Fri Jul 31 22:32:23 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-15 revision 920c3de1f84a6d7ac6ea689e742da84446c0ac50
--- 1 ----
! Obtained from git: releases/gcc-15 revision a3b110420ad422270974f2d42a019c88d389669e
diff -Nrcpad gcc-15-20260724/MD5SUMS gcc-15-20260731/MD5SUMS
*** gcc-15-20260724/MD5SUMS	Fri Jul 24 22:32:27 2026
--- gcc-15-20260731/MD5SUMS	Fri Jul 31 22:32:27 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20260724.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-20260731.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
! 39c08d5a3a29185dd1cc2f9e892e9b8b  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
--- 25,31 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! f014f595ae2f50988f7051009c63e6cc  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
*************** c5258891437b4abaf168ed1b1a5b2189  gcc/BA
*** 514,520 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! d06e54c3431c31e5a7cdc55bc3a1e409  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
! 7fa2a8329720030ca7e50d3798945eb7  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
! 193b37e6ac0fadb4179167ef32fc1e3f  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
! 34917b2ffa2eb4bab696d4db8d8ef0a4  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** de4e89bc042c6bc7eb093bda5d33a266  gcc/co
*** 4269,4278 ****
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  f98c4d94bf04187a2905e9f4ce7d589b  gcc/config/i386/sol2.h
! 6f18309c92312a94672bbb19b67a345f  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
! 9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
  945c6888d50080573fad6f6c8969b67f  gcc/config/i386/sym-mingw32.cc
  2a84ed8a951f2f1e435de73fb73d742a  gcc/config/i386/sync.md
  c9f457d07826bec76777f7d4483326a7  gcc/config/i386/sysv4.h
--- 4269,4278 ----
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  f98c4d94bf04187a2905e9f4ce7d589b  gcc/config/i386/sol2.h
! 61bedecf7cc301ef9c23ae643cddd8cf  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
! bbc827066f1e07d0b904fb9b010e2ed9  gcc/config/i386/subst.md
  945c6888d50080573fad6f6c8969b67f  gcc/config/i386/sym-mingw32.cc
  2a84ed8a951f2f1e435de73fb73d742a  gcc/config/i386/sync.md
  c9f457d07826bec76777f7d4483326a7  gcc/config/i386/sysv4.h
*************** c98feb0a43876ed3ef2fca3c8448e8f8  gcc/do
*** 5999,6005 ****
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! febaf293d53f1f2efac4cff5f02441c9  gcc/doc/sourcebuild.texi
  14e3ed780980c4fff09173b869e850ed  gcc/doc/standards.texi
  ab4d978bcc2f029d3ba445cb412b77d2  gcc/doc/tm.texi
  06d0869eb2bec892f989f31bcd7da233  gcc/doc/tm.texi.in
--- 5999,6005 ----
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! a6a28ad406a130d86d81dd54fe277049  gcc/doc/sourcebuild.texi
  14e3ed780980c4fff09173b869e850ed  gcc/doc/standards.texi
  ab4d978bcc2f029d3ba445cb412b77d2  gcc/doc/tm.texi
  06d0869eb2bec892f989f31bcd7da233  gcc/doc/tm.texi.in
*************** a798cdca802a57ffa3473ab610b37c86  gcc/fo
*** 6063,6069 ****
  c93bd28b3de1f9c783e16fc6ec4aab32  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 49cecc2007ce9603cdb6b75d57c2bf11  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6063,6069 ----
  c93bd28b3de1f9c783e16fc6ec4aab32  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 34bd854a10241ffd10cfda3502b01eb9  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** d85e2f2fc3ee4721563bd47719063fb6  gcc/fo
*** 6111,6117 ****
  860343539ea7488e7bb44b94ea2b0f77  gcc/fortran/error.cc
  67ace3d58d1c7d3baa7f7110ad229995  gcc/fortran/expr.cc
  88fde92a0336c0454c5baa0f3c24888a  gcc/fortran/f95-lang.cc
! 9e933a215ff39d7f5ddd5bbce3f846ea  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
  594106f4945aba24162f5490e0fec580  gcc/fortran/gfortran.h
--- 6111,6117 ----
  860343539ea7488e7bb44b94ea2b0f77  gcc/fortran/error.cc
  67ace3d58d1c7d3baa7f7110ad229995  gcc/fortran/expr.cc
  88fde92a0336c0454c5baa0f3c24888a  gcc/fortran/f95-lang.cc
! 397985434fbfa5a1c5e71111f8253557  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
  594106f4945aba24162f5490e0fec580  gcc/fortran/gfortran.h
*************** af420d569eb72f885f4375e275545070  gcc/ta
*** 8450,8456 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! cf725e84f616428b7a5e012cccd3bd70  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8450,8456 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 869af013541d5a2516e1909e398891d3  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** a49bb05a98ee7ad2eb4c9f08711d3d4d  gcc/te
*** 23277,23284 ****
  d9feefe3043369b99ac1813781a3c3a3  gcc/testsuite/g++.dg/ext/arm-bf16/bf16-mangle-aarch64-1.C
  9ad9eafed83197342bcdbe7afa3a727f  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C
  888dbd717f5ba09e01e62616168dedf1  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C
! 20cf8d8234fffbde16b875fbfdbafb39  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C
! f19459f696c2045d2353b73d297e226d  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C
  55ccc89665481af2e7e6fc67952359f9  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C
  7b3de180584180ecc9cfa5543f4cb88c  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C
  df15bedf7dd28c41919973661d580f91  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C
--- 23277,23284 ----
  d9feefe3043369b99ac1813781a3c3a3  gcc/testsuite/g++.dg/ext/arm-bf16/bf16-mangle-aarch64-1.C
  9ad9eafed83197342bcdbe7afa3a727f  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C
  888dbd717f5ba09e01e62616168dedf1  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C
! 581f15e0f0f2f3833ef80f3d51601946  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C
! 556176ae960ce96392de80468fd7312e  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C
  55ccc89665481af2e7e6fc67952359f9  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C
  7b3de180584180ecc9cfa5543f4cb88c  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C
  df15bedf7dd28c41919973661d580f91  gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C
*************** fca1ecf794ece1959ac2707634e0c851  gcc/te
*** 26090,26096 ****
  aa63ed16efc23c3cd90945cae6feaca6  gcc/testsuite/g++.dg/lto/pr126194.h
  b321c964a71193311ce1f572263f323f  gcc/testsuite/g++.dg/lto/pr126194_0.C
  b0221442ff7a2932e8574b51f9806156  gcc/testsuite/g++.dg/lto/pr126194_1.C
! 2ff30c8dcd415ce0d2a171da46c415cd  gcc/testsuite/g++.dg/lto/pr126194_2.C
  ba9b686c163762488051ec4094a838b2  gcc/testsuite/g++.dg/lto/pr40818_0.C
  08a786b250f802e56e458c7d60a358fc  gcc/testsuite/g++.dg/lto/pr42987_0.C
  1b56fef803fe85ec97121919ad3ba2b9  gcc/testsuite/g++.dg/lto/pr42987_1.C
--- 26090,26096 ----
  aa63ed16efc23c3cd90945cae6feaca6  gcc/testsuite/g++.dg/lto/pr126194.h
  b321c964a71193311ce1f572263f323f  gcc/testsuite/g++.dg/lto/pr126194_0.C
  b0221442ff7a2932e8574b51f9806156  gcc/testsuite/g++.dg/lto/pr126194_1.C
! dc9bcbe5dfb11ab62a48de0b4a081a84  gcc/testsuite/g++.dg/lto/pr126194_2.C
  ba9b686c163762488051ec4094a838b2  gcc/testsuite/g++.dg/lto/pr40818_0.C
  08a786b250f802e56e458c7d60a358fc  gcc/testsuite/g++.dg/lto/pr42987_0.C
  1b56fef803fe85ec97121919ad3ba2b9  gcc/testsuite/g++.dg/lto/pr42987_1.C
*************** d23f5563695ea2b9898397f0244ca90d  gcc/te
*** 53006,53017 ****
  2063dc05a74374000dcf03fc407536e5  gcc/testsuite/gcc.dg/torture/alias-2.c
  623b6f1d93f75b391f9d1dc139c50697  gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c
  79136fa8006ded4d50fd423e8feb0576  gcc/testsuite/gcc.dg/torture/arm-fp16-compile-convert.c
! b9eb255566755af3180eb0e9b25d0db1  gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c
  acce6a0692aef9e9f3765bf8135e97a4  gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-ieee.c
  9ad9eafed83197342bcdbe7afa3a727f  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-1.c
  888dbd717f5ba09e01e62616168dedf1  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-2.c
! 863d9c5a7d15467a72e816b2b43571e2  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c
! 9bd8042dcfc26701d025f9153b773ec7  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c
  55ccc89665481af2e7e6fc67952359f9  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c
  7b3de180584180ecc9cfa5543f4cb88c  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c
  df15bedf7dd28c41919973661d580f91  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c
--- 53006,53017 ----
  2063dc05a74374000dcf03fc407536e5  gcc/testsuite/gcc.dg/torture/alias-2.c
  623b6f1d93f75b391f9d1dc139c50697  gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c
  79136fa8006ded4d50fd423e8feb0576  gcc/testsuite/gcc.dg/torture/arm-fp16-compile-convert.c
! e49e815c9944c912ac203cb7ddba3271  gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c
  acce6a0692aef9e9f3765bf8135e97a4  gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-ieee.c
  9ad9eafed83197342bcdbe7afa3a727f  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-1.c
  888dbd717f5ba09e01e62616168dedf1  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-2.c
! 581f15e0f0f2f3833ef80f3d51601946  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c
! 556176ae960ce96392de80468fd7312e  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c
  55ccc89665481af2e7e6fc67952359f9  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c
  7b3de180584180ecc9cfa5543f4cb88c  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c
  df15bedf7dd28c41919973661d580f91  gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c
*************** d9ed650f309dc0e24daeb25d90c34fa0  gcc/te
*** 80544,80549 ****
--- 80544,80550 ----
  79c874a97f648ff278ec1765414620b1  gcc/testsuite/gcc.target/i386/pr124710-2.c
  dc1ca8471081be67fdad4d340997d425  gcc/testsuite/gcc.target/i386/pr125351.c
  f91ae39059fe7fb51f459d3446010197  gcc/testsuite/gcc.target/i386/pr126148.c
+ daa1cb0a89547fecac9f64b4325b1f0c  gcc/testsuite/gcc.target/i386/pr126429-1.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
  31ead0ee84b382ba03e3561931bc6e40  gcc/testsuite/gcc.target/i386/pr14289-1.c
*************** e5a418513e079e50ea576e021cf5ad8e  gcc/te
*** 104726,104731 ****
--- 104727,104733 ----
  89a35f94060b171becdc54771a02040b  gcc/testsuite/gfortran.dg/inline_matmul_24.f90
  d5dddad98efc37928795b446cb8d6501  gcc/testsuite/gfortran.dg/inline_matmul_25.f90
  f500cc59ecbd3442513dea98e8f73719  gcc/testsuite/gfortran.dg/inline_matmul_27.f90
+ b86dbc1f75df99fd92a0357727ec3a37  gcc/testsuite/gfortran.dg/inline_matmul_28.f90
  ffdb4ca68f61f3bd618415335c9c7c21  gcc/testsuite/gfortran.dg/inline_matmul_3.f90
  f95e5fd479c839cfa9cb3ac127ee7584  gcc/testsuite/gfortran.dg/inline_matmul_4.f90
  6cb787ca0dac6ea814c8af4ac7cb8022  gcc/testsuite/gfortran.dg/inline_matmul_5.f90
*************** eb1595e729e2eaac81c7ffe330d8f24e  gcc/te
*** 115945,115951 ****
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! 1c8cb12ea0693adf6b7fbaba59f93e85  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
--- 115947,115953 ----
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! 99b05ef6ef96d85b8ad05a4ef02e319e  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 132569,132575 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! f5a83c4c91ad1690ef55a5cdd8af85c7  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 132571,132577 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 90b61cf589e8dbf567be4939ae91b826  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** fc90aab2bcae05d7286b5666cd1f2be8  libstd
*** 134316,134322 ****
  6f52cb5166806e80230cc27bc6c99101  libstdc++-v3/src/c++20/format.cc
  939eb3ac7ce3c32a8b2aac493f053893  libstdc++-v3/src/c++20/sstream-inst.cc
  0dfa4a770289b4e926b8281770732d5a  libstdc++-v3/src/c++20/tzdata.zi
! b0d7e2c6204a3d2c19d2cea526f2a4df  libstdc++-v3/src/c++20/tzdb.cc
  bbdb375b3fc74c05f57fa8724534800b  libstdc++-v3/src/c++23/Makefile.am
  8131af9a9633e0c3f6f015dd3029034b  libstdc++-v3/src/c++23/Makefile.in
  3c95970ad4fd23117b63a99dd3241ebe  libstdc++-v3/src/c++23/libstdc++.modules.json.in
--- 134318,134324 ----
  6f52cb5166806e80230cc27bc6c99101  libstdc++-v3/src/c++20/format.cc
  939eb3ac7ce3c32a8b2aac493f053893  libstdc++-v3/src/c++20/sstream-inst.cc
  0dfa4a770289b4e926b8281770732d5a  libstdc++-v3/src/c++20/tzdata.zi
! 193d25a8784d0ed2747b0e249ea170f4  libstdc++-v3/src/c++20/tzdb.cc
  bbdb375b3fc74c05f57fa8724534800b  libstdc++-v3/src/c++23/Makefile.am
  8131af9a9633e0c3f6f015dd3029034b  libstdc++-v3/src/c++23/Makefile.in
  3c95970ad4fd23117b63a99dd3241ebe  libstdc++-v3/src/c++23/libstdc++.modules.json.in
*************** a0be85b8053be995a48a4cfec6a5b675  libstd
*** 143621,143632 ****
  4547b0badce5668333f08490264f6870  libstdc++-v3/testsuite/std/time/parse/125369.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
  3c922068cf98b21e732c0de16c319289  libstdc++-v3/testsuite/std/time/tzdb/1.cc
  c142573e06d5c52d53f0f20e1e72e973  libstdc++-v3/testsuite/std/time/tzdb/leap_seconds.cc
--- 143623,143636 ----
  4547b0badce5668333f08490264f6870  libstdc++-v3/testsuite/std/time/parse/125369.cc
  4650244d174eff0342f84405e248bbfe  libstdc++-v3/testsuite/std/time/parse/parse.cc
  8e3bf07939ba94874a6652e2a596d549  libstdc++-v3/testsuite/std/time/syn_c++20.cc
! 20a3aeab320cb801731b51309979937b  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
+ 1e7ccd27fe0a3cf8d6428f6f2710fcb9  libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc
  efdc68d548df15089ce510e6bf1c33c7  libstdc++-v3/testsuite/std/time/time_zone/requirements.cc
  105f0ca3c8074ef3b2c1751d37ec2b96  libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc
+ 57d3f5cb0b34d16a612546952b82dafa  libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc
  fb1501eaac6167bb3503c953bd7315db  libstdc++-v3/testsuite/std/time/traits/is_clock.cc
  3c922068cf98b21e732c0de16c319289  libstdc++-v3/testsuite/std/time/tzdb/1.cc
  c142573e06d5c52d53f0f20e1e72e973  libstdc++-v3/testsuite/std/time/tzdb/leap_seconds.cc
diff -Nrcpad gcc-15-20260724/gcc/ChangeLog gcc-15-20260731/gcc/ChangeLog
*** gcc-15-20260724/gcc/ChangeLog	Fri Jul 24 22:32:04 2026
--- gcc-15-20260731/gcc/ChangeLog	Fri Jul 31 22:32:05 2026
***************
*** 1,3 ****
--- 1,42 ----
+ 2026-07-28  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	Backported from master:
+ 	2026-07-28  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	PR target/126429
+ 	* config/i386/sse.md (avx512fmaskhalfmode): Removed.
+ 	(avx512f_dpbf16ps_<mode>_maskz): Use avx512fmaskmode instead of
+ 	avx512fmaskhalfmode.
+ 	(avx512f_dpbf16ps_<mode>_mask): Ditto.
+ 	(avx512f_dpbf16ps_<mode><maskz_half_name>): Rename to ...
+ 	(avx512f_dpbf16ps_<mode><sd_maskz_name>): ... this. Use
+ 	corresponding sd_mask_op4.
+ 	* config/i386/subst.md (maskz_half): Remove not used pattern.
+ 
+ 2026-07-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* doc/sourcebuild.texi (arm_neon_fp16_hw, arm_fp16_alternative_hw):
+ 	Use @code{...} instead of @code(...).
+ 
+ 2026-07-27  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	Backported from master:
+ 	2026-07-27  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* doc/sourcebuild.texi (arm_fp16_alternative_hw): Document.
+ 	(arm_neon_fp16_hw): Add reference to arm_neon_fp16_ok.
+ 
+ 2026-07-24  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	Backported from master:
+ 	2026-07-21  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	PR tree-optimization/124663
+ 	* match.pd: Fold constant conditional selects.
+ 
  2026-07-23  Hu, Lin1  <lin1.hu@intel.com>
  
  	* config/i386/avx10_2satcvtintrin.h
diff -Nrcpad gcc-15-20260724/gcc/DATESTAMP gcc-15-20260731/gcc/DATESTAMP
*** gcc-15-20260724/gcc/DATESTAMP	Fri Jul 24 22:32:05 2026
--- gcc-15-20260731/gcc/DATESTAMP	Fri Jul 31 22:32:05 2026
***************
*** 1 ****
! 20260724
--- 1 ----
! 20260731
diff -Nrcpad gcc-15-20260724/gcc/config/i386/sse.md gcc-15-20260731/gcc/config/i386/sse.md
*** gcc-15-20260724/gcc/config/i386/sse.md	Fri Jul 24 22:32:06 2026
--- gcc-15-20260731/gcc/config/i386/sse.md	Fri Jul 31 22:32:07 2026
***************
*** 1131,1147 ****
     (V16SF "hi") (V8SF  "qi") (V4SF  "qi")
     (V8DF  "qi") (V4DF  "qi") (V2DF  "qi")])
  
- ;; Mapping of vector modes to corresponding mask half size
- (define_mode_attr avx512fmaskhalfmode
-   [(V64QI "SI") (V32QI "HI") (V16QI "QI")
-    (V32HI "HI") (V16HI "QI") (V8HI  "QI") (V4HI "QI")
-    (V16SI "QI") (V8SI  "QI") (V4SI  "QI")
-    (V8DI  "QI") (V4DI  "QI") (V2DI  "QI")
-    (V32HF "HI") (V16HF "QI") (V8HF  "QI")
-    (V32BF "HI") (V16BF "QI") (V8BF  "QI")
-    (V16SF "QI") (V8SF  "QI") (V4SF  "QI")
-    (V8DF  "QI") (V4DF  "QI") (V2DF  "QI")])
- 
  ;; Mapping of vector float modes to an integer mode of the same size
  (define_mode_attr sseintvecmode
    [(V32HF "V32HI") (V32BF "V32HI") (V16SF "V16SI") (V8DF  "V8DI")
--- 1131,1136 ----
***************
*** 31668,31674 ****
     (match_operand:VF1_AVX512VL 1 "register_operand")
     (match_operand:<sf_bf16> 2 "register_operand")
     (match_operand:<sf_bf16> 3 "register_operand")
!    (match_operand:<avx512fmaskhalfmode> 4 "register_operand")]
    "TARGET_AVX512BF16"
  {
    emit_insn (gen_avx512f_dpbf16ps_<mode>_maskz_1(operands[0], operands[1],
--- 31657,31663 ----
     (match_operand:VF1_AVX512VL 1 "register_operand")
     (match_operand:<sf_bf16> 2 "register_operand")
     (match_operand:<sf_bf16> 3 "register_operand")
!    (match_operand:<avx512fmaskmode> 4 "register_operand")]
    "TARGET_AVX512BF16"
  {
    emit_insn (gen_avx512f_dpbf16ps_<mode>_maskz_1(operands[0], operands[1],
***************
*** 31676,31682 ****
    DONE;
  })
  
! (define_insn "avx512f_dpbf16ps_<mode><maskz_half_name>"
    [(set (match_operand:VF1_AVX512VL 0 "register_operand" "=v")
  	(unspec:VF1_AVX512VL
  	  [(match_operand:VF1_AVX512VL 1 "register_operand" "0")
--- 31665,31671 ----
    DONE;
  })
  
! (define_insn "avx512f_dpbf16ps_<mode><sd_maskz_name>"
    [(set (match_operand:VF1_AVX512VL 0 "register_operand" "=v")
  	(unspec:VF1_AVX512VL
  	  [(match_operand:VF1_AVX512VL 1 "register_operand" "0")
***************
*** 31684,31690 ****
  	   (match_operand:<sf_bf16> 3 "nonimmediate_operand" "vm")]
          UNSPEC_VDPBF16PS))]
    "TARGET_AVX512BF16"
!   "vdpbf16ps\t{%3, %2, %0<maskz_half_operand4>|%0<maskz_half_operand4>, %2, %3}")
  
  (define_insn "avx512f_dpbf16ps_<mode>_mask"
    [(set (match_operand:VF1_AVX512VL 0 "register_operand" "=v")
--- 31673,31679 ----
  	   (match_operand:<sf_bf16> 3 "nonimmediate_operand" "vm")]
          UNSPEC_VDPBF16PS))]
    "TARGET_AVX512BF16"
!   "vdpbf16ps\t{%3, %2, %0<sd_mask_op4>|%0<sd_mask_op4>, %2, %3}")
  
  (define_insn "avx512f_dpbf16ps_<mode>_mask"
    [(set (match_operand:VF1_AVX512VL 0 "register_operand" "=v")
***************
*** 31695,31701 ****
  	     (match_operand:<sf_bf16> 3 "nonimmediate_operand" "vm")]
               UNSPEC_VDPBF16PS)
            (match_dup 1)
!           (match_operand:<avx512fmaskhalfmode> 4 "register_operand" "Yk")))]
    "TARGET_AVX512BF16"
    "vdpbf16ps\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}")
  
--- 31684,31690 ----
  	     (match_operand:<sf_bf16> 3 "nonimmediate_operand" "vm")]
               UNSPEC_VDPBF16PS)
            (match_dup 1)
!           (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
    "TARGET_AVX512BF16"
    "vdpbf16ps\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}")
  
diff -Nrcpad gcc-15-20260724/gcc/config/i386/subst.md gcc-15-20260731/gcc/config/i386/subst.md
*** gcc-15-20260724/gcc/config/i386/subst.md	Fri Jul 24 22:32:06 2026
--- gcc-15-20260731/gcc/config/i386/subst.md	Fri Jul 31 22:32:07 2026
***************
*** 469,484 ****
  		(const_int 1))
  	     (match_operand:SI 3 "const48_operand")]
  		UNSPEC_EMBEDDED_ROUNDING))])
- 
- (define_subst_attr "maskz_half_name" "maskz_half" "" "_maskz_1")
- (define_subst_attr "maskz_half_operand4" "maskz_half" "" "%{%5%}%N4")
- 
- (define_subst "maskz_half"
-   [(set (match_operand:SUBST_V 0)
-         (match_operand:SUBST_V 1))]
-   ""
-   [(set (match_dup 0)
-         (vec_merge:SUBST_V
- 	  (match_dup 1)
- 	  (match_operand:SUBST_V 2 "const0_operand")
- 	  (match_operand:<avx512fmaskhalfmode> 3 "register_operand" "Yk")))])
--- 469,471 ----
diff -Nrcpad gcc-15-20260724/gcc/doc/sourcebuild.texi gcc-15-20260731/gcc/doc/sourcebuild.texi
*** gcc-15-20260724/gcc/doc/sourcebuild.texi	Fri Jul 24 22:32:07 2026
--- gcc-15-20260731/gcc/doc/sourcebuild.texi	Fri Jul 31 22:32:07 2026
*************** options, including @code{-mfp16-format=i
*** 2095,2106 ****
  
  @item arm_neon_fp16_hw
  Test system supports executing Neon half-precision float instructions.
! (Implies previous.)
  
  @item arm_fp16_alternative_ok
  ARM target supports the ARM FP16 alternative format.  Some multilibs
  may be incompatible with the options needed.
  
  @item arm_fp16_none_ok
  ARM target supports specifying none as the ARM FP16 format.
  
--- 2095,2111 ----
  
  @item arm_neon_fp16_hw
  Test system supports executing Neon half-precision float instructions.
! (Implies @code{arm_neon_fp16_ok}.)
  
  @item arm_fp16_alternative_ok
  ARM target supports the ARM FP16 alternative format.  Some multilibs
  may be incompatible with the options needed.
  
+ @item arm_fp16_alternative_hw
+ Test system supports executing VFP half-precision floating-point
+ instructions in the ARM FP16 alternative format.  (Implies
+ @code{arm_fp16_alternative_ok}.)
+ 
  @item arm_fp16_none_ok
  ARM target supports specifying none as the ARM FP16 format.
  
diff -Nrcpad gcc-15-20260724/gcc/fortran/ChangeLog gcc-15-20260731/gcc/fortran/ChangeLog
*** gcc-15-20260724/gcc/fortran/ChangeLog	Fri Jul 24 22:32:07 2026
--- gcc-15-20260731/gcc/fortran/ChangeLog	Fri Jul 31 22:32:07 2026
***************
*** 1,3 ****
--- 1,12 ----
+ 2026-07-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-26  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/126386
+ 	* frontend-passes.cc (matmul_lhs_realloc):  Fix size calculation of
+ 	A2B1 case.
+ 
  2026-07-20  Mikael Morin  <mikael@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260724/gcc/fortran/frontend-passes.cc gcc-15-20260731/gcc/fortran/frontend-passes.cc
*** gcc-15-20260724/gcc/fortran/frontend-passes.cc	Fri Jul 24 22:32:07 2026
--- gcc-15-20260731/gcc/fortran/frontend-passes.cc	Fri Jul 31 22:32:07 2026
*************** matmul_lhs_realloc (gfc_expr *c, gfc_exp
*** 3565,3571 ****
        ar->start[0] = get_array_inq_function (GFC_ISYM_SIZE, a, 1);
        cond = build_logical_expr (INTRINSIC_NE,
  				 get_array_inq_function (GFC_ISYM_SIZE, c, 1),
! 				 get_array_inq_function (GFC_ISYM_SIZE, a, 2));
        break;
  
      case A1B2:
--- 3565,3571 ----
        ar->start[0] = get_array_inq_function (GFC_ISYM_SIZE, a, 1);
        cond = build_logical_expr (INTRINSIC_NE,
  				 get_array_inq_function (GFC_ISYM_SIZE, c, 1),
! 				 get_array_inq_function (GFC_ISYM_SIZE, a, 1));
        break;
  
      case A1B2:
diff -Nrcpad gcc-15-20260724/gcc/testsuite/ChangeLog gcc-15-20260731/gcc/testsuite/ChangeLog
*** gcc-15-20260724/gcc/testsuite/ChangeLog	Fri Jul 24 22:32:10 2026
--- gcc-15-20260731/gcc/testsuite/ChangeLog	Fri Jul 31 22:32:10 2026
***************
*** 1,3 ****
--- 1,40 ----
+ 2026-07-28  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	Backported from master:
+ 	2026-07-28  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	PR target/126429
+ 	* gcc.target/i386/pr126429-1.c: New test.
+ 
+ 2026-07-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-26  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/126386
+ 	* gfortran.dg/inline_matmul_28.f90: New test.
+ 
+ 2026-07-27  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	Backported from master:
+ 	2026-07-27  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* g++.dg/ext/arm-fp16/arm-fp16-ops-3.C: Require effective target
+ 	arm_fp16_alternative_hw instead of arm_fp16_alternative_ok.
+ 	* g++.dg/ext/arm-fp16/arm-fp16-ops-4.C: Likewise.
+ 	* gcc.dg/torture/arm-fp16-int-convert-alt.c: Likewise.
+ 	* gcc.dg/torture/arm-fp16-ops-3.c: Likewise.
+ 	* gcc.dg/torture/arm-fp16-ops-4.c: Likewise.
+ 	* lib/target-supports.exp (arm_fp16_alternative_hw): New proc.
+ 
+ 2026-07-24  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	Backported from master:
+ 	2026-07-21  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	PR tree-optimization/124663
+ 	* g++.dg/tree-ssa/pr124663.C: New test.
+ 
  2026-07-23  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260724/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C gcc-15-20260731/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C
*** gcc-15-20260724/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C	Fri Jul 24 22:32:11 2026
--- gcc-15-20260731/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C	Fri Jul 31 22:32:11 2026
***************
*** 1,6 ****
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_ok } */
  /* { dg-add-options arm_fp16_alternative } */
  
  #include "arm-fp16-ops.h"
--- 1,6 ----
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_hw } */
  /* { dg-add-options arm_fp16_alternative } */
  
  #include "arm-fp16-ops.h"
diff -Nrcpad gcc-15-20260724/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C gcc-15-20260731/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C
*** gcc-15-20260724/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C	Fri Jul 24 22:32:11 2026
--- gcc-15-20260731/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C	Fri Jul 31 22:32:11 2026
***************
*** 1,6 ****
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_ok } */
  /* { dg-options "-ffast-math" } */
  /* { dg-add-options arm_fp16_alternative } */
  
--- 1,6 ----
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_hw } */
  /* { dg-options "-ffast-math" } */
  /* { dg-add-options arm_fp16_alternative } */
  
diff -Nrcpad gcc-15-20260724/gcc/testsuite/g++.dg/lto/pr126194_2.C gcc-15-20260731/gcc/testsuite/g++.dg/lto/pr126194_2.C
*** gcc-15-20260724/gcc/testsuite/g++.dg/lto/pr126194_2.C	Fri Jul 24 22:32:11 2026
--- gcc-15-20260731/gcc/testsuite/g++.dg/lto/pr126194_2.C	Fri Jul 31 22:32:11 2026
*************** extern "C" int run_repro(int argc);
*** 4,8 ****
  
  int main(int argc, char**)
  {
!     return run_repro(argc);
  }
--- 4,8 ----
  
  int main(int argc, char**)
  {
!     return run_repro(argc >= 0);
  }
diff -Nrcpad gcc-15-20260724/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c gcc-15-20260731/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c
*** gcc-15-20260724/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c	Fri Jul 24 22:32:12 2026
--- gcc-15-20260731/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c	Fri Jul 31 22:32:12 2026
***************
*** 1,6 ****
  /* Test floating-point conversions.  Standard types and __fp16.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_ok }
  /* { dg-add-options arm_fp16_alternative } */
  
  #include "fp-int-convert.h"
--- 1,6 ----
  /* Test floating-point conversions.  Standard types and __fp16.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_hw } */
  /* { dg-add-options arm_fp16_alternative } */
  
  #include "fp-int-convert.h"
diff -Nrcpad gcc-15-20260724/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c gcc-15-20260731/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c
*** gcc-15-20260724/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c	Fri Jul 24 22:32:12 2026
--- gcc-15-20260731/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c	Fri Jul 31 22:32:12 2026
***************
*** 1,6 ****
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_ok }
  /* { dg-add-options arm_fp16_alternative } */
  
  #include "arm-fp16-ops.h"
--- 1,6 ----
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_hw } */
  /* { dg-add-options arm_fp16_alternative } */
  
  #include "arm-fp16-ops.h"
diff -Nrcpad gcc-15-20260724/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c gcc-15-20260731/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c
*** gcc-15-20260724/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c	Fri Jul 24 22:32:12 2026
--- gcc-15-20260731/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c	Fri Jul 31 22:32:12 2026
***************
*** 1,6 ****
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_ok }
  /* { dg-options "-ffast-math" } */
  /* { dg-add-options arm_fp16_alternative } */
  
--- 1,6 ----
  /* Test various operators on __fp16 and mixed __fp16/float operands.  */
  /* { dg-do run { target arm*-*-* } } */
! /* { dg-require-effective-target arm_fp16_alternative_hw } */
  /* { dg-options "-ffast-math" } */
  /* { dg-add-options arm_fp16_alternative } */
  
diff -Nrcpad gcc-15-20260724/gcc/testsuite/gcc.target/i386/pr126429-1.c gcc-15-20260731/gcc/testsuite/gcc.target/i386/pr126429-1.c
*** gcc-15-20260724/gcc/testsuite/gcc.target/i386/pr126429-1.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20260731/gcc/testsuite/gcc.target/i386/pr126429-1.c	Fri Jul 31 22:32:14 2026
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx512bf16 -mavx512dq" } */
+ /* { dg-final { scan-assembler-not "kmovb" } } */
+ 
+ #include <immintrin.h>
+ 
+ __m512 dp16ps_mask (__m512 src, __mmask16 k, __m512bh a, __m512bh b)
+ {
+   return _mm512_mask_dpbf16_ps (src, k, a, b);
+ }
+ 
+ __m512 dp16ps_maskz (__mmask16 k, __m512 src, __m512bh a, __m512bh b)
+ {
+   return _mm512_maskz_dpbf16_ps (k, src, a, b);
+ }
diff -Nrcpad gcc-15-20260724/gcc/testsuite/gfortran.dg/inline_matmul_28.f90 gcc-15-20260731/gcc/testsuite/gfortran.dg/inline_matmul_28.f90
*** gcc-15-20260724/gcc/testsuite/gfortran.dg/inline_matmul_28.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20260731/gcc/testsuite/gfortran.dg/inline_matmul_28.f90	Fri Jul 31 22:32:16 2026
***************
*** 0 ****
--- 1,21 ----
+ ! { dg-do run }
+ ! { dg-options "-ffrontend-optimize" }
+ ! PR 126386 - size calculation for allocation of the lhs for matmmul
+ ! was wrong.  Original test case by Christoph Hofer.
+ 
+ PROGRAM reallocation_bug
+     REAL(8), DIMENSION(:), ALLOCATABLE :: y
+     REAL(8), DIMENSION(3,2) :: A
+     real(8), dimension(3) :: x
+     
+     A(:,1) = [1,-2,3]
+     A(:,2) = [-4,5,6]
+     
+     x =  [7,-8,9]
+ 
+     ALLOCATE(y(3))
+     y = matmul(transpose(2*a),x)
+     if (size(y,1) /= 2) stop 1
+     if (any(y /= [100, -28])) stop 2
+     
+ END PROGRAM reallocation_bug
diff -Nrcpad gcc-15-20260724/gcc/testsuite/lib/target-supports.exp gcc-15-20260731/gcc/testsuite/lib/target-supports.exp
*** gcc-15-20260724/gcc/testsuite/lib/target-supports.exp	Fri Jul 24 22:32:16 2026
--- gcc-15-20260731/gcc/testsuite/lib/target-supports.exp	Fri Jul 31 22:32:16 2026
*************** proc check_effective_target_arm_fp16_alt
*** 5817,5822 ****
--- 5817,5845 ----
  		check_effective_target_arm_fp16_alternative_ok_nocache]
  }
  
+ # Return 1 if the target supports executing FP16 alternative format
+ # instructions selected by arm_fp16_alternative_ok.
+ 
+ proc check_effective_target_arm_fp16_alternative_hw { } {
+     if { ! [check_effective_target_arm_fp16_alternative_ok] } {
+ 	return 0
+     }
+ 
+     global et_arm_fp16_alternative_flags
+     check_runtime arm_fp16_alternative_hw {
+ 	int
+ 	main (int argc, char **argv)
+ 	{
+ 	  __fp16 a = 1.0;
+ 	  float r;
+ 	  asm ("vcvtb.f32.f16 %0, %1"
+ 	       : "=w" (r) : "w" (a)
+ 	       : /* No clobbers.  */);
+ 	  return (r == 1.0) ? 0 : 1;
+ 	}
+     } "$et_arm_fp16_alternative_flags"
+ }
+ 
  # Return 1 if this is an ARM target supports specifying the FP16 none
  # format.  Some multilibs may be incompatible with the options needed.
  
diff -Nrcpad gcc-15-20260724/libstdc++-v3/ChangeLog gcc-15-20260731/libstdc++-v3/ChangeLog
*** gcc-15-20260724/libstdc++-v3/ChangeLog	Fri Jul 24 22:32:18 2026
--- gcc-15-20260731/libstdc++-v3/ChangeLog	Fri Jul 31 22:32:19 2026
***************
*** 1,3 ****
--- 1,18 ----
+ 2026-07-29  Álvaro Begué  <alvaro.begue@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-05-13  Álvaro Begué  <alvaro.begue@gmail.com>
+ 
+ 	PR libstdc++/124851
+ 	* src/c++20/tzdb.cc (ZoneInfo::ZoneInfo(sys_info&&)): Store
+ 	stdoff only in m_offset (subtract info.save).
+ 	(ZoneInfo::ZoneInfo(const pair<sys_info, string_view>&)):
+ 	Likewise.
+ 	(ZoneInfo::offset()): Document new semantics.
+ 	(ZoneInfo::to(sys_info&)): Add m_save back to offset() when
+ 	populating sys_info::offset.
+ 	* testsuite/std/time/time_zone/numeric_save.cc: New test.
+ 
  2026-07-16  Jonathan Wakely  <jwakely@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20260724/libstdc++-v3/src/c++20/tzdb.cc gcc-15-20260731/libstdc++-v3/src/c++20/tzdb.cc
*** gcc-15-20260724/libstdc++-v3/src/c++20/tzdb.cc	Fri Jul 24 22:32:18 2026
--- gcc-15-20260731/libstdc++-v3/src/c++20/tzdb.cc	Fri Jul 31 22:32:19 2026
*************** namespace std::chrono
*** 206,212 ****
    constinit atomic<tzdb_list::_Node*> tzdb_list::_Node::_S_head_cache{nullptr};
  #endif
  
!   // The data structures defined in this file (Rule, on_day, at_time etc.)
    // are used to represent the information parsed from the tzdata.zi file
    // described at https://man7.org/linux/man-pages/man8/zic.8.html#FILES
  
--- 206,212 ----
    constinit atomic<tzdb_list::_Node*> tzdb_list::_Node::_S_head_cache{nullptr};
  #endif
  
!   // The data structures defined in this file (Rule, on_month_day, at_time etc.)
    // are used to represent the information parsed from the tzdata.zi file
    // described at https://man7.org/linux/man-pages/man8/zic.8.html#FILES
  
*************** namespace std::chrono
*** 295,301 ****
      };
  
      // The IN and ON fields of a RULE record, e.g. "March lastSunday".
!     struct on_day
      {
        using rep = uint_least16_t;
        // Equivalent to Kind, chrono::month, chrono::day, chrono::weekday,
--- 295,301 ----
      };
  
      // The IN and ON fields of a RULE record, e.g. "March lastSunday".
!     struct on_month_day
      {
        using rep = uint_least16_t;
        // Equivalent to Kind, chrono::month, chrono::day, chrono::weekday,
*************** namespace std::chrono
*** 359,365 ****
  	return ymd;
        }
  
!       friend istream& operator>>(istream&, on_day&);
      };
  
      // Wrapper for two chrono::year values, which reads the FROM and TO
--- 359,366 ----
  	return ymd;
        }
  
! 
!       friend istream& operator>>(istream&, on_month_day&);
      };
  
      // Wrapper for two chrono::year values, which reads the FROM and TO
*************** namespace std::chrono
*** 470,481 ****
  
        ZoneInfo(sys_info&& info)
        : m_buf(std::move(info.abbrev)), m_expanded(true), m_save(info.save),
! 	m_offset(info.offset), m_until(info.end)
        { }
  
        ZoneInfo(const pair<sys_info, string_view>& info)
!       : m_expanded(true), m_save(info.first.save), m_offset(info.first.offset),
! 	m_until(info.first.end)
        {
  	if (info.second.size())
  	  {
--- 471,483 ----
  
        ZoneInfo(sys_info&& info)
        : m_buf(std::move(info.abbrev)), m_expanded(true), m_save(info.save),
! 	m_offset(info.offset - seconds(info.save)), m_until(info.end)
        { }
  
        ZoneInfo(const pair<sys_info, string_view>& info)
!       : m_expanded(true), m_save(info.first.save),
! 	m_offset(info.first.offset - seconds(info.first.save)),
!        	m_until(info.first.end)
        {
  	if (info.second.size())
  	  {
*************** namespace std::chrono
*** 486,492 ****
  	m_buf += info.first.abbrev;
        }
  
!       // STDOFF: Seconds from UTC during standard time.
        seconds
        offset() const noexcept { return m_offset; }
  
--- 488,494 ----
  	m_buf += info.first.abbrev;
        }
  
!       // STDOFF: Seconds from UTC during standard time (without any save).
        seconds
        offset() const noexcept { return m_offset; }
  
*************** namespace std::chrono
*** 531,537 ****
  	  return false;
  
  	info.end = until();
! 	info.offset = offset();
  	info.save = minutes(m_save);
  	info.abbrev = format();
  	format_abbrev_str(info); // expand %z
--- 533,539 ----
  	  return false;
  
  	info.end = until();
! 	info.offset = offset() + seconds(m_save);
  	info.save = minutes(m_save);
  	info.abbrev = format();
  	format_abbrev_str(info); // expand %z
*************** namespace std::chrono
*** 581,589 ****
      // A RULE record from the tzdata.zi timezone info file.
      struct Rule
      {
!       // This allows on_day to reuse padding of at_time.
        // This keeps the size to 8 bytes and the alignment to 4 bytes.
!       struct datetime : at_time { on_day day; };
  
        // TODO combining name+letters into a single string (like in ZoneInfo)
        // would save sizeof(string) and make Rule fit in a single cacheline.
--- 583,591 ----
      // A RULE record from the tzdata.zi timezone info file.
      struct Rule
      {
!       // This allows on_month_day to reuse padding of at_time.
        // This keeps the size to 8 bytes and the alignment to 4 bytes.
!       struct datetime : at_time { on_month_day day; };
  
        // TODO combining name+letters into a single string (like in ZoneInfo)
        // would save sizeof(string) and make Rule fit in a single cacheline.
*************** namespace std::chrono
*** 645,661 ****
  	    << ' ' << r.when.day.get_month() << ' ';
  	switch (r.when.day.kind)
  	{
! 	case on_day::DayOfMonth:
  	  out << (unsigned)r.when.day.get_day();
  	  break;
! 	case on_day::LastWeekday:
  	  out << "last" << weekday(r.when.day.day_of_week);
  	  break;
! 	case on_day::LessEq:
  	  out << weekday(r.when.day.day_of_week) << " <= "
  	    << r.when.day.day_of_month;
  	  break;
! 	case on_day::GreaterEq:
  	  out << weekday(r.when.day.day_of_week) << " >= "
  	    << r.when.day.day_of_month;
  	  break;
--- 647,663 ----
  	    << ' ' << r.when.day.get_month() << ' ';
  	switch (r.when.day.kind)
  	{
! 	case on_month_day::DayOfMonth:
  	  out << (unsigned)r.when.day.get_day();
  	  break;
! 	case on_month_day::LastWeekday:
  	  out << "last" << weekday(r.when.day.day_of_week);
  	  break;
! 	case on_month_day::LessEq:
  	  out << weekday(r.when.day.day_of_week) << " <= "
  	    << r.when.day.day_of_month;
  	  break;
! 	case on_month_day::GreaterEq:
  	  out << weekday(r.when.day.day_of_week) << " >= "
  	    << r.when.day.day_of_month;
  	  break;
*************** namespace std::chrono
*** 1008,1017 ****
  	  result_index = new_infos.size() - 1;
  	else if (result_index >= 0 && !merged)
  	  {
! 	    // Finish on a DST sys_info if possible, so that if we resume
  	    // generating sys_info objects after this time point, save=0
  	    // should be correct for the next sys_info.
! 	    if (num_after > 1 || info.save != 0min)
  	      --num_after;
  	  }
  
--- 1010,1019 ----
  	  result_index = new_infos.size() - 1;
  	else if (result_index >= 0 && !merged)
  	  {
! 	    // Finish before a STD sys_info if possible, so that if we resume
  	    // generating sys_info objects after this time point, save=0
  	    // should be correct for the next sys_info.
! 	    if (num_after > 1 || !next_rule || next_rule->save == 0s)
  	      --num_after;
  	  }
  
*************** namespace std::chrono
*** 2067,2121 ****
        }
      };
  
!     istream& operator>>(istream& in, on_day& to)
      {
!       on_day on{};
!       abbrev_month m{};
!       in >> m;
!       on.month = static_cast<unsigned>(m.m);
!       int c = ws(in).peek();
!       if ('0' <= c && c <= '9')
! 	{
! 	  on.kind = on_day::DayOfMonth;
! 	  unsigned d;
! 	  in >> d;
! 	  if (d <= 31) [[likely]]
! 	    {
! 	      on.day_of_month = d;
! 	      to = on;
! 	      return in;
! 	    }
! 	}
!       else if (c == 'l') // lastSunday, lastWed, ...
  	{
! 	  in.ignore(4);
! 	  if (abbrev_weekday w{}; in >> w) [[likely]]
  	    {
! 	      on.kind = on_day::LastWeekday;
! 	      on.day_of_week = w.wd.c_encoding();
! 	      to = on;
! 	      return in;
  	    }
! 	}
!       else
! 	{
! 	  abbrev_weekday w;
! 	  in >> w;
! 	  if (auto c = in.get(); c == '<' || c == '>')
  	    {
! 	      if (in.get() == '=')
  		{
! 		  on.kind = c == '<' ? on_day::LessEq : on_day::GreaterEq;
  		  on.day_of_week = w.wd.c_encoding();
! 		  unsigned d;
! 		  in >> d;
! 		  if (d <= 31) [[likely]]
  		    {
  		      on.day_of_month = d;
- 		      to = on;
  		      return in;
  		    }
- 		}
  	    }
  	}
        in.setstate(ios::failbit);
--- 2069,2117 ----
        }
      };
  
!     // Read the MONTH DAY. Three forms are accepted for DAY:
!     // * a plain day-of-month number (DayOfMonth),
!     // * "lastWww" where Www is a weekday name (LastWeekday),
!     // * "Www<=N" or "Www>=N" (LessEq / GreaterEq).
!     // On failure to read either MONTH or DAY this function sets
!     // failbit. If DAY is not parsed, only `on.month` is modified,
!     // otherwise `on` is left unchanged.
!     istream& operator>>(istream& in, on_month_day& on)
      {
!       using enum on_month_day::Kind;
!       if (abbrev_month m{}; in >> m)
  	{
!  	  on.month = static_cast<unsigned>(m.m);
! 	  if (int c = ws(in).peek(); '0' <= c && c <= '9')
  	    {
! 	      if (unsigned d; (in >> d) && (d <= 31)) [[likely]]
! 		{
! 		  on.kind = DayOfMonth;
! 		  on.day_of_month = d;
! 		  return in;
! 		}
  	    }
! 	  else if (c == 'l') // lastSunday, lastWed, ...
  	    {
! 	      in.ignore(4);
! 	      if (abbrev_weekday w{}; in >> w) [[likely]]
  		{
! 		  on.kind = LastWeekday;
  		  on.day_of_week = w.wd.c_encoding();
! 		  return in;
! 		}
! 	    }
! 	  else if (abbrev_weekday w; in >> w) [[likely]]
! 	    {
! 	      if (c = in.get(); c == '<' || c == '>')
! 		if (in.get() == '=')
! 	          if (unsigned d; (in >> d) && (d <= 31)) [[likely]]
  		    {
+ 		      on.kind = c == '<' ? LessEq : GreaterEq;
+ 		      on.day_of_week = w.wd.c_encoding();
  		      on.day_of_month = d;
  		      return in;
  		    }
  	    }
  	}
        in.setstate(ios::failbit);
*************** namespace std::chrono
*** 2224,2235 ****
        in.exceptions(ios::goodbit); // Don't throw ios::failure if YEAR absent.
        if (int y = int(year::max()); in >> y)
  	{
! 	  abbrev_month m{January};
! 	  int d = 1;
  	  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
--- 2220,2231 ----
        in.exceptions(ios::goodbit); // Don't throw ios::failure if YEAR absent.
        if (int y = int(year::max()); in >> y)
  	{
! 	  on_month_day on{ .kind = on_month_day::DayOfMonth,
! 			   .month = 1, .day_of_month = 1 };
  	  at_time t{};
! 	  in >> on >> t;
! 	  year_month_day ymd = on.pin(year(y));
! 	  inf.m_until = sys_days(ymd) + seconds(t.time);
  	  if (t.indicator != at_time::Universal)
  	    { // UNTIL uses "the rules in effect just before the transition"
  	      // adjust by STDOFF
diff -Nrcpad gcc-15-20260724/libstdc++-v3/testsuite/std/time/time_zone/116110.cc gcc-15-20260731/libstdc++-v3/testsuite/std/time/time_zone/116110.cc
*** gcc-15-20260724/libstdc++-v3/testsuite/std/time/time_zone/116110.cc	Fri Jul 24 22:32:19 2026
--- gcc-15-20260731/libstdc++-v3/testsuite/std/time/time_zone/116110.cc	Fri Jul 31 22:32:20 2026
*************** test_apia()
*** 78,86 ****
--- 78,127 ----
    VERIFY( info.abbrev == "+14" );
  }
  
+ void
+ test_dawson()
+ {
+   /* 1945 August rule change changes letters (abbrev)
+      and remains in DST:
+   R Y 1942 o - F 9 2 1 W
+   R Y 1945 o - Au 14 23u 1 P
+   R Y 1945 o - S 30 2 0 S
+   Z America/Dawson -9:17:40 - LMT 1900 Au 20
+   -9 Y Y%sT 1965
+   -9 Yu Y%sT 1973 O 28
+   */
+ 
+   auto* tz = locate_zone("America/Dawson");
+   
+   // Triggers rule transitions from the start.
+   sys_info info = tz->get_info(sys_days(1900y/August/20) + 10h);
+   VERIFY( info.offset == -9h );
+   VERIFY( info.save == 0min );
+   VERIFY( info.abbrev == "YST" );
+ 
+   // Check YWT transition at 02:00 + 9h UT, that is DST
+   info = tz->get_info(sys_days(1942y/February/9) + 11h);
+   VERIFY( info.offset == -8h );
+   VERIFY( info.save == 60min );
+   VERIFY( info.abbrev == "YWT" );
+ 
+   // Check YPT transition at 23:00 UT, remains DST
+   info = tz->get_info(sys_days(1945y/August/14) + 23h);
+   VERIFY( info.offset == -8h );
+   VERIFY( info.save == 60min );
+   VERIFY( info.abbrev == "YPT" );
+ 
+   // Check YST transition at 02:00 + 8h UT, switches to STD
+   info = tz->get_info(sys_days(1945y/September/30) + 10h);
+   VERIFY( info.offset == -9h );
+   VERIFY( info.save == 0min );
+   VERIFY( info.abbrev == "YST" );
+ }
+ 
  int main()
  {
    test_broken_hill();
    test_kiritimati();
    test_apia();
+   test_dawson();
  }
diff -Nrcpad gcc-15-20260724/libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc gcc-15-20260731/libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc
*** gcc-15-20260724/libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc	Thu Jan  1 00:00:00 1970
--- gcc-15-20260731/libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc	Fri Jul 31 22:32:20 2026
***************
*** 0 ****
--- 1,58 ----
+ // { 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* } }
+ 
+ // When a Zone line specifies a numeric value as its RULES field, that
+ // value is the constant DST save value for that zone line.  Per
+ // [time.zone.info.sys] sys_info::offset is the total UTC offset
+ // (stdoff + save).
+ 
+ #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 "./";
+   }
+ }
+ 
+ int
+ main()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test_numeric_save
+ Z Test/Gaborone 2 -  CAT  1943 Sep 19 2
+                 2 1  CAST 1944 Mar 19 2
+                 2 -  CAT
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_numeric_save" );
+ 
+   auto* tz = locate_zone("Test/Gaborone");
+ 
+   // Sample well inside the CAST (numeric-save) zone line.
+   auto info = tz->get_info(sys_days(1943y/December/15));
+   VERIFY( info.offset == 3h );        // stdoff +2h + save +1h
+   VERIFY( info.save == 60min );
+   VERIFY( info.abbrev == "CAST" );
+ 
+   // Bordering zone lines should report the standard offset with save 0.
+   auto before = tz->get_info(sys_days(1943y/September/1));
+   VERIFY( before.offset == 2h );
+   VERIFY( before.save == 0min );
+   VERIFY( before.abbrev == "CAT" );
+ 
+   auto after = tz->get_info(sys_days(1944y/April/15));
+   VERIFY( after.offset == 2h );
+   VERIFY( after.save == 0min );
+   VERIFY( after.abbrev == "CAT" );
+ }
diff -Nrcpad gcc-15-20260724/libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc gcc-15-20260731/libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc
*** gcc-15-20260724/libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc	Thu Jan  1 00:00:00 1970
--- gcc-15-20260731/libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc	Fri Jul 31 22:32:20 2026
***************
*** 0 ****
--- 1,222 ----
+ // { 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* } }
+ 
+ // The DAY portion of a Zone line's UNTIL field accepts not only a
+ // numeric day-of-month but also "lastXxx" (last weekday in the month)
+ // and "Xxx<=N" / "Xxx>=N" forms, just like the ON field of a Rule line.
+ //
+ // Real-world example: Europe/Simferopol has
+ //   3 - MSK 1997 Mar lastSu 1u
+ // which places the boundary on 1997-03-30 (the last Sunday of March).
+ 
+ #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_lastsu()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test_lastsu
+ Z Test/LastSu 3 - MSK 1997 Mar lastSu 1u
+               3 - X
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_lastsu" );
+ 
+   auto* tz = locate_zone("Test/LastSu");
+ 
+   // True boundary: 1997-03-30 01:00 UTC (lastSu of March 1997 is Mar 30,
+   // and the indicator is 'u' = Universal so no offset adjustment).
+   sys_seconds boundary = sys_days{1997y/March/30} + 1h;
+ 
+   // Just before: still in the MSK line.
+   auto before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "MSK" );
+   VERIFY( before.offset == 3h );
+ 
+   // At/after the boundary: in the X line.
+   auto at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "X" );
+ 
+   // Check that the lastSu day is parsed correctly, and not defaulted
+   // to the 1st: a March 15 query must still be in the MSK line.
+   auto mid_march = tz->get_info(sys_days{1997y/March/15});
+   VERIFY( mid_march.abbrev == "MSK" );
+   VERIFY( mid_march.offset == 3h );
+ }
+ 
+ void
+ test_sun_ge_n()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test_sun_ge_n
+ Z Test/SunGE 0 - A 1990 Jun Sun>=8 0u
+              0 - B
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_sun_ge_n" );
+ 
+   auto* tz = locate_zone("Test/SunGE");
+ 
+   // First Sunday >= June 8 1990 = June 10 (June 8 1990 was a Friday).
+   sys_seconds boundary = sys_days{1990y/June/10};
+ 
+   auto before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "A" );
+   auto at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "B" );
+ 
+   // Check that Sun>=8 is parsed correctly, and not defaulted to the 1st.
+   auto early = tz->get_info(sys_days{1990y/June/1});
+   VERIFY( early.abbrev == "A" );
+ }
+ 
+ void
+ test_sun_le_n()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test_sun_le_n
+ Z Test/SunLE 0 - A 1990 Jun Sun<=15 0u
+              0 - B
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_sun_le_n" );
+ 
+   auto* tz = locate_zone("Test/SunLE");
+ 
+   // Last Sunday <= June 15 1990 = June 10.
+   sys_seconds boundary = sys_days{1990y/June/10};
+ 
+   auto before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "A" );
+   auto at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "B" );
+ }
+ 
+ void
+ test_year_only()
+ {
+   using namespace std::chrono;
+ 
+   // MONTH, DAY and TIME default to January 1st 00:00 if not specified.
+   std::ofstream("tzdata.zi") << R"(# version test_year_only
+ Z Test/YearOnly 0 - A 1990
+                 0 - B
+ Z Test/YearOnlyC 4 - C 1995 # comment
+                  4 - D
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_year_only" );
+ 
+   auto* tz = locate_zone("Test/YearOnly");
+   sys_seconds boundary = sys_days{1990y/January/1};
+   auto before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "A" );
+   auto at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "B" );
+ 
+   tz = locate_zone("Test/YearOnlyC");
+   boundary = sys_days{1995y/January/1} - 4h;
+   before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "C" );
+   at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "D" );
+ }
+ 
+ void
+ test_year_month_only()
+ {
+   using namespace std::chrono;
+ 
+   // DAY and TIME default to the 1st 00:00 if not specified.
+   std::ofstream("tzdata.zi") << R"(# version test_year_month_only
+ Z Test/YearMonth 0 - A 1990 Jul
+                  0 - B
+ Z Test/YearMonthC 3 - C 1995 Apr # comment
+                   3 - D
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_year_month_only" );
+ 
+   auto* tz = locate_zone("Test/YearMonth");
+   sys_seconds boundary = sys_days{1990y/July/1};
+   auto before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "A" );
+   auto at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "B" );
+ 
+   tz = locate_zone("Test/YearMonthC");
+   boundary = sys_days{1995y/April/1} - 3h;
+   before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "C" );
+   at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "D" );
+ }
+ 
+ void
+ test_year_month_day_only()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test_day_only
+ Z Test/DayOnly 0 - A 1997 Mar 12
+                0 - B
+ Z Test/DayOnlyC 5 - C 1998 Jun 14 # comment
+                 5 - D
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_day_only" );
+ 
+   auto* tz = locate_zone("Test/DayOnly");
+   sys_seconds boundary = sys_days{1997y/March/12};
+   auto before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "A" );
+   auto at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "B" );
+ 
+   tz = locate_zone("Test/DayOnlyC");
+   boundary = sys_days{1998y/June/14} - 5h;
+   before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "C" );
+   at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "D" );
+ }
+ 
+ int
+ main()
+ {
+   test_lastsu();
+   test_sun_ge_n();
+   test_sun_le_n();
+   test_year_only();
+   test_year_month_only();
+   test_year_month_day_only();
+ }
