diff -Nrcpad gcc-16-20260829/LAST_UPDATED gcc-16-20260905/LAST_UPDATED
*** gcc-16-20260829/LAST_UPDATED	Sat Aug 29 22:32:21 2026
--- gcc-16-20260905/LAST_UPDATED	Sat Sep  5 22:32:22 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-16 revision 52db3adefd3e50d7f391a6dd77832cb9cfec71e1
--- 1 ----
! Obtained from git: releases/gcc-16 revision 5f11a4625a875fd297e34b8d8587e2a8781d024d
diff -Nrcpad gcc-16-20260829/MD5SUMS gcc-16-20260905/MD5SUMS
*** gcc-16-20260829/MD5SUMS	Sat Aug 29 22:32:27 2026
--- gcc-16-20260905/MD5SUMS	Sat Sep  5 22:32:27 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20260829.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20260905.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
*************** f4cc92ebabb61058cd45bd875d9534d2  Change
*** 28,34 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 720e7287aecf21efca81b35ad0982edd  LAST_UPDATED
  95f246a2e4f48f4f1df4c3b4483d1bea  MAINTAINERS
  af43617880b3cd9c10627c97e639d29e  Makefile.def
  734342371d8ccc2c81cb2d8b3d040f33  Makefile.in
--- 28,34 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! f07fcc4ede90d36a188de0b93d7695fd  LAST_UPDATED
  95f246a2e4f48f4f1df4c3b4483d1bea  MAINTAINERS
  af43617880b3cd9c10627c97e639d29e  Makefile.def
  734342371d8ccc2c81cb2d8b3d040f33  Makefile.in
*************** f15bc3c5de22eac0bdd4f611502139a0  gcc/AB
*** 530,536 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 2ab8b074acd54a45d6629b388b9f8911  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 530,536 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 0d412568245e637b72be8b1d9f45f179  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 568,574 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! e942e6e0cc265da699d5c7fcb39d0661  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 568,574 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! efd453a2e5913d3bd8aac4984feee46d  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** a003e2850cf677560132fd307ecee01f  gcc/co
*** 3871,3877 ****
  c29ebb93bbe48714c53c5d397dedbe7f  gcc/config/avr/avr-mcus.def
  b05978bd2969a943265d3549c23b8b59  gcc/config/avr/avr-modes.def
  4fb124444d8cfdcf964c19206d382a55  gcc/config/avr/avr-passes-fuse-move.h
! 6b9c9ce82555ab70967a779b406b8dbe  gcc/config/avr/avr-passes.cc
  7694efecfa1a86f5d70c1dcee34a8ffd  gcc/config/avr/avr-passes.def
  6033224c6e10fc0028d72d05ef4adc70  gcc/config/avr/avr-protos.h
  4ee8705558d223eb1da7a1266af8c799  gcc/config/avr/avr-stdint.h
--- 3871,3877 ----
  c29ebb93bbe48714c53c5d397dedbe7f  gcc/config/avr/avr-mcus.def
  b05978bd2969a943265d3549c23b8b59  gcc/config/avr/avr-modes.def
  4fb124444d8cfdcf964c19206d382a55  gcc/config/avr/avr-passes-fuse-move.h
! dde1d31ebbe6af02778662072bc08685  gcc/config/avr/avr-passes.cc
  7694efecfa1a86f5d70c1dcee34a8ffd  gcc/config/avr/avr-passes.def
  6033224c6e10fc0028d72d05ef4adc70  gcc/config/avr/avr-protos.h
  4ee8705558d223eb1da7a1266af8c799  gcc/config/avr/avr-stdint.h
*************** c5ad0142a191862e3e81ecd3573754b3  gcc/co
*** 5646,5652 ****
  55a33ae415bde0fd2e36ba584894e50b  gcc/coroutine-passes.cc
  c10700723a41c720aada0096f369147e  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 5dabd309893938a08b6f7314d9ca4f0f  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5646,5652 ----
  55a33ae415bde0fd2e36ba584894e50b  gcc/coroutine-passes.cc
  c10700723a41c720aada0096f369147e  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 7006d490b2629812e436dcfe30d972ec  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** d9b8a76735523ab737e8778b90397d97  gcc/cp
*** 5688,5694 ****
  39dd4c5a96c7ea132eb3c7ed039a065e  gcc/cp/cfns.h
  454f3c75a5a8d9c0a8b425ca72add469  gcc/cp/class.cc
  e51f295e858583af5f9cf88b9530adf7  gcc/cp/config-lang.in
! 902fdfe217d70c6ec4f1f35370b0d636  gcc/cp/constexpr.cc
  44493039c741da0cbddb5a8d6d93701a  gcc/cp/constraint.cc
  ab81cc984e2b72c49098e64c4e798924  gcc/cp/contracts.cc
  e77a681f560f3e9500f126febdc67ef6  gcc/cp/contracts.h
--- 5688,5694 ----
  39dd4c5a96c7ea132eb3c7ed039a065e  gcc/cp/cfns.h
  454f3c75a5a8d9c0a8b425ca72add469  gcc/cp/class.cc
  e51f295e858583af5f9cf88b9530adf7  gcc/cp/config-lang.in
! 6a90457e8ac826f24bb0c42817e90209  gcc/cp/constexpr.cc
  44493039c741da0cbddb5a8d6d93701a  gcc/cp/constraint.cc
  ab81cc984e2b72c49098e64c4e798924  gcc/cp/contracts.cc
  e77a681f560f3e9500f126febdc67ef6  gcc/cp/contracts.h
*************** ffdd05782c93c0567486bb7ed7eee65a  gcc/cp
*** 5703,5709 ****
  bc9b29434f2e35fa68caf656161b5c0f  gcc/cp/cp-tree.def
  9e17c7be98549b9075b48e0d979104ed  gcc/cp/cp-tree.h
  13d136a72a2aff80be380103d1c27ed5  gcc/cp/cp-ubsan.cc
! 0f660920514d4f51007f6841a25e3af6  gcc/cp/cvt.cc
  f067718cf3d629084d8347c4e017afd4  gcc/cp/cxx-pretty-print.cc
  1d04eec9859d91686ca501e9221f30ac  gcc/cp/cxx-pretty-print.h
  82a41d873e1c90067158c89e6c1bd4bb  gcc/cp/cxxapi-data.csv
--- 5703,5709 ----
  bc9b29434f2e35fa68caf656161b5c0f  gcc/cp/cp-tree.def
  9e17c7be98549b9075b48e0d979104ed  gcc/cp/cp-tree.h
  13d136a72a2aff80be380103d1c27ed5  gcc/cp/cp-ubsan.cc
! db933ec1bd74e495c6c1428cea7f4c2c  gcc/cp/cvt.cc
  f067718cf3d629084d8347c4e017afd4  gcc/cp/cxx-pretty-print.cc
  1d04eec9859d91686ca501e9221f30ac  gcc/cp/cxx-pretty-print.h
  82a41d873e1c90067158c89e6c1bd4bb  gcc/cp/cxxapi-data.csv
*************** c3c45a5af5857bb855462b9faaa58dad  gcc/cp
*** 5729,5735 ****
  54609938d396496c7c5bf3f4cbfddaec  gcc/cp/metafns.gperf
  04fe5bec0bf79fcb3680aec9913ebc29  gcc/cp/metafns.h
  a3b349edf69f16f317d6111ba94d8a89  gcc/cp/method.cc
! 3344d3beafc0a29d42adff4c429067f5  gcc/cp/module.cc
  90e00cc732f785e5f72589239f04f596  gcc/cp/name-lookup.cc
  b166c2ce3d5ccd4de4e0c5910947ae41  gcc/cp/name-lookup.h
  b98d31c57aa038618db60991b17e0d35  gcc/cp/operators.def
--- 5729,5735 ----
  54609938d396496c7c5bf3f4cbfddaec  gcc/cp/metafns.gperf
  04fe5bec0bf79fcb3680aec9913ebc29  gcc/cp/metafns.h
  a3b349edf69f16f317d6111ba94d8a89  gcc/cp/method.cc
! a4e6e8d3c78b9b34f4e97c555de12ef8  gcc/cp/module.cc
  90e00cc732f785e5f72589239f04f596  gcc/cp/name-lookup.cc
  b166c2ce3d5ccd4de4e0c5910947ae41  gcc/cp/name-lookup.h
  b98d31c57aa038618db60991b17e0d35  gcc/cp/operators.def
*************** b98d31c57aa038618db60991b17e0d35  gcc/cp
*** 5740,5746 ****
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
  2cbf7a5ccd915a7df00ff5a38701f81d  gcc/cp/reflect.cc
  ceb9e88bb8dfe59c2867ce417fe654b1  gcc/cp/rtti.cc
! ed044462caa5bbab93e33fd297bc5d7c  gcc/cp/search.cc
  7dba5fdda2dc085d8a73f2ce4a34c24d  gcc/cp/semantics.cc
  64c36b2ea66c9f8f477b19d24e06a2cb  gcc/cp/std-name-hint.gperf
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
--- 5740,5746 ----
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
  2cbf7a5ccd915a7df00ff5a38701f81d  gcc/cp/reflect.cc
  ceb9e88bb8dfe59c2867ce417fe654b1  gcc/cp/rtti.cc
! 9769ee397be6e0ea748990bf275a0c46  gcc/cp/search.cc
  7dba5fdda2dc085d8a73f2ce4a34c24d  gcc/cp/semantics.cc
  64c36b2ea66c9f8f477b19d24e06a2cb  gcc/cp/std-name-hint.gperf
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
*************** df86d4116f050c5e09b21441b286f26c  gcc/dw
*** 6235,6241 ****
  2d9cf6bbe6a4ec143049dcca966ba581  gcc/dwarf2codeview.h
  a6c484f3c915c3d2ca47c185e95fbba4  gcc/dwarf2ctf.cc
  6c4236fa6ead686398b8d5e7f89f8118  gcc/dwarf2ctf.h
! dff5b9260564a82b1706e5fb186081f2  gcc/dwarf2out.cc
  5df3b4a58dc58c2bfafddd393d55496b  gcc/dwarf2out.h
  5f6d1c1c6b68b50c4051ffa41f4aed26  gcc/early-remat.cc
  db4d79959e99b05eb2b5704c5e7c3bcb  gcc/emit-rtl.cc
--- 6235,6241 ----
  2d9cf6bbe6a4ec143049dcca966ba581  gcc/dwarf2codeview.h
  a6c484f3c915c3d2ca47c185e95fbba4  gcc/dwarf2ctf.cc
  6c4236fa6ead686398b8d5e7f89f8118  gcc/dwarf2ctf.h
! c5a89716defa9651a269b2bce1f4138b  gcc/dwarf2out.cc
  5df3b4a58dc58c2bfafddd393d55496b  gcc/dwarf2out.h
  5f6d1c1c6b68b50c4051ffa41f4aed26  gcc/early-remat.cc
  db4d79959e99b05eb2b5704c5e7c3bcb  gcc/emit-rtl.cc
*************** f80b38c70a85f9aeae9688b937b028ba  gcc/fi
*** 6271,6277 ****
  50b999b375e3a5a95a002f592e6d4514  gcc/fold-const.cc
  0ec02a37dbbe9cb267f0ea1263085ed3  gcc/fold-const.h
  a0df3d274ac009d203209a191738cec6  gcc/fold-mem-offsets.cc
! 4576f6ee6007212e960a416d3ef365fc  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6271,6277 ----
  50b999b375e3a5a95a002f592e6d4514  gcc/fold-const.cc
  0ec02a37dbbe9cb267f0ea1263085ed3  gcc/fold-const.h
  a0df3d274ac009d203209a191738cec6  gcc/fold-mem-offsets.cc
! 2332fa58daa67bb7fe1149eb98392469  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** f2d1ba26cdd272c08e7647dfefdddb86  gcc/fo
*** 6351,6357 ****
  21660f9a357047be01ae3e75065aab0a  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
  652dece8c45124ac6ad49d39f2b67df1  gcc/fortran/primary.cc
! c98a8fbc9ac21d0d087006b576f81000  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
  664f19f5a29de9abc4642568f758c47c  gcc/fortran/simplify.cc
--- 6351,6357 ----
  21660f9a357047be01ae3e75065aab0a  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
  652dece8c45124ac6ad49d39f2b67df1  gcc/fortran/primary.cc
! c3abf561866ede2de1338a22f778592a  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
  664f19f5a29de9abc4642568f758c47c  gcc/fortran/simplify.cc
*************** f24751f278bee1ac8dc861467d9f96a3  gcc/ta
*** 8726,8732 ****
  bf20a6542e361b29f15f9f2b47d47e2f  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 233e29bd7e2b136c8f6ada09b0c4b8f5  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8726,8732 ----
  bf20a6542e361b29f15f9f2b47d47e2f  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 114dfe8a0333d24ecea4de23b94854cc  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** fe1759287ef65bc9b64a45ce0e53055f  gcc/te
*** 24931,24936 ****
--- 24931,24937 ----
  c6b59c677bcd1cbdf89e61c5ca831e50  gcc/testsuite/g++.dg/cpp0x/initlist131.C
  f9c9bfbb17863359c1717c757bee25f5  gcc/testsuite/g++.dg/cpp0x/initlist132.C
  6e1221359009ba7551396f68f40ffd89  gcc/testsuite/g++.dg/cpp0x/initlist133.C
+ 400006a3ba6b93a887024aae8d0db351  gcc/testsuite/g++.dg/cpp0x/initlist135.C
  3071307e831ae441c218cbab9dbc1d8f  gcc/testsuite/g++.dg/cpp0x/initlist14.C
  7ba041ddd330ff5d7acc95724e263141  gcc/testsuite/g++.dg/cpp0x/initlist15.C
  0cbd5b9635cd71f3d6738db34fe5f5b4  gcc/testsuite/g++.dg/cpp0x/initlist16.C
*************** cbf5d5a37bc2a85bde738f9433003a39  gcc/te
*** 28994,28999 ****
--- 28995,29001 ----
  fbb69b1132a414de03ead400a5096fe7  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor18.C
  689d246063b0bcbe4166cc3472365f23  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor19.C
  18ceb8d2ffe5d8e310f40839d2edf0d5  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor2.C
+ 262afa3f4bd8f5b8178f62171748bc6b  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor20.C
  35d472b389db4ae79d8a0ba112cf7266  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor3.C
  780076eefadeb33a1dce586533960b80  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor4.C
  1ab49acfb4093ac63d8a1117dc494fcd  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor5.C
