diff -Nrcpad gcc-15-20251122/LAST_UPDATED gcc-15-20251129/LAST_UPDATED
*** gcc-15-20251122/LAST_UPDATED	Sat Nov 22 22:33:41 2025
--- gcc-15-20251129/LAST_UPDATED	Sat Nov 29 22:32:18 2025
***************
*** 1 ****
! Obtained from git: releases/gcc-15 revision de19b86454966828a889270e5a057226aa6978cb
--- 1 ----
! Obtained from git: releases/gcc-15 revision 26dcd236ed99634a78faaea18c64aea237142346
diff -Nrcpad gcc-15-20251122/MD5SUMS gcc-15-20251129/MD5SUMS
*** gcc-15-20251122/MD5SUMS	Sat Nov 22 22:34:07 2025
--- gcc-15-20251129/MD5SUMS	Sat Nov 29 22:32:22 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20251122.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20251129.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 25,31 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 32c60e4ed11e254062efcad58c1786fa  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
--- 25,31 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 97c629a574622ec79ca2fb16ef971544  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 514,520 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! c1d100cd0b35bb17caabd57c45b148ab  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 514,520 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 443ff993781ea13e47f8b558d6a4ac45  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 551,557 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 4b210a1c45231a4fa6b44ff175b6376f  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 551,557 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 366af89ddcad73c66cc5c6f9a524e360  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** eafc8a2abc331243ea846fab22b8aec4  gcc/co
*** 3655,3661 ****
  485d7b0baab6c9abc2c56a9f6c467afb  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  a16ca2ab73b09afe4481044ebcec2010  gcc/config/arm/arm-tune.md
! aa43df67a1a22f4867c78ceec52a63ba  gcc/config/arm/arm.cc
  fe5e2b24f803c40d73fe860e114fc6e0  gcc/config/arm/arm.h
  afff34e5b83fa9b311a4351eb46f303c  gcc/config/arm/arm.md
  a7974fb16c914604eacaf43120b8769f  gcc/config/arm/arm.opt
--- 3655,3661 ----
  485d7b0baab6c9abc2c56a9f6c467afb  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  a16ca2ab73b09afe4481044ebcec2010  gcc/config/arm/arm-tune.md
! 6fd3dda3e406a3bcc326445d47e67765  gcc/config/arm/arm.cc
  fe5e2b24f803c40d73fe860e114fc6e0  gcc/config/arm/arm.h
  afff34e5b83fa9b311a4351eb46f303c  gcc/config/arm/arm.md
  a7974fb16c914604eacaf43120b8769f  gcc/config/arm/arm.opt
*************** dc8e1ff924dd1f2699f60837b792825a  gcc/co
*** 3744,3750 ****
  b6434dfdcd32f4ab54f4e1e867cca4d4  gcc/config/arm/t-symbian
  1484dd700dca665c8ec9c7b42f260359  gcc/config/arm/t-vxworks
  84d24ab216855ebac94722b5968426ab  gcc/config/arm/thumb1.md
! 4c789256ee3b0addc913521a79677f0b  gcc/config/arm/thumb2.md
  b39ae9b1d0fd52783888ae034fa27218  gcc/config/arm/types.md
  22e6583951db6a19df7c215758f2ffbf  gcc/config/arm/uclinux-eabi.h
  764ee6f9b6836a3b69036da6a49da57e  gcc/config/arm/uclinux-elf.h
--- 3744,3750 ----
  b6434dfdcd32f4ab54f4e1e867cca4d4  gcc/config/arm/t-symbian
  1484dd700dca665c8ec9c7b42f260359  gcc/config/arm/t-vxworks
  84d24ab216855ebac94722b5968426ab  gcc/config/arm/thumb1.md
! 7ed58d599577d2073e0e8aa227ad3a84  gcc/config/arm/thumb2.md
  b39ae9b1d0fd52783888ae034fa27218  gcc/config/arm/types.md
  22e6583951db6a19df7c215758f2ffbf  gcc/config/arm/uclinux-eabi.h
  764ee6f9b6836a3b69036da6a49da57e  gcc/config/arm/uclinux-elf.h
*************** fc218940ab265ae323b54d5f007d0d98  gcc/co
*** 3765,3771 ****
  5ed27daaa89e74cf4016168779065375  gcc/config/avr/avr-dimode.md
  a22b4318830a45fe7c7db53efb64970d  gcc/config/avr/avr-fixed.md
  f43b68e01b2d61fffb5336ef45fa1e7f  gcc/config/avr/avr-log.cc
! 16c38242d01a11655dde3f3dafd49a17  gcc/config/avr/avr-mcus.def
  1db4fe94056a22e92de33b6d365176c6  gcc/config/avr/avr-modes.def
  d37f092206fc4c0379cee5e5fc01b654  gcc/config/avr/avr-passes-fuse-move.h
  ce627f4de03a506a4263a68742891105  gcc/config/avr/avr-passes.cc
--- 3765,3771 ----
  5ed27daaa89e74cf4016168779065375  gcc/config/avr/avr-dimode.md
  a22b4318830a45fe7c7db53efb64970d  gcc/config/avr/avr-fixed.md
  f43b68e01b2d61fffb5336ef45fa1e7f  gcc/config/avr/avr-log.cc
! 8b73988703afc48dba5f660f6f684492  gcc/config/avr/avr-mcus.def
  1db4fe94056a22e92de33b6d365176c6  gcc/config/avr/avr-modes.def
  d37f092206fc4c0379cee5e5fc01b654  gcc/config/avr/avr-passes-fuse-move.h
  ce627f4de03a506a4263a68742891105  gcc/config/avr/avr-passes.cc
*************** f51037a9e437f8e9ce7215b2da5ad4e2  gcc/co
*** 4954,4960 ****
  9a0be0e3c4d4b0eec09eef7dee2a028a  gcc/config/riscv/riscv-vsetvl.cc
  16b7359c0b12895c0d7452fc89879a1a  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! e7480d9f3fdca3a400c23385368314d3  gcc/config/riscv/riscv.cc
  1153302a8d65cedebba8e1a3f67931b2  gcc/config/riscv/riscv.h
  e0f559ad59aa7daada8d2a405d8ea9d8  gcc/config/riscv/riscv.md
  c799356a57b52ab91ff324ab22516fba  gcc/config/riscv/riscv.opt
--- 4954,4960 ----
  9a0be0e3c4d4b0eec09eef7dee2a028a  gcc/config/riscv/riscv-vsetvl.cc
  16b7359c0b12895c0d7452fc89879a1a  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 39d04b229b55c4f71e819907766d71ea  gcc/config/riscv/riscv.cc
  1153302a8d65cedebba8e1a3f67931b2  gcc/config/riscv/riscv.h
  e0f559ad59aa7daada8d2a405d8ea9d8  gcc/config/riscv/riscv.md
  c799356a57b52ab91ff324ab22516fba  gcc/config/riscv/riscv.opt
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5499,5505 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 9849961380a78d7d5661539401e41662  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5499,5505 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 93dbe1a3966a69813a1c21bde411028a  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** bcf7c5d02934e40f17edeb18d58c4d4d  gcc/cp
*** 5535,5541 ****
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  08c713f559f658009bf94d139a24c2b6  gcc/cp/Make-lang.in
! 92f508b339386e75dc200f6b75732c90  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  65891fa261ce5aa3474ed32683a124d3  gcc/cp/class.cc
--- 5535,5541 ----
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  08c713f559f658009bf94d139a24c2b6  gcc/cp/Make-lang.in
! 542a93f4998290d0a8ae59ccfdd20775  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  65891fa261ce5aa3474ed32683a124d3  gcc/cp/class.cc
*************** c2a7409e57253e5d9bfd8ce29fb85212  gcc/cp
*** 5579,5592 ****
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  8a43dc7eb02c2c19d4faa7344f490b26  gcc/cp/method.cc
! d33a35dc23cc4443e6ff570e41b95932  gcc/cp/module.cc
  4fbf6c5b0391fc30bc3aaea6d8cb1e3e  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
  a2d86d3655a737a6a9f1e60561394d14  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
! 013545c93b386f105298c8ff032a26e8  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  318c5e4a338363a8183b4a01222aa800  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
--- 5579,5592 ----
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  8a43dc7eb02c2c19d4faa7344f490b26  gcc/cp/method.cc
! b095356a119cfb5897376a6f11228c04  gcc/cp/module.cc
  4fbf6c5b0391fc30bc3aaea6d8cb1e3e  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
  a2d86d3655a737a6a9f1e60561394d14  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
! 0af0e109f9cc25530963d19e859b29a0  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  318c5e4a338363a8183b4a01222aa800  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
*************** dabd477d68c54372f8519e7c917d4a11  gcc/di
*** 5912,5918 ****
  bec68218d528467fd119bf2cd02bc358  gcc/digraph.cc
  18e73120a6e21ceac1adce40777000cf  gcc/digraph.h
  bb82bca6383082ead28f6f21f0a6223f  gcc/doc/analyzer.texi
! 73b84511fa3199b1850b9f63c2f0f50e  gcc/doc/avr-mmcu.texi
  628200aba31497f381052220465b8927  gcc/doc/bugreport.texi
  4f969d517229b2a96d02a2cc09fb85f1  gcc/doc/cfg.texi
  5c6f1e0d6b6424f27020c9e5c08807d4  gcc/doc/collect2.texi
--- 5912,5918 ----
  bec68218d528467fd119bf2cd02bc358  gcc/digraph.cc
  18e73120a6e21ceac1adce40777000cf  gcc/digraph.h
  bb82bca6383082ead28f6f21f0a6223f  gcc/doc/analyzer.texi
! 85fc81bd6947985dce85e8d008e693a1  gcc/doc/avr-mmcu.texi
  628200aba31497f381052220465b8927  gcc/doc/bugreport.texi
  4f969d517229b2a96d02a2cc09fb85f1  gcc/doc/cfg.texi
  5c6f1e0d6b6424f27020c9e5c08807d4  gcc/doc/collect2.texi
*************** c5d4ddea06a53f7125a589f1aee71c71  gcc/gi
*** 6253,6259 ****
  98652c967ce7f8dda9a1c398caa0996a  gcc/gimple-harden-conditionals.cc
  34959112cc04df5744be2b160e2f9d80  gcc/gimple-harden-control-flow.cc
  46c40ebab120d543476a2e46ac063bba  gcc/gimple-if-to-switch.cc