*************** a71ad222ec453dfae941cc6a9d0495d6  gcc/te
*** 34070,34075 ****
--- 34072,34079 ----
  95ac1711696c30b44bd143d707a63055  gcc/testsuite/g++.dg/modules/friend-12_a.C
  7207ee63d7d3c126dd8553f8489901a4  gcc/testsuite/g++.dg/modules/friend-12_b.C
  b96b999afff648452f8c6ddbd790814b  gcc/testsuite/g++.dg/modules/friend-13.C
+ b1925de409023aeb8fe99dadc3217b70  gcc/testsuite/g++.dg/modules/friend-15_a.H
+ 7592030eee425007d140faacccd8bb7c  gcc/testsuite/g++.dg/modules/friend-15_b.C
  8fcab2cff53b2d8a5b252819cfc97930  gcc/testsuite/g++.dg/modules/friend-1_a.C
  965df98a384b69dc039aa01146450993  gcc/testsuite/g++.dg/modules/friend-1_b.C
  7cf2445dd7db33a1920c890fa101e827  gcc/testsuite/g++.dg/modules/friend-1_c.C
*************** bff165ca22463894c2709efc7a2bb28a  gcc/te
*** 39170,39175 ****
--- 39174,39181 ----
  894bde5373b01d069b2f9aac23e0b2ed  gcc/testsuite/g++.dg/template/non-dependent33.C
  9cfef24f457bfcfd36ab139919a814d2  gcc/testsuite/g++.dg/template/non-dependent34.C
  71ddc650371fc5c08e555a30e3c3457c  gcc/testsuite/g++.dg/template/non-dependent35.C
+ f70de80245d18f3ced6cbbb8a9e4433c  gcc/testsuite/g++.dg/template/non-dependent36.C
+ 37b41270754520e20ce8ed852e972e89  gcc/testsuite/g++.dg/template/non-dependent37.C
  c74bd06e4f01d82b6dffe8568a9f9286  gcc/testsuite/g++.dg/template/non-dependent4.C
  7e000c3eaeb33b0cda5191bb78ee313d  gcc/testsuite/g++.dg/template/non-dependent5.C
  45dd220f658e86742366772757b041e2  gcc/testsuite/g++.dg/template/non-dependent6.C
*************** e4d0b292389630976cca25f6a5808a1e  gcc/te
*** 39303,39308 ****
--- 39309,39315 ----
  14967698fd85bf0506454b2df17f8d2a  gcc/testsuite/g++.dg/template/pr108206.C
  47c32753e30b4754695e8eabfcc1e9f5  gcc/testsuite/g++.dg/template/pr119138.C
  7ccb75d299fb426ac22efe4f1aa75da1  gcc/testsuite/g++.dg/template/pr123354.C
+ ed7fd26753f029d62d257a19a3c7dc37  gcc/testsuite/g++.dg/template/pr124983.C
  1cb28c70209f6da9c6fd5dc25fde1e1a  gcc/testsuite/g++.dg/template/pr16564.C
  ada1f30ea7c959c2a12b240ba308c1bf  gcc/testsuite/g++.dg/template/pr17410.C
  d87951fd4d4a384028f64a2c9e34ee94  gcc/testsuite/g++.dg/template/pr18969-2.C
*************** cbcc356a35e8a8665137c7ae64ec5914  gcc/te
*** 54667,54672 ****
--- 54674,54680 ----
  54b366032eed667161eee7783123c310  gcc/testsuite/gcc.dg/debug/dwarf2/pr103874.c
  88466c37a4317f483dad470b7d9a7949  gcc/testsuite/gcc.dg/debug/dwarf2/pr111080.c
  57e3c1af8d86b03c1a81a092be62ec96  gcc/testsuite/gcc.dg/debug/dwarf2/pr114015.c
+ 6ffd262f8357f0ae6e1068247a329747  gcc/testsuite/gcc.dg/debug/dwarf2/pr125421.c
  fdc49b9086e5cc10a9a154840a749afd  gcc/testsuite/gcc.dg/debug/dwarf2/pr125935-1.c
  2a508ce4d2d595024560192b6dc90fe2  gcc/testsuite/gcc.dg/debug/dwarf2/pr125935-2.c
  abf2680cbd1431fb13cc37cb0b5bc33b  gcc/testsuite/gcc.dg/debug/dwarf2/pr125935-3.c
*************** b4c1968ee63a61f92dc6808c44852bd9  gcc/te
*** 83291,83296 ****
--- 83299,83305 ----
  c8dee67a2567af17cd08c345a4ef3aea  gcc/testsuite/gcc.target/avr/pr122220.c
  abbae4b0f7390ccdb0c5394f5172173a  gcc/testsuite/gcc.target/avr/pr122222-sitod.c
  3bab20e720a24864ff16abcddb328b14  gcc/testsuite/gcc.target/avr/pr123583.c
+ 5368978ab12d91a2c3ae04712de4c110  gcc/testsuite/gcc.target/avr/pr127188.c
  8d351de18b6ca99f76c43eaa14213d53  gcc/testsuite/gcc.target/avr/pr46779-1.c
  2887bd8c777e4696616590f0d60653b6  gcc/testsuite/gcc.target/avr/pr46779-2.c
  d92831f37e30237d1dc568f585e4c2c9  gcc/testsuite/gcc.target/avr/pr50739.c
*************** cedb28f9cb297bbfa02fb0669634234b  gcc/te
*** 114869,114874 ****
--- 114878,114884 ----
  f3112144c36ad5059b09183c276155c5  gcc/testsuite/gfortran.dg/do_concurrent_reduce_sum.f90
  42c3783e6bbd5cb747df9454e0cc634f  gcc/testsuite/gfortran.dg/do_concurrent_shared.f90
  88014773464896ec2c1ed0b171cd12fa  gcc/testsuite/gfortran.dg/do_concurrent_typespec_1.f90
+ 05f532323a1a05ae235aa357287b74bc  gcc/testsuite/gfortran.dg/do_concurrent_typespec_5.f90
  1d93eba1af31ae1574ed4ae6686c8f10  gcc/testsuite/gfortran.dg/do_corner_warn.f90
  8a29329028fba5406c50b33634ee840c  gcc/testsuite/gfortran.dg/do_iterator.f90
  375a8a74b19d3cbe445b71aac53fed90  gcc/testsuite/gfortran.dg/do_iterator_2.f90
*************** a73d560a3ba317c5ad0a7919d87b4b6d  libssp
*** 146289,146295 ****
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 0f15345117cbcd8fce2e0c178f991082  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 146299,146305 ----
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 187c28a10c3f20dd1fa2962c47de091d  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** e77032281bd301430e499d5bb46db4a1  libstd
*** 147007,147013 ****
  0da56f7596c6ef2e7ad5527eced85a04  libstdc++-v3/include/bits/funcwrap.h
  a437a10ba7525a3935bec765a5604a4f  libstdc++-v3/include/bits/gslice.h
  39aca2727a08f07f0043ee164eaa09a4  libstdc++-v3/include/bits/gslice_array.h
! 4fb739d7e430219a766af6d620d6b853  libstdc++-v3/include/bits/hashtable.h
  07a51a3027551b0c542b2b86f6c59b13  libstdc++-v3/include/bits/hashtable_policy.h
  1fb540db8e28ddacb92e252146834310  libstdc++-v3/include/bits/indirect.h
  286812f00b93c6b48c444cf624dc6983  libstdc++-v3/include/bits/indirect_array.h
--- 147017,147023 ----
  0da56f7596c6ef2e7ad5527eced85a04  libstdc++-v3/include/bits/funcwrap.h
  a437a10ba7525a3935bec765a5604a4f  libstdc++-v3/include/bits/gslice.h
  39aca2727a08f07f0043ee164eaa09a4  libstdc++-v3/include/bits/gslice_array.h
! 3b95541dd7d3eaa058efb9eab7fab00a  libstdc++-v3/include/bits/hashtable.h
  07a51a3027551b0c542b2b86f6c59b13  libstdc++-v3/include/bits/hashtable_policy.h
  1fb540db8e28ddacb92e252146834310  libstdc++-v3/include/bits/indirect.h
  286812f00b93c6b48c444cf624dc6983  libstdc++-v3/include/bits/indirect_array.h
*************** ed462c96f62bdf1b74863ce869094491  libstd
*** 147130,147136 ****
  e068a6cceadc0aec8d8e47311cac3f91  libstdc++-v3/include/bits/this_thread_sleep.h
  a315f61009849bba79498b388f94c177  libstdc++-v3/include/bits/unicode-data.h
  8d7b0008119045f5029e61c141c3c2ff  libstdc++-v3/include/bits/unicode.h
! cca61b6eab779ef500cceeed96c678a8  libstdc++-v3/include/bits/uniform_int_dist.h
  966bb21f0f44c4b2b6e713e62aeb90ae  libstdc++-v3/include/bits/unique_lock.h
  722fac3b4af50bc63abc72f7120b80c6  libstdc++-v3/include/bits/unique_ptr.h
  b1052f564f9839906c0d1f1f7a3296ea  libstdc++-v3/include/bits/unordered_map.h
--- 147140,147146 ----
  e068a6cceadc0aec8d8e47311cac3f91  libstdc++-v3/include/bits/this_thread_sleep.h
  a315f61009849bba79498b388f94c177  libstdc++-v3/include/bits/unicode-data.h
  8d7b0008119045f5029e61c141c3c2ff  libstdc++-v3/include/bits/unicode.h
! 29a1a9caf572dd6daaadc72936f90190  libstdc++-v3/include/bits/uniform_int_dist.h
  966bb21f0f44c4b2b6e713e62aeb90ae  libstdc++-v3/include/bits/unique_lock.h
  722fac3b4af50bc63abc72f7120b80c6  libstdc++-v3/include/bits/unique_ptr.h
  b1052f564f9839906c0d1f1f7a3296ea  libstdc++-v3/include/bits/unordered_map.h
*************** c2bd27af25e57adce5807e0f01a2d0dc  libstd
*** 148076,148082 ****
  23187a5ee053acd65f32c0dc2ac4bdf7  libstdc++-v3/src/c++20/string-inst.cc
  50ac2e00d5794df965e47509f3c16cb5  libstdc++-v3/src/c++20/syncbuf.cc
  0dfa4a770289b4e926b8281770732d5a  libstdc++-v3/src/c++20/tzdata.zi
! 0a411ddabd5a0ac5ecebebb41688473e  libstdc++-v3/src/c++20/tzdb.cc
  ac7b7a080d5f7aa8fe6a26188631fc18  libstdc++-v3/src/c++20/windows_zones-map.h
  863fc49f52a3a3665416a7c88fc4f3e7  libstdc++-v3/src/c++23/Makefile.am
  0d7332606e5b7973ac0d4398f18cfd17  libstdc++-v3/src/c++23/Makefile.in
--- 148086,148092 ----
  23187a5ee053acd65f32c0dc2ac4bdf7  libstdc++-v3/src/c++20/string-inst.cc
  50ac2e00d5794df965e47509f3c16cb5  libstdc++-v3/src/c++20/syncbuf.cc
  0dfa4a770289b4e926b8281770732d5a  libstdc++-v3/src/c++20/tzdata.zi
! 9c3dc9424805251c7d589b39bc11cda1  libstdc++-v3/src/c++20/tzdb.cc
  ac7b7a080d5f7aa8fe6a26188631fc18  libstdc++-v3/src/c++20/windows_zones-map.h
  863fc49f52a3a3665416a7c88fc4f3e7  libstdc++-v3/src/c++23/Makefile.am
  0d7332606e5b7973ac0d4398f18cfd17  libstdc++-v3/src/c++23/Makefile.in
*************** bf96d509f3bb8a68f0b9483fc182b6b3  libstd
*** 152294,152300 ****
  60a22af06f9a1e7ae34fbf9396f6eb1c  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/emplace.cc
  0f27bf6cc675b69645ffab40177c6138  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/extract.cc
  160db1cfa3c5d86e97017b0f287d814b  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/erase.cc
! c8de8fb8dc3faaf76a5f6a069a35392b  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc
  626219b7a3efc1844d9ebfbc2c950095  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc
  ad01e00eff3c7f80c31b6f90669ad326  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/insert_range.cc
  0b43e5aebdcd6c568bbccb3f7301b63a  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/merge.cc
--- 152304,152310 ----
  60a22af06f9a1e7ae34fbf9396f6eb1c  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/emplace.cc
  0f27bf6cc675b69645ffab40177c6138  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/extract.cc
  160db1cfa3c5d86e97017b0f287d814b  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/erase.cc
! 906eda581b1aaa86518347a3e6bab20f  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc
  626219b7a3efc1844d9ebfbc2c950095  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc
  ad01e00eff3c7f80c31b6f90669ad326  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/insert_range.cc
  0b43e5aebdcd6c568bbccb3f7301b63a  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/merge.cc
*************** cf7eba5b920f081274604b0469a0dc28  libstd
*** 154406,154412 ****
  6c40eb0b1bf558f14ba0aedbd4612bb6  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/equal.cc
  2c692ffca0266591eeaac5ae549b0a81  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/inequal.cc
  1d6fb71971e5e9f3d7366ba84aa7f6a3  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/serialize.cc
! 3b3c712195d9cedad03a72227f23f803  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc
  bf3b0b114ea3efdbd4365c99cdd7742b  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/explicit_instantiation/1.cc
  8a3b0368ac3b69846e01aaf3145acf0a  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/typedefs.cc
  2dd4b5a5a7d0379b075b96055d60d90f  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc
--- 154416,154422 ----
  6c40eb0b1bf558f14ba0aedbd4612bb6  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/equal.cc
  2c692ffca0266591eeaac5ae549b0a81  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/inequal.cc
  1d6fb71971e5e9f3d7366ba84aa7f6a3  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/serialize.cc
! 093b5aee5682aec3a0d9083fcfc5a025  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc
  bf3b0b114ea3efdbd4365c99cdd7742b  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/explicit_instantiation/1.cc
  8a3b0368ac3b69846e01aaf3145acf0a  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/typedefs.cc
  2dd4b5a5a7d0379b075b96055d60d90f  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc
*************** b9e1cd9af09021808a764909a324097b  libstd
*** 157827,157832 ****
--- 157837,157843 ----
  3c922068cf98b21e732c0de16c319289  libstdc++-v3/testsuite/std/time/tzdb/1.cc
  c142573e06d5c52d53f0f20e1e72e973  libstdc++-v3/testsuite/std/time/tzdb/leap_seconds.cc
  6950b88828afb2cebccd6617fe0d64a5  libstdc++-v3/testsuite/std/time/tzdb/links.cc