! c8b58b1fdd336324d189a3904520ad48  gcc/gimple-isel.cc
  319a859d4c4eb6948afa93d70a5c97ec  gcc/gimple-iterator.cc
  a0c225f8a1deb41873e5984a058b0f45  gcc/gimple-iterator.h
  4ab554af77b78b1a5d2948c9f0632680  gcc/gimple-laddress.cc
--- 6253,6259 ----
  98652c967ce7f8dda9a1c398caa0996a  gcc/gimple-harden-conditionals.cc
  34959112cc04df5744be2b160e2f9d80  gcc/gimple-harden-control-flow.cc
  46c40ebab120d543476a2e46ac063bba  gcc/gimple-if-to-switch.cc
! 65c7f0cbe140eb21ef44d13d4d22a125  gcc/gimple-isel.cc
  319a859d4c4eb6948afa93d70a5c97ec  gcc/gimple-iterator.cc
  a0c225f8a1deb41873e5984a058b0f45  gcc/gimple-iterator.h
  4ab554af77b78b1a5d2948c9f0632680  gcc/gimple-laddress.cc
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8446,8452 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! d940c3f184d12655b135508fa1843d9f  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8446,8452 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! fd4d1cea2bb53b74251fba0e4bd62980  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** b0f94df77ae1f45f51ea4e2c6bb9691a  gcc/te
*** 21104,21109 ****
--- 21104,21110 ----
  36888ce54ce42641fb6e61af819e4031  gcc/testsuite/g++.dg/cpp26/pack-indexing16.C
  66ff6dfe6ddc544b4653391842e6eae8  gcc/testsuite/g++.dg/cpp26/pack-indexing17.C
  7b55370f3253f2eae6d541ae349b6268  gcc/testsuite/g++.dg/cpp26/pack-indexing17a.C
+ dec9cc8d0d460e2cc13f361418bfbd4c  gcc/testsuite/g++.dg/cpp26/pack-indexing18.C
  49ef5418646a1f810ced7c9ecba2f5a9  gcc/testsuite/g++.dg/cpp26/pack-indexing2.C
  01e2e390b9329b3e619416e0bf8b3684  gcc/testsuite/g++.dg/cpp26/pack-indexing3.C
  8105a5f8078fd0ba5507cadc224b15ad  gcc/testsuite/g++.dg/cpp26/pack-indexing4.C
*************** ec9f0efa4770d04a1dea842b64f19c44  gcc/te
*** 21691,21696 ****
--- 21692,21698 ----
  2d6205fea644048201c44086df527c3a  gcc/testsuite/g++.dg/cpp2a/consteval4.C
  34ecadb8994bf3d4c005295e95f6f53d  gcc/testsuite/g++.dg/cpp2a/consteval40.C
  09d61acf831f6fd33b3695f66ce79b1e  gcc/testsuite/g++.dg/cpp2a/consteval41.C
+ 25cda58432ffe21cd15da667f5edfb8d  gcc/testsuite/g++.dg/cpp2a/consteval42.C
  e71633ec506016932dc09c057d98c36c  gcc/testsuite/g++.dg/cpp2a/consteval5.C
  f8b2a0016c59d132f059d57a7638806f  gcc/testsuite/g++.dg/cpp2a/consteval6.C
  6517514915e5a24d0ee38257c46994cc  gcc/testsuite/g++.dg/cpp2a/consteval7.C
*************** a7ee3a8d76bc139c4cf52d3492a2aff4  gcc/te
*** 26332,26337 ****
--- 26334,26341 ----
  2006efa004cac463749325d18b100fdd  gcc/testsuite/g++.dg/modules/concept-10_b.C
  c2514fb24a7f14f1f1edfc9217a858f2  gcc/testsuite/g++.dg/modules/concept-11_a.H
  191fb7c05c060bb53585c0c88c5bc056  gcc/testsuite/g++.dg/modules/concept-11_b.C
+ fadd6aa13f0173dad29bb90adc5338e0  gcc/testsuite/g++.dg/modules/concept-12_a.C
+ d84e92fe8fd291fd530a78ba8b49f463  gcc/testsuite/g++.dg/modules/concept-12_b.C
  b82e625ae44f653d9caf5a917ed2565a  gcc/testsuite/g++.dg/modules/concept-1_a.C
  2ae2870ddbfb381e60200518e1e9b824  gcc/testsuite/g++.dg/modules/concept-1_b.C
  6bc1b6fc0acb09251969b0d3737c9f40  gcc/testsuite/g++.dg/modules/concept-2_a.C
*************** af4c0a0f5ed69a8450f83634f706f725  gcc/te
*** 37682,37687 ****
--- 37686,37693 ----
  70b97714537133ddff4da9419b8fa1ff  gcc/testsuite/g++.target/riscv/mvc-symbols3.C
  e24f0e502cef393d2dbeeea684980651  gcc/testsuite/g++.target/riscv/mvc-symbols4.C
  6ccfbdc79a3df2fd72928d9b5b8e49eb  gcc/testsuite/g++.target/riscv/pr115458.C
+ a8a857220d4221ed70fa20fdbdf0cfca  gcc/testsuite/g++.target/riscv/pr122692-run-1.C
+ 605f86e49704fde491263d58c2ccade7  gcc/testsuite/g++.target/riscv/pr122692-run-2.C
  4c45e102d6dd19ee08a476904b64542d  gcc/testsuite/g++.target/riscv/pr96759.C
  ac37e529bda1269045c3681cc4b425dd  gcc/testsuite/g++.target/riscv/pr97682.C
  6e6f612caa7b4f4e5eea9cd6bba4227b  gcc/testsuite/g++.target/riscv/redundant-bitmap-1.C
*************** f5a92a0de23b213fa01a61cf7fe1ae34  gcc/te
*** 42506,42512 ****
  855fbbdc3d5be4f2d0684e44e4fec515  gcc/testsuite/gcc.dg/Wstringop-overflow-44.c
  d4f0d56a7c087ab9e26e9e5b226957e0  gcc/testsuite/gcc.dg/Wstringop-overflow-45.c
  c491d7d16a5eccfc3aa26cb9789fb97e  gcc/testsuite/gcc.dg/Wstringop-overflow-46.c
! 5f6864c29b96decf9d7d12324b2d6be0  gcc/testsuite/gcc.dg/Wstringop-overflow-47.c
  e47b31031fbcddf0625b2f4928216e92  gcc/testsuite/gcc.dg/Wstringop-overflow-49.c
  b6e551c9441e53cd1be6e84faec996ed  gcc/testsuite/gcc.dg/Wstringop-overflow-5.c
  8f7f0322c20d1913c505cfa93fc16056  gcc/testsuite/gcc.dg/Wstringop-overflow-50.c
--- 42512,42518 ----
  855fbbdc3d5be4f2d0684e44e4fec515  gcc/testsuite/gcc.dg/Wstringop-overflow-44.c
  d4f0d56a7c087ab9e26e9e5b226957e0  gcc/testsuite/gcc.dg/Wstringop-overflow-45.c
  c491d7d16a5eccfc3aa26cb9789fb97e  gcc/testsuite/gcc.dg/Wstringop-overflow-46.c
! b1c3da24f9514a3d2af92c76fdb1b45f  gcc/testsuite/gcc.dg/Wstringop-overflow-47.c
  e47b31031fbcddf0625b2f4928216e92  gcc/testsuite/gcc.dg/Wstringop-overflow-49.c
  b6e551c9441e53cd1be6e84faec996ed  gcc/testsuite/gcc.dg/Wstringop-overflow-5.c
  8f7f0322c20d1913c505cfa93fc16056  gcc/testsuite/gcc.dg/Wstringop-overflow-50.c
*************** cb7b5505103ef079e746dd619a21ee86  gcc/te
*** 49839,49844 ****
--- 49845,49852 ----
  c57884e34f257e33d206372fc675b716  gcc/testsuite/gcc.dg/pr121035.c
  d602fec0c129037ce49acd7cccfd6266  gcc/testsuite/gcc.dg/pr121202.c
  7032b52dc2dd1e6cab514293c2d0b276  gcc/testsuite/gcc.dg/pr121322.c
+ 3675df2622072bf0e5cccbf94e93a50f  gcc/testsuite/gcc.dg/pr122126_vextr.c
+ b975ebfa27ac446e553bacbb75421590  gcc/testsuite/gcc.dg/pr122126_vset.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** e5306c98e7af9542607cef498d9d4cab  gcc/te
*** 69347,69352 ****
--- 69355,69361 ----
  bf06244dec6dc49e0817b03e4494a90f  gcc/testsuite/gcc.target/arm/builtin_uaddll.c
  f842ae48d03fd71d6c4251ee6b88d526  gcc/testsuite/gcc.target/arm/builtin_usubl.c
  33305e972aaa5cd2660665305329c212  gcc/testsuite/gcc.target/arm/builtin_usubll.c
+ 00d46b35880659bc8001ea4047b5bb1c  gcc/testsuite/gcc.target/arm/cbz-range.c
  528a1cc7ada5bc63c0c59152d86b8557  gcc/testsuite/gcc.target/arm/cbz.c
  78f9bef0e50a143219120e7b5b4af7b9  gcc/testsuite/gcc.target/arm/cmp-1.c
  97376f46024c436de8ce633177de6e0b  gcc/testsuite/gcc.target/arm/cmp-2.c
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 132031,132037 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 83c1edd34578e71dc9898388c190fe7d  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 132040,132046 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 8a560325317754bd723ec7fddf2a39ee  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** fa53e0cefb08b6413dcde80c93162b8a  libstd
*** 132782,132788 ****
  b0c29f09a819ac9aa11c3507409c11ef  libstdc++-v3/include/bits/range_access.h
  c4870f814a271600f0c3b220ce577780  libstdc++-v3/include/bits/ranges_algo.h
  2739c66cfdc38cbad18771e2317ce548  libstdc++-v3/include/bits/ranges_algobase.h
! 8457ca60903b4ca07617a6f477e43ace  libstdc++-v3/include/bits/ranges_base.h
  586727039587b10b560a902b1c7008b1  libstdc++-v3/include/bits/ranges_cmp.h
  4a47bd7ff3afbf353ca7c097f3fda6f8  libstdc++-v3/include/bits/ranges_uninitialized.h
  13ab6526ab5b8cd5e9a7b12e6bf761f6  libstdc++-v3/include/bits/ranges_util.h
--- 132791,132797 ----
  b0c29f09a819ac9aa11c3507409c11ef  libstdc++-v3/include/bits/range_access.h
  c4870f814a271600f0c3b220ce577780  libstdc++-v3/include/bits/ranges_algo.h
  2739c66cfdc38cbad18771e2317ce548  libstdc++-v3/include/bits/ranges_algobase.h
! ddeb43e42ef0615042e595a570f7deaf  libstdc++-v3/include/bits/ranges_base.h
  586727039587b10b560a902b1c7008b1  libstdc++-v3/include/bits/ranges_cmp.h
  4a47bd7ff3afbf353ca7c097f3fda6f8  libstdc++-v3/include/bits/ranges_uninitialized.h
  13ab6526ab5b8cd5e9a7b12e6bf761f6  libstdc++-v3/include/bits/ranges_util.h
*************** b767444cc42a2221df71f8bbc317e333  libstd
*** 138349,138355 ****
  9f4e16d24466d0905c256e141d9b7e91  libstdc++-v3/testsuite/24_iterators/common_iterator/100823.cc
  2c61f978dca854377a1f045080bfc407  libstdc++-v3/testsuite/24_iterators/common_iterator/101527.cc
  51fc15623a3885b80419b7193df04bca  libstdc++-v3/testsuite/24_iterators/common_iterator/2.cc
! c78691d1ff6bc1b3ae254334b058b5ca  libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc
  3fcc24ac9868ef19598ff1bf296928bb  libstdc++-v3/testsuite/24_iterators/const_iterator/112490.cc
  7455dfdc03b09fe8e0234649b4bc47f2  libstdc++-v3/testsuite/24_iterators/container_access.cc
  f18f6649cb045c0b15cc4cac54ee8f59  libstdc++-v3/testsuite/24_iterators/contiguous/concept.cc
--- 138358,138364 ----
  9f4e16d24466d0905c256e141d9b7e91  libstdc++-v3/testsuite/24_iterators/common_iterator/100823.cc
  2c61f978dca854377a1f045080bfc407  libstdc++-v3/testsuite/24_iterators/common_iterator/101527.cc
  51fc15623a3885b80419b7193df04bca  libstdc++-v3/testsuite/24_iterators/common_iterator/2.cc
! 2f1514de9134e83dc1048a4c719c67f2  libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc
  3fcc24ac9868ef19598ff1bf296928bb  libstdc++-v3/testsuite/24_iterators/const_iterator/112490.cc
  7455dfdc03b09fe8e0234649b4bc47f2  libstdc++-v3/testsuite/24_iterators/container_access.cc
  f18f6649cb045c0b15cc4cac54ee8f59  libstdc++-v3/testsuite/24_iterators/contiguous/concept.cc
diff -Nrcpad gcc-15-20251122/gcc/ChangeLog gcc-15-20251129/gcc/ChangeLog
*** gcc-15-20251122/gcc/ChangeLog	Sat Nov 22 22:32:12 2025
--- gcc-15-20251129/gcc/ChangeLog	Sat Nov 29 22:32:05 2025
***************
*** 1,3 ****
--- 1,40 ----
+ 2025-11-28  Avinash Jayakar  <avinashd@linux.ibm.com>
+ 
+ 	PR tree-optimization/122126
+ 	* gimple-isel.cc (gimple_expand_vec_set_extract_expr): Add bound check.
+ 
+ 2025-11-27  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-11-27  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr-mcus.def (AVR_MCUS): Add avr16la14, avr16la20,
+ 	avr16la28, avr16la32, avr32la14, avr32la20, avr32la28, avr32la32.
+ 	* doc/avr-mmcu.texi: Rebuild.
+ 
+ 2025-11-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2025-11-26  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/122867
+ 	* config/arm/arm.cc (arm_print_operand): Use %- to
+ 	emit LOCAL_LABEL_PREFIX.
+ 	(arm_print_operand_punct_valid_p): Allow %- for punct
+ 	and make %_ valid for all compilation variants.
+ 	* config/arm/thumb2.md (*thumb2_cbz): Handle very
+ 	large branch ranges that exceed the limit of b<cond>.
+ 	(*thumb2_cbnz): Likewise.
+ 
+ 2025-11-24  Pan Li  <pan2.li@intel.com>
+ 
+ 	Backported from master:
+ 	2025-11-20  Pan Li  <pan2.li@intel.com>
+ 
+ 	PR target/122692
+ 	* config/riscv/riscv.cc (riscv_expand_ustrunc): Leverage
+ 	riscv_extend_to_xmode_reg to take care of src rtx.
+ 
  2025-11-21  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* doc/invoke.texi (Optimize Options) <-fmalloc-dce>: Remove
diff -Nrcpad gcc-15-20251122/gcc/DATESTAMP gcc-15-20251129/gcc/DATESTAMP
*** gcc-15-20251122/gcc/DATESTAMP	Sat Nov 22 22:32:13 2025
--- gcc-15-20251129/gcc/DATESTAMP	Sat Nov 29 22:32:05 2025
***************
*** 1 ****
! 20251122
--- 1 ----
! 20251129
diff -Nrcpad gcc-15-20251122/gcc/config/arm/arm.cc gcc-15-20251129/gcc/config/arm/arm.cc
*** gcc-15-20251122/gcc/config/arm/arm.cc	Sat Nov 22 22:32:16 2025
--- gcc-15-20251129/gcc/config/arm/arm.cc	Sat Nov 29 22:32:06 2025
*************** arm_print_condition (FILE *stream)
*** 24231,24237 ****
  
  
  /* Globally reserved letters: acln
!    Puncutation letters currently used: @_|?().!#
     Lower case letters currently used: bcdefhimpqtvwxyz
     Upper case letters currently used: ABCDEFGHIJKLMOPQRSTUV
     Letters previously used, but now deprecated/obsolete: sNWXYZ.
--- 24231,24237 ----
  
  
  /* Globally reserved letters: acln
!    Puncutation letters currently used: @_-|?().!#
     Lower case letters currently used: bcdefhimpqtvwxyz
     Upper case letters currently used: ABCDEFGHIJKLMOPQRSTUV
     Letters previously used, but now deprecated/obsolete: sNWXYZ.
*************** arm_print_operand (FILE *stream, rtx x,
*** 24264,24269 ****
--- 24264,24274 ----
      case '_':
        fputs (user_label_prefix, stream);
        return;
+     case '-':
+ #ifdef LOCAL_LABEL_PREFIX
+       fputs (LOCAL_LABEL_PREFIX, stream);
+ #endif
+       return;
  
      case '|':
        fputs (REGISTER_PREFIX, stream);
*************** arm_print_operand_punct_valid_p (unsigne
*** 25113,25121 ****
  {
    return (code == '@' || code == '|' || code == '.'
  	  || code == '(' || code == ')' || code == '#'
  	  || (TARGET_32BIT && (code == '?'))
! 	  || (TARGET_THUMB2 && (code == '!'))
! 	  || (TARGET_THUMB && (code == '_')));
  }
  
  /* Target hook for assembling integer objects.  The ARM version needs to
--- 25118,25126 ----
  {
    return (code == '@' || code == '|' || code == '.'
  	  || code == '(' || code == ')' || code == '#'
+ 	  || code == '-' || code == '_'
  	  || (TARGET_32BIT && (code == '?'))
! 	  || (TARGET_THUMB2 && (code == '!')));
  }
  
  /* Target hook for assembling integer objects.  The ARM version needs to
diff -Nrcpad gcc-15-20251122/gcc/config/arm/thumb2.md gcc-15-20251129/gcc/config/arm/thumb2.md
*** gcc-15-20251122/gcc/config/arm/thumb2.md	Sat Nov 22 22:32:16 2025
--- gcc-15-20251129/gcc/config/arm/thumb2.md	Sat Nov 29 22:32:06 2025
***************
*** 1465,1483 ****
  	      (pc)))
     (clobber (reg:CC CC_REGNUM))]
    "TARGET_THUMB2"
!   "*
!   if (get_attr_length (insn) == 2)
!     return \"cbz\\t%0, %l1\";
!   else
!     return \"cmp\\t%0, #0\;beq\\t%l1\";
!   "
    [(set (attr "length")
          (if_then_else
  	    (and (ge (minus (match_dup 1) (pc)) (const_int 2))
  	         (le (minus (match_dup 1) (pc)) (const_int 128))
  	         (not (match_test "which_alternative")))
  	    (const_int 2)
! 	    (const_int 8)))
     (set_attr "type" "branch,multiple")]
  )
  
--- 1465,1488 ----
  	      (pc)))
     (clobber (reg:CC CC_REGNUM))]
    "TARGET_THUMB2"
!   {
!     int offset = (INSN_ADDRESSES (INSN_UID (operands[1]))
! 		  - INSN_ADDRESSES (INSN_UID (insn)));
!     if (get_attr_length (insn) == 2)
!       return "cbz\t%0, %l1";
!     else if (offset >= -1048564 && offset <= 1048576)
!       return "cmp\t%0, #0\;beq\t%l1";
!     else if (which_alternative == 0)
!       return "cbnz\t%0, %-LCB%=\;b\t%l1\n%-LCB%=:";
!     return "cmp\t%0, #0\;bne\t%-LCB%=\;b\t%l1\n%-LCB%=:";
!   }
    [(set (attr "length")
          (if_then_else
  	    (and (ge (minus (match_dup 1) (pc)) (const_int 2))
  	         (le (minus (match_dup 1) (pc)) (const_int 128))
  	         (not (match_test "which_alternative")))
  	    (const_int 2)
! 	    (const_int 10)))
     (set_attr "type" "branch,multiple")]
  )
  
***************
*** 1489,1507 ****
  	      (pc)))
     (clobber (reg:CC CC_REGNUM))]
    "TARGET_THUMB2"
!   "*
!   if (get_attr_length (insn) == 2)
!     return \"cbnz\\t%0, %l1\";
!   else
!     return \"cmp\\t%0, #0\;bne\\t%l1\";
!   "
    [(set (attr "length")
          (if_then_else
  	    (and (ge (minus (match_dup 1) (pc)) (const_int 2))
  	         (le (minus (match_dup 1) (pc)) (const_int 128))
  	         (not (match_test "which_alternative")))
  	    (const_int 2)
! 	    (const_int 8)))
     (set_attr "type" "branch,multiple")]
  )
  
--- 1494,1517 ----
  	      (pc)))
     (clobber (reg:CC CC_REGNUM))]
    "TARGET_THUMB2"
!   {
!     int offset = (INSN_ADDRESSES (INSN_UID (operands[1]))
! 		  - INSN_ADDRESSES (INSN_UID (insn)));
!     if (get_attr_length (insn) == 2)
!       return "cbnz\t%0, %l1";
!     else if (offset >= -1048564 && offset <= 1048576)
!       return "cmp\t%0, #0\;bne\t%l1";
!     else if (which_alternative == 0)
!       return "cbz\t%0, %-LCB%=\;b\t%l1\n%-LCB%=:";
!     return "cmp\t%0, #0\;beq\t%-LCB%=\;b\t%l1\n%-LCB%=:";
!   }
    [(set (attr "length")
          (if_then_else
  	    (and (ge (minus (match_dup 1) (pc)) (const_int 2))
  	         (le (minus (match_dup 1) (pc)) (const_int 128))
  	         (not (match_test "which_alternative")))
  	    (const_int 2)
! 	    (const_int 10)))
     (set_attr "type" "branch,multiple")]
  )
  
diff -Nrcpad gcc-15-20251122/gcc/config/avr/avr-mcus.def gcc-15-20251129/gcc/config/avr/avr-mcus.def
*** gcc-15-20251122/gcc/config/avr/avr-mcus.def	Sat Nov 22 22:32:16 2025
--- gcc-15-20251129/gcc/config/avr/avr-mcus.def	Sat Nov 29 22:32:06 2025
*************** AVR_MCU ("avr16ea48",        ARCH_AVRXME
*** 421,426 ****
--- 421,434 ----
  AVR_MCU ("avr32ea28",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32EA28__",   0x7000, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32ea32",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32EA32__",   0x7000, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32ea48",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32EA48__",   0x7000, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr16la14",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16LA14__",   0x7800, 0x0, 0x4000, 0x8000)
+ AVR_MCU ("avr16la20",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16LA20__",   0x7800, 0x0, 0x4000, 0x8000)
+ AVR_MCU ("avr16la28",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16LA28__",   0x7800, 0x0, 0x4000, 0x8000)
+ AVR_MCU ("avr16la32",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR16LA32__",   0x7800, 0x0, 0x4000, 0x8000)
+ AVR_MCU ("avr32la14",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32LA14__",   0x7800, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32la20",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32LA20__",   0x7800, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32la28",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32LA28__",   0x7800, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32la32",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32LA32__",   0x7800, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32sd20",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32SD20__",   0x7000, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32sd28",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32SD28__",   0x7000, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32sd32",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32SD32__",   0x7000, 0x0, 0x8000, 0x8000)
diff -Nrcpad gcc-15-20251122/gcc/config/riscv/riscv.cc gcc-15-20251129/gcc/config/riscv/riscv.cc
*** gcc-15-20251122/gcc/config/riscv/riscv.cc	Sat Nov 22 22:32:17 2025
--- gcc-15-20251129/gcc/config/riscv/riscv.cc	Sat Nov 29 22:32:06 2025
*************** riscv_expand_ustrunc (rtx dest, rtx src)
*** 13017,13023 ****
    gcc_assert (precision < 64);
  
    uint64_t max = ((uint64_t)1u << precision) - 1u;
!   rtx xmode_src = gen_lowpart (Xmode, src);
    rtx xmode_dest = gen_reg_rtx (Xmode);
    rtx xmode_lt = gen_reg_rtx (Xmode);
  
--- 13017,13023 ----
    gcc_assert (precision < 64);
  
    uint64_t max = ((uint64_t)1u << precision) - 1u;
!   rtx xmode_src = riscv_extend_to_xmode_reg (src, GET_MODE (src), ZERO_EXTEND);
    rtx xmode_dest = gen_reg_rtx (Xmode);
    rtx xmode_lt = gen_reg_rtx (Xmode);
  
diff -Nrcpad gcc-15-20251122/gcc/cp/ChangeLog gcc-15-20251129/gcc/cp/ChangeLog
*** gcc-15-20251122/gcc/cp/ChangeLog	Sat Nov 22 22:32:17 2025
--- gcc-15-20251129/gcc/cp/ChangeLog	Sat Nov 29 22:32:06 2025
***************
*** 1,3 ****
--- 1,34 ----
+ 2025-11-28  Daniele Sahebi  <daniele@mkryss.me>
+ 
+ 	Backported from master:
+ 	2025-11-22  Daniele Sahebi  <daniele@mkryss.me>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122658
+ 	* call.cc (build_over_call): Don't call build_cplus_new in
+ 	template declarations.
+ 
+ 2025-11-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/121325
+ 	* pt.cc (tsubst_tree_vec): New.
+ 	(tsubst_pack_index): Call it.
+ 
+ 2025-11-25  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-11-25  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122789
+ 	* module.cc (trees_out::core_vals): Treat REQUIRES_EXPR
+ 	specially and stream the chained decls of its first operand.
+ 	(trees_in::core_vals): Likewise.
+ 	(trees_out::tree_node): Check the PARM_DECLs we see are what we
+ 	expect.
+ 
  2025-11-21  Marek Polacek  <polacek@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20251122/gcc/cp/call.cc gcc-15-20251129/gcc/cp/call.cc
*** gcc-15-20251122/gcc/cp/call.cc	Sat Nov 22 22:32:17 2025
--- gcc-15-20251129/gcc/cp/call.cc	Sat Nov 29 22:32:06 2025
*************** build_over_call (struct z_candidate *can
*** 10276,10293 ****
  	TREE_NO_WARNING (expr) = true;
        if (immediate_invocation_p (fn))
  	{
! 	  tree obj_arg = NULL_TREE, exprimm = expr;
  	  if (DECL_CONSTRUCTOR_P (fn))
  	    obj_arg = first_arg;
- 	  if (obj_arg
- 	      && is_dummy_object (obj_arg)
- 	      && !type_dependent_expression_p (obj_arg))
- 	    {
- 	      exprimm = build_cplus_new (DECL_CONTEXT (fn), expr, complain);
- 	      obj_arg = NULL_TREE;
- 	    }
  	  /* Look through *(const T *)&obj.  */