+ dd190f49f5cf57dcbaf596dc7a7085a1  libstdc++-v3/testsuite/std/time/tzdb/name_matching.cc
  fbaa899641d17201d9f891486537af1b  libstdc++-v3/testsuite/std/time/tzdb_list/1.cc
  5c4efe4c1fd019cb6e7bfda4081a2dbe  libstdc++-v3/testsuite/std/time/tzdb_list/pr118811.cc
  3f7dc336d0ee3feaddb94ae16964cbf1  libstdc++-v3/testsuite/std/time/tzdb_list/requirements.cc
diff -Nrcpad gcc-16-20260829/gcc/ChangeLog gcc-16-20260905/gcc/ChangeLog
*** gcc-16-20260829/gcc/ChangeLog	Sat Aug 29 22:32:05 2026
--- gcc-16-20260905/gcc/ChangeLog	Sat Sep  5 22:32:05 2026
***************
*** 1,3 ****
--- 1,35 ----
+ 2026-09-04  Vineet Gupta  <vineet.gupta@linux.dev>
+ 
+ 	Backported from master:
+ 	2026-06-24  Vineet Gupta  <vineet.gupta@linux.dev>
+ 
+ 	PR debug/125421
+ 	* dwarf2out.cc (modified_type_die): Handle qualified_type being
+ 	a variant of dtype as if they were identical to avoid peeling a
+ 	typdef.
+ 	For named types, use dentry unconditionally as that is valid for
+ 	both cases of qualified_type == and  != dentry.
+ 
+ 2026-09-04  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2026-09-04  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/127188
+ 	* config/avr/avr-passes.cc (avr_pass_2moves) <optimize_2moves_bb>:
+ 	Use next_nondebug_insn_bb to traverse the insns.
+ 	<optimize_2moves>: Ignore degug insns when traversing
+ 	DF_REG_USE_CHAIN.
+ 
+ 2026-08-29  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2026-08-29  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR middle-end/127098
+ 	* config/avr/avr.md (MPUSH): Add TImode to mode iterator.
+ 	* config/avr/avr.h (PUSH_ROUNDING): Adjust comment.
+ 
  2026-08-28  Richard Biener  <rguenther@suse.de>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260829/gcc/DATESTAMP gcc-16-20260905/gcc/DATESTAMP
*** gcc-16-20260829/gcc/DATESTAMP	Sat Aug 29 22:32:05 2026
--- gcc-16-20260905/gcc/DATESTAMP	Sat Sep  5 22:32:05 2026
***************
*** 1 ****
! 20260829
--- 1 ----
! 20260905
diff -Nrcpad gcc-16-20260829/gcc/config/avr/avr-passes.cc gcc-16-20260905/gcc/config/avr/avr-passes.cc
*** gcc-16-20260829/gcc/config/avr/avr-passes.cc	Sat Aug 29 22:32:06 2026
--- gcc-16-20260905/gcc/config/avr/avr-passes.cc	Sat Sep  5 22:32:06 2026
*************** namespace
*** 84,91 ****
  {
  
  /////////////////////////////////////////////////////////////////////////////
! // Before we start with the very code, introduce some helpers that are
! // quite generic, though up to now only avr-fuse-add makes use of them.
  
  /* Get the next / previous NONDEBUG_INSN_P after INSN in basic block BB.
     This assumes we are in CFG layout mode so that BLOCK_FOR_INSN()
--- 84,90 ----
  {
  
  /////////////////////////////////////////////////////////////////////////////
! // Before we start with the very code, introduce some generic helpers.
  
  /* Get the next / previous NONDEBUG_INSN_P after INSN in basic block BB.
     This assumes we are in CFG layout mode so that BLOCK_FOR_INSN()
*************** bool
*** 4919,4936 ****
  avr_pass_2moves::optimize_2moves_bb (basic_block bb)
  {
    bool changed = false;
!   rtx_insn *insn1 = nullptr;
!   rtx_insn *insn2 = nullptr;
!   rtx_insn *curr;
  
!   FOR_BB_INSNS (bb, curr)
      {
!       if (insn1 && INSN_P (insn1)
! 	  && insn2 && INSN_P (insn2))
! 	changed |= optimize_2moves (insn1, insn2);
  
!       insn1 = insn2;
!       insn2 = curr;
      }
  
    return changed;
--- 4918,4936 ----
  avr_pass_2moves::optimize_2moves_bb (basic_block bb)
  {
    bool changed = false;
!   rtx_insn *insn1 = next_nondebug_insn_bb (bb, BB_HEAD (bb));
  
!   while (insn1)
      {
!       rtx_insn *insn2 = next_nondebug_insn_bb (bb, insn1);
!       if (!insn2)
! 	break;
  
!       rtx_insn *next = next_nondebug_insn_bb (bb, insn2);
! 
!       bool change = optimize_2moves (insn1, insn2);
!       changed |= change;
!       insn1 = change ? next : insn2;
      }
  
    return changed;
*************** avr_pass_2moves::optimize_2moves (rtx_in
*** 4970,4976 ****
        for (; use; use = DF_REF_NEXT_REG (use))
  	{
  	  rtx_insn *user = DF_REF_INSN (use);
! 	  avr_dump (" %d", INSN_UID (user));
  	  good |= INSN_UID (user) == INSN_UID (insn2);
  	  bad |= INSN_UID (user) != INSN_UID (insn2);
  	}
--- 4970,4979 ----
        for (; use; use = DF_REF_NEXT_REG (use))
  	{
  	  rtx_insn *user = DF_REF_INSN (use);
! 	  bool debug_p = DEBUG_INSN_P (user);
! 	  avr_dump (" %d%s", INSN_UID (user), debug_p ? "=debug_insn" : "");
! 	  if (debug_p)
! 	    continue;
  	  good |= INSN_UID (user) == INSN_UID (insn2);
  	  bad |= INSN_UID (user) != INSN_UID (insn2);
  	}
diff -Nrcpad gcc-16-20260829/gcc/cp/ChangeLog gcc-16-20260905/gcc/cp/ChangeLog
*** gcc-16-20260829/gcc/cp/ChangeLog	Sat Aug 29 22:32:07 2026
--- gcc-16-20260905/gcc/cp/ChangeLog	Sat Sep  5 22:32:06 2026
***************
*** 1,3 ****
--- 1,31 ----
+ 2026-09-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-08-14  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/123495
+ 	PR c++/126860
+ 	* cvt.cc (cp_get_fndecl_from_callee): Use fold_non_dependent_expr
+ 	instead of maybe_constant_init.
+ 
+ 2026-09-03  Odysseas Georgoudis  <odygrd@hotmail.com>
+ 
+ 	Backported from master:
+ 	2026-08-20  Odysseas Georgoudis  <odygrd@hotmail.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/124983
+ 	* search.cc (lookup_member): Skip access checks for declarations
+ 	from dependent scope.
+ 
+ 2026-08-30  Vincenzo Calabretta  <vincenzo.cal.main@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-08-29  Vincenzo Calabretta  <vincenzo.cal.main@gmail.com>
+ 
+ 	PR c++/127046
+ 	* constexpr.cc (unshare_constructor): Copy RANGE_EXPR indexes.
+ 
  2026-08-24  Jason Merrill  <jason@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260829/gcc/cp/constexpr.cc gcc-16-20260905/gcc/cp/constexpr.cc
*** gcc-16-20260829/gcc/cp/constexpr.cc	Sat Aug 29 22:32:07 2026
--- gcc-16-20260905/gcc/cp/constexpr.cc	Sat Sep  5 22:32:06 2026
*************** unshare_constructor (tree t MEM_STAT_DEC
*** 2844,2851 ****
        vec<constructor_elt, va_gc> *v = CONSTRUCTOR_ELTS (n);
        constructor_elt *ce;
        for (HOST_WIDE_INT i = 0; vec_safe_iterate (v, i, &ce); ++i)
! 	if (ce->value && TREE_CODE (ce->value) == CONSTRUCTOR)
! 	  ptrs.safe_push (&ce->value);
      }
    return t;
  }
--- 2844,2855 ----
        vec<constructor_elt, va_gc> *v = CONSTRUCTOR_ELTS (n);
        constructor_elt *ce;
        for (HOST_WIDE_INT i = 0; vec_safe_iterate (v, i, &ce); ++i)
! 	{
! 	  if (ce->index && TREE_CODE (ce->index) == RANGE_EXPR)
! 	    ce->index = copy_node (ce->index PASS_MEM_STAT);
! 	  if (ce->value && TREE_CODE (ce->value) == CONSTRUCTOR)
! 	    ptrs.safe_push (&ce->value);
! 	}
      }
    return t;
  }
diff -Nrcpad gcc-16-20260829/gcc/cp/cvt.cc gcc-16-20260905/gcc/cp/cvt.cc
*** gcc-16-20260829/gcc/cp/cvt.cc	Sat Aug 29 22:32:07 2026
--- gcc-16-20260905/gcc/cp/cvt.cc	Sat Sep  5 22:32:06 2026
*************** cp_get_fndecl_from_callee (tree fn, bool
*** 1048,1054 ****
    if (type == NULL_TREE || !INDIRECT_TYPE_P (type))
      return NULL_TREE;
    if (fold)
!     fn = maybe_constant_init (fn);
    STRIP_NOPS (fn);
    if (TREE_CODE (fn) == ADDR_EXPR
        || TREE_CODE (fn) == FDESC_EXPR)
--- 1048,1054 ----
    if (type == NULL_TREE || !INDIRECT_TYPE_P (type))
      return NULL_TREE;
    if (fold)
!     fn = fold_non_dependent_expr (fn);
    STRIP_NOPS (fn);
    if (TREE_CODE (fn) == ADDR_EXPR
        || TREE_CODE (fn) == FDESC_EXPR)
diff -Nrcpad gcc-16-20260829/gcc/cp/module.cc gcc-16-20260905/gcc/cp/module.cc
*** gcc-16-20260829/gcc/cp/module.cc	Sat Aug 29 22:32:07 2026
--- gcc-16-20260905/gcc/cp/module.cc	Sat Sep  5 22:32:06 2026
*************** trees_out::decl_value (tree decl, depset
*** 8371,8376 ****
--- 8371,8377 ----
        int use_tpl = -1;
        if (tree ti = node_template_info (decl, use_tpl))
  	gcc_checking_assert (TREE_CODE (TI_TEMPLATE (ti)) == OVERLOAD
+ 			     || TREE_CODE (TI_TEMPLATE (ti)) == IDENTIFIER_NODE
  			     || TREE_CODE (TI_TEMPLATE (ti)) == FIELD_DECL
  			     || (DECL_TEMPLATE_RESULT (TI_TEMPLATE (ti))
  				 != decl));
*************** get_originating_module_decl (tree decl)
*** 21902,21908 ****
  	  if (TREE_CODE (decl) != TEMPLATE_DECL)
  	    {
  	      /* A friend template specialization.  */
! 	      gcc_checking_assert (OVL_P (decl));
  	      return global_namespace;
  	    }
  	}
--- 21903,21909 ----
  	  if (TREE_CODE (decl) != TEMPLATE_DECL)
  	    {
  	      /* A friend template specialization.  */
! 	      gcc_checking_assert (OVL_P (decl) || identifier_p (decl));
  	      return global_namespace;
  	    }
  	}