! 	  else if (obj_arg && INDIRECT_REF_P (obj_arg))
  	    {
  	      tree addr = TREE_OPERAND (obj_arg, 0);
  	      STRIP_NOPS (addr);
--- 10276,10286 ----
  	TREE_NO_WARNING (expr) = true;
        if (immediate_invocation_p (fn))
  	{
! 	  tree obj_arg = NULL_TREE;
  	  if (DECL_CONSTRUCTOR_P (fn))
  	    obj_arg = first_arg;
  	  /* Look through *(const T *)&obj.  */
! 	  if (obj_arg && INDIRECT_REF_P (obj_arg))
  	    {
  	      tree addr = TREE_OPERAND (obj_arg, 0);
  	      STRIP_NOPS (addr);
*************** build_over_call (struct z_candidate *can
*** 10299,10305 ****
  		    obj_arg = TREE_OPERAND (addr, 0);
  		}
  	    }
! 	  fold_non_dependent_expr (exprimm, complain,
  				   /*manifestly_const_eval=*/true,
  				   obj_arg);
  	}
--- 10292,10298 ----
  		    obj_arg = TREE_OPERAND (addr, 0);
  		}
  	    }
! 	  fold_non_dependent_expr (expr, complain,
  				   /*manifestly_const_eval=*/true,
  				   obj_arg);
  	}
diff -Nrcpad gcc-15-20251122/gcc/cp/module.cc gcc-15-20251129/gcc/cp/module.cc
*** gcc-15-20251122/gcc/cp/module.cc	Sat Nov 22 22:32:17 2025
--- gcc-15-20251129/gcc/cp/module.cc	Sat Nov 29 22:32:06 2025
*************** trees_out::core_vals (tree t)
*** 6407,6419 ****
  	if (has_warning_spec (t))
  	  u (get_warning_spec (t));
  
-       /* Walk in forward order, as (for instance) REQUIRES_EXPR has a
-          bunch of unscoped parms on its first operand.  It's safer to
-          create those in order.  */
        bool vl = TREE_CODE_CLASS (code) == tcc_vl_exp;
!       for (unsigned limit = (vl ? VL_EXP_OPERAND_LENGTH (t)
! 			     : TREE_OPERAND_LENGTH (t)),
! 	     ix = unsigned (vl); ix != limit; ix++)
  	WT (TREE_OPERAND (t, ix));
      }
    else
--- 6407,6425 ----
  	if (has_warning_spec (t))
  	  u (get_warning_spec (t));
  
        bool vl = TREE_CODE_CLASS (code) == tcc_vl_exp;
!       unsigned limit = (vl ? VL_EXP_OPERAND_LENGTH (t)
! 			: TREE_OPERAND_LENGTH (t));
!       unsigned ix = unsigned (vl);
!       if (code == REQUIRES_EXPR)
! 	{
! 	  /* The first operand of a REQUIRES_EXPR is a tree chain
! 	     of PARM_DECLs.  We need to stream this separately as
! 	     otherwise we would only stream the first one.  */
! 	  chained_decls (REQUIRES_EXPR_PARMS (t));
! 	  ++ix;
! 	}
!       for (; ix != limit; ix++)
  	WT (TREE_OPERAND (t, ix));
      }
    else
*************** trees_in::core_vals (tree t)
*** 6989,6997 ****
  	put_warning_spec (t, u ());
  
        bool vl = TREE_CODE_CLASS (code) == tcc_vl_exp;
!       for (unsigned limit = (vl ? VL_EXP_OPERAND_LENGTH (t)
! 			     : TREE_OPERAND_LENGTH (t)),
! 	     ix = unsigned (vl); ix != limit; ix++)
  	RTU (TREE_OPERAND (t, ix));
      }
  
--- 6995,7009 ----
  	put_warning_spec (t, u ());
  
        bool vl = TREE_CODE_CLASS (code) == tcc_vl_exp;
!       unsigned limit = (vl ? VL_EXP_OPERAND_LENGTH (t)
! 			: TREE_OPERAND_LENGTH (t));
!       unsigned ix = unsigned (vl);
!       if (code == REQUIRES_EXPR)
! 	{
! 	  REQUIRES_EXPR_PARMS (t) = chained_decls ();
! 	  ++ix;
! 	}
!       for (; ix != limit; ix++)
  	RTU (TREE_OPERAND (t, ix));
      }
  
*************** trees_out::tree_node (tree t)
*** 10022,10030 ****
  	      break;
  
  	    case PARM_DECL:
! 	      /* REQUIRES_EXPRs have a tree list of uncontexted
! 		 PARM_DECLS.  It'd be nice if they had a
! 		 distinguishing flag to double check.  */
  	      break;
  	    }
  	  goto by_value;
--- 10034,10043 ----
  	      break;
  
  	    case PARM_DECL:
! 	      /* REQUIRES_EXPRs have a chain of uncontexted PARM_DECLS,
! 		 and an implicit this parm in an NSDMI has no context.  */
! 	      gcc_checking_assert (CONSTRAINT_VAR_P (t)
! 				   || DECL_NAME (t) == this_identifier);
  	      break;
  	    }
  	  goto by_value;
diff -Nrcpad gcc-15-20251122/gcc/cp/pt.cc gcc-15-20251129/gcc/cp/pt.cc
*** gcc-15-20251122/gcc/cp/pt.cc	Sat Nov 22 22:32:17 2025
--- gcc-15-20251129/gcc/cp/pt.cc	Sat Nov 29 22:32:06 2025
*************** tsubst_pack_expansion (tree t, tree args
*** 14093,14098 ****
--- 14093,14117 ----
    return result;
  }
  
+ /* Substitute ARGS into T, which is a TREE_VEC.  This function creates a new
+    TREE_VEC rather than substituting the elements in-place.  */
+ 
+ static tree
+ tsubst_tree_vec (tree t, tree args, tsubst_flags_t complain, tree in_decl)
+ {
+   const int len = TREE_VEC_LENGTH (t);
+   tree r = make_tree_vec (len);
+   for (int i = 0; i < len; ++i)
+     {
+       tree arg = TREE_VEC_ELT (t, i);
+       if (TYPE_P (arg))
+ 	TREE_VEC_ELT (r, i) = tsubst (arg, args, complain, in_decl);
+       else
+ 	TREE_VEC_ELT (r, i) = tsubst_expr (arg, args, complain, in_decl);
+     }
+   return r;
+ }
+ 
  /* Substitute ARGS into T, which is a pack index (i.e., PACK_INDEX_TYPE or
     PACK_INDEX_EXPR).  Returns a single type or expression, a PACK_INDEX_*
     node if only a partial substitution could be performed, or ERROR_MARK_NODE
*************** tsubst_pack_index (tree t, tree args, ts
*** 14110,14116 ****
  	 a partially instantiated closure.  Let tsubst find the
  	 fully-instantiated one.  */
        gcc_assert (TREE_CODE (pack) == TREE_VEC);