diff -Nrcpad gcc-16-20260829/gcc/cp/search.cc gcc-16-20260905/gcc/cp/search.cc
*** gcc-16-20260829/gcc/cp/search.cc	Sat Aug 29 22:32:07 2026
--- gcc-16-20260905/gcc/cp/search.cc	Sat Sep  5 22:32:06 2026
*************** lookup_member (tree xbasetype, tree name
*** 1277,1285 ****
      {
        tree decl = is_overloaded_fn (rval) ? get_first_fn (rval) : rval;
        decl = strip_using_decl (decl);
!       /* A dependent USING_DECL will be checked after tsubsting.  */
!       if (TREE_CODE (decl) != USING_DECL
! 	  && !DECL_IOBJ_MEMBER_FUNCTION_P (decl)
  	  && !perform_or_defer_access_check (basetype_path, decl, decl,
  					     complain, afi))
  	return error_mark_node;
--- 1277,1286 ----
      {
        tree decl = is_overloaded_fn (rval) ? get_first_fn (rval) : rval;
        decl = strip_using_decl (decl);
!       /* A dependent declaration will be checked after tsubsting.  */
!       if (!dependent_scope_p (DECL_CONTEXT (decl))
! 	  && !(DECL_DECLARES_FUNCTION_P (decl)
! 	       && DECL_IOBJ_MEMBER_FUNCTION_P (decl))
  	  && !perform_or_defer_access_check (basetype_path, decl, decl,
  					     complain, afi))
  	return error_mark_node;
diff -Nrcpad gcc-16-20260829/gcc/dwarf2out.cc gcc-16-20260905/gcc/dwarf2out.cc
*** gcc-16-20260829/gcc/dwarf2out.cc	Sat Aug 29 22:32:07 2026
--- gcc-16-20260905/gcc/dwarf2out.cc	Sat Sep  5 22:32:07 2026
*************** modified_type_die (tree type, int cv_qua
*** 13997,14003 ****
        tree dtype = TREE_TYPE (name);
  
        /* Skip the typedef for base types with DW_AT_endianity, no big deal.  */
!       if (qualified_type == dtype && !reverse_type)
  	{
  	  tree origin = decl_ultimate_origin (name);
  
--- 13997,14012 ----
        tree dtype = TREE_TYPE (name);
  
        /* Skip the typedef for base types with DW_AT_endianity, no big deal.  */
!       if (!reverse_type
! 	  && (qualified_type == dtype
! 	      /* Pointer identity check above might fail when qualified_type
! 		 is a different variant node of the same typedef yet requires
! 		 the same handling as if they matched (see PR/125421).
! 		 Skip this when btf_type_tag attributes are present, as those
! 		 need to be handled in the else branch below.  */
! 	      || (TYPE_NAME (qualified_type) == name
! 		  && TYPE_QUALS (qualified_type) == TYPE_QUALS (dtype)
! 		  && !lookup_attribute ("btf_type_tag", type_attrs))))
  	{
  	  tree origin = decl_ultimate_origin (name);
  
*************** modified_type_die (tree type, int cv_qua
*** 14009,14016 ****
  				      reverse, context_die);
  
  	  /* For a named type, use the typedef.  */
! 	  gen_type_die (qualified_type, context_die);
! 	  return lookup_type_die (qualified_type);
  	}
        else
  	{
--- 14018,14025 ----
  				      reverse, context_die);
  
  	  /* For a named type, use the typedef.  */
! 	  gen_type_die (dtype, context_die);
! 	  return lookup_type_die (dtype);
  	}
        else
  	{
diff -Nrcpad gcc-16-20260829/gcc/fortran/ChangeLog gcc-16-20260905/gcc/fortran/ChangeLog
*** gcc-16-20260829/gcc/fortran/ChangeLog	Sat Aug 29 22:32:07 2026
--- gcc-16-20260905/gcc/fortran/ChangeLog	Sat Sep  5 22:32:07 2026
***************
*** 1,3 ****
--- 1,16 ----
+ 2026-09-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-08-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/127128
+ 	* resolve.cc (replace_forall_var): New function.
+ 	(replace_in_expr_recursive): Traverse with gfc_traverse_expr
+ 	instead of walking the expression by hand.
+ 	(replace_in_code_recursive): Substitute in the whole branch chain
+ 	of IF and WHERE constructs, in the allocate-objects of ALLOCATE
+ 	and DEALLOCATE, and in SELECT TYPE and SELECT RANK case lists.
+ 
  2026-08-25  Paul Thomas  <pault@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260829/gcc/fortran/resolve.cc gcc-16-20260905/gcc/fortran/resolve.cc
*** gcc-16-20260829/gcc/fortran/resolve.cc	Sat Aug 29 22:32:07 2026
--- gcc-16-20260905/gcc/fortran/resolve.cc	Sat Sep  5 22:32:07 2026
*************** gfc_count_forall_iterators (gfc_code *co
*** 12621,12694 ****
     2) Check for shadow index-name(s) and update code block.
     3) call gfc_resolve_forall_body to resolve the FORALL body.  */
  
! /* Custom recursive expression walker that replaces symbols.
!    Visits all expressions including array subscripts.  Also called from
!    replace_in_code_recursive to handle ASSOCIATE selector expressions.  */
  
! static void
! replace_in_expr_recursive (gfc_expr *expr, gfc_symbol *old_sym, gfc_symtree *new_st)
! {
!   if (!expr)
!     return;
  
!   /* Check if this is a variable reference to replace */
    if (expr->expr_type == EXPR_VARIABLE && expr->symtree->n.sym == old_sym)
      {
!       expr->symtree = new_st;
!       expr->ts = new_st->n.sym->ts;
      }
  
!   /* Walk through reference chain (array subscripts, substrings, etc.) */
!   for (gfc_ref *ref = expr->ref; ref; ref = ref->next)
!     {
!       if (ref->type == REF_ARRAY)
! 	{
! 	  gfc_array_ref *ar = &ref->u.ar;
! 	  for (int i = 0; i < ar->dimen; i++)
! 	    {
! 	      replace_in_expr_recursive (ar->start[i], old_sym, new_st);
! 	      replace_in_expr_recursive (ar->end[i], old_sym, new_st);
! 	      replace_in_expr_recursive (ar->stride[i], old_sym, new_st);
! 	    }
! 	}
!       else if (ref->type == REF_SUBSTRING)
! 	{
! 	  replace_in_expr_recursive (ref->u.ss.start, old_sym, new_st);
! 	  replace_in_expr_recursive (ref->u.ss.end, old_sym, new_st);
! 	}
!     }
  
-   /* Walk through sub-expressions based on expression type */
-   switch (expr->expr_type)
-     {
-     case EXPR_OP:
-       replace_in_expr_recursive (expr->value.op.op1, old_sym, new_st);
-       replace_in_expr_recursive (expr->value.op.op2, old_sym, new_st);
-       break;
  
!     case EXPR_FUNCTION:
!       for (gfc_actual_arglist *a = expr->value.function.actual; a; a = a->next)
! 	replace_in_expr_recursive (a->expr, old_sym, new_st);
!       break;
  
!     case EXPR_ARRAY:
!     case EXPR_STRUCTURE:
!       for (gfc_constructor *c = gfc_constructor_first (expr->value.constructor);
! 	   c; c = gfc_constructor_next (c))
! 	{
! 	  replace_in_expr_recursive (c->expr, old_sym, new_st);
! 	  if (c->iterator)
! 	    {
! 	      replace_in_expr_recursive (c->iterator->start, old_sym, new_st);
! 	      replace_in_expr_recursive (c->iterator->end, old_sym, new_st);
! 	      replace_in_expr_recursive (c->iterator->step, old_sym, new_st);
! 	    }
! 	}
!       break;
  
!     default:
!       break;
!     }
  }
  
  
--- 12621,12662 ----
     2) Check for shadow index-name(s) and update code block.
     3) call gfc_resolve_forall_body to resolve the FORALL body.  */
  
! /* Shadow variable that replace_forall_var substitutes in; set by
!    replace_in_expr_recursive before each traversal.  */
  
! static gfc_symtree *forall_shadow_st;
  
! /* gfc_traverse_expr callback: point a reference to OLD_SYM at the
!    construct-scoped shadow variable.  */
! 
! static bool
! replace_forall_var (gfc_expr *expr, gfc_symbol *old_sym,
! 		    int *f ATTRIBUTE_UNUSED)
! {
    if (expr->expr_type == EXPR_VARIABLE && expr->symtree->n.sym == old_sym)
      {
!       expr->symtree = forall_shadow_st;
!       expr->ts = forall_shadow_st->n.sym->ts;
      }
  
!   return false;
! }
  
  
! /* Replace every reference to OLD_SYM in EXPR with NEW_ST.  Traversal is
!    left to gfc_traverse_expr so that all expression forms are covered;
!    character length type parameters are skipped since those belong to
!    declarations that may be shared outside the construct.  */
  
! static void
! replace_in_expr_recursive (gfc_expr *expr, gfc_symbol *old_sym,
! 			   gfc_symtree *new_st)
! {
!   if (!expr)
!     return;
  
!   forall_shadow_st = new_st;
!   gfc_traverse_expr (expr, old_sym, replace_forall_var, -1);
  }
  
  
*************** replace_in_code_recursive (gfc_code *cod
*** 12727,12732 ****
--- 12695,12702 ----
  	  break;
  
  	case EXEC_SELECT:
+ 	case EXEC_SELECT_TYPE:
+ 	case EXEC_SELECT_RANK:
  	  for (gfc_code *b = c->block; b; b = b->block)
  	    {
  	      for (gfc_case *cp = b->ext.block.case_list; cp; cp = cp->next)
*************** replace_in_code_recursive (gfc_code *cod
*** 12738,12743 ****
--- 12708,12733 ----
  	    }
  	  break;
  
+ 	case EXEC_IF:
+ 	case EXEC_WHERE:
+ 	  /* Each block in the chain holds its condition or mask in EXPR1
+ 	     and its body in NEXT; the trailing ELSE/ELSEWHERE has no
+ 	     condition.  The generic recursion below only reaches the first
+ 	     branch, so walk the whole chain here.  */
+ 	  for (gfc_code *b = c->block; b; b = b->block)
+ 	    {
+ 	      replace_in_expr_recursive (b->expr1, old_sym, new_st);
+ 	      replace_in_code_recursive (b->next, old_sym, new_st);
+ 	    }
+ 	  break;
+ 
+ 	case EXEC_ALLOCATE:
+ 	case EXEC_DEALLOCATE:
+ 	  /* Bounds and lengths of the allocate-objects.  */
+ 	  for (gfc_alloc *al = c->ext.alloc.list; al; al = al->next)
+ 	    replace_in_expr_recursive (al->expr, old_sym, new_st);
+ 	  break;
+ 
  	case EXEC_FORALL:
  	case EXEC_DO_CONCURRENT:
  	  for (gfc_forall_iterator *fa = c->ext.concur.forall_iterator; fa; fa = fa->next)
diff -Nrcpad gcc-16-20260829/gcc/testsuite/ChangeLog gcc-16-20260905/gcc/testsuite/ChangeLog
*** gcc-16-20260829/gcc/testsuite/ChangeLog	Sat Aug 29 22:32:08 2026
--- gcc-16-20260905/gcc/testsuite/ChangeLog	Sat Sep  5 22:32:08 2026
***************
*** 1,3 ****
--- 1,78 ----
+ 2026-09-04  Vineet Gupta  <vineet.gupta@linux.dev>
+ 
+ 	Backported from master:
+ 	2026-06-24  Vineet Gupta  <vineet.gupta@linux.dev>
+ 
+ 	PR debug/125421
+ 	* gcc.dg/debug/dwarf2/pr125421.c: New Test.
+ 
+ 2026-09-04  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2026-09-04  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/127188
+ 	* gcc.target/avr/pr127188.c: New test.
+ 
+ 2026-09-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-08-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/126472
+ 	* g++.dg/cpp0x/initlist135.C: New test.
+ 
+ 2026-09-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-08-14  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/123495
+ 	PR c++/126860
+ 	* g++.dg/template/non-dependent36.C: New test.
+ 	* g++.dg/template/non-dependent37.C: New test.
+ 
+ 2026-09-03  Odysseas Georgoudis  <odygrd@hotmail.com>
+ 
+ 	Backported from master:
+ 	2026-08-20  Odysseas Georgoudis  <odygrd@hotmail.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/124983
+ 	* g++.dg/template/pr124983.C: New test.
+ 
+ 2026-09-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-08-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/127128
+ 	* gfortran.dg/do_concurrent_typespec_5.f90: New test.
+ 
+ 2026-08-30  Vincenzo Calabretta  <vincenzo.cal.main@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-08-29  Vincenzo Calabretta  <vincenzo.cal.main@gmail.com>
+ 
+ 	PR c++/127046
+ 	* g++.dg/cpp2a/constexpr-dtor20.C: New test.
+ 
+ 2026-08-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-08-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gfortran.dg/guality/arg1.f90: Put a breakpoint on volatile
+ 	variable increment instead of on the write statement.
+ 
+ 2026-08-29  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2026-08-29  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR middle-end/127098
+ 	* gcc.target/avr/torture/pr127098.c: New test.
+ 
  2026-08-28  Richard Biener  <rguenther@suse.de>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260829/gcc/testsuite/g++.dg/cpp0x/initlist135.C gcc-16-20260905/gcc/testsuite/g++.dg/cpp0x/initlist135.C
*** gcc-16-20260829/gcc/testsuite/g++.dg/cpp0x/initlist135.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260905/gcc/testsuite/g++.dg/cpp0x/initlist135.C	Sat Sep  5 22:32:09 2026
***************
*** 0 ****
--- 1,42 ----
+ // PR c++/126472
+ // { dg-do run { target c++11 } }
+ 
+ #include <initializer_list>
+ 
+ namespace std {
+ struct _Optional_payload_base {
+   struct _Storage {
+     constexpr _Storage() : _M_empty() {}
+ #if __cpp_constexpr >= 201907L
+     constexpr
+ #endif
+     ~_Storage() {}
+     int _M_empty;
+   } _M_payload;
+ };
+ struct _Optional_payload : _Optional_payload_base {};
+ template <typename> struct optional {
+   constexpr optional() {}
+   template <typename _Up> optional(_Up) {}
+   _Optional_payload _M_payload;
+ };
+ template <typename _T1, typename _T2> struct pair {
+   _T1 first;
+   _T2 second;
+   constexpr pair(_T1 __x, _T2 __y) : first(__x), second(__y) { }
+ };
+ template <typename> struct vector {
+   vector(int, int) {}
+ };
+ } // namespace std
+ 
+ using namespace std;
+ const initializer_list<pair<optional<vector<int>>, int>> data {
+   pair<optional<vector<int>>, int>( optional<vector<int>>(vector<int>(1, 10)), 42), // non-constant
+   pair<optional<vector<int>>, int>( optional<vector<int>>(), 100), // constant
+ };
+ 
+ int main() {
+   if (data.begin()[0].second != 42 || data.begin()[1].second != 100)
+     __builtin_abort();
+ }
diff -Nrcpad gcc-16-20260829/gcc/testsuite/g++.dg/cpp2a/constexpr-dtor20.C gcc-16-20260905/gcc/testsuite/g++.dg/cpp2a/constexpr-dtor20.C
*** gcc-16-20260829/gcc/testsuite/g++.dg/cpp2a/constexpr-dtor20.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260905/gcc/testsuite/g++.dg/cpp2a/constexpr-dtor20.C	Sat Sep  5 22:32:09 2026
***************
*** 0 ****
--- 1,27 ----
+ // PR c++/127046
+ // { dg-do run { target c++20 } }
+ 
+ struct T {
+   char padding[4] = { 'x' };
+   constexpr ~T () {}
+ };
+ 
+ constexpr bool
+ test ()
+ {
+   T array[3] = {};
+   return (array[0].padding[0] == 'x'
+ 	  && array[1].padding[0] == 'x'
+ 	  && array[2].padding[0] == 'x');
+ }
+ 
+ static_assert (test ());
+ 
+ bool (*volatile fp) () = test;
+ 
+ int
+ main ()
+ {
+   if (!fp ())
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-16-20260829/gcc/testsuite/g++.dg/modules/friend-15_a.H gcc-16-20260905/gcc/testsuite/g++.dg/modules/friend-15_a.H
*** gcc-16-20260829/gcc/testsuite/g++.dg/modules/friend-15_a.H	Thu Jan  1 00:00:00 1970
--- gcc-16-20260905/gcc/testsuite/g++.dg/modules/friend-15_a.H	Sat Sep  5 22:32:09 2026
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/127207
+ // { dg-do compile { target c++20 } }
+ // { dg-additional-options "-fmodule-header" }
+ 
+ template <typename T>
+ class Foo
+ {
+     friend auto createFoo<T>() -> Foo;
+ 
+     Foo(){}
+ };
+ 
+ template <typename T>
+ auto createFoo() -> Foo<T>
+ {
+     return Foo<T>{};
+ }
diff -Nrcpad gcc-16-20260829/gcc/testsuite/g++.dg/modules/friend-15_b.C gcc-16-20260905/gcc/testsuite/g++.dg/modules/friend-15_b.C
*** gcc-16-20260829/gcc/testsuite/g++.dg/modules/friend-15_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260905/gcc/testsuite/g++.dg/modules/friend-15_b.C	Sat Sep  5 22:32:09 2026
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/127207
+ // { dg-do compile { target c++20 } }
+ // { dg-additional-options "-fmodules" }
+ 
+ import "friend-15_a.H";
+ 
+ Foo<int> x = createFoo<int>();
diff -Nrcpad gcc-16-20260829/gcc/testsuite/g++.dg/template/non-dependent36.C gcc-16-20260905/gcc/testsuite/g++.dg/template/non-dependent36.C
*** gcc-16-20260829/gcc/testsuite/g++.dg/template/non-dependent36.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260905/gcc/testsuite/g++.dg/template/non-dependent36.C	Sat Sep  5 22:32:10 2026
***************
*** 0 ****
--- 1,4 ----
+ // PR c++/123495
+ 
+ template <int N>
+ void foo () { ((int (*) ()) 0) (); }
diff -Nrcpad gcc-16-20260829/gcc/testsuite/g++.dg/template/non-dependent37.C gcc-16-20260905/gcc/testsuite/g++.dg/template/non-dependent37.C
*** gcc-16-20260829/gcc/testsuite/g++.dg/template/non-dependent37.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260905/gcc/testsuite/g++.dg/template/non-dependent37.C	Sat Sep  5 22:32:10 2026
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/126860
+ 
+ struct A {
+   int (*foo)();
+ };
+ 
+ template <typename T> struct S : public A {
+   void bar() { A::foo(); }
+ };
diff -Nrcpad gcc-16-20260829/gcc/testsuite/g++.dg/template/pr124983.C gcc-16-20260905/gcc/testsuite/g++.dg/template/pr124983.C
*** gcc-16-20260829/gcc/testsuite/g++.dg/template/pr124983.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260905/gcc/testsuite/g++.dg/template/pr124983.C	Sat Sep  5 22:32:10 2026
***************
*** 0 ****
--- 1,49 ----
+ // PR c++/124983
+ // { dg-do compile }
+ 
+ template <class T>
+ struct A
+ {
+   using typename T::Type;
+ 
+   void f()
+   {
+     this->type(); // { dg-error "no member named 'type'; did you mean 'Type'" }
+   }
+ };
+ 
+ template <class T>
+ struct B
+ {
+   typedef typename T::Type Type;
+   static T Value;
+ 
+   void f()
+   {
+     this->type(); // { dg-error "no member named 'type'; did you mean 'Type'" }
+     this->value(); // { dg-error "no member named 'value'; did you mean 'Value'" }
+   }
+ };
+ 
+ struct X
+ {
+   typedef int Type;
+ };
+ 
+ template <class T>
+ struct C
+ {
+ private:
+   typedef typename T::Type Type; // { dg-message "declared private" }
+   static T Value; // { dg-message "declared private" }
+ };
+ 
+ template <class T>
+ void g()
+ {
+   typename C<T>::Type t; // { dg-error "private within this context" }
+   (void) C<T>::Value; // { dg-error "private within this context" }
+   (void) t;
+ }
+ 
+ template void g<X>(); // { dg-message "required from here" }
diff -Nrcpad gcc-16-20260829/gcc/testsuite/gcc.dg/debug/dwarf2/pr125421.c gcc-16-20260905/gcc/testsuite/gcc.dg/debug/dwarf2/pr125421.c
*** gcc-16-20260829/gcc/testsuite/gcc.dg/debug/dwarf2/pr125421.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260905/gcc/testsuite/gcc.dg/debug/dwarf2/pr125421.c	Sat Sep  5 22:32:10 2026
***************
*** 0 ****
--- 1,18 ----
+ /* Verify the typedef chains are preserved.
+    DW_TAG_const_type for "const u16" chains to u16 typedef and doesnot
+    skip to underlying __u16 typedef */
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-gdwarf -dA" } */
+ 
+ typedef short __u16;
+ typedef __u16 u16;
+ __attribute__((btf_type_tag(""))) u16 __softirq_pending;
+ const u16 perm;
+ 
+ /* The exact failing pattern is hard to encode with TCL regex machinery,
+    so resort to an indirect way: in the buggy output, const_type points
+    directly to __u16, and only one u16 typedef DIE is emitted (for the
+    btf_type_tag use). In the fixed output, const_type points to a u16
+    typedef, creating a second u16 typedef DIE.
+ /* { dg-final { scan-assembler-times "(DW_AT_name: \"u16\"|\"u16..\"\[^\\r\\n\]*DW_AT_name)" 2 } } */
diff -Nrcpad gcc-16-20260829/gcc/testsuite/gcc.target/avr/pr127188.c gcc-16-20260905/gcc/testsuite/gcc.target/avr/pr127188.c
*** gcc-16-20260829/gcc/testsuite/gcc.target/avr/pr127188.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260905/gcc/testsuite/gcc.target/avr/pr127188.c	Sat Sep  5 22:32:12 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fcompare-debug" } */
+ 
+ extern int foo (int);
+ 
+ int bar (int a, int b)
+ {
+   int q;
+   if (a < 0)
+     q = 0;
+   else
+     q = 1;
+   int c = foo (b);
+   if (q != 0)
+     c = foo (c);
+   int d = foo (c);
+   return d;
+ }
diff -Nrcpad gcc-16-20260829/gcc/testsuite/gfortran.dg/do_concurrent_typespec_5.f90 gcc-16-20260905/gcc/testsuite/gfortran.dg/do_concurrent_typespec_5.f90
*** gcc-16-20260829/gcc/testsuite/gfortran.dg/do_concurrent_typespec_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260905/gcc/testsuite/gfortran.dg/do_concurrent_typespec_5.f90	Sat Sep  5 22:32:14 2026
***************
*** 0 ****
--- 1,141 ----
+ ! { dg-do run }
+ !
+ ! PR 127128
+ ! A DO CONCURRENT type-spec gives the index-name construct scope, which
+ ! the front end implements by substituting a shadow variable through the
+ ! construct body.  The substitution walkers skipped several expression
+ ! and code forms, so a sibling construct reusing the index-name read the
+ ! earlier construct's uninitialised variable instead of its own index.
+ 
+ module m
+   implicit none
+ 
+   type :: t
+    contains
+      procedure, nopass :: tbp_fun
+      procedure, nopass :: tbp_sub
+   end type
+ 
+   abstract interface
+      pure function ifc (x) result (r)
+        integer, intent(in) :: x
+        integer :: r
+      end function
+   end interface
+ 
+   type :: p_t
+      procedure(ifc), nopass, pointer :: p => null()
+   end type
+ 
+ contains
+ 
+   pure function tbp_fun (x) result (r)
+     integer, intent(in) :: x
+     integer :: r
+     r = x
+   end function
+ 
+   pure subroutine tbp_sub (x, r)
+     integer, intent(in) :: x
+     integer, intent(out) :: r
+     r = x
+   end subroutine
+ 
+   pure function idty (x) result (r)
+     integer, intent(in) :: x
+     integer :: r
+     r = x
+   end function
+ 
+ end module
+ 
+ program do_concurrent_typespec_5
+   use m
+   implicit none
+ 
+   integer, parameter :: n = 5
+   integer :: a(n) = [1, 2, 3, 4, 5]
+   integer :: b(n,2) = 1
+   integer :: out(n), out2(n,2)
+   type(t) :: o
+   type(p_t) :: pp
+ 
+   pp%p => idty
+ 
+   ! The first construct types 'k'; every later one shadows it.
+   out = 0
+   do concurrent (integer :: k = 1:n)
+     out(k) = a(k)
+   end do
+   if (any (out /= a)) stop 1
+ 
+   ! Type-bound function reference (EXPR_COMPCALL).
+   out = 0
+   do concurrent (integer :: k = 1:n)
+     out(k) = o%tbp_fun (a(k))
+   end do
+   if (any (out /= a)) stop 2
+ 
+   ! Procedure-pointer component reference (EXPR_PPC).
+   out = 0
+   do concurrent (integer :: k = 1:n)
+     out(k) = pp%p (a(k))
+   end do
+   if (any (out /= a)) stop 3
+ 
+   ! CALL to a type-bound subroutine.
+   out = 0
+   do concurrent (integer :: k = 1:n)
+     call o%tbp_sub (a(k), out(k))
+   end do
+   if (any (out /= a)) stop 4
+ 
+   ! Condition of an IF statement.
+   out = 0
+   do concurrent (integer :: k = 1:n)
+     if (a(k) > 0) out(k) = a(k)
+   end do
+   if (any (out /= a)) stop 5
+ 
+   ! ELSE IF and ELSE branches.
+   out = 0
+   do concurrent (integer :: k = 1:n)
+     if (k > 100) then
+       out(k) = -1
+     else if (k > 50) then
+       out(k) = -2
+     else
+       out(k) = a(k)
+     end if
+   end do
+   if (any (out /= a)) stop 6
+ 
+   ! Bounds of an allocate-object.
+   out = 0
+   do concurrent (integer :: k = 1:n)
+     block
+       integer, allocatable :: tmp(:)
+       allocate (tmp(k))
+       out(k) = size (tmp)
+     end block
+   end do
+   if (any (out /= a)) stop 7
+ 
+   ! WHERE mask expression.
+   out2 = 0
+   do concurrent (integer :: k = 1:n)
+     where (b(k,:) > 0) out2(k,:) = b(k,:)
+   end do
+   if (any (out2 /= b)) stop 8
+ 
+   ! SELECT CASE body (already worked; guard against regression).
+   out = 0
+   do concurrent (integer :: k = 1:n)
+     select case (1)
+     case (1)
+       out(k) = a(k)
+     end select
+   end do
+   if (any (out /= a)) stop 9
+ 
+ end program
diff -Nrcpad gcc-16-20260829/libstdc++-v3/ChangeLog gcc-16-20260905/libstdc++-v3/ChangeLog
*** gcc-16-20260829/libstdc++-v3/ChangeLog	Sat Aug 29 22:32:17 2026
--- gcc-16-20260905/libstdc++-v3/ChangeLog	Sat Sep  5 22:32:17 2026
***************
*** 1,3 ****
--- 1,37 ----
+ 2026-09-03  Nathan Myers  <ncm@cantrip.org>
+ 
+ 	PR libstdc++/126800
+ 	* include/bits/hashtable.h: (try_emplace): Call correct helper.
+ 	* testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc:
+ 	whether key arguments have been copied.
+ 
+ 2026-08-31  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-08-31  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/118665
+ 	* include/bits/uniform_int_dist.h (uniform_int_distribution::_S_nd):
+ 	Substract __min (_Urbg::min()) from each generator invocation.
+ 	* testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc:
+ 	Add testDiscreteDist for shifted (with non-zero min()) engine.
+ 
+ 2026-08-31  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-08-27  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/123510
+ 	* src/c++20/tzdb.cc (at_time::is_indicator): Add case labels
+ 	for uppercase letters.
+ 	(operator>>(istream&, years_from_to)): Check for 'M' and 'O',
+ 	(chrono::reload_tzdb): Add case labels for lowercase letters,
+ 	and normalize first letter of type.
+ 	(operator>>(istream&, abbrev_month&)): Match all cases in
+ 	switch and days_chars.
+ 	(operator>>(istream&, on_month_day&)): Check for 'L'.
+ 	* testsuite/std/time/tzdb/name_matching.cc: New test.
+ 
  2026-08-25  Matthias Kretz  <m.kretz@gsi.de>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260829/libstdc++-v3/include/bits/hashtable.h gcc-16-20260905/libstdc++-v3/include/bits/hashtable.h
*** gcc-16-20260829/libstdc++-v3/include/bits/hashtable.h	Sat Aug 29 22:32:18 2026
--- gcc-16-20260905/libstdc++-v3/include/bits/hashtable.h	Sat Sep  5 22:32:18 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1107,1113 ****
  	  // Note we ignore the hint argument.
  	  __hash_code __code;
  	  size_type __bkt;
! 	  if (auto __loc = _M_locate(__k))
  	    return { iterator(__loc), false };
  	  else
  	    {
--- 1107,1113 ----
  	  // Note we ignore the hint argument.
  	  __hash_code __code;
  	  size_type __bkt;
! 	  if (auto __loc = _M_locate_tr(__k))
  	    return { iterator(__loc), false };
  	  else
  	    {
diff -Nrcpad gcc-16-20260829/libstdc++-v3/include/bits/uniform_int_dist.h gcc-16-20260905/libstdc++-v3/include/bits/uniform_int_dist.h
*** gcc-16-20260829/libstdc++-v3/include/bits/uniform_int_dist.h	Sat Aug 29 22:32:18 2026
--- gcc-16-20260905/libstdc++-v3/include/bits/uniform_int_dist.h	Sat Sep  5 22:32:18 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 262,279 ****
  	  static_assert(!_Wp_traits::__is_signed, "W must be unsigned");
  	  static_assert(_Wp_traits::__digits == (2 * _Up_traits::__digits),
  			"W must be twice as wide as U");
  
  	  // reference: Fast Random Integer Generation in an Interval
  	  // ACM Transactions on Modeling and Computer Simulation 29 (1), 2019
  	  // https://arxiv.org/abs/1805.10941
! 	  _Wp __product = _Wp(__g()) * _Wp(__range);
  	  _Up __low = _Up(__product);
  	  if (__low < __range)
  	    {
  	      _Up __threshold = -__range % __range;
  	      while (__low < __threshold)
  		{
! 		  __product = _Wp(__g()) * _Wp(__range);
  		  __low = _Up(__product);
  		}
  	    }
--- 262,280 ----
  	  static_assert(!_Wp_traits::__is_signed, "W must be unsigned");
  	  static_assert(_Wp_traits::__digits == (2 * _Up_traits::__digits),
  			"W must be twice as wide as U");
+ 	  constexpr auto __min = _Urbg::min();
  
  	  // reference: Fast Random Integer Generation in an Interval
  	  // ACM Transactions on Modeling and Computer Simulation 29 (1), 2019
  	  // https://arxiv.org/abs/1805.10941
! 	  _Wp __product = _Wp(__g() - __min) * _Wp(__range);
  	  _Up __low = _Up(__product);
  	  if (__low < __range)
  	    {
  	      _Up __threshold = -__range % __range;
  	      while (__low < __threshold)
  		{
! 		  __product = _Wp(__g() - __min) * _Wp(__range);
  		  __low = _Up(__product);
  		}
  	    }
diff -Nrcpad gcc-16-20260829/libstdc++-v3/src/c++20/tzdb.cc gcc-16-20260905/libstdc++-v3/src/c++20/tzdb.cc
*** gcc-16-20260829/libstdc++-v3/src/c++20/tzdb.cc	Sat Aug 29 22:32:18 2026
--- gcc-16-20260905/libstdc++-v3/src/c++20/tzdb.cc	Sat Sep  5 22:32:18 2026
*************** namespace std::chrono
*** 267,280 ****
--- 267,286 ----
  	switch (c)
  	{
  	  case 's':
+ 	  case 'S':
  	    return {Standard, true};
  	  case 'u':
+ 	  case 'U':
  	  case 'g':
+ 	  case 'G':
  	  case 'z':
+ 	  case 'Z':
  	    return {Universal, true};
  	  case 'w':
+ 	  case 'W':
  	    return {Wall, true};
  	  case 'd':
+ 	  case 'D':
  	    return {Daylight, true};
  	  default:
  	    return {Wall, false};
*************** namespace std::chrono
*** 394,400 ****
        {
  	string s;
  	auto c = ws(in).peek();
! 	if (c == 'm') [[unlikely]] // keyword "minimum"
  	  {
  	    in >> s; // extract the rest of the word
  	    yy.from = year(1900);
--- 400,406 ----
        {
  	string s;
  	auto c = ws(in).peek();
! 	if (c == 'm' || c == 'M') [[unlikely]] // keyword "minimum"
  	  {
  	    in >> s; // extract the rest of the word
  	    yy.from = year(1900);
*************** namespace std::chrono
*** 403,414 ****
  	  yy.from = year{num};
  
  	c = ws(in).peek();
! 	if (c == 'm') // keyword "maximum"
  	  {
  	    in >> s; // extract the rest of the word
  	    yy.to = year::max();
  	  }
! 	else if (c == 'o') // keyword "only"
  	  {
  	    in >> s; // extract the rest of the word
  	    yy.to = yy.from;
--- 409,420 ----
  	  yy.from = year{num};
  
  	c = ws(in).peek();
! 	if (c == 'm' || c == 'M') // keyword "maximum"
  	  {
  	    in >> s; // extract the rest of the word
  	    yy.to = year::max();
  	  }
! 	else if (c == 'o' || c == 'O') // keyword "only"
  	  {
  	    in >> s; // extract the rest of the word
  	    yy.to = yy.from;
*************** constinit tzdb_list::_Node::NumLeapSecon
*** 1962,1989 ****
--- 1968,2004 ----
  	    {
  	      case '#':
  		break;
+ 	      case 'r':
  	      case 'R':
  	      {
  		// Rule  NAME  FROM  TO  TYPE  IN  ON  AT  SAVE  LETTER/S
  		is >> type; // extract the "Rule" or "R" marker
+ 		type[0] = 'R';
+ 
  		Rule rule;
  		is >> rule;
  		node->rules.push_back(std::move(rule));
  		break;
  	      }
+ 	      case 'l':
  	      case 'L':
  	      {
  		// Link  TARGET           LINK-NAME
  		is >> type; // extract the "Link" or "L" marker
+ 		type[0] = 'L';
+ 
  		time_zone_link link(nullptr);
  		is >> quoted(link._M_target) >> quoted(link._M_name);
  		node->db.links.push_back(std::move(link));
  		break;
  	      }
+ 	      case 'z':
  	      case 'Z':
  	      {
  		// Zone  NAME        STDOFF  RULES   FORMAT  [UNTIL]
  		is >> type; // extract the "Zone" or "Z" marker
+ 		type[0] = 'Z';
+ 
  		time_zone tz(std::make_unique<time_zone::_Impl>(node));
  		is >> quoted(tz._M_name);
  		node->db.zones.push_back(time_zone(std::move(tz)));
*************** constinit tzdb_list::_Node::NumLeapSecon
*** 2475,2534 ****
        in >> s;
        switch (s[0])
        {
        case 'J':
  	switch (s[1])
  	{
  	case 'a':
  	  am.m = January;
  	  return in;
  	case 'u':
  	  switch (s[2])
  	  {
  	  case 'n':
  	    am.m = June;
  	    return in;
  	  case 'l':
  	    am.m = July;
  	    return in;
  	  }
  	  break;
  	}
  	break;
        case 'F':
  	am.m = February;
  	return in;
        case 'M':
! 	if (s[1] == 'a') [[likely]]
  	  switch (s[2])
  	  {
  	  case 'r':
  	    am.m = March;
  	    return in;
  	  case 'y':
  	    am.m = May;
  	    return in;
  	  }
  	break;
        case 'A':
  	switch (s[1])
  	{
  	case 'p':
  	  am.m = April;
  	  return in;
  	case 'u':
  	  am.m = August;
  	  return in;
  	}
  	break;
        case 'S':
  	am.m = September;
  	return in;
        case 'O':
  	am.m = October;
  	return in;
        case 'N':
  	am.m = November;
  	return in;
        case 'D':
  	am.m = December;
  	return in;
--- 2490,2565 ----
        in >> s;
        switch (s[0])
        {
+       case 'j':
        case 'J':
  	switch (s[1])
  	{
  	case 'a':
+ 	case 'A':
  	  am.m = January;
  	  return in;
  	case 'u':
+ 	case 'U':
  	  switch (s[2])
  	  {
  	  case 'n':
+ 	  case 'N':
  	    am.m = June;
  	    return in;
  	  case 'l':
+ 	  case 'L':
  	    am.m = July;
  	    return in;
  	  }
  	  break;
  	}
  	break;
+       case 'f':
        case 'F':
  	am.m = February;
  	return in;
+       case 'm':
        case 'M':
! 	if (s[1] == 'a' || s[1] == 'A') [[likely]]
  	  switch (s[2])
  	  {
  	  case 'r':
+ 	  case 'R':
  	    am.m = March;
  	    return in;
  	  case 'y':
+ 	  case 'Y':
  	    am.m = May;
  	    return in;
  	  }
  	break;
+       case 'a':
        case 'A':
  	switch (s[1])
  	{
  	case 'p':
+ 	case 'P':
  	  am.m = April;
  	  return in;
  	case 'u':
+ 	case 'U':
  	  am.m = August;
  	  return in;
  	}
  	break;
+       case 's':
        case 'S':
  	am.m = September;
  	return in;
+       case 'o':
        case 'O':
  	am.m = October;
  	return in;
+       case 'n':
        case 'N':
  	am.m = November;
  	return in;
+       case 'd':
        case 'D':
  	am.m = December;
  	return in;
*************** constinit tzdb_list::_Node::NumLeapSecon
*** 2552,2588 ****
--- 2583,2628 ----
  	// Just peek at one char at a time.
  	switch (in.peek())
  	{
+ 	case 'm':
  	case 'M':
  	  aw.wd = Monday;
  	  break;
+ 	case 't':
  	case 'T':
  	  in.ignore(1); // Discard the 'T'
  	  switch (in.peek())
  	  {
  	  case 'u':
+ 	  case 'U':
  	    aw.wd = Tuesday;
  	    break;
  	  case 'h':
+ 	  case 'H':
  	    aw.wd = Thursday;
  	    break;
  	  default:
  	    in.setstate(ios::failbit);
  	  }
  	  break;
+ 	case 'w':
  	case 'W':
  	  aw.wd = Wednesday;
  	  break;
+ 	case 'f':
  	case 'F':
  	  aw.wd = Friday;
  	  break;
+ 	case 's':
  	case 'S':
  	  in.ignore(1); // Discard the 'S'
  	  switch (in.peek())
  	  {
  	  case 'a':
+ 	  case 'A':
  	    aw.wd = Saturday;
  	    break;
  	  case 'u':
+ 	  case 'U':
  	    aw.wd = Sunday;
  	    break;
  	  default:
*************** constinit tzdb_list::_Node::NumLeapSecon
*** 2595,2601 ****
  	in.ignore(1); // Discard whichever char we just looked at.
  
  	// Discard any remaining chars from weekday, e.g. "onday".
! 	string_view day_chars = "ondayesritu";
  	auto is_day_char = [&day_chars](int c) {
  	  return c != char_traits<char>::eof()
  		   && day_chars.find((char)c) != day_chars.npos;
--- 2635,2641 ----
  	in.ignore(1); // Discard whichever char we just looked at.
  
  	// Discard any remaining chars from weekday, e.g. "onday".
! 	string_view day_chars = "ondayesrituONDAYESRITU";
  	auto is_day_char = [&day_chars](int c) {
  	  return c != char_traits<char>::eof()
  		   && day_chars.find((char)c) != day_chars.npos;
*************** constinit tzdb_list::_Node::NumLeapSecon
*** 2629,2635 ****
  		  return in;
  		}
  	    }
! 	  else if (c == 'l') // lastSunday, lastWed, ...
  	    {
  	      in.ignore(4);
  	      if (abbrev_weekday w{}; in >> w) [[likely]]
--- 2669,2675 ----
  		  return in;
  		}
  	    }
! 	  else if (c == 'l' || c == 'L') // lastSunday, lastWed, ...
  	    {
  	      in.ignore(4);
  	      if (abbrev_weekday w{}; in >> w) [[likely]]
diff -Nrcpad gcc-16-20260829/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc gcc-16-20260905/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc
*** gcc-16-20260829/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc	Sat Aug 29 22:32:18 2026
--- gcc-16-20260905/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc	Sat Sep  5 22:32:18 2026
***************
*** 6,11 ****
--- 6,12 ----
  #include <utility>
  #include <functional>
  #include <compare>
+ #include <exception>
  #include <testsuite_hooks.h>
  
  struct Y;
*************** struct X {
*** 20,30 ****
  
  struct Y {
    std::string s;
    Y() = default;
    Y(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
!   Y(const Y& y) = default;
    Y& operator=(Y&& y) { s = std::move(y.s); y.s.clear(); return *this; }
!   Y& operator=(const Y& y) = default;
    Y(std::string_view sv) : s(sv) {}
    Y(int n) : s(std::string('a', n)) {}
    Y(const Y& a, const Y& b) : s(a.s + "1" + b.s) { }
--- 21,32 ----
  
  struct Y {
    std::string s;
+   mutable bool copied_from = false;  // [PR126800]
    Y() = default;
    Y(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
!   Y(const Y& y) : s(y.s) { y.copied_from = true; }
    Y& operator=(Y&& y) { s = std::move(y.s); y.s.clear(); return *this; }
!   Y& operator=(const Y& y) { s = y.s; y.copied_from = true; return *this; }
    Y(std::string_view sv) : s(sv) {}
    Y(int n) : s(std::string('a', n)) {}
    Y(const Y& a, const Y& b) : s(a.s + "1" + b.s) { }
*************** struct Y {
*** 36,42 ****
  };
  
  X::X(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
! X::X(const Y& y) : s(y.s) {}
  
  struct Hash {
    using is_transparent = void;
--- 38,44 ----
  };
  
  X::X(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
! X::X(const Y& y) : s(y.s) { y.copied_from = true; }
  
  struct Hash {
    using is_transparent = void;
*************** void test_op_bracket()
*** 52,73 ****
    std::unordered_map<X, Y, Hash, Equal> amap;
    amap.insert({{X{"abc"}, 1}, {X{"def"}, 2}, {X{"ghi"}, 3}});
  
!   Y x{"dei"}, y{"deh"}, z{"deg"};
!   amap[z] = 4;
    VERIFY(amap.size() == 4);
    VERIFY(z.s.size() == 3);  // not moved from.
  
!   amap[std::move(z)] = 5;
    VERIFY(amap.size() == 4);
!   VERIFY(z.s.size() == 3);  // not moved from.
  
!   VERIFY(amap[std::move(y)] == Y{});
    VERIFY(amap.size() == 5);
!   VERIFY(y.s.empty());      // moved from.
  
!   amap[std::move(x)] = 7;
    VERIFY(amap.size() == 6);
    VERIFY(x.s.empty());      // moved from
  }
  
  void test_at()
--- 54,86 ----
    std::unordered_map<X, Y, Hash, Equal> amap;
    amap.insert({{X{"abc"}, 1}, {X{"def"}, 2}, {X{"ghi"}, 3}});
  
!   Y z{"deg"};
!   amap[z] = Y{4};
    VERIFY(amap.size() == 4);
    VERIFY(z.s.size() == 3);  // not moved from.
+   VERIFY(z.copied_from);
+   VERIFY(amap[Y{"deg"}] == Y{4});
  
!   Y zz{"deg"};
!   amap[std::move(zz)] = Y{5};
    VERIFY(amap.size() == 4);
!   VERIFY(zz.s.size() == 3);  // not moved from.
!   VERIFY(!zz.copied_from);
!   VERIFY(amap[Y{"deg"}] == Y{5});
  
!   Y y{"deh"};
!   amap[y] = Y{6};
    VERIFY(amap.size() == 5);
!   VERIFY(y.s.size() == 3);      // not moved from.
!   VERIFY(y.copied_from);
!   VERIFY(amap[Y{"deh"}] == Y{6});
  
!   Y x{"dei"};
!   amap[std::move(x)] = Y{7};
    VERIFY(amap.size() == 6);
    VERIFY(x.s.empty());      // moved from
+   VERIFY(!x.copied_from);
+   VERIFY(amap[Y{"dei"}] == Y{7});
  }
  
  void test_at()
*************** void test_at()
*** 81,101 ****
        VERIFY(2 == amap.at(x));
        VERIFY(amap.size() == 3);
        VERIFY(x.s.size() == 3);   // not moved from
        VERIFY(4 == (amap.at(x) = 4));
        VERIFY(amap.size() == 3);
        VERIFY(x.s.size() == 3);   // not moved from
      }
    catch(...) { VERIFY(false); }
  
    Y z{"deg"};
    try
    {
!     amap.at(z) = 4;
      VERIFY(false);  // Should have thrown.
    }
    catch (std::out_of_range&) { VERIFY(amap.size() == 3); }
    catch (...) { VERIFY(false); } // Wrong exception.
    VERIFY(z.s.size() == 3);   // not moved from
  
    Y y{"deh"};
    auto const& amapr{amap};
--- 94,117 ----
        VERIFY(2 == amap.at(x));
        VERIFY(amap.size() == 3);
        VERIFY(x.s.size() == 3);   // not moved from
+       VERIFY(!x.copied_from);
        VERIFY(4 == (amap.at(x) = 4));
        VERIFY(amap.size() == 3);
        VERIFY(x.s.size() == 3);   // not moved from
+       VERIFY(!x.copied_from);
      }
    catch(...) { VERIFY(false); }
  
    Y z{"deg"};
    try
    {
!     amap.at(z) = Y{1};
      VERIFY(false);  // Should have thrown.
    }
    catch (std::out_of_range&) { VERIFY(amap.size() == 3); }
    catch (...) { VERIFY(false); } // Wrong exception.
    VERIFY(z.s.size() == 3);   // not moved from
+   VERIFY(!z.copied_from);
  
    Y y{"deh"};
    auto const& amapr{amap};
*************** void test_at()
*** 108,113 ****
--- 124,130 ----
    catch (...) { VERIFY(false); } // Wrong exception.
    VERIFY(amapr.size() == 3);
    VERIFY(y.s.size() == 3);  // not moved from
+   VERIFY(!y.copied_from);
  }
  
  void test_try_emplace()
*************** void test_try_emplace()
*** 117,126 ****
  
    { // Fail, already there
      auto a = amap;
!     auto [it, res] = a.try_emplace(Y{"def"}, Y{"xyz"});
      VERIFY(!res);
      VERIFY(a.size() == 3);
      VERIFY(a.at(Y{"def"}) == Y{2});
    }
    { // Fail, already there, move
      auto a = amap;
--- 134,148 ----
  
    { // Fail, already there
      auto a = amap;
!     Y y{"def"}, z{"xyz"};
!     auto [it, res] = a.try_emplace(std::move(y), z);
      VERIFY(!res);
      VERIFY(a.size() == 3);
      VERIFY(a.at(Y{"def"}) == Y{2});
+     VERIFY(y.s.size() == 3); // not moved from
+     VERIFY(!y.copied_from);
+     VERIFY(z.s.size() == 3); // not moved from
+     VERIFY(!z.copied_from);
    }
    { // Fail, already there, move
      auto a = amap;
*************** void test_try_emplace()
*** 130,142 ****
      VERIFY(a.size() == 3);
      VERIFY(a.at(Y{"def"}) == Y{2});
      VERIFY(y.s.size() == 3);  // not moved from
      VERIFY(z.s.size() == 3);  // not moved from
    }
    { // Succeed, construct
      auto a = amap;
!     Y m("m"), n("n"), o("o"), p("p"), dek("dek");
      {
!       auto [it, res] = a.try_emplace(Y{"deg"}, m, n);
        VERIFY(res);
        VERIFY(a.size() == 4);
        VERIFY(it->first == X{"deg"});
--- 152,167 ----
      VERIFY(a.size() == 3);
      VERIFY(a.at(Y{"def"}) == Y{2});
      VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(!y.copied_from);
      VERIFY(z.s.size() == 3);  // not moved from
+     VERIFY(!z.copied_from);
    }
    { // Succeed, construct
      auto a = amap;
!     Y m("m"), n("n"), o("o"), p("p");
      {
!       Y y{"deg"};
!       auto [it, res] = a.try_emplace(std::move(y), m, n);
        VERIFY(res);
        VERIFY(a.size() == 4);
        VERIFY(it->first == X{"deg"});
*************** void test_try_emplace()
*** 145,183 ****
        VERIFY(n.s.size() == 1);
      }
      {
!       auto [it, res] = a.try_emplace(Y{"deh"}, m, std::move(n));
        VERIFY(res);
        VERIFY(a.size() == 5);
        VERIFY(it->first == X{"deh"});
        VERIFY(it->second == Y{"m2n"});
        VERIFY(m.s.size() == 1);
        VERIFY(n.s.empty());
      }
      {
!       auto [it, res] = a.try_emplace(Y{"dei"}, std::move(m), o);
        VERIFY(res);
        VERIFY(a.size() == 6);
        VERIFY(it->first == X{"dei"});
        VERIFY(it->second == Y{"m3o"});
        VERIFY(m.s.empty());
        VERIFY(o.s.size() == 1);
      }
      {
!       auto [it, res] = a.try_emplace(Y{"dej"}, std::move(o), std::move(p));
        VERIFY(res);
        VERIFY(a.size() == 7);
        VERIFY(it->first == X{"dej"});
        VERIFY(it->second == Y{"o4p"});
        VERIFY(o.s.empty());
        VERIFY(p.s.empty());
      }
      {
!       auto [it, res] = a.try_emplace(std::move(dek), Y("q"), Y("r"));
        VERIFY(res);
        VERIFY(a.size() == 8);
!       VERIFY(dek.s.empty());
        VERIFY(it->first == X{"dek"});
        VERIFY(it->second == Y{"q4r"});
      }
    }
    { // Succeed, move
--- 170,216 ----
        VERIFY(n.s.size() == 1);
      }
      {
!       Y y{"deh"};
!       auto [it, res] = a.try_emplace(std::move(y), m, std::move(n));
        VERIFY(res);
        VERIFY(a.size() == 5);
        VERIFY(it->first == X{"deh"});
        VERIFY(it->second == Y{"m2n"});
        VERIFY(m.s.size() == 1);
        VERIFY(n.s.empty());
+       VERIFY(!y.copied_from);
      }
      {
!       Y y{"dei"};
!       auto [it, res] = a.try_emplace(std::move(y), std::move(m), o);
        VERIFY(res);
        VERIFY(a.size() == 6);
        VERIFY(it->first == X{"dei"});
        VERIFY(it->second == Y{"m3o"});
        VERIFY(m.s.empty());
        VERIFY(o.s.size() == 1);
+       VERIFY(!y.copied_from);
      }
      {
!       Y y{"dej"};
!       auto [it, res] = a.try_emplace(std::move(y), std::move(o), std::move(p));
        VERIFY(res);
        VERIFY(a.size() == 7);
        VERIFY(it->first == X{"dej"});
        VERIFY(it->second == Y{"o4p"});
        VERIFY(o.s.empty());
        VERIFY(p.s.empty());
+       VERIFY(!y.copied_from);
      }
      {
!       Y y{"dek"};
!       auto [it, res] = a.try_emplace(std::move(y), Y("q"), Y("r"));
        VERIFY(res);
        VERIFY(a.size() == 8);
!       VERIFY(y.s.empty());
        VERIFY(it->first == X{"dek"});
        VERIFY(it->second == Y{"q4r"});
+       VERIFY(!y.copied_from);
      }
    }
    { // Succeed, move
*************** void test_try_emplace()
*** 190,205 ****
      VERIFY(a.size() == 4);
      VERIFY(y.s.empty()); // moved from
      VERIFY(z.s.empty()); // moved from
    }
    { // Hinted, fail
      auto a = amap;
      Y y{"def"}, z{"xyz"};
!     auto it = a.try_emplace(a.begin(), std::move(y), std::move(z));
      VERIFY(a.size() == 3);
      VERIFY(it->first == X{"def"});
      VERIFY(it->second == Y{2});
      VERIFY(y.s.size() == 3);  // not moved from
      VERIFY(z.s.size() == 3);  // not moved from
    }
    { // Hinted, fail, move
      auto a = amap;
--- 223,242 ----
      VERIFY(a.size() == 4);
      VERIFY(y.s.empty()); // moved from
      VERIFY(z.s.empty()); // moved from
+     VERIFY(!y.copied_from);
+     VERIFY(!z.copied_from);
    }
    { // Hinted, fail
      auto a = amap;
      Y y{"def"}, z{"xyz"};
!     auto it = a.try_emplace(a.begin(), std::move(y), z);
      VERIFY(a.size() == 3);
      VERIFY(it->first == X{"def"});
      VERIFY(it->second == Y{2});
      VERIFY(y.s.size() == 3);  // not moved from
      VERIFY(z.s.size() == 3);  // not moved from
+     VERIFY(!y.copied_from);
+     VERIFY(!z.copied_from);
    }
    { // Hinted, fail, move
      auto a = amap;
*************** void test_try_emplace()
*** 210,257 ****
      VERIFY(it->second == Y{2});
      VERIFY(y.s.size() == 3);  // not moved from
      VERIFY(z.s.size() == 3);  // not moved from
    }
    { // Hinted, succeed, construct
      auto a = amap;
!     Y m("m"), n("n"), o("o"), p("p"), dek("dek");
      {
!       auto it = a.try_emplace(a.begin(), Y{"deg"}, m, n);
        VERIFY(a.size() == 4);
        VERIFY(it->first == X{"deg"});
        VERIFY(it->second == Y{"m1n"});
        VERIFY(m.s.size() == 1);
        VERIFY(n.s.size() == 1);
      }
      {
!       auto it = a.try_emplace(a.begin(), Y{"deh"}, m, std::move(n));
        VERIFY(a.size() == 5);
        VERIFY(it->first == X{"deh"});
        VERIFY(it->second == Y{"m2n"});
        VERIFY(m.s.size() == 1);
        VERIFY(n.s.empty());
      }
      {
!       auto it = a.try_emplace(a.begin(), Y{"dei"}, std::move(m), o);
        VERIFY(a.size() == 6);
        VERIFY(it->first == X{"dei"});
        VERIFY(it->second == Y{"m3o"});
        VERIFY(m.s.empty());
        VERIFY(o.s.size() == 1);
      }
      {
!       auto it = a.try_emplace(a.begin(), Y{"dej"}, std::move(o), std::move(p));
        VERIFY(a.size() == 7);
        VERIFY(it->first == X{"dej"});
        VERIFY(it->second == Y{"o4p"});
        VERIFY(o.s.empty());
        VERIFY(p.s.empty());
      }
      {
!       auto it = a.try_emplace(a.begin(), std::move(dek), Y("q"), Y("r"));
        VERIFY(a.size() == 8);
!       VERIFY(dek.s.empty());
        VERIFY(it->first == X{"dek"});
        VERIFY(it->second == Y{"q4r"});
      }
    }
    {  // Hinted, succeed, move
--- 247,312 ----
      VERIFY(it->second == Y{2});
      VERIFY(y.s.size() == 3);  // not moved from
      VERIFY(z.s.size() == 3);  // not moved from
+     VERIFY(!y.copied_from);
+     VERIFY(!z.copied_from);
    }
    { // Hinted, succeed, construct
      auto a = amap;
!     Y m("m"), n("n"), o("o"), p("p");
      {
!       Y y{"deg"};
!       auto it = a.try_emplace(a.begin(), y, m, n);
        VERIFY(a.size() == 4);
        VERIFY(it->first == X{"deg"});
        VERIFY(it->second == Y{"m1n"});
        VERIFY(m.s.size() == 1);
        VERIFY(n.s.size() == 1);
+       VERIFY(y.s.size() == 3);
+       VERIFY(y.copied_from);
      }
      {
!       Y y{"deh"};
!       auto it = a.try_emplace(a.begin(), y, m, std::move(n));
        VERIFY(a.size() == 5);
        VERIFY(it->first == X{"deh"});
        VERIFY(it->second == Y{"m2n"});
        VERIFY(m.s.size() == 1);
        VERIFY(n.s.empty());
+       VERIFY(y.s.size() == 3);
+       VERIFY(y.copied_from);
      }
      {
!       Y y{"dei"};
!       auto it = a.try_emplace(a.begin(), y, std::move(m), o);
        VERIFY(a.size() == 6);
        VERIFY(it->first == X{"dei"});
        VERIFY(it->second == Y{"m3o"});
        VERIFY(m.s.empty());
        VERIFY(o.s.size() == 1);
+       VERIFY(y.s.size() == 3);
+       VERIFY(y.copied_from);
      }
      {
!       Y y{"dej"};
!       auto it = a.try_emplace(a.begin(), y, std::move(o), std::move(p));
        VERIFY(a.size() == 7);
        VERIFY(it->first == X{"dej"});
        VERIFY(it->second == Y{"o4p"});
        VERIFY(o.s.empty());
        VERIFY(p.s.empty());
+       VERIFY(y.s.size() == 3);
+       VERIFY(y.copied_from);
      }
      {
!       Y y{"dek"};
!       auto it = a.try_emplace(a.begin(), std::move(y), Y("q"), Y("r"));
        VERIFY(a.size() == 8);
!       VERIFY(y.s.empty());
        VERIFY(it->first == X{"dek"});
        VERIFY(it->second == Y{"q4r"});
+       VERIFY(it->second == Y{"q4r"});
+       VERIFY(y.s.empty()); // moved from
+       VERIFY(!y.copied_from);
      }
    }
    {  // Hinted, succeed, move
*************** void test_try_emplace()
*** 262,268 ****
--- 317,325 ----
      VERIFY(it->second == Y{"xyz"});
      VERIFY(a.size() == 4);
      VERIFY(y.s.empty()); // moved from
+     VERIFY(!y.copied_from);
      VERIFY(z.s.empty());  // moved from
+     VERIFY(!z.copied_from);
    }
  }
  
*************** void test_insert_or_assign()
*** 279,285 ****
--- 336,344 ----
      VERIFY(a.size() == 3);
      VERIFY(a.at(Y{"def"}) == Y{"xyz"});
      VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(!y.copied_from);
      VERIFY(z.s.size() == 3);  // not moved from
+     VERIFY(z.copied_from);
    }
    { // Already there, move
      auto a = amap;
*************** void test_insert_or_assign()
*** 289,295 ****
--- 348,356 ----
      VERIFY(a.size() == 3);
      VERIFY(a.at(Y{"def"}) == Y{"xyz"});
      VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(!y.copied_from);
      VERIFY(z.s.empty());      // moved from
+     VERIFY(!z.copied_from);
    }
    { // Succeed, move
      auto a = amap;
*************** void test_insert_or_assign()
*** 300,306 ****
--- 361,369 ----
      VERIFY(it->second == Y{"xyz"});
      VERIFY(a.size() == 4);
      VERIFY(y.s.empty()); // moved from
+     VERIFY(!y.copied_from);
      VERIFY(z.s.empty()); // moved from
+     VERIFY(!z.copied_from);
    }
    { // Hinted, already there, replace
      auto a = amap;
*************** void test_insert_or_assign()
*** 310,316 ****
--- 373,381 ----
      VERIFY(it->first == X{"def"});
      VERIFY(it->second == Y{"xyz"});
      VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(!y.copied_from);
      VERIFY(z.s.size() == 3);  // not moved from
+     VERIFY(z.copied_from);
    }
    { // Hinted, already there, move
      auto a = amap;
*************** void test_insert_or_assign()
*** 320,326 ****
--- 385,393 ----
      VERIFY(it->first == X{"def"});
      VERIFY(it->second == Y{"xyz"});
      VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(!y.copied_from);
      VERIFY(z.s.empty());      // moved from
+     VERIFY(!z.copied_from);
    }
    {  // Hinted, succeed
      auto a = amap;
*************** void test_insert_or_assign()
*** 330,336 ****
--- 397,405 ----
      VERIFY(it->second == Y{"xyz"});
      VERIFY(a.size() == 4);
      VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(y.copied_from);
      VERIFY(z.s.size() == 3);  // not moved from
+     VERIFY(z.copied_from);
    }
    {  // Hinted, succeed, move
      auto a = amap;
*************** void test_insert_or_assign()
*** 340,346 ****
--- 409,417 ----
      VERIFY(it->second == Y{"xyz"});
      VERIFY(a.size() == 4);
      VERIFY(y.s.empty());  // moved from
+     VERIFY(!y.copied_from);
      VERIFY(z.s.empty());  // moved from
+     VERIFY(!z.copied_from);
    }
  }
  
diff -Nrcpad gcc-16-20260829/libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc gcc-16-20260905/libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc
*** gcc-16-20260829/libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc	Sat Aug 29 22:32:18 2026
--- gcc-16-20260905/libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc	Sat Sep  5 22:32:18 2026
***************
*** 21,26 ****
--- 21,27 ----
  // 26.5.8.2.1 Class template uniform_int_distribution [rand.dist.uni.int]
  
  #include <random>
+ #include <cstdint>
  #include <functional>
  #include <testsuite_random.h>
  
***************
*** 32,37 ****
--- 33,51 ----
  # define ARGS
  #endif
  
+ template<std::uint64_t Offset>
+ struct shifted
+ {
+   using result_type = std::uint64_t;
+   static constexpr result_type min() { return Offset; }
+   static constexpr result_type max() { return Offset + std::mt19937::max(); }
+ 
+   result_type operator()()
+   { return Offset + eng(); }
+ 
+   std::mt19937 eng;
+ };
+ 
  void test01()
  {
    using namespace __gnu_test;
*************** void test01()
*** 49,54 ****
--- 63,76 ----
    std::uniform_int_distribution<> uid3(1, 20);
    auto buid3 = std::bind(uid3, eng);
    testDiscreteDist<ARGS>(buid3, [](int n) { return uniform_int_pdf(n, 1, 20); } );
+ 
+   shifted<(std::uint64_t(1) << 16)> s16e;
+   auto buid4 = std::bind(uid3, s16e);
+   testDiscreteDist<ARGS>(buid4, [](int n) { return uniform_int_pdf(n, 1, 20); } );
+ 
+   shifted<(std::uint64_t(1) << 32)> s32e;
+   auto buid5 = std::bind(uid3, s32e);
+   testDiscreteDist<ARGS>(buid5, [](int n) { return uniform_int_pdf(n, 1, 20); } );
  }
  
  int main()
diff -Nrcpad gcc-16-20260829/libstdc++-v3/testsuite/std/time/tzdb/name_matching.cc gcc-16-20260905/libstdc++-v3/testsuite/std/time/tzdb/name_matching.cc
*** gcc-16-20260829/libstdc++-v3/testsuite/std/time/tzdb/name_matching.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260905/libstdc++-v3/testsuite/std/time/tzdb/name_matching.cc	Sat Sep  5 22:32:18 2026
***************
*** 0 ****
--- 1,318 ----
+ // { 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 <format>
+ #include <testsuite_hooks.h>
+ #include <iostream>
+ 
+ static bool override_used = false;
+ 
+ namespace __gnu_cxx
+ {
+   const char* zoneinfo_dir_override() {
+     override_used = true;
+     return "./";
+   }
+ }
+ 
+ using namespace std::chrono;
+ 
+ template<typename Functor, typename... Args>
+   void
+   test_combinations(Functor&& func, std::string_view txt, size_t min, Args&&... args)
+   {
+     std::string lower(txt);
+     std::string upper(txt);
+     for (char& c : upper)
+       c = std::toupper(c);
+ 
+     func(lower.substr(0, min), args...);
+     func(upper.substr(0, min), args...);
+     func(lower, args...);
+     func(upper, args...);
+   }
+ 
+ void
+ test_day(std::string_view name, weekday wd)
+ {
+   constexpr const char* templ = R"(# version test_day_{0}
+  # Zone  NAME  STDOFF  RULES  FORMAT  [UNTIL]
+  Zone    Test  0       -      Z1      2000 May last{0}
+                0       -      Z2      2010 May {0}>=10
+                0       -      Z3
+   )";
+ 
+   std::string input = std::format(templ, name);
+   std::ofstream("tzdata.zi") << input;
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+ 
+   std::string_view ver = db.version;
+   VERIFY( ver.starts_with("test_day_") );
+   ver.remove_prefix(9);
+   VERIFY( ver == name );
+ 
+   sys_info info = locate_zone("Test")->get_info(sys_days(2005y/January/1));
+   VERIFY( info.begin == sys_days(2000y/May/wd[last]) );
+   year_month_day ymd(ceil<days>(info.end));
+   VERIFY( ymd.year() == 2010y );
+   VERIFY( ymd.month() == May );
+   VERIFY( ymd.day() >= day(10) );
+   VERIFY( weekday(ymd) == wd );
+ }
+ 
+ void
+ test_last(std::string_view name)
+ {
+   constexpr const char* templ = R"(# version test_{0}
+  # Zone  NAME  STDOFF  RULES  FORMAT  [UNTIL]
+  Zone    Test  0       -      Z1      2000 July {0}Mon
+                0       -      Z3
+   )";
+ 
+   std::string input = std::format(templ, name);
+   std::ofstream("tzdata.zi") << input;
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+ 
+   std::string_view ver = db.version;
+   VERIFY( ver.starts_with("test_") );
+   ver.remove_prefix(5);
+   VERIFY( ver == name );
+ 
+   sys_info info = locate_zone("Test")->get_info(sys_days(2005y/January/1));
+   VERIFY( info.begin == sys_days(2000y/July/Monday[last]) );
+ }
+ 
+ void
+ test_days()
+ {
+   test_combinations(test_day, "monday", 1, Monday);
+   test_combinations(test_day, "tuesday", 2, Tuesday);
+   test_combinations(test_day, "wednesday", 1, Wednesday);
+   test_combinations(test_day, "thursday", 2, Thursday);
+   test_combinations(test_day, "friday", 1, Friday);
+   test_combinations(test_day, "saturday", 2, Saturday);
+   test_combinations(test_day, "sunday", 2, Sunday);
+ 
+   test_last("last");
+   test_last("LAST");
+ }
+ 
+ void
+ test_month(std::string_view name, month m)
+ {
+   constexpr const char* templ = R"(# version test_month_{0}
+  # Zone  NAME  STDOFF  RULES  FORMAT  [UNTIL]
+  Zone    Test  0       -      Z1      2000 {0} 13
+                0       -      Z2      2010 {0}
+                0       -      Z3
+   )";
+ 
+   std::string input = std::format(templ, name);
+   std::ofstream("tzdata.zi") << input;
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+ 
+   std::string_view ver = db.version;
+   VERIFY( ver.starts_with("test_month_") );
+   ver.remove_prefix(11);
+   VERIFY( ver == name );
+ 
+   sys_info info = locate_zone("Test")->get_info(sys_days(2005y/January/1));
+   VERIFY( info.begin == sys_days(2000y/m/13) );
+   VERIFY( info.end == sys_days(2010y/m/1) );
+ }
+ 
+ void
+ test_months()
+ {
+   test_combinations(test_month, "january", 2, January);
+   test_combinations(test_month, "february", 1, February);
+   test_combinations(test_month, "march", 3, March);
+   test_combinations(test_month, "april", 2, April);
+   test_combinations(test_month, "may", 3, May);
+   test_combinations(test_month, "june", 3, June);
+   test_combinations(test_month, "july", 3, July);
+   test_combinations(test_month, "august", 3, August);
+   test_combinations(test_month, "september", 1, September);
+   test_combinations(test_month, "october", 1, October);
+   test_combinations(test_month, "november", 1, November);
+   test_combinations(test_month, "december", 1, December);
+ }
+ 
+ void
+ test_year(std::string_view min, std::string_view max, std::string_view only)
+ {
+   constexpr const char* templ = R"(# version {0}
+  # Rule  NAME  FROM  TO    -  IN   ON       AT    SAVE  LETTER/S
+  Rule    Rule  {1}   2020  -  Jan  10       0u    0     S
+  Rule    Rule  2000  {2}   -  Nov  12       0u    1     D
+  Rule    Rule  2010  {3}   -  Aug  11       0u    2     O
+  Rule    Rule  2020  {2}  -   Jan  13       0u    0     S
+  # Zone  NAME  STDOFF  RULES  FORMAT  [UNTIL]
+  Zone    Test  0       -      Z1      1800 Jan 1 0u
+                0       Rule   Z%s     3001 Jan 1 0u
+                0       -      Zl
+   )";
+ 
+   const std::string ver = std::format("test_{}_{}_{}", min, max, only);
+   std::string input = std::format(templ, ver, min, max, only);
+   std::ofstream("tzdata.zi") << input;
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == ver );
+ 
+   const time_zone* zone  = locate_zone("Test");
+ 
+   // min applies since 1900, check first transition
+   sys_info info = zone->get_info(sys_days(1900y/January/1));
+   VERIFY( info.begin == sys_days(1800y/January/1) );
+   VERIFY( info.end == sys_days(1900y/January/10) );
+ 
+   // Check 2010 only rule does not apply in 2009
+   info = zone->get_info(sys_days(2009y/February/1));
+   VERIFY( info.begin == sys_days(2009y/January/10) );
+   VERIFY( info.end == sys_days(2009y/November/12) );
+ 
+   // Check 2010 only rule in 2010
+   info = zone->get_info(sys_days(2010y/February/1));
+   VERIFY( info.begin == sys_days(2010y/January/10) );
+   VERIFY( info.end == sys_days(2010y/August/11) );
+ 
+   info = zone->get_info(sys_days(2010y/October/1));
+   VERIFY( info.begin == sys_days(2010y/August/11) );
+   VERIFY( info.end == sys_days(2010y/November/12) );
+ 
+   // Check 2010 only rule does not apply in 2011
+   info = zone->get_info(sys_days(2011y/February/1));
+   VERIFY( info.begin == sys_days(2011y/January/10) );
+   VERIFY( info.end == sys_days(2011y/November/12) );
+ 
+   // max rule applies forever
+   info = zone->get_info(sys_days(2500y/February/1));
+   VERIFY( info.begin == sys_days(2500y/January/13) );
+   VERIFY( info.end == sys_days(2500y/November/12) );
+ 
+   info = zone->get_info(sys_days(3000y/December/1));
+   VERIFY( info.begin == sys_days(3000y/November/12) );
+   VERIFY( info.end == sys_days(3001y/January/1) );
+ }
+ 
+ void
+ test_years()
+ {
+   test_year("min", "max", "only");
+   test_year("m", "m", "o");
+   test_year("MIN", "MAX", "ONLY");
+   test_year("M", "M", "O");
+ }
+ 
+ void
+ test_time(char s, char u, char w, char d)
+ {
+   constexpr const char* templ = R"(# version test_time_{0}{1}{2}{3}
+  # Zone  NAME  STDOFF  RULES  FORMAT  [UNTIL]
+  Zone    Test  1       0      Zs    2000 Jan 11 10{0}
+                3       1      Zu    2005 Feb 12 11{1}
+                5       1      Zw    2010 Mar 13 12{2}
+                7       1      Zd    2015 Apr 14 13{3}
+                9       0      Su    2020 May 15 14{1}
+                10      0      Sw    2025 Jun 16 15{2}
+                11      -      Zl
+   )";
+ 
+   std::string input = std::format(templ, s, u, w, d);
+   std::ofstream("tzdata.zi") << input;
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+ 
+   std::string_view ver = db.version;
+   VERIFY( ver.starts_with("test_time_") );
+   VERIFY( ver[10] == s );
+   VERIFY( ver[11] == u );
+   VERIFY( ver[12] == w );
+   VERIFY( ver[13] == d );
+ 
+   const time_zone* zone  = locate_zone("Test");
+   sys_info info = zone->get_info(sys_days(2002y/January/1));
+   VERIFY( info.begin == sys_days(2000y/January/11) + 10h - 1h );
+   VERIFY( info.end == sys_days(2005y/February/12) + 11h );
+ 
+   info = zone->get_info(sys_days(2012y/January/1));
+   VERIFY( info.begin == sys_days(2010y/March/13) + 12h - 6h );
+   VERIFY( info.end == sys_days(2015y/April/14) + 13h - 8h );
+ 
+   info = zone->get_info(sys_days(2022y/January/1));
+   VERIFY( info.begin == sys_days(2020y/May/15) + 14h );
+   VERIFY( info.end == sys_days(2025y/June/16) + 15h - 10h );
+ }
+ 
+ void
+ test_times()
+ {
+   test_time('s', 'u', 'w', 'd');
+   test_time('S', 'U', 'W', 'D');
+   // Alternate spelling for Universal
+   test_time('s', 'g', 'w', 'd');
+   test_time('s', 'G', 'w', 'd');
+   test_time('s', 'z', 'w', 'd');
+   test_time('s', 'Z', 'w', 'd');
+ }
+ 
+ void
+ test_line(std::string_view rule, std::string_view zone, std::string_view link)
+ {
+   constexpr const char* templ = R"(# version {0}
+  # Rule  NAME  FROM  TO   -  IN   ON       AT    SAVE  LETTER/S
+  {1}     Rule  min   max  -  Jan  13       0u    0     D
+  {1}     Rule  min   max  -  Oct  12       0u    1     S
+  # Zone  NAME  STDOFF  RULES  FORMAT  [UNTIL]
+  {2}     Test  0       -      Z1      2000 Jan 13
+                0       Rule   Z%s
+  # Link  TARGET  LINK-NAME
+  {3}     Test    Link
+   )";
+ 
+   const std::string ver = std::format("test_{}_{}_{}", rule, zone, link);
+   std::string input = std::format(templ, ver, rule, zone, link);
+   std::ofstream("tzdata.zi") << input;
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == ver );
+ 
+   sys_info info = locate_zone("Test")->get_info(sys_days(2005y/February/1));
+   VERIFY( info.begin == sys_days(2005y/January/13) );
+   VERIFY( info.end == sys_days(2005y/October/12) );
+ 
+   const time_zone* target  = locate_zone("Link");
+   VERIFY( target->name() == "Test" );
+ }
+ 
+ void
+ test_lines()
+ {
+   test_line("rule", "zone", "link");
+   test_line("r", "z", "l");
+   test_line("RULE", "ZONE", "LINK");
+   test_line("R", "Z", "L");
+ }
+ 
+ int main()
+ {
+   test_days();
+   test_months();
+   test_years();
+   test_times();
+   test_lines();
+ }