!       pack = tsubst (pack, args, complain, in_decl);
      }
    if (TREE_CODE (pack) == TREE_VEC && TREE_VEC_LENGTH (pack) == 0)
      {
--- 14129,14135 ----
  	 a partially instantiated closure.  Let tsubst find the
  	 fully-instantiated one.  */
        gcc_assert (TREE_CODE (pack) == TREE_VEC);
!       pack = tsubst_tree_vec (pack, args, complain, in_decl);
      }
    if (TREE_CODE (pack) == TREE_VEC && TREE_VEC_LENGTH (pack) == 0)
      {
diff -Nrcpad gcc-15-20251122/gcc/doc/avr-mmcu.texi gcc-15-20251129/gcc/doc/avr-mmcu.texi
*** gcc-15-20251122/gcc/doc/avr-mmcu.texi	Sat Nov 22 22:32:17 2025
--- gcc-15-20251129/gcc/doc/avr-mmcu.texi	Sat Nov 29 22:32:06 2025
***************
*** 54,60 ****
  
  @item @anchor{avrxmega3}avrxmega3
  ``XMEGA'' devices with up to 64@tie{}KiB of combined program memory and RAM, and with program memory visible in the RAM address space.
! @*@var{mcu}@tie{}= @code{attiny202}, @code{attiny204}, @code{attiny212}, @code{attiny214}, @code{attiny402}, @code{attiny404}, @code{attiny406}, @code{attiny412}, @code{attiny414}, @code{attiny416}, @code{attiny416auto}, @code{attiny417}, @code{attiny424}, @code{attiny426}, @code{attiny427}, @code{attiny804}, @code{attiny806}, @code{attiny807}, @code{attiny814}, @code{attiny816}, @code{attiny817}, @code{attiny824}, @code{attiny826}, @code{attiny827}, @code{attiny1604}, @code{attiny1606}, @code{attiny1607}, @code{attiny1614}, @code{attiny1616}, @code{attiny1617}, @code{attiny1624}, @code{attiny1626}, @code{attiny1627}, @code{attiny3214}, @code{attiny3216}, @code{attiny3217}, @code{attiny3224}, @code{attiny3226}, @code{attiny3227}, @code{atmega808}, @code{atmega809}, @code{atmega1608}, @code{atmega1609}, @code{atmega3208}, @code{atmega3209}, @code{atmega4808}, @code{atmega4809}, @code{avr16dd14}, @code{avr16dd20}, @code{avr16dd28}, @code{avr16dd32}, @code{avr16du14}, @code{avr16du20}, @code{avr16du28}, @code{avr16du32}, @code{avr16ea28}, @code{avr16ea32}, @code{avr16ea48}, @code{avr16eb14}, @code{avr16eb20}, @code{avr16eb28}, @code{avr16eb32}, @code{avr32da28}, @code{avr32da28s}, @code{avr32da32}, @code{avr32da32s}, @code{avr32da48}, @code{avr32da48s}, @code{avr32db28}, @code{avr32db32}, @code{avr32db48}, @code{avr32dd14}, @code{avr32dd20}, @code{avr32dd28}, @code{avr32dd32}, @code{avr32du14}, @code{avr32du20}, @code{avr32du28}, @code{avr32du32}, @code{avr32ea28}, @code{avr32ea32}, @code{avr32ea48}, @code{avr32eb14}, @code{avr32eb20}, @code{avr32eb28}, @code{avr32eb32}, @code{avr32sd20}, @code{avr32sd28}, @code{avr32sd32}.
  
  @item @anchor{avrxmega4}avrxmega4
  ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory.
--- 54,60 ----
  
  @item @anchor{avrxmega3}avrxmega3
  ``XMEGA'' devices with up to 64@tie{}KiB of combined program memory and RAM, and with program memory visible in the RAM address space.
! @*@var{mcu}@tie{}= @code{attiny202}, @code{attiny204}, @code{attiny212}, @code{attiny214}, @code{attiny402}, @code{attiny404}, @code{attiny406}, @code{attiny412}, @code{attiny414}, @code{attiny416}, @code{attiny416auto}, @code{attiny417}, @code{attiny424}, @code{attiny426}, @code{attiny427}, @code{attiny804}, @code{attiny806}, @code{attiny807}, @code{attiny814}, @code{attiny816}, @code{attiny817}, @code{attiny824}, @code{attiny826}, @code{attiny827}, @code{attiny1604}, @code{attiny1606}, @code{attiny1607}, @code{attiny1614}, @code{attiny1616}, @code{attiny1617}, @code{attiny1624}, @code{attiny1626}, @code{attiny1627}, @code{attiny3214}, @code{attiny3216}, @code{attiny3217}, @code{attiny3224}, @code{attiny3226}, @code{attiny3227}, @code{atmega808}, @code{atmega809}, @code{atmega1608}, @code{atmega1609}, @code{atmega3208}, @code{atmega3209}, @code{atmega4808}, @code{atmega4809}, @code{avr16dd14}, @code{avr16dd20}, @code{avr16dd28}, @code{avr16dd32}, @code{avr16du14}, @code{avr16du20}, @code{avr16du28}, @code{avr16du32}, @code{avr16ea28}, @code{avr16ea32}, @code{avr16ea48}, @code{avr16eb14}, @code{avr16eb20}, @code{avr16eb28}, @code{avr16eb32}, @code{avr16la14}, @code{avr16la20}, @code{avr16la28}, @code{avr16la32}, @code{avr32da28}, @code{avr32da28s}, @code{avr32da32}, @code{avr32da32s}, @code{avr32da48}, @code{avr32da48s}, @code{avr32db28}, @code{avr32db32}, @code{avr32db48}, @code{avr32dd14}, @code{avr32dd20}, @code{avr32dd28}, @code{avr32dd32}, @code{avr32du14}, @code{avr32du20}, @code{avr32du28}, @code{avr32du32}, @code{avr32ea28}, @code{avr32ea32}, @code{avr32ea48}, @code{avr32eb14}, @code{avr32eb20}, @code{avr32eb28}, @code{avr32eb32}, @code{avr32la14}, @code{avr32la20}, @code{avr32la28}, @code{avr32la32}, @code{avr32sd20}, @code{avr32sd28}, @code{avr32sd32}.
  
  @item @anchor{avrxmega4}avrxmega4
  ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory.
diff -Nrcpad gcc-15-20251122/gcc/gimple-isel.cc gcc-15-20251129/gcc/gimple-isel.cc
*** gcc-15-20251122/gcc/gimple-isel.cc	Sat Nov 22 22:32:17 2025
--- gcc-15-20251129/gcc/gimple-isel.cc	Sat Nov 29 22:32:06 2025
*************** gimple_expand_vec_set_extract_expr (stru
*** 101,106 ****
--- 101,116 ----
        tree pos = TREE_OPERAND (ref, 1);
  
        tree view_op0 = TREE_OPERAND (op0, 0);
+ 
+       tree idx = TREE_OPERAND (ref, 1);
+       // if index is a constant, then check the bounds
+       poly_uint64 idx_poly;
+       if (poly_int_tree_p (idx, &idx_poly))
+ 	{
+ 	  poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (TREE_TYPE (view_op0));
+ 	  if (known_gt (idx_poly, nelts))
+ 	    return false;
+ 	}
        machine_mode outermode = TYPE_MODE (TREE_TYPE (view_op0));
        machine_mode extract_mode = TYPE_MODE (TREE_TYPE (ref));
  
diff -Nrcpad gcc-15-20251122/gcc/testsuite/ChangeLog gcc-15-20251129/gcc/testsuite/ChangeLog
*** gcc-15-20251122/gcc/testsuite/ChangeLog	Sat Nov 22 22:32:19 2025
--- gcc-15-20251129/gcc/testsuite/ChangeLog	Sat Nov 29 22:32:07 2025
***************
*** 1,3 ****
--- 1,57 ----
+ 2025-11-28  Daniele Sahebi  <daniele@mkryss.me>
+ 
+ 	Backported from master:
+ 	2025-11-22  Daniele Sahebi  <daniele@mkryss.me>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122658
+ 	* g++.dg/cpp2a/consteval42.C: New test.
+ 
+ 2025-11-28  Avinash Jayakar  <avinashd@linux.ibm.com>
+ 
+ 	PR tree-optimization/122126
+ 	* gcc.dg/pr122126_vextr.c: New test.
+ 	* gcc.dg/pr122126_vset.c: New test.
+ 
+ 2025-11-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2025-11-26  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/122867
+ 	* gcc.target/arm/cbz-range.c: New test.
+ 
+ 2025-11-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/121325
+ 	* g++.dg/cpp26/pack-indexing18.C: New test.
+ 
+ 2025-11-25  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-11-25  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122789
+ 	* g++.dg/modules/concept-12_a.C: New test.
+ 	* g++.dg/modules/concept-12_b.C: New test.
+ 
+ 2025-11-25  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* gcc.dg/Wstringop-overflow-47.c: Adjust warnings to allow for 32-bit
+ 	stores.
+ 
+ 2025-11-24  Pan Li  <pan2.li@intel.com>
+ 
+ 	Backported from master:
+ 	2025-11-20  Pan Li  <pan2.li@intel.com>
+ 
+ 	PR target/122692
+ 	* g++.target/riscv/pr122692-run-1.C: New test.
+ 	* g++.target/riscv/pr122692-run-2.C: New test.
+ 
  2025-11-21  Marek Polacek  <polacek@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20251122/gcc/testsuite/g++.dg/cpp26/pack-indexing18.C gcc-15-20251129/gcc/testsuite/g++.dg/cpp26/pack-indexing18.C
*** gcc-15-20251122/gcc/testsuite/g++.dg/cpp26/pack-indexing18.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20251129/gcc/testsuite/g++.dg/cpp26/pack-indexing18.C	Sat Nov 29 22:32:08 2025
***************
*** 0 ****
--- 1,32 ----
+ // PR c++/121325
+ // { dg-do compile { target c++26 } }
+ 
+ void f(auto... a) requires requires { []<int i = 0> noexcept(noexcept(a...[i])) { }(); } {}
+ void g(auto... a) requires requires { []<int i = 0> { static_assert(noexcept(a...[i])); }(); } {}
+ 
+ void
+ h ()
+ {
+   f (0);
+   g (0);
+ }
+ 
+ void foo () {}
+ void bar () noexcept {}
+ template<bool B>
+ void baz () noexcept(B) {}
+ 
+ template<typename... Ts>
+ void
+ x (Ts... ts) noexcept (noexcept (ts...[0]()))
+ {
+ }
+ 
+ void
+ y ()
+ {
+   static_assert (!noexcept (x (foo)));
+   static_assert (noexcept (x (bar)));
+   static_assert (noexcept (x (baz<true>)));
+   static_assert (!noexcept (x (baz<false>)));
+ }
diff -Nrcpad gcc-15-20251122/gcc/testsuite/g++.dg/cpp2a/consteval42.C gcc-15-20251129/gcc/testsuite/g++.dg/cpp2a/consteval42.C
*** gcc-15-20251122/gcc/testsuite/g++.dg/cpp2a/consteval42.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20251129/gcc/testsuite/g++.dg/cpp2a/consteval42.C	Sat Nov 29 22:32:08 2025
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/122658
+ // { dg-do compile { target c++20 } }
+ 
+ struct S {
+   consteval S () noexcept { }
+   consteval S (const S &) = default;
+ };
+ 
+ template <typename T>
+ S
+ foo ()
+ {
+   constexpr auto s = S();
+   return s;
+ }
+ 
+ S
+ bar ()
+ {
+   return foo <int> ();
+ }
diff -Nrcpad gcc-15-20251122/gcc/testsuite/g++.dg/modules/concept-12_a.C gcc-15-20251129/gcc/testsuite/g++.dg/modules/concept-12_a.C
*** gcc-15-20251122/gcc/testsuite/g++.dg/modules/concept-12_a.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20251129/gcc/testsuite/g++.dg/modules/concept-12_a.C	Sat Nov 29 22:32:08 2025
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/122789
+ // { dg-additional-options "-fmodules -fconcepts" }
+ // { dg-module-cmi M }
+ 
+ export module M;
+ template <typename T> constexpr bool b = requires(int, typename T::U x) { x; };
diff -Nrcpad gcc-15-20251122/gcc/testsuite/g++.dg/modules/concept-12_b.C gcc-15-20251129/gcc/testsuite/g++.dg/modules/concept-12_b.C
*** gcc-15-20251122/gcc/testsuite/g++.dg/modules/concept-12_b.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20251129/gcc/testsuite/g++.dg/modules/concept-12_b.C	Sat Nov 29 22:32:08 2025
***************
*** 0 ****
--- 1,5 ----
+ // PR c++/122789
+ // { dg-additional-options "-fmodules -fconcepts" }
+ 
+ module M;
+ static_assert(!b<int>);
diff -Nrcpad gcc-15-20251122/gcc/testsuite/g++.target/riscv/pr122692-run-1.C gcc-15-20251129/gcc/testsuite/g++.target/riscv/pr122692-run-1.C
*** gcc-15-20251122/gcc/testsuite/g++.target/riscv/pr122692-run-1.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20251129/gcc/testsuite/g++.target/riscv/pr122692-run-1.C	Sat Nov 29 22:32:09 2025
***************
*** 0 ****
--- 1,116 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-options "-O2" } */
+ 
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ 
+ #include <array>
+ #include <limits>
+ #include <memory>
+ #include <new>
+ #include <type_traits>
+ 
+ #define HWY_INLINE inline __attribute__((__always_inline__))
+ #define HWY_MIN(a, b) ((a) < (b) ? (a) : (b))
+ #define HWY_MAX(a, b) ((a) > (b) ? (a) : (b))
+ 
+ #if defined(__GNUC__) && !defined(__clang__)
+ #define NOIPA_ATTR __attribute__((__noipa__))
+ #else
+ #define NOIPA_ATTR
+ #endif
+ 
+ namespace test {
+ 
+ static __attribute__((__noinline__)) NOIPA_ATTR int Unpredictable1() {
+   int result = 1;
+   __asm__("" : "+r"(result)::);
+   return result;
+ }
+ 
+ class RandomState {
+  public:
+   explicit RandomState(
+       const uint64_t seed = uint64_t{0x123456789} *
+                             static_cast<uint64_t>(test::Unpredictable1())) {
+     s0_ = SplitMix64(seed + 0x9E3779B97F4A7C15ull);
+     s1_ = SplitMix64(s0_);
+   }
+ 
+   HWY_INLINE uint64_t operator()() {
+     uint64_t s1 = s0_;
+     const uint64_t s0 = s1_;
+     const uint64_t bits = s1 + s0;
+     s0_ = s0;
+     s1 ^= s1 << 23;
+     s1 ^= s0 ^ (s1 >> 18) ^ (s0 >> 5);
+     s1_ = s1;
+     return bits;
+   }
+ 
+  private:
+   static uint64_t SplitMix64(uint64_t z) {
+     z = (z ^ (z >> 30)) * 0xBF58476D1CE4E5B9ull;
+     z = (z ^ (z >> 27)) * 0x94D049BB133111EBull;
+     return z ^ (z >> 31);
+   }
+ 
+   uint64_t s0_;
+   uint64_t s1_;
+ };
+ 
+ static __attribute__((__noinline__)) NOIPA_ATTR void GenerateRandomU16x16Vals(
+     RandomState& rng, uint16_t* const from, uint8_t* const expected) {
+   using T = uint16_t;
+   using TN = uint8_t;
+ 
+   const T min = 0;
+   const T max = static_cast<T>(std::numeric_limits<TN>::max());
+ 
+   for (size_t i = 0; i < 16; ++i) {
+     const uint64_t bits = rng();
+     __builtin_memcpy(&from[i], &bits, sizeof(T));  // not same size
+     expected[i] = static_cast<TN>(HWY_MIN(HWY_MAX(min, from[i]), max));
+   }
+ }
+ 
+ static __attribute__((__noinline__)) NOIPA_ATTR void DoVerifyU16x16Demote(
+     const uint16_t* const from, const uint8_t* const expected) {
+   for (int i = 0; i < 16; ++i) {
+     const uint8_t actual =
+         static_cast<uint8_t>((from[i] < 0xFF) ? from[i] : 0xFF);
+     if (expected[i] != actual) {
+       fprintf(stderr,
+               "Mismatch between expected result and actual result\nfrom=%u, "
+               "expected=%u, actual=%u\n",
+               static_cast<unsigned>(from[i]),
+               static_cast<unsigned>(expected[i]),
+               static_cast<unsigned>(actual));
+       __builtin_abort();
+     }
+   }
+ }
+ 
+ static void DoDemoteU16x16ToU8x16Test() {
+   using T = uint16_t;
+   using TN = uint8_t;
+   std::array<T, 16> from;
+   std::array<TN, 16> expected;
+ 
+   RandomState rng;
+   for (size_t rep = 0; rep < 1000; ++rep) {
+     GenerateRandomU16x16Vals(rng, from.data(), expected.data());
+     DoVerifyU16x16Demote(from.data(), expected.data());
+   }
+ }
+ 
+ }  // namespace test
+ 
+ int main(int /*argc*/, char** /*argv*/) {
+   printf("Doing DoDemoteU16x16ToU8x16Test\n");
+   test::DoDemoteU16x16ToU8x16Test();
+   printf("Test completed successfully\n");
+   return 0;
+ }
diff -Nrcpad gcc-15-20251122/gcc/testsuite/g++.target/riscv/pr122692-run-2.C gcc-15-20251129/gcc/testsuite/g++.target/riscv/pr122692-run-2.C
*** gcc-15-20251122/gcc/testsuite/g++.target/riscv/pr122692-run-2.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20251129/gcc/testsuite/g++.target/riscv/pr122692-run-2.C	Sat Nov 29 22:32:09 2025
***************
*** 0 ****
--- 1,178 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-options "-O2" } */
+ 
+ #include <inttypes.h>
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ 
+ #include <array>
+ #include <limits>
+ #include <memory>
+ #include <new>
+ #include <type_traits>
+ 
+ #define HWY_INLINE inline __attribute__((__always_inline__))
+ #define HWY_MIN(a, b) ((a) < (b) ? (a) : (b))
+ #define HWY_MAX(a, b) ((a) > (b) ? (a) : (b))
+ 
+ #if defined(__GNUC__) && !defined(__clang__)
+ #define NOIPA_ATTR __attribute__((__noipa__))
+ #else
+ #define NOIPA_ATTR
+ #endif
+ 
+ namespace test {
+ 
+ static __attribute__((__noinline__)) NOIPA_ATTR int Unpredictable1() {
+   int result = 1;
+   __asm__("" : "+r"(result)::);
+   return result;
+ }
+ 
+ class RandomState {
+  public:
+   explicit RandomState(
+       const uint64_t seed = uint64_t{0x123456789} *
+                             static_cast<uint64_t>(test::Unpredictable1())) {
+     s0_ = SplitMix64(seed + 0x9E3779B97F4A7C15ull);
+     s1_ = SplitMix64(s0_);
+   }
+ 
+   HWY_INLINE uint64_t operator()() {
+     uint64_t s1 = s0_;
+     const uint64_t s0 = s1_;
+     const uint64_t bits = s1 + s0;
+     s0_ = s0;
+     s1 ^= s1 << 23;
+     s1 ^= s0 ^ (s1 >> 18) ^ (s0 >> 5);
+     s1_ = s1;
+     return bits;
+   }
+ 
+  private:
+   static uint64_t SplitMix64(uint64_t z) {
+     z = (z ^ (z >> 30)) * 0xBF58476D1CE4E5B9ull;
+     z = (z ^ (z >> 27)) * 0x94D049BB133111EBull;
+     return z ^ (z >> 31);
+   }
+ 
+   uint64_t s0_;
+   uint64_t s1_;
+ };
+ 
+ template <class T>
+ static __attribute__((noinline)) NOIPA_ATTR T* MallocArray(
+     size_t num_to_alloc) {
+   static_assert(sizeof(T) > 0, "sizeof(T) > 0 must be true");
+   constexpr size_t kMaxNumToAlloc =
+       std::numeric_limits<size_t>::max() / sizeof(T);
+   if (num_to_alloc > kMaxNumToAlloc) {
+     return nullptr;
+   }
+ 
+   return reinterpret_cast<T*>(::malloc(num_to_alloc * sizeof(T)));
+ }
+ 
+ struct CFreeDeleter {
+   HWY_INLINE void operator()(const volatile void* ptr) const noexcept {
+     if (ptr) {
+       ::free(const_cast<void*>(ptr));
+     }
+   }
+ };
+ 
+ #define HWY_ASSERT(cond)                                              \
+   do {                                                                \
+     if (__builtin_expect(!(cond), false)) {                           \
+       fprintf(stderr, "Assertion failed at line %d of file %s: %s\n", \
+               static_cast<int>(__LINE__), __FILE__, "" #cond);        \
+       fflush(stderr);                                                 \
+       __builtin_abort();                                              \
+     }                                                                 \
+   } while (false)
+ 
+ static __attribute__((__noinline__)) NOIPA_ATTR void AssertU8x16ArrayEquals(
+     std::array<uint8_t, 16> expected, std::array<uint8_t, 16> actual,
+     const int line, const char* filename) {
+   for (size_t i = 0; i < 16; i++) {
+     if (expected[i] != actual[i]) {
+       fprintf(stderr, "Array mismatch at line %d of file %s:\n", line,
+               filename);
+       fprintf(stderr,
+               "Expected: {%" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8
+               ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8
+               ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8
+               ", %" PRIu8 ", %" PRIu8 "}\n",
+               expected[0], expected[1], expected[2], expected[3], expected[4],
+               expected[5], expected[6], expected[7], expected[8], expected[9],
+               expected[10], expected[11], expected[12], expected[13],
+               expected[14], expected[15]);
+       fprintf(stderr,
+               "Actual:   {%" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8
+               ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8
+               ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8
+               ", %" PRIu8 ", %" PRIu8 "}\n",
+               actual[0], actual[1], actual[2], actual[3], actual[4], actual[5],
+               actual[6], actual[7], actual[8], actual[9], actual[10],
+               actual[11], actual[12], actual[13], actual[14], actual[15]);
+       __builtin_abort();
+     }
+   }
+ }
+ 
+ #define ASSERT_U8X16_ARR_EQUALS(expected, actual) \
+   AssertU8x16ArrayEquals(expected, actual, __LINE__, __FILE__)
+ 
+ static std::array<uint8_t, 16> LoadU8x16Vec(const uint8_t* __restrict ptr) {
+   std::array<uint8_t, 16> result;
+   __builtin_memcpy(&result, ptr, 16 * sizeof(uint8_t));
+   return result;
+ }
+ 
+ static std::array<uint16_t, 8> LoadU16x8Vec(const uint16_t* __restrict ptr) {
+   std::array<uint16_t, 8> result;
+   __builtin_memcpy(&result, ptr, 8 * sizeof(uint16_t));
+   return result;
+ }
+ 
+ static void DoOrderedDemote2U16x8ToU8x16Test() {
+   using T = uint16_t;
+   using TN = uint8_t;
+   std::unique_ptr<T[], CFreeDeleter> from(MallocArray<T>(16));
+   std::unique_ptr<TN[], CFreeDeleter> expected(MallocArray<TN>(16));
+   HWY_ASSERT(from && expected);
+ 
+   constexpr size_t N = 8;
+   constexpr size_t twiceN = 16;
+ 
+   // Narrower range in the wider type, for clamping before we cast
+   const T min = static_cast<T>(
+       std::is_signed_v<T> ? std::numeric_limits<TN>::lowest() : TN{0});
+   const T max = std::numeric_limits<TN>::max();
+ 
+   RandomState rng;
+   for (size_t rep = 0; rep < 1000; ++rep) {
+     for (size_t i = 0; i < twiceN; ++i) {
+       const uint64_t bits = rng();
+       __builtin_memcpy(&from[i], &bits, sizeof(T));  // not same size
+       expected[i] = static_cast<TN>(HWY_MIN(HWY_MAX(min, from[i]), max));
+     }
+ 
+     std::array<uint8_t, 16> actual;
+     for (size_t i = 0; i < 16; i++) {
+       actual[i] = static_cast<uint8_t>(HWY_MIN(from[i], 0xFF));
+     }
+     ASSERT_U8X16_ARR_EQUALS(LoadU8x16Vec(expected.get()), actual);
+   }
+ }
+ 
+ }  // namespace test
+ 
+ int main(int /*argc*/, char** /*argv*/) {
+   printf("Doing DoOrderedDemote2U16x8ToU8x16Test\n");
+   test::DoOrderedDemote2U16x8ToU8x16Test();
+   printf("Test completed successfully\n");
+   return 0;
+ }
diff -Nrcpad gcc-15-20251122/gcc/testsuite/gcc.dg/Wstringop-overflow-47.c gcc-15-20251129/gcc/testsuite/gcc.dg/Wstringop-overflow-47.c
*** gcc-15-20251122/gcc/testsuite/gcc.dg/Wstringop-overflow-47.c	Sat Nov 22 22:32:26 2025
--- gcc-15-20251129/gcc/testsuite/gcc.dg/Wstringop-overflow-47.c	Sat Nov 29 22:32:09 2025
*************** void nowarn_c32 (char c)
*** 31,45 ****
  
  void warn_c32 (char c)
  {
!   extern char warn_a32[32];   // { dg-message "at offset (32|1|17) into destination object 'warn_a32' of size 32" "pr97027" }
  
    void *p = warn_a32 + 1;
!   *(C32*)p = (C32){ c };      // { dg-warning "writing (1 byte|16 bytes|32 bytes) into a region of size (0|15|31)" "pr97027" }
  
    /* Verify a local variable too. */
    char a32[32];
    p = a32 + 1;
!   *(C32*)p = (C32){ c };      // { dg-warning "writing (1 byte|16 bytes|32 bytes) into a region of size (0|15|31)" "pr97027" }
    sink (p);
  }
  
--- 31,45 ----
  
  void warn_c32 (char c)
  {
!   extern char warn_a32[32];   // { dg-message "at offset (32|1|17|29) into destination object 'warn_a32' of size 32" "pr97027" }
  
    void *p = warn_a32 + 1;
!   *(C32*)p = (C32){ c };      // { dg-warning "writing (1 byte|16 bytes|32 bytes|4 bytes) into a region of size (0|15|31|3)" "pr97027" }
  
    /* Verify a local variable too. */
    char a32[32];
    p = a32 + 1;
!   *(C32*)p = (C32){ c };      // { dg-warning "writing (1 byte|16 bytes|32 bytes|4 bytes) into a region of size (0|15|31|3)" "pr97027" }
    sink (p);
  }
  
diff -Nrcpad gcc-15-20251122/gcc/testsuite/gcc.dg/pr122126_vextr.c gcc-15-20251129/gcc/testsuite/gcc.dg/pr122126_vextr.c
*** gcc-15-20251122/gcc/testsuite/gcc.dg/pr122126_vextr.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20251129/gcc/testsuite/gcc.dg/pr122126_vextr.c	Sat Nov 29 22:32:09 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-additional-options "-mavx2" { target avx2 } } */
+ 
+ #define vect16 __attribute__((vector_size(16)))
+ void ub_set() {
+   volatile vect16 unsigned BS_VAR_0;
+   unsigned a = BS_VAR_0[12];
+ }
diff -Nrcpad gcc-15-20251122/gcc/testsuite/gcc.dg/pr122126_vset.c gcc-15-20251129/gcc/testsuite/gcc.dg/pr122126_vset.c
*** gcc-15-20251122/gcc/testsuite/gcc.dg/pr122126_vset.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20251129/gcc/testsuite/gcc.dg/pr122126_vset.c	Sat Nov 29 22:32:09 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-additional-options "-mavx2" { target avx2 } } */
+ 
+ #define vect16 __attribute__((vector_size(16)))
+ void ub_set() {
+   volatile vect16 unsigned BS_VAR_0;
+   BS_VAR_0[12] = 4;
+ }
diff -Nrcpad gcc-15-20251122/gcc/testsuite/gcc.target/arm/cbz-range.c gcc-15-20251129/gcc/testsuite/gcc.target/arm/cbz-range.c
*** gcc-15-20251122/gcc/testsuite/gcc.target/arm/cbz-range.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20251129/gcc/testsuite/gcc.target/arm/cbz-range.c	Sat Nov 29 22:32:10 2025
***************
*** 0 ****
--- 1,114 ----
+ /* { dg-do assemble } */
+ /* { dg-require-effective-target arm_arch_v7a_ok } */
+ /* { dg-options "-O -mthumb" } */
+ /* { dg-add-options arm_arch_v7a } */
+ 
+ #define f "movw r0, #0;movw r0, #0;movw r0, #0;"
+ #define f2 f f
+ #define f4 f2 f2
+ #define f8 f4 f4
+ #define f16 f8 f8
+ #define f32 f16 f16
+ #define f64 f32 f32
+ #define f128 f64 f64
+ #define f256 f128 f128
+ #define f512 f256 f256
+ #define f1024 f512 f512
+ #define f2048 f1024 f1024
+ #define f4096 f2048 f2048
+ #define f8192 f4096 f4096
+ #define f16384 f8192 f8192
+ #define f32768 f16384 f16384
+ #define f65536 f32768 f32768
+ #define f131072 f65536 f65536
+ int a;
+ 
+ int cbz1(int g)
+ {
+   if (g)
+     asm(f8);
+   return a;
+ }
+ 
+ int cbz2(int g)
+ {
+   asm ("": "+h"(g));
+   if (g)
+     asm(f8);
+   return a;
+ }
+ 
+ int cbz3(int g)
+ {
+   if (g)
+     asm(f16);
+   return a;
+ }
+ 
+ int cbz4(int g)
+ {
+   asm ("": "+h"(g));
+   if (g)
+     asm(f16);
+   return a;
+ }
+ 
+ int cbz5(int g)
+ {
+   if (g)
+     asm(f131072);
+   return a;
+ }
+ 
+ int cbz6(int g)
+ {
+   asm ("": "+h"(g));
+   if (g)
+     asm(f131072);
+   return a;
+ }
+ 
+ int cbnz1(int g)
+ {
+   if (!g)
+     asm(f8);
+   return a;
+ }
+ 
+ int cbnz2(int g)
+ {
+   asm ("": "+h"(g));
+   if (!g)
+     asm(f8);
+   return a;
+ }
+ 
+ int cbnz3(int g)
+ {
+   if (!g)
+     asm(f16);
+   return a;
+ }
+ 
+ int cbnz4(int g)
+ {
+   asm ("": "+h"(g));
+   if (!g)
+     asm(f16);
+   return a;
+ }
+ 
+ int cbnz5(int g)
+ {
+   if (!g)
+     asm(f131072);
+   return a;
+ }
+ 
+ int cbnz6(int g)
+ {
+   asm ("": "+h"(g));
+   if (!g)
+     asm(f131072);
+   return a;
+ }
diff -Nrcpad gcc-15-20251122/libstdc++-v3/ChangeLog gcc-15-20251129/libstdc++-v3/ChangeLog
*** gcc-15-20251122/libstdc++-v3/ChangeLog	Sat Nov 22 22:33:08 2025
--- gcc-15-20251129/libstdc++-v3/ChangeLog	Sat Nov 29 22:32:14 2025
***************
*** 1,3 ****
--- 1,20 ----
+ 2025-11-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/122842
+ 	* include/bits/ranges_base.h (__access:_CBegin): Define in
+ 	terms of const_iterator directly, not const_iterator_t.
+ 	(__access::_CEnd): Likewise in terms of const_sentinel vs
+ 	const_sentinel_t.
+ 	(const_iterator_t): Move down definition and define in terms
+ 	of ranges::cbegin as per LWG 3946.
+ 	(const_sentinel_t): Likewise in terms of ranges::cend.
+ 	* testsuite/24_iterators/const_iterator/1.cc (test02): Correct
+ 	test for int[], std::array and std::vector.  Also test
+ 	std::string.
+ 
  2025-11-19  Jonathan Wakely  <jwakely@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20251122/libstdc++-v3/include/bits/ranges_base.h gcc-15-20251129/libstdc++-v3/include/bits/ranges_base.h
*** gcc-15-20251122/libstdc++-v3/include/bits/ranges_base.h	Sat Nov 22 22:33:09 2025
--- gcc-15-20251129/libstdc++-v3/include/bits/ranges_base.h	Sat Nov 29 22:32:14 2025
*************** namespace ranges
*** 529,539 ****
      using sentinel_t = decltype(ranges::end(std::declval<_Range&>()));
  
  #if __glibcxx_ranges_as_const // >= C++23
!   template<range _Range>
!     using const_iterator_t = const_iterator<iterator_t<_Range>>;
! 
!   template<range _Range>
!     using const_sentinel_t = const_sentinel<sentinel_t<_Range>>;
  
    template<range _Range>
      using range_const_reference_t = iter_const_reference_t<iterator_t<_Range>>;
--- 529,535 ----
      using sentinel_t = decltype(ranges::end(std::declval<_Range&>()));
  
  #if __glibcxx_ranges_as_const // >= C++23
!   // const_iterator_t and const_sentinel_t defined below.
  
    template<range _Range>
      using range_const_reference_t = iter_const_reference_t<iterator_t<_Range>>;
*************** namespace ranges
*** 685,691 ****
  			    (ranges::begin(__access::__possibly_const_range(__t))); }
  	{
  	  auto& __r = __access::__possibly_const_range(__t);
! 	  return const_iterator_t<decltype(__r)>(ranges::begin(__r));
  	}
  #else
        template<typename _Tp>
--- 681,687 ----
  			    (ranges::begin(__access::__possibly_const_range(__t))); }
  	{
  	  auto& __r = __access::__possibly_const_range(__t);
! 	  return const_iterator<decltype(ranges::begin(__r))>(ranges::begin(__r));
  	}
  #else
        template<typename _Tp>
*************** namespace ranges
*** 713,719 ****
  			    (ranges::end(__access::__possibly_const_range(__t))); }
  	{
  	  auto& __r = __access::__possibly_const_range(__t);
! 	  return const_sentinel_t<decltype(__r)>(ranges::end(__r));
  	}
  #else
        template<typename _Tp>
--- 709,715 ----
  			    (ranges::end(__access::__possibly_const_range(__t))); }
  	{
  	  auto& __r = __access::__possibly_const_range(__t);
! 	  return const_sentinel<decltype(ranges::end(__r))>(ranges::end(__r));
  	}
  #else
        template<typename _Tp>
*************** namespace ranges
*** 817,822 ****
--- 813,828 ----
      inline constexpr ranges::__access::_CData cdata{};
    }
  
+ #if __glibcxx_ranges_as_const // >= C++23
+   // _GLIBCXX_RESOLVE_LIB_DEFECTS
+   // 3946. The definition of const_iterator_t should be reworked
+   template<range _Range>
+     using const_iterator_t = decltype(ranges::cbegin(std::declval<_Range&>()));
+ 
+   template<range _Range>
+     using const_sentinel_t = decltype(ranges::cend(std::declval<_Range&>()));
+ #endif
+ 
    namespace __detail
    {
      template<typename _Tp>
diff -Nrcpad gcc-15-20251122/libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc gcc-15-20251129/libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc
*** gcc-15-20251122/libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc	Sat Nov 22 22:33:20 2025
--- gcc-15-20251129/libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc	Sat Nov 29 22:32:15 2025
*************** test01()
*** 42,53 ****
      }
  }
  
! template<class Range, bool Const>
  void
  test02()
  {
    if constexpr (Const)
      {
        static_assert( ranges::constant_range<Range> );
        static_assert( std::same_as<ranges::const_iterator_t<Range>, ranges::iterator_t<Range>> );
        static_assert( std::same_as<ranges::const_sentinel_t<Range>, ranges::sentinel_t<Range>> );
--- 42,54 ----
      }
  }
  
! template<class Range, bool Const, bool Constable = Const>
  void
  test02()
  {
    if constexpr (Const)
      {
+       static_assert(Constable);
        static_assert( ranges::constant_range<Range> );
        static_assert( std::same_as<ranges::const_iterator_t<Range>, ranges::iterator_t<Range>> );
        static_assert( std::same_as<ranges::const_sentinel_t<Range>, ranges::sentinel_t<Range>> );
*************** test02()
*** 64,72 ****
        static_assert( !ranges::constant_range<Range> );
        using Wrapped = std::basic_const_iterator<ranges::iterator_t<Range>>;
  
!       static_assert( std::same_as<ranges::const_iterator_t<Range>, Wrapped> );
!       if constexpr (ranges::common_range<Range>)
! 	static_assert( std::same_as<ranges::const_sentinel_t<Range>, Wrapped> );
        static_assert( std::same_as<ranges::range_const_reference_t<Range>,
  				 std::iter_reference_t<Wrapped>> );
  
--- 65,85 ----
        static_assert( !ranges::constant_range<Range> );
        using Wrapped = std::basic_const_iterator<ranges::iterator_t<Range>>;
  
!       if constexpr (Constable)
! 	{
! 	  // Verify LWG 3946 changes to const_iterator/sentinel_t (PR122842).
! 	  static_assert( std::same_as<ranges::const_iterator_t<Range>,
! 				      ranges::iterator_t<const Range>> );
! 	  static_assert( std::same_as<ranges::const_sentinel_t<Range>,
! 				      ranges::sentinel_t<const Range>> );
! 	}
!       else
! 	{
! 	  static_assert( std::same_as<ranges::const_iterator_t<Range>, Wrapped> );
! 	  if constexpr (ranges::common_range<Range>)
! 	    static_assert( std::same_as<ranges::const_sentinel_t<Range>, Wrapped> );
! 	}
! 
        static_assert( std::same_as<ranges::range_const_reference_t<Range>,
  				 std::iter_reference_t<Wrapped>> );
  
*************** main()
*** 138,150 ****
    test01<std::string_view::iterator, true>();
    test01<std::vector<bool>::const_iterator, true>();
  
!   test02<int[42], false>();
    test02<test_input_range<int>, false>();
    test02<test_forward_range<int>, false>();
    test02<test_bidirectional_range<int>, false>();
    test02<test_random_access_range<int>, false>();
!   test02<std::array<int, 3>, false>();
!   test02<std::vector<bool>, false>();
  
    test02<const int[42], true>();
    test02<test_input_range<const int>, true>();
--- 151,164 ----
    test01<std::string_view::iterator, true>();
    test01<std::vector<bool>::const_iterator, true>();
  
!   test02<int[42], false, true>();
    test02<test_input_range<int>, false>();
    test02<test_forward_range<int>, false>();
    test02<test_bidirectional_range<int>, false>();
    test02<test_random_access_range<int>, false>();
!   test02<std::array<int, 3>, false, true>();
!   test02<std::vector<bool>, false, true>();
!   test02<std::string, false, true>();
  
    test02<const int[42], true>();
    test02<test_input_range<const int>, true>();
*************** main()
*** 155,160 ****
--- 169,175 ----
    test02<const std::array<int, 3>, true>();
    test02<std::string_view, true>();
    test02<const std::vector<bool>, true>();
+   test02<const std::string, true>();
  
    test03();
    test04();
