diff -Nrcpad gcc-15-20250705/LAST_UPDATED gcc-15-20250712/LAST_UPDATED
*** gcc-15-20250705/LAST_UPDATED	Sat Jul  5 22:32:52 2025
--- gcc-15-20250712/LAST_UPDATED	Sat Jul 12 22:34:15 2025
***************
*** 1 ****
! Obtained from git: releases/gcc-15 revision ea99ca71c1d14ed046b14e41d6a5717d55863a91
--- 1 ----
! Obtained from git: releases/gcc-15 revision c0900e67a08c0e1140ab47af4d1e90eb00bc17ee
diff -Nrcpad gcc-15-20250705/MD5SUMS gcc-15-20250712/MD5SUMS
*** gcc-15-20250705/MD5SUMS	Sat Jul  5 22:32:57 2025
--- gcc-15-20250712/MD5SUMS	Sat Jul 12 22:34:20 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20250705.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-20250712.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
! 9647623f1aa438be9c9f0a4f85cd74ad  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
--- 25,31 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 627f73c3edd3cadba0b0a27d3acdd763  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
! fe96fd7c18d6e46583456d83c7292020  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
! f470c8a9664e25e4f2b05ff3273317b0  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
! a450efa367e38cbb86b8be88ad31a3d3  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
! 0caf0f192d8ca33554f1b15ff9270caf  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** f808dbcc1ad6add5a0867c4b3e03fc4d  gcc/bu
*** 3204,3215 ****
  f82fc6b76f1820b69c268916c7fe1bf6  gcc/builtins.cc
  d86baafdac933140bc11c4cbfb28779e  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 1a46f5e3744a07c459fb717de55e1ca7  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  823fe168bb0f63a39de62d9f0251a1b5  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
  5a2e850515c6ecb57ffe6c19cadc6656  gcc/c-family/c-attribs.cc
! ef8691fea2743b186609ec02d8c35859  gcc/c-family/c-common.cc
  7d631d63d02c9fdb7b800977cd8dc894  gcc/c-family/c-common.def
  c6ac8fb15a8d6272184d999f651d660d  gcc/c-family/c-common.h
  1c57db57b8673a678e1501b694ea87e0  gcc/c-family/c-cppbuiltin.cc
--- 3204,3215 ----
  f82fc6b76f1820b69c268916c7fe1bf6  gcc/builtins.cc
  d86baafdac933140bc11c4cbfb28779e  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 1551b52b7e93ef9bc44fbb54633b846c  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  823fe168bb0f63a39de62d9f0251a1b5  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
  5a2e850515c6ecb57ffe6c19cadc6656  gcc/c-family/c-attribs.cc
! a6dc12cd1ca1a323c5da92b33bea1b8d  gcc/c-family/c-common.cc
  7d631d63d02c9fdb7b800977cd8dc894  gcc/c-family/c-common.def
  c6ac8fb15a8d6272184d999f651d660d  gcc/c-family/c-common.h
  1c57db57b8673a678e1501b694ea87e0  gcc/c-family/c-cppbuiltin.cc
*************** ddbb7a934f8b8aa068e7b765c4375fbe  gcc/co
*** 3429,3435 ****
  d1e3bcda28d89d23e45fed74c629752a  gcc/config/aarch64/aarch64-c.cc
  ba4e797220b33827e769b09447623896  gcc/config/aarch64/aarch64-cc-fusion.cc
  133f61af7e288fe91ca31c659939c551  gcc/config/aarch64/aarch64-coff.h
! 7dda5796a58478b5dadaba93a4cca59a  gcc/config/aarch64/aarch64-cores.def
  f0a8397b1e293e23f65674cd004845ae  gcc/config/aarch64/aarch64-cost-tables.h
  bef2a61270424fd606c71d78d20ad675  gcc/config/aarch64/aarch64-d.cc
  36405b6300d5ec6ca8faf17212ad1bc9  gcc/config/aarch64/aarch64-d.h
--- 3429,3435 ----
  d1e3bcda28d89d23e45fed74c629752a  gcc/config/aarch64/aarch64-c.cc
  ba4e797220b33827e769b09447623896  gcc/config/aarch64/aarch64-cc-fusion.cc
  133f61af7e288fe91ca31c659939c551  gcc/config/aarch64/aarch64-coff.h
! 61a6ea51f727c8e7a93590b1a91c29fa  gcc/config/aarch64/aarch64-cores.def
  f0a8397b1e293e23f65674cd004845ae  gcc/config/aarch64/aarch64-cost-tables.h
  bef2a61270424fd606c71d78d20ad675  gcc/config/aarch64/aarch64-d.cc
  36405b6300d5ec6ca8faf17212ad1bc9  gcc/config/aarch64/aarch64-d.h
*************** e2d80b89552da0c6b4cb6bede3b2e573  gcc/co
*** 3476,3482 ****
  b45f552bc7dc893ae67b3f44db9f0b64  gcc/config/aarch64/aarch64-sve.md
  ba15eac226714e59e1ff1026c4e09ce0  gcc/config/aarch64/aarch64-sve2.md
  805529fa07916adcabb727f19ebd8dd2  gcc/config/aarch64/aarch64-sys-regs.def
! 065e0643d90a8831e9495b5ce2c12b0d  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a2493e870eb12f5d646c24f2949e4cd3  gcc/config/aarch64/aarch64-vxworks.h
  1b29953c4540d8dddd8d4b5e8fcd59b8  gcc/config/aarch64/aarch64.cc
--- 3476,3482 ----
  b45f552bc7dc893ae67b3f44db9f0b64  gcc/config/aarch64/aarch64-sve.md
  ba15eac226714e59e1ff1026c4e09ce0  gcc/config/aarch64/aarch64-sve2.md
  805529fa07916adcabb727f19ebd8dd2  gcc/config/aarch64/aarch64-sys-regs.def
! b301dc231a69a28202d2b7d79ea75f5d  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a2493e870eb12f5d646c24f2949e4cd3  gcc/config/aarch64/aarch64-vxworks.h
  1b29953c4540d8dddd8d4b5e8fcd59b8  gcc/config/aarch64/aarch64.cc
*************** fc218940ab265ae323b54d5f007d0d98  gcc/co
*** 3763,3769 ****
  5ed27daaa89e74cf4016168779065375  gcc/config/avr/avr-dimode.md
  a22b4318830a45fe7c7db53efb64970d  gcc/config/avr/avr-fixed.md
  f43b68e01b2d61fffb5336ef45fa1e7f  gcc/config/avr/avr-log.cc
! 4d906223c63dc375c9525827a70b6a95  gcc/config/avr/avr-mcus.def
  1db4fe94056a22e92de33b6d365176c6  gcc/config/avr/avr-modes.def
  d37f092206fc4c0379cee5e5fc01b654  gcc/config/avr/avr-passes-fuse-move.h
  2dc1345b11b865b9969cbb71e749f862  gcc/config/avr/avr-passes.cc
--- 3763,3769 ----
  5ed27daaa89e74cf4016168779065375  gcc/config/avr/avr-dimode.md
  a22b4318830a45fe7c7db53efb64970d  gcc/config/avr/avr-fixed.md
  f43b68e01b2d61fffb5336ef45fa1e7f  gcc/config/avr/avr-log.cc
! 117bbef05f3fb7ba16a92cee51e0064c  gcc/config/avr/avr-mcus.def
  1db4fe94056a22e92de33b6d365176c6  gcc/config/avr/avr-modes.def
  d37f092206fc4c0379cee5e5fc01b654  gcc/config/avr/avr-passes-fuse-move.h
  2dc1345b11b865b9969cbb71e749f862  gcc/config/avr/avr-passes.cc
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5496,5502 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! a4e908dcbb74a6c16b32af88d962538c  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5496,5502 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! adef1c5e51b4593956a5671b5992359f  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** aaf76a9b03fd0532d2904aef004fd66a  gcc/cp
*** 5581,5587 ****
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 9ea47e86994188466fabb7292ab2f21e  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
  27a10d7b6902641140f84afb4830228b  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
--- 5581,5587 ----
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 9d9c59c6d70b160ba677798af8ec4c05  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
  27a10d7b6902641140f84afb4830228b  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
*************** c61c4737f1261c516fd04ddbb16c545e  gcc/di
*** 5909,5915 ****
  bec68218d528467fd119bf2cd02bc358  gcc/digraph.cc
  18e73120a6e21ceac1adce40777000cf  gcc/digraph.h
  bb82bca6383082ead28f6f21f0a6223f  gcc/doc/analyzer.texi
! c3ebdb865864f4dbf15cdac76b30aa00  gcc/doc/avr-mmcu.texi
  628200aba31497f381052220465b8927  gcc/doc/bugreport.texi
  4f969d517229b2a96d02a2cc09fb85f1  gcc/doc/cfg.texi
  5c6f1e0d6b6424f27020c9e5c08807d4  gcc/doc/collect2.texi
--- 5909,5915 ----
  bec68218d528467fd119bf2cd02bc358  gcc/digraph.cc
  18e73120a6e21ceac1adce40777000cf  gcc/digraph.h
  bb82bca6383082ead28f6f21f0a6223f  gcc/doc/analyzer.texi
! 7c6d6f8bba4a9890d950bdef623af96f  gcc/doc/avr-mmcu.texi
  628200aba31497f381052220465b8927  gcc/doc/bugreport.texi
  4f969d517229b2a96d02a2cc09fb85f1  gcc/doc/cfg.texi
  5c6f1e0d6b6424f27020c9e5c08807d4  gcc/doc/collect2.texi
*************** ee4c7654f733cefcb73d4fd24f3e1b82  gcc/do
*** 5948,5954 ****
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  4cf31ce9dc9e7079c1c99e7dd07215ae  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! a8ebeaa55b78881a13da79f1eb129602  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 5948,5954 ----
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  4cf31ce9dc9e7079c1c99e7dd07215ae  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! a81f174a367a612318f125f106367f13  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** a798cdca802a57ffa3473ab610b37c86  gcc/fo
*** 6056,6062 ****
  4b1bef753dda2d19671f35332c69a0f7  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 97ca54fc8fd862bcf40eb3d185803720  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6056,6062 ----
  4b1bef753dda2d19671f35332c69a0f7  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! b3ebd3eb7c09510f245231cb43ff624d  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** db21881c77a22fd3dbfe253c364af5ee  gcc/fo
*** 6088,6094 ****
  59221f5e105887dce9d0c1b7694aa86f  gcc/fortran/bbt.cc
  3a560d16f485ed40604aa07a7acf15ad  gcc/fortran/check.cc
  ec152c8d16c33705590d8b2ddbcad0b7  gcc/fortran/class.cc
! fa8537a408aae39a816c27e78317e1dd  gcc/fortran/coarray.cc
  6047324cb87b56ae23d2293c5ef13ddb  gcc/fortran/config-lang.in
  16ea0e15947038265fbb5983b455b7bf  gcc/fortran/constructor.cc
  85285f438769e841d8dc39fedcd731d5  gcc/fortran/constructor.h
--- 6088,6094 ----
  59221f5e105887dce9d0c1b7694aa86f  gcc/fortran/bbt.cc
  3a560d16f485ed40604aa07a7acf15ad  gcc/fortran/check.cc
  ec152c8d16c33705590d8b2ddbcad0b7  gcc/fortran/class.cc
! 0b318d001d48262e9cebd6f7ebb84a37  gcc/fortran/coarray.cc
  6047324cb87b56ae23d2293c5ef13ddb  gcc/fortran/config-lang.in
  16ea0e15947038265fbb5983b455b7bf  gcc/fortran/constructor.cc
  85285f438769e841d8dc39fedcd731d5  gcc/fortran/constructor.h
*************** e350765243fa7b881ed82507561870ff  gcc/fo
*** 6135,6141 ****
  066b089d8a8df7ff652dcc802d982276  gcc/fortran/parse.cc
  09678ef13dc709d251be943d808544b8  gcc/fortran/parse.h
  8282ea5f4e00d5c64da552ea2f31dcc6  gcc/fortran/primary.cc
! 4207e845a3c96b031850c4f34077065d  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  c78c72f9e780bf1c0eea63295c5ba590  gcc/fortran/simplify.cc
--- 6135,6141 ----
  066b089d8a8df7ff652dcc802d982276  gcc/fortran/parse.cc
  09678ef13dc709d251be943d808544b8  gcc/fortran/parse.h
  8282ea5f4e00d5c64da552ea2f31dcc6  gcc/fortran/primary.cc
! 59bd7cbbcab403c9a0270725082c69cb  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  c78c72f9e780bf1c0eea63295c5ba590  gcc/fortran/simplify.cc
*************** deb111e00b2b07aa631595045bce5003  gcc/in
*** 6458,6464 ****
  0e159edeb47834067d833b5371c6471c  gcc/ipa-cp.cc
  b65413c6163d502dbe95a08ac40cb575  gcc/ipa-cp.h
  4b65c0ccf8c98e3a0e1526acb4ebd3a4  gcc/ipa-devirt.cc
! 2956ae29acd688fd2229744edabdc027  gcc/ipa-fnsummary.cc
  fef6f27045737cc29ebf2dbbd22dda02  gcc/ipa-fnsummary.h
  20f61df91290c70df6eccefd8d8c642c  gcc/ipa-free-lang-data.cc
  151286d02b3d36dcca2a63fe6ae51102  gcc/ipa-icf-gimple.cc
--- 6458,6464 ----
  0e159edeb47834067d833b5371c6471c  gcc/ipa-cp.cc
  b65413c6163d502dbe95a08ac40cb575  gcc/ipa-cp.h
  4b65c0ccf8c98e3a0e1526acb4ebd3a4  gcc/ipa-devirt.cc
! f0dcd3b109344ff1bf5de85f4598f9b2  gcc/ipa-fnsummary.cc
  fef6f27045737cc29ebf2dbbd22dda02  gcc/ipa-fnsummary.h
  20f61df91290c70df6eccefd8d8c642c  gcc/ipa-free-lang-data.cc
  151286d02b3d36dcca2a63fe6ae51102  gcc/ipa-icf-gimple.cc
*************** e44c0bf9cc0411d7bd57c6585eb6d0e4  gcc/lt
*** 6678,6684 ****
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! e726dedb0978e7e16b0a0033412a0270  gcc/m2/ChangeLog
  33352ea845a8d2399793299f3e58a218  gcc/m2/Make-lang.in
  93fe99bf456561cd217f1c93d2ab7da7  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
--- 6678,6684 ----
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! d85f7873e20d31f41ba54503b0de1d52  gcc/m2/ChangeLog
  33352ea845a8d2399793299f3e58a218  gcc/m2/Make-lang.in
  93fe99bf456561cd217f1c93d2ab7da7  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
*************** d02bb7b852c2149c474702f929b72f2d  gcc/m2
*** 7272,7278 ****
  b78b0219cda3cd36f38421786dc862e7  gcc/m2/lang.opt.urls
  36221d63a7a556b1dbbd7b2aa1ddd8fa  gcc/m2/m2-tree.def
  a93d546f180b351bb03d87a0bb03ef2f  gcc/m2/m2-tree.h
! ff4f0e458361e5c529411e0c50f22344  gcc/m2/m2.flex
  5a746491ae3bf9c7f8e19619535343e5  gcc/m2/mc-boot-ch/GBuiltins.cc
  1b007418233e66da62b4f51a04213000  gcc/m2/mc-boot-ch/GM2LINK.c
  83bd33f22f5e24ca4ef0bf03e371711f  gcc/m2/mc-boot-ch/GSYSTEM.c
--- 7272,7278 ----
  b78b0219cda3cd36f38421786dc862e7  gcc/m2/lang.opt.urls
  36221d63a7a556b1dbbd7b2aa1ddd8fa  gcc/m2/m2-tree.def
  a93d546f180b351bb03d87a0bb03ef2f  gcc/m2/m2-tree.h
! 2731299d727fa2c03f42276fc7e7c611  gcc/m2/m2.flex
  5a746491ae3bf9c7f8e19619535343e5  gcc/m2/mc-boot-ch/GBuiltins.cc
  1b007418233e66da62b4f51a04213000  gcc/m2/mc-boot-ch/GM2LINK.c
  83bd33f22f5e24ca4ef0bf03e371711f  gcc/m2/mc-boot-ch/GSYSTEM.c
*************** c08edc659010d9072c249418c1be7fe6  gcc/rt
*** 7849,7855 ****
  ecb31a48caf7998f695601ec7350bdc0  gcc/run-rtl-passes.cc
  c4bc204b62fdb61848c09abf05a60a9d  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! e378b10ea327a1072182d592f68b0153  gcc/rust/ChangeLog
  c2a8648800b13beaa7b2efef8e94ea6f  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  1bde08bec2946c34ff76bc8cdc25d05c  gcc/rust/ast/rust-ast-builder-type.cc
--- 7849,7855 ----
  ecb31a48caf7998f695601ec7350bdc0  gcc/run-rtl-passes.cc
  c4bc204b62fdb61848c09abf05a60a9d  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 0199b39bcd9406b266d1a3593969c816  gcc/rust/ChangeLog
  c2a8648800b13beaa7b2efef8e94ea6f  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  1bde08bec2946c34ff76bc8cdc25d05c  gcc/rust/ast/rust-ast-builder-type.cc
*************** dec0e54b8d4239c44cd88b409b7e74c3  gcc/ru
*** 8205,8211 ****
  52b9b9a65bae9a38ed82a218f84f5105  gcc/rust/resolve/rust-ice-finalizer.h
  98f1d330caf4f27bd13e2a60d632182b  gcc/rust/resolve/rust-immutable-name-resolution-context.cc
  927471efaee1f85624e6e7eb00584819  gcc/rust/resolve/rust-immutable-name-resolution-context.h
! 891e7144b783ec1dbfbbc98ddc697877  gcc/rust/resolve/rust-late-name-resolver-2.0.cc
  eeb164c7e377bfc637ce2dc97f2b734c  gcc/rust/resolve/rust-late-name-resolver-2.0.h
  12b1a29d05d94d46ca98aa2c75ea972a  gcc/rust/resolve/rust-name-resolution-context.cc
  49ee2ab9556a3779f557ce6568088a30  gcc/rust/resolve/rust-name-resolution-context.h
--- 8205,8211 ----
  52b9b9a65bae9a38ed82a218f84f5105  gcc/rust/resolve/rust-ice-finalizer.h
  98f1d330caf4f27bd13e2a60d632182b  gcc/rust/resolve/rust-immutable-name-resolution-context.cc
  927471efaee1f85624e6e7eb00584819  gcc/rust/resolve/rust-immutable-name-resolution-context.h
! 4ed1330630a7531803951e904a7db8fa  gcc/rust/resolve/rust-late-name-resolver-2.0.cc
  eeb164c7e377bfc637ce2dc97f2b734c  gcc/rust/resolve/rust-late-name-resolver-2.0.h
  12b1a29d05d94d46ca98aa2c75ea972a  gcc/rust/resolve/rust-name-resolution-context.cc
  49ee2ab9556a3779f557ce6568088a30  gcc/rust/resolve/rust-name-resolution-context.h
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8430,8436 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! f4e5bc461fb15b5000cb6793bf609073  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8430,8436 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 11843758bc16e7603b05a3ed6670b70b  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** e758e9f4f3e6f53d756360fda966fadd  gcc/te
*** 11071,11076 ****
--- 11071,11077 ----
  76fa33c917471922e94d50763fda451c  gcc/testsuite/c-c++-common/Waddress-of-packed-member-2.c
  c77c49c6e9741ba649434f0a68e3dcad  gcc/testsuite/c-c++-common/Walloca-larger-than.c
  afef2f2a384ff98fc41df320bb6a2419  gcc/testsuite/c-c++-common/Warray-bounds-10.c
+ a1f750193e9b002ef72772e807bd3a32  gcc/testsuite/c-c++-common/Warray-bounds-11.c
  26f47ca8f4d16158af229f5e0181ba58  gcc/testsuite/c-c++-common/Warray-bounds-2.c
  735f67562fd278388dfba29a23faba55  gcc/testsuite/c-c++-common/Warray-bounds-3.c
  bd8f64abbcab43dedc51e54273763e0c  gcc/testsuite/c-c++-common/Warray-bounds-4.c
*************** e082a0987ccd7f7c913822d88f1e1290  gcc/te
*** 13435,13440 ****
--- 13436,13442 ----
  766c38292d8ef4c730c998450d7c16c3  gcc/testsuite/c-c++-common/musttail3.c
  f9c19ca8115104a11cce8d5aa77ed9fd  gcc/testsuite/c-c++-common/musttail30.c
  7a71029e737d91fd5e483eb7ebb5b684  gcc/testsuite/c-c++-common/musttail31.c
+ 11918a79988d23ee3c815f6e62c344f5  gcc/testsuite/c-c++-common/musttail32.c
  711d7e1b422d9f9f8abb12fc832e8223  gcc/testsuite/c-c++-common/musttail4.c
  fe77739c48384f6fcfbdf2de9311cd67  gcc/testsuite/c-c++-common/musttail5.c
  078bac0d5a094d7fcf3f9d37b95c1683  gcc/testsuite/c-c++-common/musttail7.c
*************** b44ed86d19fab7414d28d1f3fd36a7f9  gcc/te
*** 17288,17293 ****
--- 17290,17297 ----
  dd03d2c4673edad0d7089bf5e60add24  gcc/testsuite/g++.dg/cpp0x/extern_template-7.C
  592cc710524d5d21c28b065dd6c6de7c  gcc/testsuite/g++.dg/cpp0x/fallthrough1.C
  fabf296040650b16fb1ee761285e2841  gcc/testsuite/g++.dg/cpp0x/fallthrough2.C
+ b7fee83cc374502ce73ba270ddcfe4a8  gcc/testsuite/g++.dg/cpp0x/final1.C
+ c036d69e3717d30001d7111ad1daf32f  gcc/testsuite/g++.dg/cpp0x/final2.C
  d4e053aec4e8eb7313176419926ab588  gcc/testsuite/g++.dg/cpp0x/fntmp-equiv1.C
  1050aaede53ab32a9c6a1261ff0fe5d3  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg-partial1.C
  e719fc0782c02fa926744188563c8722  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg1.C
*************** efb7ae6928ea9000a0ff27b30a77cb58  gcc/te
*** 18280,18288 ****
  4e995918f69b8b1f23755adf83e2df73  gcc/testsuite/g++.dg/cpp0x/overload6.C
  c03c417198197c4ba3676deef5492d64  gcc/testsuite/g++.dg/cpp0x/overloadn.C
  7106d3a84752de0a3ebea3782eff9dcc  gcc/testsuite/g++.dg/cpp0x/override1.C
! 7b0edd2d71ca32e524d6ff808a7ab0b7  gcc/testsuite/g++.dg/cpp0x/override2.C
  d2a1963e44488193e2d5ae183c548b2d  gcc/testsuite/g++.dg/cpp0x/override3.C
  ec3fccada021f17376f5255d71d5545b  gcc/testsuite/g++.dg/cpp0x/override4.C
  63a98616cfbc7aecbf849404acae0e55  gcc/testsuite/g++.dg/cpp0x/parse1.C
  a174690fe306aaf345b02df91c3ddebe  gcc/testsuite/g++.dg/cpp0x/parse2.C
  6802ea11c1f5811ef4a3d0490040dcc1  gcc/testsuite/g++.dg/cpp0x/pr102305.C
--- 18284,18294 ----
  4e995918f69b8b1f23755adf83e2df73  gcc/testsuite/g++.dg/cpp0x/overload6.C
  c03c417198197c4ba3676deef5492d64  gcc/testsuite/g++.dg/cpp0x/overloadn.C
  7106d3a84752de0a3ebea3782eff9dcc  gcc/testsuite/g++.dg/cpp0x/override1.C
! 733d74a969597d8c77244aa3cdfd167f  gcc/testsuite/g++.dg/cpp0x/override2.C
  d2a1963e44488193e2d5ae183c548b2d  gcc/testsuite/g++.dg/cpp0x/override3.C
  ec3fccada021f17376f5255d71d5545b  gcc/testsuite/g++.dg/cpp0x/override4.C
+ 681472308bd3c04ab8c566738dbbbf36  gcc/testsuite/g++.dg/cpp0x/override5.C
+ e797416e64bf7eaee79cd825ed48ec80  gcc/testsuite/g++.dg/cpp0x/override6.C
  63a98616cfbc7aecbf849404acae0e55  gcc/testsuite/g++.dg/cpp0x/parse1.C
  a174690fe306aaf345b02df91c3ddebe  gcc/testsuite/g++.dg/cpp0x/parse2.C
  6802ea11c1f5811ef4a3d0490040dcc1  gcc/testsuite/g++.dg/cpp0x/pr102305.C
*************** a5e27521e31c487bc91f8281068f33c3  gcc/te
*** 43387,43392 ****
--- 43393,43399 ----
  d02094a46939c99eb39495aef7c0d8a1  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-7.c
  5433d2eaa76474e2fdf618b7fac6b4bc  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-8.c
  1e98ade028fd67df929780516d3fd544  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-9.c
+ e358aa41598ce2ae05bbd0d7ddffdb7d  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-pr120780.c
  03141515e920f2326efdd83f7b0681fd  gcc/testsuite/gcc.dg/builtin-ffs-1.c
  919180fc1760483ded11685f7fb367c7  gcc/testsuite/gcc.dg/builtin-has-attribute.c
  accf3598507b8caeb30c44d0552888e4  gcc/testsuite/gcc.dg/builtin-inf-1.c
*************** aef01c040da8abd2a1e547ed6a07eb5a  gcc/te
*** 53172,53177 ****
--- 53179,53185 ----
  12e839fd30c3a301bab4708aee3c9815  gcc/testsuite/gcc.dg/torture/pr120347.c
  590593d14c26e1d9ed776d01fc734a3c  gcc/testsuite/gcc.dg/torture/pr120369-1.c
  e6e17b2280f19928b738f46328c5dcf7  gcc/testsuite/gcc.dg/torture/pr120654.c
+ e23df6b1422011499b9a500d2bf25add  gcc/testsuite/gcc.dg/torture/pr120944.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
*************** cefdc2a9eb13f2095c81dff3665fcbe2  gcc/te
*** 56940,56945 ****
--- 56948,56954 ----
  f7352e346071f20c88b4cda3aefaf007  gcc/testsuite/gcc.dg/ubsan/pr112709-2.c
  07fea3b40997114ec3071642a71f05f0  gcc/testsuite/gcc.dg/ubsan/pr112741.c
  9d35f4aafed7065254d5bcbd8e4b3469  gcc/testsuite/gcc.dg/ubsan/pr113012.c
+ cae65f7755e556ca92edd7478099c942  gcc/testsuite/gcc.dg/ubsan/pr120837.c
  8b53119c2975ba4eb7e0a8a3f21049bc  gcc/testsuite/gcc.dg/ubsan/pr63690.c
  7a3b89a11b570c0d6817707c745a9fba  gcc/testsuite/gcc.dg/ubsan/pr67279.c
  c9a455b03d901e306e1836d50e9e37d6  gcc/testsuite/gcc.dg/ubsan/pr67662.c
*************** f5749a6330ea4377b859350a23760b4a  gcc/te
*** 57860,57865 ****
--- 57869,57875 ----
  62642e73757697e1b2dcd5c23bbf8739  gcc/testsuite/gcc.dg/vect/pr119586.c
  c5b12e4f92ab5e7e64670a57c8f91e86  gcc/testsuite/gcc.dg/vect/pr119640.c
  ae171ef5347c321225b18e5907b1331b  gcc/testsuite/gcc.dg/vect/pr119757.c
+ 7df91aea22a8a2dc08bd0d355fa30fae  gcc/testsuite/gcc.dg/vect/pr120817.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  915cf38408eaa7fee5013d90ec1c3251  gcc/testsuite/gcc.dg/vect/pr18400.c
*************** e8a9b3f3f510ee57f71acab27a6b2cb0  gcc/te
*** 59170,59175 ****
--- 59180,59187 ----
  39723945c19c26c57adf66d889eabb98  gcc/testsuite/gcc.dg/vect/vect-peel-4.c
  a0e208729117f798ee5200a51a9c258b  gcc/testsuite/gcc.dg/vect/vect-pr111779.c
  8689fbd68c008546f301818654595aab  gcc/testsuite/gcc.dg/vect/vect-pr114375.c
+ 8006cd394692bd071c0417ad10367515  gcc/testsuite/gcc.dg/vect/vect-pr120927-2.c
+ dca085f893f46ecb56c7cecb15a42090  gcc/testsuite/gcc.dg/vect/vect-pr120927.c
  4d57df9e3b3522c9f1a6707c05f1da45  gcc/testsuite/gcc.dg/vect/vect-pr69848.c
  3a3a316ff2f2496494ecb0bd77d61aad  gcc/testsuite/gcc.dg/vect/vect-pre-interact.c
  b860939f62d716a264f763f82b69b2c8  gcc/testsuite/gcc.dg/vect/vect-prefetch-drop.c
*************** ee39ad592286c583f1d1379691059313  gcc/te
*** 100799,100804 ****
--- 100811,100818 ----
  1f59f392da595105e79dd8ba8c180ec9  gcc/testsuite/gfortran.dg/coarray/coindexed_2.f90
  24bad3b59da9011ae0cda9f63405ff29  gcc/testsuite/gfortran.dg/coarray/coindexed_3.f08
  43d788d504cdfa97e23c07739b149766  gcc/testsuite/gfortran.dg/coarray/coindexed_4.f08
+ a66257c48ed0bc4c478299b74ba345d5  gcc/testsuite/gfortran.dg/coarray/coindexed_6.f90
+ 15ab41c852cd60d830935f5537d52e99  gcc/testsuite/gfortran.dg/coarray/coindexed_7.f90
  f3a5dbd5b18b49f30a47e9c6ddf0ef10  gcc/testsuite/gfortran.dg/coarray/collectives_1.f90
  57d5669b2d7c4384f4f2cbf7f42c55e5  gcc/testsuite/gfortran.dg/coarray/collectives_2.f90
  7a0bf8e143e7c4ebaf6f3ce4b0caaef3  gcc/testsuite/gfortran.dg/coarray/collectives_3.f90
*************** ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tr
*** 117296,117302 ****
  62502d6fd9aa927353d7437dc2a6da17  gcc/tree-nested.cc
  b9bad013f5186a6cf78fe8adbe457945  gcc/tree-nested.h
  b32d8d9d2ed18752b632ccafa2e29737  gcc/tree-nrv.cc
! e29c56f554dbdf5acd832105e721212a  gcc/tree-object-size.cc
  2726009c7d301c88845d73276d4dc3b9  gcc/tree-object-size.h
  d6f70ceb8f53d3be86548b178e50c8e0  gcc/tree-outof-ssa.cc
  b9d636bd9641f3038bbe37a70684e18e  gcc/tree-outof-ssa.h
--- 117310,117316 ----
  62502d6fd9aa927353d7437dc2a6da17  gcc/tree-nested.cc
  b9bad013f5186a6cf78fe8adbe457945  gcc/tree-nested.h
  b32d8d9d2ed18752b632ccafa2e29737  gcc/tree-nrv.cc
! a94299d98262f49dd0caf9ecb3dbb2ef  gcc/tree-object-size.cc
  2726009c7d301c88845d73276d4dc3b9  gcc/tree-object-size.h
  d6f70ceb8f53d3be86548b178e50c8e0  gcc/tree-outof-ssa.cc
  b9d636bd9641f3038bbe37a70684e18e  gcc/tree-outof-ssa.h
*************** be605b5b6cac7c418bd348b54f9d47cf  gcc/tr
*** 117328,117334 ****
  4b3c2e3456bae55a01edd98396b099a1  gcc/tree-ssa-dce.h
  adfc498b0c97a8123c02d418757df496  gcc/tree-ssa-dom.cc
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
! a423873e721bcf96a6e1dfb29009f912  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
  c2bfee2b31ff0129fc730cb3ac7a0137  gcc/tree-ssa-forwprop.cc
  417b731d1c8923a0eb41474c924dd760  gcc/tree-ssa-ifcombine.cc
--- 117342,117348 ----
  4b3c2e3456bae55a01edd98396b099a1  gcc/tree-ssa-dce.h
  adfc498b0c97a8123c02d418757df496  gcc/tree-ssa-dom.cc
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
! 970603eba5771386ebe1627241c4dae7  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
  c2bfee2b31ff0129fc730cb3ac7a0137  gcc/tree-ssa-forwprop.cc
  417b731d1c8923a0eb41474c924dd760  gcc/tree-ssa-ifcombine.cc
*************** da72a60de8a6f51a635ead26120d3cc7  gcc/tr
*** 117359,117372 ****
  299c5d8dabcb4a4d30bab51fbedc4e68  gcc/tree-ssa-propagate.h
  233d764ee886ccb3223d08a55f2a1ddc  gcc/tree-ssa-reassoc.cc
  258492cd7ef04be49374ea1e670f3b5b  gcc/tree-ssa-reassoc.h
! 25c0df143bf236f1bb140267726f0906  gcc/tree-ssa-sccvn.cc
  4b05103d4706bf37cd0bc9f018b40965  gcc/tree-ssa-sccvn.h
  a27c58eccc3d8929767feb76dc99399f  gcc/tree-ssa-scopedtables.cc
  aa25adbcb019dd38a66ce237df54ae1d  gcc/tree-ssa-scopedtables.h
  1565dc0d975d174e5d53e4889ab223e3  gcc/tree-ssa-sink.cc
  f8a95ebe86d335b810e43ab71cae5b43  gcc/tree-ssa-strlen.cc
  817cd7b593b9ca11ac7464ee683d8f98  gcc/tree-ssa-strlen.h
! 7e81fd7c0f8ed03ed6de344fdae263bf  gcc/tree-ssa-structalias.cc
  8236d4d91b8701a8daadc2f8a12d4752  gcc/tree-ssa-tail-merge.cc
  18ba2469cfdfbd297fe2b0120e69a84c  gcc/tree-ssa-ter.cc
  3094df71c80e187685e4e97e428d64f4  gcc/tree-ssa-ter.h
--- 117373,117386 ----
  299c5d8dabcb4a4d30bab51fbedc4e68  gcc/tree-ssa-propagate.h
  233d764ee886ccb3223d08a55f2a1ddc  gcc/tree-ssa-reassoc.cc
  258492cd7ef04be49374ea1e670f3b5b  gcc/tree-ssa-reassoc.h
! cc8929c04e484f163030aae8d2caab38  gcc/tree-ssa-sccvn.cc
  4b05103d4706bf37cd0bc9f018b40965  gcc/tree-ssa-sccvn.h
  a27c58eccc3d8929767feb76dc99399f  gcc/tree-ssa-scopedtables.cc
  aa25adbcb019dd38a66ce237df54ae1d  gcc/tree-ssa-scopedtables.h
  1565dc0d975d174e5d53e4889ab223e3  gcc/tree-ssa-sink.cc
  f8a95ebe86d335b810e43ab71cae5b43  gcc/tree-ssa-strlen.cc
  817cd7b593b9ca11ac7464ee683d8f98  gcc/tree-ssa-strlen.h
! bd67579773d2e2f4ce02d41953702750  gcc/tree-ssa-structalias.cc
  8236d4d91b8701a8daadc2f8a12d4752  gcc/tree-ssa-tail-merge.cc
  18ba2469cfdfbd297fe2b0120e69a84c  gcc/tree-ssa-ter.cc
  3094df71c80e187685e4e97e428d64f4  gcc/tree-ssa-ter.h
*************** bf137326f0a436ec66b505f490068cd7  gcc/tr
*** 117390,117403 ****
  899a002f8aec509c2457b02d6c7634d9  gcc/tree-switch-conversion.cc
  834999e1b44b915632e773927cdaa397  gcc/tree-switch-conversion.h
  4395c5694fb8d6adf7c34f1dc685bc7c  gcc/tree-tailcall.cc
! 1efeaf70ebe667efd4c946b4086d2802  gcc/tree-vect-data-refs.cc
  7ac587d2dd45a9437f9daa1b6409dca9  gcc/tree-vect-generic.cc
  cc0bdf3f684b251509b8552d2d8549a3  gcc/tree-vect-loop-manip.cc
  7ea120edfd69e73498dd90e3a1dfc0fc  gcc/tree-vect-loop.cc
  77240c08cea454c2d4a449206f7930c3  gcc/tree-vect-patterns.cc
  baa70369c21f662d5e61d1296052d231  gcc/tree-vect-slp-patterns.cc
  09d798b4fe50daf2514eca382d37c9ae  gcc/tree-vect-slp.cc
! b88eb62a0a038d8123463c323969fbe2  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  6a5457c324d4279acbd82f147f1dd823  gcc/tree-vectorizer.cc
--- 117404,117417 ----
  899a002f8aec509c2457b02d6c7634d9  gcc/tree-switch-conversion.cc
  834999e1b44b915632e773927cdaa397  gcc/tree-switch-conversion.h
  4395c5694fb8d6adf7c34f1dc685bc7c  gcc/tree-tailcall.cc
! bfc68615867b54241bfd19017f8bcd78  gcc/tree-vect-data-refs.cc
  7ac587d2dd45a9437f9daa1b6409dca9  gcc/tree-vect-generic.cc
  cc0bdf3f684b251509b8552d2d8549a3  gcc/tree-vect-loop-manip.cc
  7ea120edfd69e73498dd90e3a1dfc0fc  gcc/tree-vect-loop.cc
  77240c08cea454c2d4a449206f7930c3  gcc/tree-vect-patterns.cc
  baa70369c21f662d5e61d1296052d231  gcc/tree-vect-slp-patterns.cc
  09d798b4fe50daf2514eca382d37c9ae  gcc/tree-vect-slp.cc
! 738369f526fbf5f44cc122e26e6a5897  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  6a5457c324d4279acbd82f147f1dd823  gcc/tree-vectorizer.cc
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 131367,131373 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! e6884233ff4fcf2017103b0a0486b77d  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 131381,131387 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 3acfcc29fb0c969014bf8623ef20c710  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** e447352e9df05640e24a5f9f85d288ce  libstd
*** 132149,132155 ****
  5b3bd66db6802c89905c016f488a41d0  libstdc++-v3/include/bits/std_mutex.h
  bb19c550085b43f6251959e05791f4c6  libstdc++-v3/include/bits/std_thread.h
  551d2aa52bb5f639424652a68f20dae7  libstdc++-v3/include/bits/stl_algo.h
! ba1901789908a4eca42f3ec20afebc3a  libstdc++-v3/include/bits/stl_algobase.h
  50378fb402a4f63ad663a2763f5cd08a  libstdc++-v3/include/bits/stl_bvector.h
  8b19d3c29a5f7649b167865966c49a51  libstdc++-v3/include/bits/stl_construct.h
  bf0e42750b9f0a11336d82706c33fedb  libstdc++-v3/include/bits/stl_deque.h
--- 132163,132169 ----
  5b3bd66db6802c89905c016f488a41d0  libstdc++-v3/include/bits/std_mutex.h
  bb19c550085b43f6251959e05791f4c6  libstdc++-v3/include/bits/std_thread.h
  551d2aa52bb5f639424652a68f20dae7  libstdc++-v3/include/bits/stl_algo.h
! 1b4047632ad5c13fb8b11a4e72df1ff6  libstdc++-v3/include/bits/stl_algobase.h
  50378fb402a4f63ad663a2763f5cd08a  libstdc++-v3/include/bits/stl_bvector.h
  8b19d3c29a5f7649b167865966c49a51  libstdc++-v3/include/bits/stl_construct.h
  bf0e42750b9f0a11336d82706c33fedb  libstdc++-v3/include/bits/stl_deque.h
*************** ef960a69cca203133e14f230f029c45f  libstd
*** 132171,132177 ****
  c48928d63732da42056105c33cf860ff  libstdc++-v3/include/bits/stl_stack.h
  e090d043a8cdc4479dde4340af533938  libstdc++-v3/include/bits/stl_tempbuf.h
  c0874190fac1e81e66ba299a8440f4e4  libstdc++-v3/include/bits/stl_tree.h
! b31972c7c1f5542e08193d3a13b52432  libstdc++-v3/include/bits/stl_uninitialized.h
  396190da81f504591c361c73a800287e  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
  69fecd7181ec71c850dba6e19cf9a58c  libstdc++-v3/include/bits/streambuf.tcc
--- 132185,132191 ----
  c48928d63732da42056105c33cf860ff  libstdc++-v3/include/bits/stl_stack.h
  e090d043a8cdc4479dde4340af533938  libstdc++-v3/include/bits/stl_tempbuf.h
  c0874190fac1e81e66ba299a8440f4e4  libstdc++-v3/include/bits/stl_tree.h
! 39e026c8777c826d5bfa7a763d177052  libstdc++-v3/include/bits/stl_uninitialized.h
  396190da81f504591c361c73a800287e  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
  69fecd7181ec71c850dba6e19cf9a58c  libstdc++-v3/include/bits/streambuf.tcc
*************** d0ccdc68b53e4f9522c73c04bfb81928  libstd
*** 132797,132803 ****
  9b8d5c4868a64371c6591ccd2d8ae5f0  libstdc++-v3/include/std/set
  ee32950ba29d7cda3e788de0776d8c16  libstdc++-v3/include/std/shared_mutex
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
! f5759070e24ce7ac653599ead1274a2d  libstdc++-v3/include/std/span
  148ae450ade3ff3a68ef3e55c1b19e46  libstdc++-v3/include/std/spanstream
  885b7d229d8dcf3ad5bb087b5a5a1fb4  libstdc++-v3/include/std/sstream
  996b935103050e40bdc3c486d0a1dc98  libstdc++-v3/include/std/stack
--- 132811,132817 ----
  9b8d5c4868a64371c6591ccd2d8ae5f0  libstdc++-v3/include/std/set
  ee32950ba29d7cda3e788de0776d8c16  libstdc++-v3/include/std/shared_mutex
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
! 4b3e4b7e34641d76a52fcd6e71a90970  libstdc++-v3/include/std/span
  148ae450ade3ff3a68ef3e55c1b19e46  libstdc++-v3/include/std/spanstream
  885b7d229d8dcf3ad5bb087b5a5a1fb4  libstdc++-v3/include/std/sstream
  996b935103050e40bdc3c486d0a1dc98  libstdc++-v3/include/std/stack
*************** ac9644e2d8390587379964f6b7e51ef0  libstd
*** 133091,133097 ****
  7c668fe3f79c2610268b1bc631741ad5  libstdc++-v3/src/c++17/fs_dir.cc
  38394abc0e937c8a15f74a60356f174a  libstdc++-v3/src/c++17/fs_ops.cc
  94b95a511b91830b1c3dbfdf235ec988  libstdc++-v3/src/c++17/fs_path.cc
! 31b8948691651bc14d435c8e7b6fa79b  libstdc++-v3/src/c++17/memory_resource.cc
  4f2f44032e04f77de92166a02f76089d  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
  e225c39ccc4c6adc72a744687977d59d  libstdc++-v3/src/c++17/ryu/MERGE
--- 133105,133111 ----
  7c668fe3f79c2610268b1bc631741ad5  libstdc++-v3/src/c++17/fs_dir.cc
  38394abc0e937c8a15f74a60356f174a  libstdc++-v3/src/c++17/fs_ops.cc
  94b95a511b91830b1c3dbfdf235ec988  libstdc++-v3/src/c++17/fs_path.cc
! 3142d663ea92c3978de4c455280d486f  libstdc++-v3/src/c++17/memory_resource.cc
  4f2f44032e04f77de92166a02f76089d  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
  e225c39ccc4c6adc72a744687977d59d  libstdc++-v3/src/c++17/ryu/MERGE
*************** fffe3da8b9ae0c99352127c5de40b241  libstd
*** 134673,134678 ****
--- 134687,134693 ----
  f30bdf792e0f46416fc86011f645fd6f  libstdc++-v3/testsuite/20_util/stdbit/1.cc
  6bc85c1a8428fb1dca9eb3dd36c44157  libstdc++-v3/testsuite/20_util/stdbit/2_neg.cc
  18f28f7e4aa0f105ac8f10c288b309ab  libstdc++-v3/testsuite/20_util/steady_clock/constexpr_data.cc
+ 309b7ad3662d6e3be2a1afeaaef39c0e  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/118681.cc
  ea0313e410a637869d6b0c7a07fb4e19  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/allocate.cc
  ec6997cdd9a94dff1e8525a338851cc5  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/allocate_single.cc
  8299c42ad553b70e0c750e300d1311c4  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/cons.cc
*************** f7ee1bc74a50145c0a42b3eb2f58b253  libstd
*** 134902,134907 ****
--- 134917,134923 ----
  1de6dc64a6ce089ab563a3d28c4a4438  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc
  b752f343c2b8407affea1923b7fdbc6b  libstdc++-v3/testsuite/20_util/unreachable/1.cc
  f47805823c079035961580cdb36d1e63  libstdc++-v3/testsuite/20_util/unreachable/version.cc
+ e71310aab27f8280547a5f500ddfc531  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/118681.cc
  9b3f6aa068382ae25823e682508b634b  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/allocate-max-chunks.cc
  be03f2147068320a3cb055580ad9aad1  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/allocate.cc
  2f889433d26aa8da343a019a1ba43254  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/cons.cc
*************** ceb9291d0683a997845a07adb23a022d  libstd
*** 136930,136935 ****
--- 136946,136952 ----
  477351f32ec06664e65cfa311a1de85c  libstdc++-v3/testsuite/23_containers/set/version.cc
  c40a530a9f9d8a0a09f73891bef444f3  libstdc++-v3/testsuite/23_containers/span/101411.cc
  49274ed9414661e55727add63f009adf  libstdc++-v3/testsuite/23_containers/span/117966.cc
+ dccb0814b19763bed788e2bee51d1569  libstdc++-v3/testsuite/23_containers/span/120997.cc
  abef8cc189d28e6cb89211d1b0abd4df  libstdc++-v3/testsuite/23_containers/span/at.cc
  9e2fddd2cf58e28a70982d16965beca6  libstdc++-v3/testsuite/23_containers/span/back_assert_neg.cc
  0c9cb5dc8d6cbca4651037c03c390aac  libstdc++-v3/testsuite/23_containers/span/back_neg.cc
diff -Nrcpad gcc-15-20250705/gcc/ChangeLog gcc-15-20250712/gcc/ChangeLog
*** gcc-15-20250705/gcc/ChangeLog	Sat Jul  5 22:32:05 2025
--- gcc-15-20250712/gcc/ChangeLog	Sat Jul 12 22:32:29 2025
***************
*** 1,3 ****
--- 1,100 ----
+ 2025-07-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-11  Jakub Jelinek  <jakub@redhat.com>
+ 		    Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/121023
+ 	* ipa-fnsummary.cc (compute_fn_summary): Disallow signature changes
+ 	on cfun->has_musttail functions.
+ 
+ 2025-07-10  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	Backported from master:
+ 	2025-07-03  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR tree-optimization/120780
+ 	* tree-object-size.cc (inner_at_offset,
+ 	get_wholesize_for_memref): New functions.
+ 	(addr_object_size): Call get_wholesize_for_memref.
+ 
+ 2025-07-10  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	Backported from master:
+ 	2025-06-30  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (gb10): New entry.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/invoke.texi (AArch64 Options): Document the above.
+ 
+ 2025-07-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120358
+ 	* tree-ssa-structalias.cc (get_constraint_for_1): Adjust
+ 	pruning of sub-variables according to the imprecise
+ 	known start offset.
+ 
+ 2025-07-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/118669
+ 	* tree-vect-stmts.cc (vectorizable_load): Emit loads
+ 	with proper (element) alignment.
+ 	(vectorizable_store): Likewise.
+ 
+ 2025-07-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120817
+ 	* tree-ssa-dse.cc (initialize_ao_ref_for_dse): Use
+ 	ao_ref_init_from_ptr_and_range with unknown size for
+ 	.MASK_STORE and .MASK_LEN_STORE.
+ 
+ 2025-07-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120927
+ 	* tree-vect-data-refs.cc (vect_compute_data_ref_alignment):
+ 	Do not force a DRs base alignment when analyzing an
+ 	epilog loop.  Check whether the step preserves alignment
+ 	for all VFs possibly involved sofar.
+ 
+ 2025-07-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120944
+ 	* tree-ssa-sccvn.cc (vn_reference_lookup_3): Gate optimizations
+ 	invalid when volatile is involved.
+ 
+ 2025-07-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-07-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr-mcus.def: -mmcu= takes lower case MCU names.
+ 	* doc/avr-mmcu.texi: Rebuild.
+ 
+ 2025-07-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-07-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr-mcus.def (avr32da28S, avr32da32S, avr32da48S)
+ 	(avr64da28S, avr64da32S, avr64da48S avr64da64S)
+ 	(avr128da28S, avr128da32S, avr128da48S, avr128da64S): Add devices.
+ 	* doc/avr-mmcu.texi: Rebuild.
+ 
  2025-07-03  Andrew Pinski  <quic_apinski@quicinc.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250705/gcc/DATESTAMP gcc-15-20250712/gcc/DATESTAMP
*** gcc-15-20250705/gcc/DATESTAMP	Sat Jul  5 22:32:05 2025
--- gcc-15-20250712/gcc/DATESTAMP	Sat Jul 12 22:32:30 2025
***************
*** 1 ****
! 20250705
--- 1 ----
! 20250712
diff -Nrcpad gcc-15-20250705/gcc/c-family/ChangeLog gcc-15-20250712/gcc/c-family/ChangeLog
*** gcc-15-20250705/gcc/c-family/ChangeLog	Sat Jul  5 22:32:06 2025
--- gcc-15-20250712/gcc/c-family/ChangeLog	Sat Jul 12 22:32:31 2025
***************
*** 1,3 ****
--- 1,14 ----
+ 2025-07-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/120837
+ 	* c-common.cc (pointer_int_sum): Rewrite the intop PLUS_EXPR or
+ 	MINUS_EXPR optimization into extension of both intop operands,
+ 	their separate multiplication and then addition/subtraction followed
+ 	by rest of pointer_int_sum handling after the multiplication.
+ 
  2025-05-07  Jason Merrill  <jason@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250705/gcc/c-family/c-common.cc gcc-15-20250712/gcc/c-family/c-common.cc
*** gcc-15-20250705/gcc/c-family/c-common.cc	Sat Jul  5 22:32:06 2025
--- gcc-15-20250712/gcc/c-family/c-common.cc	Sat Jul 12 22:32:31 2025
*************** pointer_int_sum (location_t loc, enum tr
*** 3437,3456 ****
  	 an overflow error if the constant is negative but INTOP is not.  */
        && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (intop))
  	  || (TYPE_PRECISION (TREE_TYPE (intop))
! 	      == TYPE_PRECISION (TREE_TYPE (ptrop)))))
      {
!       enum tree_code subcode = resultcode;
!       tree int_type = TREE_TYPE (intop);
!       if (TREE_CODE (intop) == MINUS_EXPR)
! 	subcode = (subcode == PLUS_EXPR ? MINUS_EXPR : PLUS_EXPR);
!       /* Convert both subexpression types to the type of intop,
! 	 because weird cases involving pointer arithmetic
! 	 can result in a sum or difference with different type args.  */
!       ptrop = build_binary_op (EXPR_LOCATION (TREE_OPERAND (intop, 1)),
! 			       subcode, ptrop,
! 			       convert (int_type, TREE_OPERAND (intop, 1)),
! 			       true);
!       intop = convert (int_type, TREE_OPERAND (intop, 0));
      }
  
    /* Convert the integer argument to a type the same size as sizetype
--- 3437,3477 ----
  	 an overflow error if the constant is negative but INTOP is not.  */
        && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (intop))
  	  || (TYPE_PRECISION (TREE_TYPE (intop))
! 	      == TYPE_PRECISION (TREE_TYPE (ptrop))))
!       && TYPE_PRECISION (TREE_TYPE (intop)) <= TYPE_PRECISION (sizetype))
      {
!       tree intop0 = TREE_OPERAND (intop, 0);
!       tree intop1 = TREE_OPERAND (intop, 1);
!       if (TYPE_PRECISION (TREE_TYPE (intop)) != TYPE_PRECISION (sizetype)
! 	  || TYPE_UNSIGNED (TREE_TYPE (intop)) != TYPE_UNSIGNED (sizetype))
! 	{
! 	  tree optype = c_common_type_for_size (TYPE_PRECISION (sizetype),
! 						TYPE_UNSIGNED (sizetype));
! 	  intop0 = convert (optype, intop0);
! 	  intop1 = convert (optype, intop1);
! 	}
!       tree t = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (intop0), intop0,
! 				convert (TREE_TYPE (intop0), size_exp));
!       intop0 = convert (sizetype, t);
!       if (TREE_OVERFLOW_P (intop0) && !TREE_OVERFLOW (t))
! 	intop0 = wide_int_to_tree (TREE_TYPE (intop0), wi::to_wide (intop0));
!       t = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (intop1), intop1,
! 			   convert (TREE_TYPE (intop1), size_exp));
!       intop1 = convert (sizetype, t);
!       if (TREE_OVERFLOW_P (intop1) && !TREE_OVERFLOW (t))
! 	intop1 = wide_int_to_tree (TREE_TYPE (intop1), wi::to_wide (intop1));
!       intop = build_binary_op (EXPR_LOCATION (intop), TREE_CODE (intop),
! 			       intop0, intop1, true);
! 
!       /* Create the sum or difference.  */
!       if (resultcode == MINUS_EXPR)
! 	intop = fold_build1_loc (loc, NEGATE_EXPR, sizetype, intop);
! 
!       ret = fold_build_pointer_plus_loc (loc, ptrop, intop);
! 
!       fold_undefer_and_ignore_overflow_warnings ();
! 
!       return ret;
      }
  
    /* Convert the integer argument to a type the same size as sizetype
diff -Nrcpad gcc-15-20250705/gcc/config/aarch64/aarch64-cores.def gcc-15-20250712/gcc/config/aarch64/aarch64-cores.def
*** gcc-15-20250705/gcc/config/aarch64/aarch64-cores.def	Sat Jul  5 22:32:06 2025
--- gcc-15-20250712/gcc/config/aarch64/aarch64-cores.def	Sat Jul 12 22:32:31 2025
*************** AARCH64_CORE("demeter", demeter, cortexa
*** 226,231 ****
--- 226,234 ----
  /* NVIDIA ('N') cores. */
  AARCH64_CORE("olympus", olympus, cortexa57, V9_2A, (SVE2_BITPERM, RNG, LS64, MEMTAG, PROFILE, FAMINMAX, FP8FMA, FP8DOT2, FP8DOT4, LUT, SVE2_AES, SVE2_SHA3, SVE2_SM4), neoversev3, 0x4e, 0x10, -1)
  
+ /* Armv9-A big.LITTLE processors.  */
+ AARCH64_CORE("gb10",  gb10, cortexa57, V9_2A,  (SVE2_BITPERM, SVE2_AES, SVE2_SHA3, SVE2_SM4, MEMTAG, PROFILE), cortexx925, 0x41, AARCH64_BIG_LITTLE (0xd85, 0xd87), -1)
+ 
  /* Generic Architecture Processors.  */
  AARCH64_CORE("generic",  generic, cortexa53, V8A,  (), generic, 0x0, 0x0, -1)
  AARCH64_CORE("generic-armv8-a",  generic_armv8_a, cortexa53, V8A, (), generic_armv8_a, 0x0, 0x0, -1)
diff -Nrcpad gcc-15-20250705/gcc/config/aarch64/aarch64-tune.md gcc-15-20250712/gcc/config/aarch64/aarch64-tune.md
*** gcc-15-20250705/gcc/config/aarch64/aarch64-tune.md	Sat Jul  5 22:32:51 2025
--- gcc-15-20250712/gcc/config/aarch64/aarch64-tune.md	Sat Jul 12 22:34:14 2025
***************
*** 1,5 ****
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically by gentune.sh from aarch64-cores.def
  (define_attr "tune"
! 	"cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88,thunderxt88p1,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,ampere1a,ampere1b,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,cortexx1c,neoversen1,ares,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,fujitsu_monaka,tsv110,thunderx3t110,neoversev1,zeus,neoverse512tvb,saphira,oryon1,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexr82ae,applea12,applem1_0,applem1_1,applem1_2,applem1_3,applem2_0,applem2_1,applem2_2,applem2_3,applem3_0,cortexa510,cortexa520,cortexa520ae,cortexa710,cortexa715,cortexa720,cortexa720ae,cortexa725,cortexx2,cortexx3,cortexx4,cortexx925,neoversen2,cobalt100,neoversen3,neoversev2,grace,neoversev3,neoversev3ae,demeter,olympus,generic,generic_armv8_a,generic_armv9_a"
  	(const (symbol_ref "((enum attr_tune) aarch64_tune)")))
--- 1,5 ----
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically by gentune.sh from aarch64-cores.def
  (define_attr "tune"
! 	"cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88,thunderxt88p1,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,ampere1a,ampere1b,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,cortexx1c,neoversen1,ares,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,fujitsu_monaka,tsv110,thunderx3t110,neoversev1,zeus,neoverse512tvb,saphira,oryon1,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexr82ae,applea12,applem1_0,applem1_1,applem1_2,applem1_3,applem2_0,applem2_1,applem2_2,applem2_3,applem3_0,cortexa510,cortexa520,cortexa520ae,cortexa710,cortexa715,cortexa720,cortexa720ae,cortexa725,cortexx2,cortexx3,cortexx4,cortexx925,neoversen2,cobalt100,neoversen3,neoversev2,grace,neoversev3,neoversev3ae,demeter,olympus,gb10,generic,generic_armv8_a,generic_armv9_a"
  	(const (symbol_ref "((enum attr_tune) aarch64_tune)")))
diff -Nrcpad gcc-15-20250705/gcc/config/avr/avr-mcus.def gcc-15-20250712/gcc/config/avr/avr-mcus.def
*** gcc-15-20250705/gcc/config/avr/avr-mcus.def	Sat Jul  5 22:32:06 2025
--- gcc-15-20250712/gcc/config/avr/avr-mcus.def	Sat Jul 12 22:32:31 2025
*************** AVR_MCU ("avr64da28",        ARCH_AVRXME
*** 313,318 ****
--- 313,322 ----
  AVR_MCU ("avr64da32",        ARCH_AVRXMEGA2, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR64DA32__",   0x6000, 0x0, 0x10000, 0)
  AVR_MCU ("avr64da48",        ARCH_AVRXMEGA2, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR64DA48__",   0x6000, 0x0, 0x10000, 0)
  AVR_MCU ("avr64da64",        ARCH_AVRXMEGA2, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR64DA64__",   0x6000, 0x0, 0x10000, 0)
+ AVR_MCU ("avr64da28s",       ARCH_AVRXMEGA2, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR64DA28S__",  0x6000, 0x0, 0x10000, 0)
+ AVR_MCU ("avr64da32s",       ARCH_AVRXMEGA2, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR64DA32S__",  0x6000, 0x0, 0x10000, 0)
+ AVR_MCU ("avr64da48s",       ARCH_AVRXMEGA2, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR64DA48S__",  0x6000, 0x0, 0x10000, 0)
+ AVR_MCU ("avr64da64s",       ARCH_AVRXMEGA2, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR64DA64S__",  0x6000, 0x0, 0x10000, 0)
  AVR_MCU ("avr64db28",        ARCH_AVRXMEGA2, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR64DB28__",   0x6000, 0x0, 0x10000, 0)
  AVR_MCU ("avr64db32",        ARCH_AVRXMEGA2, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR64DB32__",   0x6000, 0x0, 0x10000, 0)
  AVR_MCU ("avr64db48",        ARCH_AVRXMEGA2, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR64DB48__",   0x6000, 0x0, 0x10000, 0)
*************** AVR_MCU ("avr16du32",        ARCH_AVRXME
*** 389,394 ****
--- 393,401 ----
  AVR_MCU ("avr32da28",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32DA28__",   0x7000, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32da32",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32DA32__",   0x7000, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32da48",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32DA48__",   0x7000, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32da28s",       ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32DA28S__",  0x7000, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32da32s",       ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32DA32S__",  0x7000, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32da48s",       ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32DA48S__",  0x7000, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32db28",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32DB28__",   0x7000, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32db32",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32DB32__",   0x7000, 0x0, 0x8000, 0x8000)
  AVR_MCU ("avr32db48",        ARCH_AVRXMEGA3, AVR_CVT,                 "__AVR_AVR32DB48__",   0x7000, 0x0, 0x8000, 0x8000)
*************** AVR_MCU ("avr128da28",       ARCH_AVRXME
*** 427,432 ****
--- 434,443 ----
  AVR_MCU ("avr128da32",       ARCH_AVRXMEGA4, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR128DA32__",  0x4000, 0x0, 0x20000, 0)
  AVR_MCU ("avr128da48",       ARCH_AVRXMEGA4, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR128DA48__",  0x4000, 0x0, 0x20000, 0)
  AVR_MCU ("avr128da64",       ARCH_AVRXMEGA4, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR128DA64__",  0x4000, 0x0, 0x20000, 0)
+ AVR_MCU ("avr128da28s",      ARCH_AVRXMEGA4, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR128DA28S__", 0x4000, 0x0, 0x20000, 0)
+ AVR_MCU ("avr128da32s",      ARCH_AVRXMEGA4, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR128DA32S__", 0x4000, 0x0, 0x20000, 0)
+ AVR_MCU ("avr128da48s",      ARCH_AVRXMEGA4, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR128DA48S__", 0x4000, 0x0, 0x20000, 0)
+ AVR_MCU ("avr128da64s",      ARCH_AVRXMEGA4, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR128DA64S__", 0x4000, 0x0, 0x20000, 0)
  AVR_MCU ("avr128db28",       ARCH_AVRXMEGA4, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR128DB28__",  0x4000, 0x0, 0x20000, 0)
  AVR_MCU ("avr128db32",       ARCH_AVRXMEGA4, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR128DB32__",  0x4000, 0x0, 0x20000, 0)
  AVR_MCU ("avr128db48",       ARCH_AVRXMEGA4, AVR_CVT | AVR_ISA_FLMAP, "__AVR_AVR128DB48__",  0x4000, 0x0, 0x20000, 0)
diff -Nrcpad gcc-15-20250705/gcc/cp/ChangeLog gcc-15-20250712/gcc/cp/ChangeLog
*** gcc-15-20250705/gcc/cp/ChangeLog	Sat Jul  5 22:32:07 2025
--- gcc-15-20250712/gcc/cp/ChangeLog	Sat Jul 12 22:32:31 2025
***************
*** 1,3 ****
--- 1,35 ----
+ 2025-07-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120628
+ 	* parser.cc (cp_parser_elaborated_type_specifier): Use
+ 	cp_parser_nth_token_starts_class_definition_p with extra argument 1
+ 	instead of cp_parser_next_token_starts_class_definition_p.
+ 	(cp_parser_class_property_specifier_seq_opt): For final conditional
+ 	keyword in C++98 check if the token after it isn't
+ 	cp_parser_nth_token_starts_class_definition_p nor CPP_NAME and in
+ 	that case break without consuming it nor warning.
+ 	(cp_parser_class_head): Use
+ 	cp_parser_nth_token_starts_class_definition_p with extra argument 1
+ 	instead of cp_parser_next_token_starts_class_definition_p.
+ 	(cp_parser_next_token_starts_class_definition_p): Renamed to ...
+ 	(cp_parser_nth_token_starts_class_definition_p): ... this.  Add N
+ 	argument.  Use cp_lexer_peek_nth_token instead of cp_lexer_peek_token.
+ 
+ 2025-07-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120569
+ 	* parser.cc (cp_parser_class_property_specifier_seq_opt): New
+ 	function.
+ 	(cp_parser_class_head): Use it instead of
+ 	cp_parser_property_specifier_seq_opt.  Don't diagnose
+ 	VIRT_SPEC_OVERRIDE here.  Formatting fix.
+ 
  2025-07-04  Jason Merrill  <jason@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250705/gcc/cp/parser.cc gcc-15-20250712/gcc/cp/parser.cc
*** gcc-15-20250705/gcc/cp/parser.cc	Sat Jul  5 22:32:07 2025
--- gcc-15-20250712/gcc/cp/parser.cc	Sat Jul 12 22:32:31 2025
*************** static cp_token *cp_parser_require_keywo
*** 3059,3066 ****
    (cp_parser *, enum rid, required_token);
  static bool cp_parser_token_starts_function_definition_p
    (cp_token *);
! static bool cp_parser_next_token_starts_class_definition_p
!   (cp_parser *);
  static bool cp_parser_next_token_ends_template_argument_p
    (cp_parser *);
  static bool cp_parser_nth_token_starts_template_argument_list_p
--- 3059,3066 ----
    (cp_parser *, enum rid, required_token);
  static bool cp_parser_token_starts_function_definition_p
    (cp_token *);
! static bool cp_parser_nth_token_starts_class_definition_p
!   (cp_parser *, size_t);
  static bool cp_parser_next_token_ends_template_argument_p
    (cp_parser *);
  static bool cp_parser_nth_token_starts_template_argument_list_p
*************** cp_parser_elaborated_type_specifier (cp_
*** 21938,21944 ****
  
  	  bool template_p =
  	    (template_parm_lists_apply
! 	     && (cp_parser_next_token_starts_class_definition_p (parser)
  		 || cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)));
  	  /* An unqualified name was used to reference this type, so
  	     there were no qualifying templates.  */
--- 21938,21944 ----
  
  	  bool template_p =
  	    (template_parm_lists_apply
! 	     && (cp_parser_nth_token_starts_class_definition_p (parser, 1)
  		 || cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)));
  	  /* An unqualified name was used to reference this type, so
  	     there were no qualifying templates.  */
*************** cp_parser_class_specifier (cp_parser* pa
*** 27956,27961 ****
--- 27956,28019 ----
    return type;
  }
  
+ /* Parse an (optional) class-property-specifier-seq.
+ 
+    class-property-specifier-seq:
+      class-property-specifier class-property-specifier-seq [opt]
+ 
+    class-property-specifier:
+      final
+ 
+    Returns a bitmask representing the class-property-specifiers.  */
+ 
+ static cp_virt_specifiers
+ cp_parser_class_property_specifier_seq_opt (cp_parser *parser)
+ {
+   cp_virt_specifiers virt_specifiers = VIRT_SPEC_UNSPECIFIED;
+ 
+   while (true)
+     {
+       cp_token *token;
+       cp_virt_specifiers virt_specifier;
+ 
+       /* Peek at the next token.  */
+       token = cp_lexer_peek_token (parser->lexer);
+       /* See if it's a class-property-specifier.  */
+       if (token->type != CPP_NAME)
+ 	break;
+       if (id_equal (token->u.value, "final"))
+ 	{
+ 	  /* For C++98, quietly ignore final in e.g.
+ 	     struct S final = 24;  */
+ 	  if (cxx_dialect == cxx98
+ 	      && virt_specifiers == VIRT_SPEC_UNSPECIFIED
+ 	      && !cp_parser_nth_token_starts_class_definition_p (parser, 2)
+ 	      && !cp_lexer_nth_token_is (parser->lexer, 2, CPP_NAME))
+ 	    break;
+ 	  maybe_warn_cpp0x (CPP0X_OVERRIDE_CONTROLS);
+ 	  virt_specifier = VIRT_SPEC_FINAL;
+ 	}
+       else if (id_equal (token->u.value, "__final"))
+ 	virt_specifier = VIRT_SPEC_FINAL;
+       else
+ 	break;
+ 
+       if (virt_specifiers & virt_specifier)
+ 	{
+ 	  gcc_rich_location richloc (token->location);
+ 	  richloc.add_fixit_remove ();
+ 	  error_at (&richloc, "duplicate virt-specifier");
+ 	  cp_lexer_purge_token (parser->lexer);
+ 	}
+       else
+ 	{
+ 	  cp_lexer_consume_token (parser->lexer);
+ 	  virt_specifiers |= virt_specifier;
+ 	}
+     }
+   return virt_specifiers;
+ }
+ 
  /* Parse a class-head.
  
     class-head:
*************** cp_parser_class_head (cp_parser* parser,
*** 28146,28163 ****
    pop_deferring_access_checks ();
  
    if (id)
!     {
!       cp_parser_check_for_invalid_template_id (parser, id,
! 					       class_key,
!                                                type_start_token->location);
!     }
!   virt_specifiers = cp_parser_virt_specifier_seq_opt (parser);
  
    /* If it's not a `:' or a `{' then we can't really be looking at a
       class-head, since a class-head only appears as part of a
       class-specifier.  We have to detect this situation before calling
       xref_tag, since that has irreversible side-effects.  */
!   if (!cp_parser_next_token_starts_class_definition_p (parser))
      {
        cp_parser_error (parser, "expected %<{%> or %<:%>");
        type = error_mark_node;
--- 28204,28219 ----
    pop_deferring_access_checks ();
  
    if (id)
!     cp_parser_check_for_invalid_template_id (parser, id,
! 					     class_key,
! 					     type_start_token->location);
!   virt_specifiers = cp_parser_class_property_specifier_seq_opt (parser);
  
    /* If it's not a `:' or a `{' then we can't really be looking at a
       class-head, since a class-head only appears as part of a
       class-specifier.  We have to detect this situation before calling
       xref_tag, since that has irreversible side-effects.  */
!   if (!cp_parser_nth_token_starts_class_definition_p (parser, 1))
      {
        cp_parser_error (parser, "expected %<{%> or %<:%>");
        type = error_mark_node;
*************** cp_parser_class_head (cp_parser* parser,
*** 28167,28179 ****
    /* At this point, we're going ahead with the class-specifier, even
       if some other problem occurs.  */
    cp_parser_commit_to_tentative_parse (parser);
-   if (virt_specifiers & VIRT_SPEC_OVERRIDE)
-     {
-       cp_parser_error (parser,
-                        "cannot specify %<override%> for a class");
-       type = error_mark_node;
-       goto out;
-     }
    /* Issue the error about the overly-qualified name now.  */
    if (qualified_p)
      {
--- 28223,28228 ----
*************** cp_parser_token_starts_function_definiti
*** 35539,35553 ****
  	  || token->keyword == RID_RETURN);
  }
  
! /* Returns TRUE iff the next token is the ":" or "{" beginning a class
     definition.  */
  
  static bool
! cp_parser_next_token_starts_class_definition_p (cp_parser *parser)
  {
    cp_token *token;
  
!   token = cp_lexer_peek_token (parser->lexer);
    return (token->type == CPP_OPEN_BRACE
  	  || (token->type == CPP_COLON
  	      && !parser->colon_doesnt_start_class_def_p));
--- 35588,35602 ----
  	  || token->keyword == RID_RETURN);
  }
  
! /* Returns TRUE iff the Nth token is the ":" or "{" beginning a class
     definition.  */
  
  static bool
! cp_parser_nth_token_starts_class_definition_p (cp_parser *parser, size_t n)
  {
    cp_token *token;
  
!   token = cp_lexer_peek_nth_token (parser->lexer, n);
    return (token->type == CPP_OPEN_BRACE
  	  || (token->type == CPP_COLON
  	      && !parser->colon_doesnt_start_class_def_p));
diff -Nrcpad gcc-15-20250705/gcc/doc/avr-mmcu.texi gcc-15-20250712/gcc/doc/avr-mmcu.texi
*** gcc-15-20250705/gcc/doc/avr-mmcu.texi	Sat Jul  5 22:32:07 2025
--- gcc-15-20250712/gcc/doc/avr-mmcu.texi	Sat Jul 12 22:32:31 2025
***************
*** 50,64 ****
  
  @item @anchor{avrxmega2}avrxmega2
  ``XMEGA'' devices with more than 8@tie{}KiB and up to 64@tie{}KiB of program memory.
! @*@var{mcu}@tie{}= @code{atxmega8e5}, @code{atxmega16a4}, @code{atxmega16a4u}, @code{atxmega16c4}, @code{atxmega16d4}, @code{atxmega16e5}, @code{atxmega32a4}, @code{atxmega32a4u}, @code{atxmega32c3}, @code{atxmega32c4}, @code{atxmega32d3}, @code{atxmega32d4}, @code{atxmega32e5}, @code{avr64da28}, @code{avr64da32}, @code{avr64da48}, @code{avr64da64}, @code{avr64db28}, @code{avr64db32}, @code{avr64db48}, @code{avr64db64}, @code{avr64dd14}, @code{avr64dd20}, @code{avr64dd28}, @code{avr64dd32}, @code{avr64du28}, @code{avr64du32}, @code{avr64ea28}, @code{avr64ea32}, @code{avr64ea48}, @code{avr64sd28}, @code{avr64sd32}, @code{avr64sd48}.
  
  @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{avr32da32}, @code{avr32da48}, @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{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.
! @*@var{mcu}@tie{}= @code{atxmega64a3}, @code{atxmega64a3u}, @code{atxmega64a4u}, @code{atxmega64b1}, @code{atxmega64b3}, @code{atxmega64c3}, @code{atxmega64d3}, @code{atxmega64d4}, @code{avr128da28}, @code{avr128da32}, @code{avr128da48}, @code{avr128da64}, @code{avr128db28}, @code{avr128db32}, @code{avr128db48}, @code{avr128db64}.
  
  @item @anchor{avrxmega5}avrxmega5
  ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory and more than 64@tie{}KiB of RAM.
--- 50,64 ----
  
  @item @anchor{avrxmega2}avrxmega2
  ``XMEGA'' devices with more than 8@tie{}KiB and up to 64@tie{}KiB of program memory.
! @*@var{mcu}@tie{}= @code{atxmega8e5}, @code{atxmega16a4}, @code{atxmega16a4u}, @code{atxmega16c4}, @code{atxmega16d4}, @code{atxmega16e5}, @code{atxmega32a4}, @code{atxmega32a4u}, @code{atxmega32c3}, @code{atxmega32c4}, @code{atxmega32d3}, @code{atxmega32d4}, @code{atxmega32e5}, @code{avr64da28}, @code{avr64da28s}, @code{avr64da32}, @code{avr64da32s}, @code{avr64da48}, @code{avr64da48s}, @code{avr64da64}, @code{avr64da64s}, @code{avr64db28}, @code{avr64db32}, @code{avr64db48}, @code{avr64db64}, @code{avr64dd14}, @code{avr64dd20}, @code{avr64dd28}, @code{avr64dd32}, @code{avr64du28}, @code{avr64du32}, @code{avr64ea28}, @code{avr64ea32}, @code{avr64ea48}, @code{avr64sd28}, @code{avr64sd32}, @code{avr64sd48}.
  
  @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{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.
! @*@var{mcu}@tie{}= @code{atxmega64a3}, @code{atxmega64a3u}, @code{atxmega64a4u}, @code{atxmega64b1}, @code{atxmega64b3}, @code{atxmega64c3}, @code{atxmega64d3}, @code{atxmega64d4}, @code{avr128da28}, @code{avr128da28s}, @code{avr128da32}, @code{avr128da32s}, @code{avr128da48}, @code{avr128da48s}, @code{avr128da64}, @code{avr128da64s}, @code{avr128db28}, @code{avr128db32}, @code{avr128db48}, @code{avr128db64}.
  
  @item @anchor{avrxmega5}avrxmega5
  ``XMEGA'' devices with more than 64@tie{}KiB and up to 128@tie{}KiB of program memory and more than 64@tie{}KiB of RAM.
diff -Nrcpad gcc-15-20250705/gcc/doc/invoke.texi gcc-15-20250712/gcc/doc/invoke.texi
*** gcc-15-20250705/gcc/doc/invoke.texi	Sat Jul  5 22:32:07 2025
--- gcc-15-20250712/gcc/doc/invoke.texi	Sat Jul 12 22:32:32 2025
*************** performance of the code.  Permissible va
*** 22027,22033 ****
  The values @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53},
  @samp{cortex-a73.cortex-a35}, @samp{cortex-a73.cortex-a53},
  @samp{cortex-a75.cortex-a55}, @samp{cortex-a76.cortex-a55},
! @samp{apple-m1}, @samp{apple-m2}, @samp{apple-m3} specify that GCC
  should tune for a big.LITTLE system.
  
  The value @samp{neoverse-512tvb} specifies that GCC should tune
--- 22027,22033 ----
  The values @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53},
  @samp{cortex-a73.cortex-a35}, @samp{cortex-a73.cortex-a53},
  @samp{cortex-a75.cortex-a55}, @samp{cortex-a76.cortex-a55},
! @samp{apple-m1}, @samp{apple-m2}, @samp{apple-m3}, @samp{gb10} specify that GCC
  should tune for a big.LITTLE system.
  
  The value @samp{neoverse-512tvb} specifies that GCC should tune
diff -Nrcpad gcc-15-20250705/gcc/fortran/ChangeLog gcc-15-20250712/gcc/fortran/ChangeLog
*** gcc-15-20250705/gcc/fortran/ChangeLog	Sat Jul  5 22:32:07 2025
--- gcc-15-20250712/gcc/fortran/ChangeLog	Sat Jul 12 22:32:32 2025
***************
*** 1,3 ****
--- 1,33 ----
+ 2025-07-09  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-07-03  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/120843
+ 	* resolve.cc (resolve_operator): Remove conformability check,
+ 	because it is not in the standard.
+ 
+ 2025-07-08  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-07-01  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/120847
+ 	* coarray.cc (check_add_new_comp_handle_array): Make the count
+ 	of components static to be able to create more than one.  Create
+ 	an array component only for array expressions.
+ 
+ 2025-07-08  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-07-01  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/120843
+ 	* resolve.cc (resolve_operator): Report inconsistent coranks
+ 	only when not referencing this_image.
+ 	(gfc_op_rank_conformable): Treat coranks as inconformable only
+ 	when a coindex other then implicit this_image is used.
+ 
  2025-07-03  Andre Vehreschild  <vehre@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250705/gcc/fortran/coarray.cc gcc-15-20250712/gcc/fortran/coarray.cc
*** gcc-15-20250705/gcc/fortran/coarray.cc	Sat Jul  5 22:32:07 2025
--- gcc-15-20250712/gcc/fortran/coarray.cc	Sat Jul 12 22:32:32 2025
*************** check_add_new_comp_handle_array (gfc_exp
*** 498,504 ****
  				 gfc_symbol *add_data)
  {
    gfc_component *comp;
!   int cnt = -1;
    gfc_symtree *caller_image;
    gfc_code *pre_code = caf_accessor_prepend;
    bool static_array_or_scalar = true;
--- 498,504 ----
  				 gfc_symbol *add_data)
  {
    gfc_component *comp;
!   static int cnt = -1;
    gfc_symtree *caller_image;
    gfc_code *pre_code = caf_accessor_prepend;
    bool static_array_or_scalar = true;
*************** check_add_new_comp_handle_array (gfc_exp
*** 561,567 ****
    else
      {
        comp->initializer = gfc_copy_expr (e);
!       if (e_attr.dimension)
  	{
  	  comp->attr.dimension = 1;
  	  comp->as = get_arrayspec_from_expr (e);
--- 561,567 ----
    else
      {
        comp->initializer = gfc_copy_expr (e);
!       if (e_attr.dimension && e->rank)
  	{
  	  comp->attr.dimension = 1;
  	  comp->as = get_arrayspec_from_expr (e);
diff -Nrcpad gcc-15-20250705/gcc/fortran/resolve.cc gcc-15-20250712/gcc/fortran/resolve.cc
*** gcc-15-20250705/gcc/fortran/resolve.cc	Sat Jul  5 22:32:07 2025
--- gcc-15-20250712/gcc/fortran/resolve.cc	Sat Jul 12 22:32:32 2025
*************** resolve_operator (gfc_expr *e)
*** 4807,4840 ****
  	      return false;
  	    }
  	}
- 
-       /* coranks have to be equal or one has to be zero to be combinable.  */
-       if (op1->corank == op2->corank || (op1->corank != 0 && op2->corank == 0))
- 	{
- 	  e->corank = op1->corank;
- 	  /* Only do this, when regular array has not set a shape yet.  */
- 	  if (e->shape == NULL)
- 	    {
- 	      if (op1->corank != 0)
- 		{
- 		  e->shape = gfc_copy_shape (op1->shape, op1->corank);
- 		}
- 	    }
- 	}
-       else if (op1->corank == 0 && op2->corank != 0)
- 	{
- 	  e->corank = op2->corank;
- 	  /* Only do this, when regular array has not set a shape yet.  */
- 	  if (e->shape == NULL)
- 	    e->shape = gfc_copy_shape (op2->shape, op2->corank);
- 	}
-       else
- 	{
- 	  gfc_error ("Inconsistent coranks for operator at %L and %L",
- 		     &op1->where, &op2->where);
- 	  return false;
- 	}
- 
        break;
  
      case INTRINSIC_PARENTHESES:
--- 4807,4812 ----
*************** gfc_op_rank_conformable (gfc_expr *op1,
*** 6070,6077 ****
      gfc_expression_rank (op2);
  
    return (op1->rank == 0 || op2->rank == 0 || op1->rank == op2->rank)
! 	 && (op1->corank == 0 || op2->corank == 0
! 	     || op1->corank == op2->corank);
  }
  
  /* Resolve a variable expression.  */
--- 6042,6049 ----
      gfc_expression_rank (op2);
  
    return (op1->rank == 0 || op2->rank == 0 || op1->rank == op2->rank)
! 	 && (op1->corank == 0 || op2->corank == 0 || op1->corank == op2->corank
! 	     || (!gfc_is_coindexed (op1) && !gfc_is_coindexed (op2)));
  }
  
  /* Resolve a variable expression.  */
diff -Nrcpad gcc-15-20250705/gcc/ipa-fnsummary.cc gcc-15-20250712/gcc/ipa-fnsummary.cc
*** gcc-15-20250705/gcc/ipa-fnsummary.cc	Sat Jul  5 22:32:07 2025
--- gcc-15-20250712/gcc/ipa-fnsummary.cc	Sat Jul 12 22:32:32 2025
*************** compute_fn_summary (struct cgraph_node *
*** 3421,3426 ****
--- 3421,3441 ----
  	 info->inlinable = tree_inlinable_function_p (node->decl);
  
         bool no_signature = false;
+ 
+        /* Don't allow signature changes for functions which have
+ 	  [[gnu::musttail]] or [[clang::musttail]] calls.  Sometimes
+ 	  (more often on targets which pass everything on the stack)
+ 	  signature changes can result in tail calls being impossible
+ 	  even when without the signature changes they would be ok.
+ 	  See PR121023.  */
+        if (cfun->has_musttail)
+ 	 {
+ 	   if (dump_file)
+ 	    fprintf (dump_file, "No signature change:"
+ 		     " function has calls with musttail attribute.\n");
+ 	   no_signature = true;
+ 	 }
+ 
         /* Type attributes can use parameter indices to describe them.
  	  Special case fn spec since we can safely preserve them in
  	  modref summaries.  */
diff -Nrcpad gcc-15-20250705/gcc/m2/ChangeLog gcc-15-20250712/gcc/m2/ChangeLog
*** gcc-15-20250705/gcc/m2/ChangeLog	Sat Jul  5 22:32:07 2025
--- gcc-15-20250712/gcc/m2/ChangeLog	Sat Jul 12 22:32:32 2025
***************
*** 1,3 ****
--- 1,17 ----
+ 2025-07-11  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-05-13  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/120253
+ 	* m2.flex (FIRST_COLUMN): New define.
+ 	(updatepos): Remove commented code.
+ 	(consumeLine): Assign column to FIRST_COLUMN.
+ 	(initLine): Ditto.
+ 	(m2flex_GetColumnNo): Return FIRST_COLUMN if currentLine is NULL.
+ 	(m2flex_GetLineNo): Rewrite for positive logic.
+ 	(m2flex_GetLocation): Ditto.
+ 
  2025-05-13  Gaius Mulley  <gaiusmod2@gmail.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250705/gcc/m2/m2.flex gcc-15-20250712/gcc/m2/m2.flex
*** gcc-15-20250705/gcc/m2/m2.flex	Sat Jul  5 22:32:07 2025
--- gcc-15-20250712/gcc/m2/m2.flex	Sat Jul 12 22:32:32 2025
*************** static int cpreprocessor = 0;  /* Replac
*** 48,53 ****
--- 48,55 ----
  #define EXTERN extern "C"
  #endif
  
+ #define FIRST_COLUMN 1
+ 
    /* m2.flex provides a lexical analyser for GNU Modula-2.  */
  
    struct lineInfo {
*************** static void consumeLine (void)
*** 558,564 ****
    currentLine->lineno = lineno;
    currentLine->tokenpos=0;
    currentLine->nextpos=0;
!   currentLine->column=0;
    START_LINE (lineno, yyleng);
    yyless(1);                  /* push back all but the \n */
    traceLine ();
--- 560,566 ----
    currentLine->lineno = lineno;
    currentLine->tokenpos=0;
    currentLine->nextpos=0;
!   currentLine->column=FIRST_COLUMN;
    START_LINE (lineno, yyleng);
    yyless(1);                  /* push back all but the \n */
    traceLine ();
*************** static void updatepos (void)
*** 621,627 ****
    seenModuleStart      = false;
    currentLine->nextpos = currentLine->tokenpos+yyleng;
    currentLine->toklen  = yyleng;
-   /* if (currentLine->column == 0) */
    currentLine->column = currentLine->tokenpos+1;
    currentLine->location =
      M2Options_OverrideLocation (GET_LOCATION (currentLine->column,
--- 623,628 ----
*************** static void initLine (void)
*** 677,683 ****
    currentLine->toklen     = 0;
    currentLine->nextpos    = 0;
    currentLine->lineno = lineno;
!   currentLine->column     = 0;
    currentLine->inuse      = true;
    currentLine->next       = NULL;
  }
--- 678,684 ----
    currentLine->toklen     = 0;
    currentLine->nextpos    = 0;
    currentLine->lineno = lineno;
!   currentLine->column     = FIRST_COLUMN;
    currentLine->inuse      = true;
    currentLine->next       = NULL;
  }
*************** EXTERN bool m2flex_OpenSource (char *s)
*** 812,821 ****
  
  EXTERN int m2flex_GetLineNo (void)
  {
!   if (currentLine != NULL)
!     return currentLine->lineno;
!   else
      return 0;
  }
  
  /*
--- 813,822 ----
  
  EXTERN int m2flex_GetLineNo (void)
  {
!   if (currentLine == NULL)
      return 0;
+   else
+     return currentLine->lineno;
  }
  
  /*
*************** EXTERN int m2flex_GetLineNo (void)
*** 825,834 ****
  
  EXTERN int m2flex_GetColumnNo (void)
  {
!   if (currentLine != NULL)
!     return currentLine->column;
    else
!     return 0;
  }
  
  /*
--- 826,835 ----
  
  EXTERN int m2flex_GetColumnNo (void)
  {
!   if (currentLine == NULL)
!     return FIRST_COLUMN;
    else
!     return currentLine->column;
  }
  
  /*
*************** EXTERN int m2flex_GetColumnNo (void)
*** 837,846 ****
  
  EXTERN location_t m2flex_GetLocation (void)
  {
!   if (currentLine != NULL)
!     return currentLine->location;
!   else
      return 0;
  }
  
  /*
--- 838,847 ----
  
  EXTERN location_t m2flex_GetLocation (void)
  {
!   if (currentLine == NULL)
      return 0;
+   else
+     return currentLine->location;
  }
  
  /*
diff -Nrcpad gcc-15-20250705/gcc/rust/ChangeLog gcc-15-20250712/gcc/rust/ChangeLog
*** gcc-15-20250705/gcc/rust/ChangeLog	Sat Jul  5 22:32:08 2025
--- gcc-15-20250712/gcc/rust/ChangeLog	Sat Jul 12 22:32:33 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-07-08  Arthur Cohen  <arthur.cohen@embecosm.com>
+ 
+ 	* resolve/rust-late-name-resolver-2.0.cc (Late::Late): False initialize the
+ 	funny_error field.
+ 
  2025-04-25  Release Manager
  
  	* GCC 15.1.0 released.
diff -Nrcpad gcc-15-20250705/gcc/rust/resolve/rust-late-name-resolver-2.0.cc gcc-15-20250712/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
*** gcc-15-20250705/gcc/rust/resolve/rust-late-name-resolver-2.0.cc	Sat Jul  5 22:32:08 2025
--- gcc-15-20250712/gcc/rust/resolve/rust-late-name-resolver-2.0.cc	Sat Jul 12 22:32:33 2025
***************
*** 33,39 ****
  namespace Rust {
  namespace Resolver2_0 {
  
! Late::Late (NameResolutionContext &ctx) : DefaultResolver (ctx) {}
  
  static NodeId
  next_node_id ()
--- 33,41 ----
  namespace Rust {
  namespace Resolver2_0 {
  
! Late::Late (NameResolutionContext &ctx)
!   : DefaultResolver (ctx), funny_error (false)
! {}
  
  static NodeId
  next_node_id ()
diff -Nrcpad gcc-15-20250705/gcc/testsuite/ChangeLog gcc-15-20250712/gcc/testsuite/ChangeLog
*** gcc-15-20250705/gcc/testsuite/ChangeLog	Sat Jul  5 22:32:08 2025
--- gcc-15-20250712/gcc/testsuite/ChangeLog	Sat Jul 12 22:32:33 2025
***************
*** 1,3 ****
--- 1,121 ----
+ 2025-07-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120954
+ 	* c-c++-common/Warray-bounds-11.c: New test.
+ 
+ 2025-07-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-11  Jakub Jelinek  <jakub@redhat.com>
+ 		    Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/121023
+ 	* c-c++-common/musttail32.c: New test.
+ 
+ 2025-07-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120628
+ 	* g++.dg/cpp0x/final1.C: New test.
+ 	* g++.dg/cpp0x/final2.C: New test.
+ 	* g++.dg/cpp0x/override6.C: New test.
+ 
+ 2025-07-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120569
+ 	* g++.dg/cpp0x/override2.C: Expect different diagnostics with
+ 	override.
+ 	* g++.dg/cpp0x/override5.C: New test.
+ 
+ 2025-07-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/120837
+ 	* gcc.dg/ubsan/pr120837.c: New test.
+ 
+ 2025-07-10  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	Backported from master:
+ 	2025-07-09  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* gcc.dg/builtin-dynamic-object-size-pr120780.c: Fix 'main' function.
+ 
+ 2025-07-10  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	Backported from master:
+ 	2025-07-03  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR tree-optimization/120780
+ 	* gcc.dg/builtin-dynamic-object-size-pr120780.c: New test case.
+ 
+ 2025-07-09  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-07-03  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/120843
+ 	* gfortran.dg/coarray/coindexed_6.f90: Enhance test to have
+ 	coarray components covered.
+ 
+ 2025-07-09  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2025-07-07  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/120817
+ 	* gcc.dg/vect/pr120817.c: Add SVE HW check.
+ 
+ 2025-07-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120817
+ 	* gcc.dg/vect/pr120817.c: New testcase.
+ 
+ 2025-07-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120927
+ 	* gcc.dg/vect/vect-pr120927.c: New testcase.
+ 	* gcc.dg/vect/vect-pr120927-2.c: Likewise.
+ 
+ 2025-07-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120944
+ 	* gcc.dg/torture/pr120944.c: New testcase.
+ 
+ 2025-07-08  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-07-01  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/120847
+ 	* gfortran.dg/coarray/coindexed_7.f90: New test.
+ 
+ 2025-07-08  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-07-01  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/120843
+ 	* gfortran.dg/coarray/coindexed_6.f90: New test.
+ 
  2025-07-04  Jason Merrill  <jason@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250705/gcc/testsuite/c-c++-common/Warray-bounds-11.c gcc-15-20250712/gcc/testsuite/c-c++-common/Warray-bounds-11.c
*** gcc-15-20250705/gcc/testsuite/c-c++-common/Warray-bounds-11.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/c-c++-common/Warray-bounds-11.c	Sat Jul 12 22:32:33 2025
***************
*** 0 ****
--- 1,21 ----
+ /* PR c++/120954 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Warray-bounds=2" } */
+ 
+ static const int a[32] = { 11, 12, 13, 14, 15 };
+ static const int b[32] = { 21, 22, 23, 24, 25 };
+ static const int c[32] = { 31, 32, 33, 34, 35 };
+ static const int d[32] = { 111, 112, 113, 114, 115 };
+ static const int e[32] = { 121, 122, 123, 124, 125 };
+ static const int f[32] = { 131, 132, 133, 134, 135 };
+ 
+ int
+ foo (int x, int y)
+ {
+   int r = 0;
+   if (x >= 0 && x < 32)
+     r = (y >= 4 ? (y >= 0x65 ? a : b ) : c)[x];
+   else if (x >= 0x100 && x < 0x120)
+     r = (y >= 4 ? (y >= 0x65 ? d : e ) : f)[x - 0x100];
+   return r;
+ }
diff -Nrcpad gcc-15-20250705/gcc/testsuite/c-c++-common/musttail32.c gcc-15-20250712/gcc/testsuite/c-c++-common/musttail32.c
*** gcc-15-20250705/gcc/testsuite/c-c++-common/musttail32.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/c-c++-common/musttail32.c	Sat Jul 12 22:32:34 2025
***************
*** 0 ****
--- 1,23 ----
+ /* PR ipa/121023 */
+ /* { dg-do compile { target musttail } } */
+ /* { dg-options "-O2" } */
+ 
+ struct S { int a, b; };
+ 
+ [[gnu::noipa]] int
+ foo (struct S x, int y, int z)
+ {
+   return x.a + y + z;
+ }
+ 
+ [[gnu::noinline]] static int
+ bar (struct S x, int y, int z)
+ {
+   [[gnu::musttail]] return foo ((struct S) { x.a, 0 }, y, 1);
+ }
+ 
+ int
+ baz (int x)
+ {
+   return bar ((struct S) { 1, 2 }, x, 2) + bar ((struct S) { 2, 3 }, x + 1, 2);
+ }
diff -Nrcpad gcc-15-20250705/gcc/testsuite/g++.dg/cpp0x/final1.C gcc-15-20250712/gcc/testsuite/g++.dg/cpp0x/final1.C
*** gcc-15-20250705/gcc/testsuite/g++.dg/cpp0x/final1.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/g++.dg/cpp0x/final1.C	Sat Jul 12 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/120628
+ // { dg-do compile { target c++98_only } }
+ 
+ namespace A {
+   struct B {};
+   struct B final = {};
+ }
+ namespace C {
+   struct D { D (int, int); };
+   struct D final (42, 0);
+ }
diff -Nrcpad gcc-15-20250705/gcc/testsuite/g++.dg/cpp0x/final2.C gcc-15-20250712/gcc/testsuite/g++.dg/cpp0x/final2.C
*** gcc-15-20250705/gcc/testsuite/g++.dg/cpp0x/final2.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/g++.dg/cpp0x/final2.C	Sat Jul 12 22:32:34 2025
***************
*** 0 ****
--- 1,26 ----
+ // PR c++/120628
+ // { dg-do compile }
+ // { dg-options "" }
+ // { dg-additional-options "-pedantic" { target c++14 } }
+ 
+ namespace U {
+   struct A {};
+   struct A final = {};
+ }
+ namespace V {
+   template <int N>
+   struct B {};
+   template <int N>
+   struct B<N> final = {};	// { dg-warning "variable templates only available with" "" { target c++11_down } }
+ }
+ struct C {
+   struct D {};
+   static D foo ();
+   struct D final = foo ();	// { dg-warning "non-static data member initializers only available with" "" { target c++98_only } }
+ };
+ namespace W {
+   struct E { struct F {}; };
+   struct E::F final = {};
+ }
+ template <int N>
+ struct V::B<N> final = {};	// { dg-warning "variable templates only available with" "" { target c++11_down } }
diff -Nrcpad gcc-15-20250705/gcc/testsuite/g++.dg/cpp0x/override2.C gcc-15-20250712/gcc/testsuite/g++.dg/cpp0x/override2.C
*** gcc-15-20250705/gcc/testsuite/g++.dg/cpp0x/override2.C	Sat Jul  5 22:32:10 2025
--- gcc-15-20250712/gcc/testsuite/g++.dg/cpp0x/override2.C	Sat Jul 12 22:32:35 2025
*************** struct D6 : B4<D6> {}; // { dg-error "ca
*** 25,31 ****
  
  struct B6 final final {}; // { dg-error "duplicate virt-specifier" }
  
! struct B7 override {}; // { dg-error "cannot specify 'override' for a class" }
  
  namespace N
  {
--- 25,31 ----
  
  struct B6 final final {}; // { dg-error "duplicate virt-specifier" }
  
! struct B7 override {}; // { dg-error "variable 'B7 override' has initializer but incomplete type" }
  
  namespace N
  {
*************** int main()
*** 45,51 ****
    struct B2 final; // { dg-error "redeclaration" }
    struct B2 override; // { dg-message "previously declared here" }
    struct B2 final {}; // { dg-error "redefinition" }
!   struct B2 override {}; // { dg-error "cannot specify 'override' for a class" }
    B2 override{}; // { dg-error "redeclaration" }
    struct foo final {}; // { dg-message "previous definition" }
    struct foo final {}; // { dg-error "redefinition" }
--- 45,51 ----
    struct B2 final; // { dg-error "redeclaration" }
    struct B2 override; // { dg-message "previously declared here" }
    struct B2 final {}; // { dg-error "redefinition" }
!   struct B2 override {}; // { dg-error "redeclaration of 'main\\\(\\\)::B2 override'" }
    B2 override{}; // { dg-error "redeclaration" }
    struct foo final {}; // { dg-message "previous definition" }
    struct foo final {}; // { dg-error "redefinition" }
diff -Nrcpad gcc-15-20250705/gcc/testsuite/g++.dg/cpp0x/override5.C gcc-15-20250712/gcc/testsuite/g++.dg/cpp0x/override5.C
*** gcc-15-20250705/gcc/testsuite/g++.dg/cpp0x/override5.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/g++.dg/cpp0x/override5.C	Sat Jul 12 22:32:35 2025
***************
*** 0 ****
--- 1,26 ----
+ // PR c++/120569
+ // { dg-do compile }
+ // { dg-options "" }
+ // { dg-additional-options "-pedantic" { target c++14 } }
+ 
+ namespace U {
+   struct A {};
+   struct A override {};		// { dg-warning "extended initializer lists only available with" "" { target c++98_only } }
+ }
+ namespace V {
+   template <int N>
+   struct B {};
+   template <int N>
+   struct B<N> override {};	// { dg-warning "extended initializer lists only available with" "" { target c++98_only } }
+ }				// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
+ struct C {
+   struct D {};
+   struct D override {};		// { dg-warning "extended initializer lists only available with" "" { target c++98_only } }
+ };				// { dg-warning "non-static data member initializers only available with" "" { target c++98_only } .-1 }
+ namespace W {
+   struct E { struct F {}; };
+   struct E::F override {};	// { dg-warning "extended initializer lists only available with" "" { target c++98_only } }
+ }
+ template <int N>
+ struct V::B<N> override {};	// { dg-warning "extended initializer lists only available with" "" { target c++98_only } }
+ 				// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
diff -Nrcpad gcc-15-20250705/gcc/testsuite/g++.dg/cpp0x/override6.C gcc-15-20250712/gcc/testsuite/g++.dg/cpp0x/override6.C
*** gcc-15-20250705/gcc/testsuite/g++.dg/cpp0x/override6.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/g++.dg/cpp0x/override6.C	Sat Jul 12 22:32:35 2025
***************
*** 0 ****
--- 1,26 ----
+ // PR c++/120628
+ // { dg-do compile }
+ // { dg-options "" }
+ // { dg-additional-options "-pedantic" { target c++14 } }
+ 
+ namespace U {
+   struct A {};
+   struct A override = {};
+ }
+ namespace V {
+   template <int N>
+   struct B {};
+   template <int N>
+   struct B<N> override = {};	// { dg-warning "variable templates only available with" "" { target c++11_down } }
+ }
+ struct C {
+   struct D {};
+   static D foo ();
+   struct D override = foo ();	// { dg-warning "non-static data member initializers only available with" "" { target c++98_only } }
+ };
+ namespace W {
+   struct E { struct F {}; };
+   struct E::F override = {};
+ }
+ template <int N>
+ struct V::B<N> override = {};	// { dg-warning "variable templates only available with" "" { target c++11_down } }
diff -Nrcpad gcc-15-20250705/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-pr120780.c gcc-15-20250712/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-pr120780.c
*** gcc-15-20250705/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-pr120780.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/gcc.dg/builtin-dynamic-object-size-pr120780.c	Sat Jul 12 22:32:48 2025
***************
*** 0 ****
--- 1,233 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+ 
+ #include "builtin-object-size-common.h"
+ typedef __SIZE_TYPE__ size_t;
+ #define NUM_MCAST_RATE 6
+ 
+ #define MIN(a,b) ((a) < (b) ? (a) : (b))
+ #define MAX(a,b) ((a) > (b) ? (a) : (b))
+ 
+ struct inner
+ {
+   int dummy[4];
+ };
+ 
+ struct container
+ {
+   int mcast_rate[NUM_MCAST_RATE];
+   struct inner mesh;
+ };
+ 
+ static void
+ test1_child (struct inner *ifmsh, size_t expected)
+ { 
+   struct container *sdata =
+     (struct container *) ((void *) ifmsh
+ 			  - __builtin_offsetof (struct container, mesh));
+ 
+   if (__builtin_dynamic_object_size (sdata->mcast_rate, 1)
+       != sizeof (sdata->mcast_rate))
+     FAIL ();
+ 
+   if (__builtin_dynamic_object_size (&sdata->mesh, 1) != expected)
+     FAIL ();
+ }
+ 
+ void
+ __attribute__((noinline))
+ test1 (size_t sz)
+ {
+   struct container *sdata = __builtin_malloc (sz);
+   struct inner *ifmsh = &sdata->mesh;
+ 
+   test1_child (ifmsh,
+ 	       (sz > sizeof (sdata->mcast_rate)
+ 		? sz - sizeof (sdata->mcast_rate) : 0));
+ 
+   __builtin_free (sdata);
+ }
+ 
+ struct container2
+ {
+   int mcast_rate[NUM_MCAST_RATE];
+   union
+     {
+       int dummy;
+       double dbl;
+       struct inner mesh;
+     } u;
+ };
+ 
+ static void
+ test2_child (struct inner *ifmsh, size_t sz)
+ { 
+   struct container2 *sdata =
+     (struct container2 *) ((void *) ifmsh
+ 			   - __builtin_offsetof (struct container2, u.mesh));
+ 
+   if (__builtin_dynamic_object_size (sdata->mcast_rate, 1)
+       != sizeof (sdata->mcast_rate))
+     FAIL ();
+ 
+   size_t diff = sizeof (*sdata) - sz;
+   size_t expected = MIN(sizeof (double), MAX (sizeof (sdata->u), diff) - diff);
+ 
+   if (__builtin_dynamic_object_size (&sdata->u.dbl, 1) != expected)
+     FAIL ();
+ 
+   expected = MAX (sizeof (sdata->u.mesh), diff) - diff;
+   if (__builtin_dynamic_object_size (&sdata->u.mesh, 1) != expected)
+     FAIL ();
+ }
+ 
+ void
+ __attribute__((noinline))
+ test2 (size_t sz)
+ {
+   struct container2 *sdata = __builtin_malloc (sz);
+   struct inner *ifmsh = &sdata->u.mesh;
+ 
+   test2_child (ifmsh, sz);;
+ 
+   __builtin_free (sdata);
+ }
+ 
+ struct container3
+ {
+   int mcast_rate[NUM_MCAST_RATE];
+   char mesh[8];
+ };
+ 
+ static void
+ test3_child (char ifmsh[], size_t expected)
+ { 
+   struct container3 *sdata =
+     (struct container3 *) ((void *) ifmsh
+ 			   - __builtin_offsetof (struct container3, mesh));
+ 
+   if (__builtin_dynamic_object_size (sdata->mcast_rate, 1)
+       != sizeof (sdata->mcast_rate))
+     FAIL ();
+ 
+   if (__builtin_dynamic_object_size (sdata->mesh, 1) != expected)
+     FAIL ();
+ }
+ 
+ void
+ __attribute__((noinline))
+ test3 (size_t sz)
+ {
+   struct container3 *sdata = __builtin_malloc (sz);
+   char *ifmsh = sdata->mesh;
+   size_t diff = sizeof (*sdata) - sz;
+ 
+   test3_child (ifmsh, MAX(sizeof (sdata->mesh), diff) - diff);
+ 
+   __builtin_free (sdata);
+ }
+ 
+ 
+ struct container4
+ {
+   int mcast_rate[NUM_MCAST_RATE];
+   struct
+     {
+       int dummy;
+       struct inner mesh;
+     } s;
+ };
+ 
+ static void
+ test4_child (struct inner *ifmsh, size_t expected)
+ { 
+   struct container4 *sdata =
+     (struct container4 *) ((void *) ifmsh
+ 			   - __builtin_offsetof (struct container4, s.mesh));
+ 
+ 
+   if (__builtin_dynamic_object_size (sdata->mcast_rate, 1)
+       != sizeof (sdata->mcast_rate))
+     FAIL ();
+ 
+   if (__builtin_dynamic_object_size (&sdata->s.mesh, 1) != expected)
+     FAIL ();
+ }
+ 
+ void
+ __attribute__((noinline))
+ test4 (size_t sz)
+ {
+   struct container4 *sdata = __builtin_malloc (sz);
+   struct inner *ifmsh = &sdata->s.mesh;
+   size_t diff = sizeof (*sdata) - sz;
+ 
+   test4_child (ifmsh, MAX(sizeof (sdata->s.mesh), diff) - diff);
+ 
+   __builtin_free (sdata);
+ }
+ 
+ struct container5
+ {
+   int mcast_rate[NUM_MCAST_RATE];
+   struct
+     {
+       int dummy;
+       struct inner *mesh;
+     } s;
+ };
+ 
+ static void
+ test5_child (struct inner **ifmsh, size_t expected)
+ { 
+   struct container5 *sdata =
+     (struct container5 *) ((void *) ifmsh
+ 			   - __builtin_offsetof (struct container5, s.mesh));
+ 
+ 
+   if (__builtin_dynamic_object_size (sdata->mcast_rate, 1)
+       != sizeof (sdata->mcast_rate))
+     FAIL ();
+ 
+   if (__builtin_dynamic_object_size (&sdata->s.mesh, 1) != expected)
+     FAIL ();
+ }
+ 
+ void
+ __attribute__((noinline))
+ test5 (size_t sz)
+ {
+   struct container5 *sdata = __builtin_malloc (sz);
+   struct inner **ifmsh = &sdata->s.mesh;
+   size_t diff = sizeof (*sdata) - sz;
+ 
+   test5_child (ifmsh, MAX(sizeof (sdata->s.mesh), diff) - diff);
+ 
+   __builtin_free (sdata);
+ }
+ 
+ int
+ main (void)
+ {
+   test1 (sizeof (struct container));
+   test1 (sizeof (struct container) - sizeof (int));
+   test1 (sizeof (int) * NUM_MCAST_RATE - 1);
+ 
+   test2 (sizeof (struct container2));
+   test2 (sizeof (struct container2) - sizeof (int));
+   test2 (sizeof (int) * NUM_MCAST_RATE - 1);
+ 
+   test3 (sizeof (struct container3));
+   test3 (sizeof (struct container3) - sizeof (int));
+   test3 (sizeof (int) * NUM_MCAST_RATE - 1);
+ 
+   test4 (sizeof (struct container4));
+   test4 (sizeof (struct container4) - sizeof (int));
+   test4 (sizeof (int) * NUM_MCAST_RATE - 1);
+ 
+   test5 (sizeof (struct container5));
+   test5 (sizeof (struct container5) - sizeof (int));
+   test5 (sizeof (int) * NUM_MCAST_RATE - 1);
+ 
+   DONE ();
+ }
diff -Nrcpad gcc-15-20250705/gcc/testsuite/gcc.dg/torture/pr120944.c gcc-15-20250712/gcc/testsuite/gcc.dg/torture/pr120944.c
*** gcc-15-20250705/gcc/testsuite/gcc.dg/torture/pr120944.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/gcc.dg/torture/pr120944.c	Sat Jul 12 22:32:52 2025
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
+ /* { dg-additional-options "-fdump-tree-optimized" } */
+ 
+ #include <stdlib.h>
+ 
+ typedef union {
+   int u32;
+   struct
+   {
+      int A:1;
+      int B:2;
+      int C:3;
+   };
+ } u_t;
+ 
+ typedef union {
+    volatile int u[3];
+    volatile struct {
+         u_t a;
+         int b;
+         int c;
+    };
+ } DATA;
+ 
+ void foo (volatile DATA *d)
+ {
+      d->a.u32 = ~0;
+      u_t u = d->a;
+      int v = u.A;
+      if (v)
+         abort();
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "if \\\(" 1 "optimized" } } */
diff -Nrcpad gcc-15-20250705/gcc/testsuite/gcc.dg/ubsan/pr120837.c gcc-15-20250712/gcc/testsuite/gcc.dg/ubsan/pr120837.c
*** gcc-15-20250705/gcc/testsuite/gcc.dg/ubsan/pr120837.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/gcc.dg/ubsan/pr120837.c	Sat Jul 12 22:32:53 2025
***************
*** 0 ****
--- 1,32 ----
+ /* PR c/120837 */
+ /* { dg-do run } */
+ /* { dg-options "-O1 -fsanitize=undefined -fno-sanitize-recover=undefined" } */
+ 
+ [[gnu::noipa]] void
+ bar (void **x, void **y)
+ {
+   x[0] = 0;
+   x[1] = 0;
+   x[2] = 0;
+   y[0] = 0;
+   y[1] = 0;
+   y[2] = 0;
+   y[3] = 0;
+   y[4] = 0;
+ }
+ 
+ [[gnu::noipa]] void *
+ foo (int x, int y)
+ {
+   void *a[3];
+   void *b[5];
+   bar (a, b);
+   return (x > y ? b : a)[y - 1];
+ }
+ 
+ int
+ main ()
+ {
+   if (foo (2, 1) != 0)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-15-20250705/gcc/testsuite/gcc.dg/vect/pr120817.c gcc-15-20250712/gcc/testsuite/gcc.dg/vect/pr120817.c
*** gcc-15-20250705/gcc/testsuite/gcc.dg/vect/pr120817.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/gcc.dg/vect/pr120817.c	Sat Jul 12 22:32:53 2025
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-additional-options "-O1" } */
+ /* { dg-require-effective-target aarch64_sve_hw { target aarch64*-*-* } } */
+ /* { dg-additional-options "-march=armv8-a+sve -mtune=neoverse-n2" { target aarch64*-*-* } } */
+ 
+ #include "tree-vect.h"
+ 
+ typedef struct {
+     int _M_current;
+ } __normal_iterator;
+ 
+ typedef struct {
+     char _M_elems[5];
+ } array_5;
+ 
+ __normal_iterator __trans_tmp_1 = {-5};
+ 
+ __attribute__((noipa))
+ array_5 copySourceIntoTarget() {
+     array_5 target;
+     char* target_it = target._M_elems;
+ 
+     while (__trans_tmp_1._M_current != 0) {
+         *target_it = 1;
+         __trans_tmp_1._M_current++;
+         target_it++;
+     }
+ 
+     return target;
+ }
+ 
+ int main ()
+ {
+   check_vect ();
+ 
+   array_5 res = copySourceIntoTarget();
+ 
+ #pragma GCC novector
+   for (int i = 0; i < 5; i++)
+     if (res._M_elems[i] != 1)
+       __builtin_abort ();
+ }
diff -Nrcpad gcc-15-20250705/gcc/testsuite/gcc.dg/vect/vect-pr120927-2.c gcc-15-20250712/gcc/testsuite/gcc.dg/vect/vect-pr120927-2.c
*** gcc-15-20250705/gcc/testsuite/gcc.dg/vect/vect-pr120927-2.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/gcc.dg/vect/vect-pr120927-2.c	Sat Jul 12 22:32:53 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-additional-options "--param vect-partial-vector-usage=1" } */
+ /* { dg-additional-options "-mavx512bw -mavx512vl" { target avx512f_runtime } } */
+ 
+ #include "tree-vect.h"
+ 
+ static const double __attribute__((aligned(__BIGGEST_ALIGNMENT__))) a[] = { 1., 2., 3., 4., 5. };
+ 
+ void __attribute__((noipa))
+ foo (double *b, double *bp, double c, int n)
+ {
+   for (int i = 0; i < n; ++i)
+     b[i] = bp[i] = a[i] * c;
+ }
+ 
+ int main()
+ {
+   double b[6], bp[6];
+   b[5] = bp[5] = 13.;
+   check_vect ();
+   foo (b, bp, 3., 5);
+   if (b[5] != 13. || bp[5] != 13.)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-15-20250705/gcc/testsuite/gcc.dg/vect/vect-pr120927.c gcc-15-20250712/gcc/testsuite/gcc.dg/vect/vect-pr120927.c
*** gcc-15-20250705/gcc/testsuite/gcc.dg/vect/vect-pr120927.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/gcc.dg/vect/vect-pr120927.c	Sat Jul 12 22:32:53 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-additional-options "--param vect-partial-vector-usage=1" } */
+ /* { dg-additional-options "-mavx512bw -mavx512vl" { target avx512f_runtime } } */
+ 
+ #include "tree-vect.h"
+ 
+ static const double a[] = { 1., 2., 3., 4., 5. };
+ 
+ void __attribute__((noipa))
+ foo (double *b, double *bp, double c, int n)
+ {
+   for (int i = 0; i < n; ++i)
+     b[i] = bp[i] = a[i] * c;
+ }
+ 
+ int main()
+ {
+   double b[6], bp[6];
+   b[5] = bp[5] = 13.;
+   check_vect ();
+   foo (b, bp, 3., 5);
+   if (b[5] != 13. || bp[5] != 13.)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-15-20250705/gcc/testsuite/gfortran.dg/coarray/coindexed_6.f90 gcc-15-20250712/gcc/testsuite/gfortran.dg/coarray/coindexed_6.f90
*** gcc-15-20250705/gcc/testsuite/gfortran.dg/coarray/coindexed_6.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/gfortran.dg/coarray/coindexed_6.f90	Sat Jul 12 22:33:09 2025
***************
*** 0 ****
--- 1,24 ----
+ !{ dg-do compile }
+ 
+ ! Check PR120843 is fixed
+ 
+ program p
+   implicit none
+ 
+   type T
+     integer, allocatable :: arr(:,:) [:,:]
+   end type
+ 
+   type(T) :: o
+   integer, allocatable :: vec(:)[:,:]
+   integer :: c[*]
+ 
+   c = 7
+ 
+   allocate(o%arr(4,3)[2,*], source=6)
+   allocate(vec(10)[1,*], source=7)
+ 
+   if (vec(3) * c /= 49) stop 1
+   if (o%arr(2,2)* c /= 42) stop 2
+ 
+ end program p
diff -Nrcpad gcc-15-20250705/gcc/testsuite/gfortran.dg/coarray/coindexed_7.f90 gcc-15-20250712/gcc/testsuite/gfortran.dg/coarray/coindexed_7.f90
*** gcc-15-20250705/gcc/testsuite/gfortran.dg/coarray/coindexed_7.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/gcc/testsuite/gfortran.dg/coarray/coindexed_7.f90	Sat Jul 12 22:33:09 2025
***************
*** 0 ****
--- 1,24 ----
+ !{ dg-do compile }
+ 
+ ! Check PR120847 is fixed.
+ 
+ program p
+   implicit none
+ 
+   type T
+     integer, allocatable :: i(:, :) [:]
+   end type T
+ 
+   type(T) :: o
+   integer, allocatable :: c[:]
+   integer :: i
+ 
+   c = 7
+ 
+   allocate(o%i(4, 5)[*], source=6)
+ 
+   do i = 1, 4
+     c = o%i(mod(i, 2), mod(i, 3))[1]
+   end do
+ 
+ end program p
diff -Nrcpad gcc-15-20250705/gcc/tree-object-size.cc gcc-15-20250712/gcc/tree-object-size.cc
*** gcc-15-20250705/gcc/tree-object-size.cc	Sat Jul  5 22:32:28 2025
--- gcc-15-20250712/gcc/tree-object-size.cc	Sat Jul 12 22:33:15 2025
*************** compute_object_offset (tree expr, const_
*** 464,469 ****
--- 464,556 ----
    return size_binop (code, base, off);
  }
  
+ /* Return true if CONTAINER has a field of type INNER at OFFSET.  */
+ 
+ static bool
+ inner_at_offset (tree container, tree inner, tree offset)
+ {
+   gcc_assert (RECORD_OR_UNION_TYPE_P (container));
+ 
+   for (tree t = TYPE_FIELDS (container); t; t = DECL_CHAIN (t))
+     {
+       if (TREE_CODE (t) != FIELD_DECL)
+ 	continue;
+ 
+       /* Skip over fields at bit offsets that are not BITS_PER_UNIT aligned
+ 	 to avoid an accidental truncated match with BYTE_POSITION below since
+ 	 the address of such fields cannot be taken.  */
+       if (wi::bit_and (wi::to_offset (DECL_FIELD_BIT_OFFSET (t)),
+ 		       BITS_PER_UNIT - 1) != 0)
+ 	continue;
+ 
+       tree byte_offset = byte_position (t);
+       if (TREE_CODE (byte_offset) != INTEGER_CST
+ 	  || tree_int_cst_lt (offset, byte_offset))
+ 	return false;
+ 
+       /* For an array, check the element type, otherwise the actual type.  This
+ 	 deliberately does not support the case of jumping from a pointer to
+ 	 the middle of an array to its containing struct.  */
+       tree t_type = TREE_TYPE (t);
+       if (((TREE_CODE (t_type) == ARRAY_TYPE && TREE_TYPE (t_type) == inner)
+ 	   || t_type == inner)
+ 	  && tree_int_cst_equal (byte_offset, offset))
+ 	return true;
+ 
+       /* Nested structure or union, adjust the expected offset and dive in.  */
+       if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (t))
+ 	  && inner_at_offset (TREE_TYPE (t), inner,
+ 			      fold_build2 (MINUS_EXPR, sizetype, offset,
+ 					   byte_offset)))
+ 	return true;
+     }
+ 
+   return false;
+ }
+ 
+ /* For the input MEMREF of type MEMREF_TYPE, look for the presence of a field
+    of BASE_TYPE at OFFSET and return an adjusted WHOLESIZE if found.  */
+ 
+ static tree
+ get_wholesize_for_memref (tree memref, tree wholesize)
+ {
+   tree base = TREE_OPERAND (memref, 0);
+   tree offset = fold_convert (sizetype, TREE_OPERAND (memref, 1));
+   tree memref_type = TREE_TYPE (memref);
+   tree base_type = TREE_TYPE (base);
+ 
+   if (POINTER_TYPE_P (base_type))
+     base_type = TREE_TYPE ((base_type));
+ 
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     {
+       fprintf (dump_file, "wholesize_for_memref: ");
+       print_generic_expr (dump_file, wholesize, dump_flags);
+       fprintf (dump_file, ", offset: ");
+       print_generic_expr (dump_file, offset, dump_flags);
+       fprintf (dump_file, "\n");
+     }
+ 
+   if (TREE_CODE (offset) != INTEGER_CST
+       || compare_tree_int (offset, offset_limit) < 0
+       || !RECORD_OR_UNION_TYPE_P (memref_type))
+     return wholesize;
+ 
+   offset = fold_build1 (NEGATE_EXPR, sizetype, offset);
+ 
+   if (inner_at_offset (memref_type, base_type, offset))
+     wholesize = size_binop (PLUS_EXPR, wholesize, offset);
+ 
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     {
+       fprintf (dump_file, "    new wholesize: ");
+       print_generic_expr (dump_file, wholesize, dump_flags);
+       fprintf (dump_file, "\n");
+     }
+ 
+   return wholesize;
+ }
+ 
  /* Returns the size of the object designated by DECL considering its
     initializer if it either has one or if it would not affect its size,
     otherwise the size of the object without the initializer when MIN
*************** addr_object_size (struct object_size_inf
*** 536,542 ****
  	{
  	  compute_builtin_object_size (TREE_OPERAND (pt_var, 0),
  				       object_size_type & ~OST_SUBOBJECT, &sz);
! 	  wholesize = sz;
  	}
        else
  	{
--- 623,629 ----
  	{
  	  compute_builtin_object_size (TREE_OPERAND (pt_var, 0),
  				       object_size_type & ~OST_SUBOBJECT, &sz);
! 	  wholesize = get_wholesize_for_memref (pt_var, sz);
  	}
        else
  	{
*************** addr_object_size (struct object_size_inf
*** 548,553 ****
--- 635,641 ----
  	    {
  	      sz = object_sizes_get (osi, SSA_NAME_VERSION (var));
  	      wholesize = object_sizes_get (osi, SSA_NAME_VERSION (var), true);
+ 	      wholesize = get_wholesize_for_memref (pt_var, wholesize);
  	    }
  	  else
  	    sz = wholesize = size_unknown (object_size_type);
diff -Nrcpad gcc-15-20250705/gcc/tree-ssa-dse.cc gcc-15-20250712/gcc/tree-ssa-dse.cc
*** gcc-15-20250705/gcc/tree-ssa-dse.cc	Sat Jul  5 22:32:28 2025
--- gcc-15-20250712/gcc/tree-ssa-dse.cc	Sat Jul 12 22:33:15 2025
*************** initialize_ao_ref_for_dse (gimple *stmt,
*** 181,190 ****
  	       can provide a may-def variant.  */
  	    if (may_def_ok)
  	      {
! 		ao_ref_init_from_ptr_and_size (
! 		  write, gimple_call_arg (stmt, 0),
! 		  TYPE_SIZE_UNIT (
! 		    TREE_TYPE (gimple_call_arg (stmt, stored_value_index))));
  		return true;
  	      }
  	    break;
--- 181,190 ----
  	       can provide a may-def variant.  */
  	    if (may_def_ok)
  	      {
! 		ao_ref_init_from_ptr_and_range (
! 		  write, gimple_call_arg (stmt, 0), true, 0, -1,
! 		  tree_to_poly_int64 (TYPE_SIZE (
! 		    TREE_TYPE (gimple_call_arg (stmt, stored_value_index)))));
  		return true;
  	      }
  	    break;
diff -Nrcpad gcc-15-20250705/gcc/tree-ssa-sccvn.cc gcc-15-20250712/gcc/tree-ssa-sccvn.cc
*** gcc-15-20250705/gcc/tree-ssa-sccvn.cc	Sat Jul  5 22:32:28 2025
--- gcc-15-20250712/gcc/tree-ssa-sccvn.cc	Sat Jul 12 22:33:15 2025
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 2809,2815 ****
           we find a VN result with exactly the same value as the
  	 possible clobber.  In this case we can ignore the clobber
  	 and return the found value.  */
!       if (is_gimple_reg_type (TREE_TYPE (lhs))
  	  && types_compatible_p (TREE_TYPE (lhs), vr->type)
  	  && (ref->ref || data->orig_ref.ref)
  	  && !data->mask
--- 2809,2816 ----
           we find a VN result with exactly the same value as the
  	 possible clobber.  In this case we can ignore the clobber
  	 and return the found value.  */
!       if (!gimple_has_volatile_ops (def_stmt)
! 	  && is_gimple_reg_type (TREE_TYPE (lhs))
  	  && types_compatible_p (TREE_TYPE (lhs), vr->type)
  	  && (ref->ref || data->orig_ref.ref)
  	  && !data->mask
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 3093,3099 ****
    else if (is_gimple_reg_type (vr->type)
  	   && gimple_assign_single_p (def_stmt)
  	   && gimple_assign_rhs_code (def_stmt) == CONSTRUCTOR
! 	   && CONSTRUCTOR_NELTS (gimple_assign_rhs1 (def_stmt)) == 0)
      {
        tree base2;
        poly_int64 offset2, size2, maxsize2;
--- 3094,3101 ----
    else if (is_gimple_reg_type (vr->type)
  	   && gimple_assign_single_p (def_stmt)
  	   && gimple_assign_rhs_code (def_stmt) == CONSTRUCTOR
! 	   && CONSTRUCTOR_NELTS (gimple_assign_rhs1 (def_stmt)) == 0
! 	   && !TREE_THIS_VOLATILE (gimple_assign_lhs (def_stmt)))
      {
        tree base2;
        poly_int64 offset2, size2, maxsize2;
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 3149,3154 ****
--- 3151,3157 ----
  	   && !reverse_storage_order_for_component_p (vr->operands)
  	   && !contains_storage_order_barrier_p (vr->operands)
  	   && gimple_assign_single_p (def_stmt)
+ 	   && !TREE_THIS_VOLATILE (gimple_assign_lhs (def_stmt))
  	   && CHAR_BIT == 8
  	   && BITS_PER_UNIT == 8
  	   && BYTES_BIG_ENDIAN == WORDS_BIG_ENDIAN
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 3307,3312 ****
--- 3310,3316 ----
  	   && !reverse_storage_order_for_component_p (vr->operands)
  	   && !contains_storage_order_barrier_p (vr->operands)
  	   && gimple_assign_single_p (def_stmt)
+ 	   && !TREE_THIS_VOLATILE (gimple_assign_lhs (def_stmt))
  	   && TREE_CODE (gimple_assign_rhs1 (def_stmt)) == SSA_NAME)
      {
        tree lhs = gimple_assign_lhs (def_stmt);
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 3518,3523 ****
--- 3522,3528 ----
       the copy kills ref.  */
    else if (data->vn_walk_kind == VN_WALKREWRITE
  	   && gimple_assign_single_p (def_stmt)
+ 	   && !gimple_has_volatile_ops (def_stmt)
  	   && (DECL_P (gimple_assign_rhs1 (def_stmt))
  	       || TREE_CODE (gimple_assign_rhs1 (def_stmt)) == MEM_REF
  	       || handled_component_p (gimple_assign_rhs1 (def_stmt))))
diff -Nrcpad gcc-15-20250705/gcc/tree-ssa-structalias.cc gcc-15-20250712/gcc/tree-ssa-structalias.cc
*** gcc-15-20250705/gcc/tree-ssa-structalias.cc	Sat Jul  5 22:32:28 2025
--- gcc-15-20250712/gcc/tree-ssa-structalias.cc	Sat Jul 12 22:33:15 2025
*************** get_constraint_for_1 (tree t, vec<ce_s>
*** 3690,3696 ****
  		    size = -1;
  		  for (; curr; curr = vi_next (curr))
  		    {
! 		      if (curr->offset - vi->offset < size)
  			{
  			  cs.var = curr->id;
  			  results->safe_push (cs);
--- 3690,3699 ----
  		    size = -1;
  		  for (; curr; curr = vi_next (curr))
  		    {
! 		      /* The start of the access might happen anywhere
! 			 within vi, so conservatively assume it was
! 			 at its end.  */
! 		      if (curr->offset - (vi->offset + vi->size - 1) < size)
  			{
  			  cs.var = curr->id;
  			  results->safe_push (cs);
diff -Nrcpad gcc-15-20250705/gcc/tree-vect-data-refs.cc gcc-15-20250712/gcc/tree-vect-data-refs.cc
*** gcc-15-20250705/gcc/tree-vect-data-refs.cc	Sat Jul  5 22:32:28 2025
--- gcc-15-20250712/gcc/tree-vect-data-refs.cc	Sat Jul 12 22:33:15 2025
*************** vect_compute_data_ref_alignment (vec_inf
*** 1410,1419 ****
        /* We can only use base and misalignment information relative to
  	 an innermost loop if the misalignment stays the same throughout the
  	 execution of the loop.  As above, this is the case if the stride of
! 	 the dataref evenly divides by the alignment.  */
!       poly_uint64 vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
!       step_preserves_misalignment_p
! 	= multiple_p (drb->step_alignment * vf, vect_align_c);
  
        if (!step_preserves_misalignment_p && dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
--- 1410,1426 ----
        /* We can only use base and misalignment information relative to
  	 an innermost loop if the misalignment stays the same throughout the
  	 execution of the loop.  As above, this is the case if the stride of
! 	 the dataref evenly divides by the alignment.  Make sure to check
! 	 previous epilogues and the main loop.  */
!       step_preserves_misalignment_p = true;
!       auto lvinfo = loop_vinfo;
!       while (lvinfo)
! 	{
! 	  poly_uint64 vf = LOOP_VINFO_VECT_FACTOR (lvinfo);
! 	  step_preserves_misalignment_p
! 	    &= multiple_p (drb->step_alignment * vf, vect_align_c);
! 	  lvinfo = LOOP_VINFO_ORIG_LOOP_INFO (lvinfo);
! 	}
  
        if (!step_preserves_misalignment_p && dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
*************** vect_compute_data_ref_alignment (vec_inf
*** 1480,1485 ****
--- 1487,1493 ----
        unsigned int max_alignment;
        tree base = get_base_for_alignment (drb->base_address, &max_alignment);
        if (max_alignment < vect_align_c
+ 	  || (loop_vinfo && LOOP_VINFO_EPILOGUE_P (loop_vinfo))
  	  || !vect_can_force_dr_alignment_p (base,
  					     vect_align_c * BITS_PER_UNIT))
  	{
diff -Nrcpad gcc-15-20250705/gcc/tree-vect-stmts.cc gcc-15-20250712/gcc/tree-vect-stmts.cc
*** gcc-15-20250705/gcc/tree-vect-stmts.cc	Sat Jul  5 22:32:28 2025
--- gcc-15-20250712/gcc/tree-vect-stmts.cc	Sat Jul 12 22:33:15 2025
*************** vectorizable_store (vec_info *vinfo,
*** 10062,10068 ****
  		= fold_build2 (MEM_REF, vectype, dataref_ptr,
  			       dataref_offset ? dataref_offset
  					      : build_int_cst (ref_type, 0));
! 	      if (alignment_support_scheme == dr_aligned)
  		;
  	      else
  		TREE_TYPE (data_ref)
--- 10062,10069 ----
  		= fold_build2 (MEM_REF, vectype, dataref_ptr,
  			       dataref_offset ? dataref_offset
  					      : build_int_cst (ref_type, 0));
! 	      if (alignment_support_scheme == dr_aligned
! 		  && align >= TYPE_ALIGN_UNIT (vectype))
  		;
  	      else
  		TREE_TYPE (data_ref)
*************** vectorizable_load (vec_info *vinfo,
*** 12254,12260 ****
  		      {
  			data_ref
  			  = fold_build2 (MEM_REF, ltype, dataref_ptr, offset);
! 			if (alignment_support_scheme == dr_aligned)
  			  ;
  			else
  			  TREE_TYPE (data_ref)
--- 12255,12262 ----
  		      {
  			data_ref
  			  = fold_build2 (MEM_REF, ltype, dataref_ptr, offset);
! 			if (alignment_support_scheme == dr_aligned
! 			    && align >= TYPE_ALIGN_UNIT (ltype))
  			  ;
  			else
  			  TREE_TYPE (data_ref)
diff -Nrcpad gcc-15-20250705/libstdc++-v3/ChangeLog gcc-15-20250712/libstdc++-v3/ChangeLog
*** gcc-15-20250705/libstdc++-v3/ChangeLog	Sat Jul  5 22:32:33 2025
--- gcc-15-20250712/libstdc++-v3/ChangeLog	Sat Jul 12 22:33:40 2025
***************
*** 1,3 ****
--- 1,50 ----
+ 2025-07-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/119754
+ 	* include/bits/stl_uninitialized.h (__uninitialized_default):
+ 	Do not use optimized implementation for constexpr case. Use
+ 	_GLIBCXX20_CONSTEXPR instead of _GLIBCXX26_CONSTEXPR.
+ 
+ 2025-07-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/120997
+ 	* include/std/span (span::first, span::last, span::subspan): Do
+ 	not use braced-init-list for return statements.
+ 	* testsuite/23_containers/span/120997.cc: New test.
+ 
+ 2025-07-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/118681
+ 	* src/c++17/memory_resource.cc (choose_block_size): New
+ 	function.
+ 	(synchronized_pool_resource::do_allocate): Use choose_block_size
+ 	to determine appropriate block size.
+ 	(synchronized_pool_resource::do_deallocate): Likewise
+ 	(unsynchronized_pool_resource::do_allocate): Likewise.
+ 	(unsynchronized_pool_resource::do_deallocate): Likewise
+ 	* testsuite/20_util/synchronized_pool_resource/118681.cc: New
+ 	test.
+ 	* testsuite/20_util/unsynchronized_pool_resource/118681.cc: New
+ 	test.
+ 
+ 2025-07-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/stl_algobase.h (__size_to_integer): Move
+ 	misplaced unsigned keyword on __size_to_integer overloads for
+ 	__GLIBCXX_TYPE_INT_N_3 integer type.
+ 
  2025-07-03  Patrick Palka  <ppalka@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250705/libstdc++-v3/include/bits/stl_algobase.h gcc-15-20250712/libstdc++-v3/include/bits/stl_algobase.h
*** gcc-15-20250705/libstdc++-v3/include/bits/stl_algobase.h	Sat Jul  5 22:32:33 2025
--- gcc-15-20250712/libstdc++-v3/include/bits/stl_algobase.h	Sat Jul 12 22:33:41 2025
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1046,1054 ****
    __size_to_integer(unsigned __GLIBCXX_TYPE_INT_N_2 __n) { return __n; }
  #endif
  #if defined(__GLIBCXX_TYPE_INT_N_3)
-   __extension__ inline _GLIBCXX_CONSTEXPR unsigned __GLIBCXX_TYPE_INT_N_3
-   __size_to_integer(__GLIBCXX_TYPE_INT_N_3 __n) { return __n; }
    __extension__ inline _GLIBCXX_CONSTEXPR __GLIBCXX_TYPE_INT_N_3
    __size_to_integer(unsigned __GLIBCXX_TYPE_INT_N_3 __n) { return __n; }
  #endif
  
--- 1046,1054 ----
    __size_to_integer(unsigned __GLIBCXX_TYPE_INT_N_2 __n) { return __n; }
  #endif
  #if defined(__GLIBCXX_TYPE_INT_N_3)
    __extension__ inline _GLIBCXX_CONSTEXPR __GLIBCXX_TYPE_INT_N_3
+   __size_to_integer(__GLIBCXX_TYPE_INT_N_3 __n) { return __n; }
+   __extension__ inline _GLIBCXX_CONSTEXPR unsigned __GLIBCXX_TYPE_INT_N_3
    __size_to_integer(unsigned __GLIBCXX_TYPE_INT_N_3 __n) { return __n; }
  #endif
  
diff -Nrcpad gcc-15-20250705/libstdc++-v3/include/bits/stl_uninitialized.h gcc-15-20250712/libstdc++-v3/include/bits/stl_uninitialized.h
*** gcc-15-20250705/libstdc++-v3/include/bits/stl_uninitialized.h	Sat Jul  5 22:32:33 2025
--- gcc-15-20250712/libstdc++-v3/include/bits/stl_uninitialized.h	Sat Jul 12 22:33:41 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 902,912 ****
    // __uninitialized_default
    // Fills [first, last) with value-initialized value_types.
    template<typename _ForwardIterator>
!     _GLIBCXX26_CONSTEXPR
      inline void
      __uninitialized_default(_ForwardIterator __first,
  			    _ForwardIterator __last)
      {
        typedef typename iterator_traits<_ForwardIterator>::value_type
  	_ValueType;
        // trivial types can have deleted assignment
--- 902,918 ----
    // __uninitialized_default
    // Fills [first, last) with value-initialized value_types.
    template<typename _ForwardIterator>
!     _GLIBCXX20_CONSTEXPR
      inline void
      __uninitialized_default(_ForwardIterator __first,
  			    _ForwardIterator __last)
      {
+ #ifdef __cpp_lib_is_constant_evaluated
+       if (std::is_constant_evaluated())
+ 	return __uninitialized_default_1<false>::
+ 		 __uninit_default(__first, __last);
+ #endif
+ 
        typedef typename iterator_traits<_ForwardIterator>::value_type
  	_ValueType;
        // trivial types can have deleted assignment
diff -Nrcpad gcc-15-20250705/libstdc++-v3/include/std/span gcc-15-20250712/libstdc++-v3/include/std/span
*** gcc-15-20250705/libstdc++-v3/include/std/span	Sat Jul  5 22:32:33 2025
--- gcc-15-20250712/libstdc++-v3/include/std/span	Sat Jul 12 22:33:41 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 376,382 ****
  	  else
  	    static_assert(_Count <= extent);
  	  using _Sp = span<element_type, _Count>;
! 	  return _Sp{ _SizedPtr{this->data()} };
  	}
  
        [[nodiscard]]
--- 376,382 ----
  	  else
  	    static_assert(_Count <= extent);
  	  using _Sp = span<element_type, _Count>;
! 	  return _Sp(_SizedPtr{this->data()});
  	}
  
        [[nodiscard]]
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 384,390 ****
        first(size_type __count) const noexcept
        {
  	__glibcxx_assert(__count <= size());
! 	return { this->data(), __count };
        }
  
        template<size_t _Count>
--- 384,390 ----
        first(size_type __count) const noexcept
        {
  	__glibcxx_assert(__count <= size());
! 	return span<element_type>(this->data(), __count);
        }
  
        template<size_t _Count>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 397,403 ****
  	  else
  	    static_assert(_Count <= extent);
  	  using _Sp = span<element_type, _Count>;
! 	  return _Sp{ _SizedPtr{this->data() + (this->size() - _Count)} };
  	}
  
        [[nodiscard]]
--- 397,403 ----
  	  else
  	    static_assert(_Count <= extent);
  	  using _Sp = span<element_type, _Count>;
! 	  return _Sp(_SizedPtr{this->data() + (this->size() - _Count)});
  	}
  
        [[nodiscard]]
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 405,411 ****
        last(size_type __count) const noexcept
        {
  	__glibcxx_assert(__count <= size());
! 	return { this->data() + (this->size() - __count), __count };
        }
  
        template<size_t _Offset, size_t _Count = dynamic_extent>
--- 405,412 ----
        last(size_type __count) const noexcept
        {
  	__glibcxx_assert(__count <= size());
! 	return span<element_type>(this->data() + (this->size() - __count),
! 				  __count);
        }
  
        template<size_t _Offset, size_t _Count = dynamic_extent>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 424,430 ****
  	  using _Sp = span<element_type, _S_subspan_extent<_Offset, _Count>()>;
  
  	  if constexpr (_Count == dynamic_extent)
! 	    return _Sp{ this->data() + _Offset, this->size() - _Offset };
  	  else
  	    {
  	      if constexpr (_Extent == dynamic_extent)
--- 425,431 ----
  	  using _Sp = span<element_type, _S_subspan_extent<_Offset, _Count>()>;
  
  	  if constexpr (_Count == dynamic_extent)
! 	    return _Sp(this->data() + _Offset, this->size() - _Offset);
  	  else
  	    {
  	      if constexpr (_Extent == dynamic_extent)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 437,443 ****
  		  static_assert(_Count <= extent);
  		  static_assert(_Count <= (extent - _Offset));
  		}
! 	      return _Sp{ _SizedPtr{this->data() + _Offset} };
  	    }
  	}
  
--- 438,444 ----
  		  static_assert(_Count <= extent);
  		  static_assert(_Count <= (extent - _Offset));
  		}
! 	      return _Sp(_SizedPtr{this->data() + _Offset});
  	    }
  	}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 454,460 ****
  	    __glibcxx_assert(__count <= size());
  	    __glibcxx_assert(__offset + __count <= size());
  	  }
! 	return {this->data() + __offset, __count};
        }
  
      private:
--- 455,461 ----
  	    __glibcxx_assert(__count <= size());
  	    __glibcxx_assert(__offset + __count <= size());
  	  }
! 	return span<element_type>(this->data() + __offset, __count);
        }
  
      private:
diff -Nrcpad gcc-15-20250705/libstdc++-v3/src/c++17/memory_resource.cc gcc-15-20250712/libstdc++-v3/src/c++17/memory_resource.cc
*** gcc-15-20250705/libstdc++-v3/src/c++17/memory_resource.cc	Sat Jul  5 22:32:33 2025
--- gcc-15-20250712/libstdc++-v3/src/c++17/memory_resource.cc	Sat Jul 12 22:33:41 2025
*************** namespace pmr
*** 182,189 ****
    // versions will not use this symbol.
    monotonic_buffer_resource::~monotonic_buffer_resource() { release(); }
  
!   namespace {
! 
    // aligned_size<N> stores the size and alignment of a memory allocation.
    // The size must be a multiple of N, leaving the low log2(N) bits free
    // to store the base-2 logarithm of the alignment.
--- 182,189 ----
    // versions will not use this symbol.
    monotonic_buffer_resource::~monotonic_buffer_resource() { release(); }
  
! namespace
! {
    // aligned_size<N> stores the size and alignment of a memory allocation.
    // The size must be a multiple of N, leaving the low log2(N) bits free
    // to store the base-2 logarithm of the alignment.
*************** namespace pmr
*** 221,227 ****
      return (n + alignment - 1) & ~(alignment - 1);
    }
  
!   } // namespace
  
    // Memory allocated by the upstream resource is managed in a linked list
    // of _Chunk objects. A _Chunk object recording the size and alignment of
--- 221,227 ----
      return (n + alignment - 1) & ~(alignment - 1);
    }
  
! } // namespace
  
    // Memory allocated by the upstream resource is managed in a linked list
    // of _Chunk objects. A _Chunk object recording the size and alignment of
*************** namespace pmr
*** 307,314 ****
  
    // Helper types for synchronized_pool_resource & unsynchronized_pool_resource
  
!   namespace {
! 
    // Simple bitset with runtime size.
    // Tracks which blocks in a pool chunk are used/unused.
    struct bitset
--- 307,314 ----
  
    // Helper types for synchronized_pool_resource & unsynchronized_pool_resource
  
! namespace
! {
    // Simple bitset with runtime size.
    // Tracks which blocks in a pool chunk are used/unused.
    struct bitset
*************** namespace pmr
*** 636,642 ****
  
    static_assert(sizeof(big_block) == (2 * sizeof(void*)));
  
!   } // namespace
  
    // A pool that serves blocks of a particular size.
    // Each pool manages a number of chunks.
--- 636,642 ----
  
    static_assert(sizeof(big_block) == (2 * sizeof(void*)));
  
! } // namespace
  
    // A pool that serves blocks of a particular size.
    // Each pool manages a number of chunks.
*************** namespace pmr
*** 868,874 ****
      using big_block::big_block;
    };
  
!   namespace {
  
    constexpr size_t pool_sizes[] = {
        8, 16, 24,
--- 868,883 ----
      using big_block::big_block;
    };
  
! namespace
! {
!   // N.B. it is important that we don't skip any power of two sizes if there
!   // is a non-power of two size between them, e.g. must not have pool sizes
!   // of 24 and 40 without having a pool size of 32. Otherwise an allocation
!   // of 32 bytes with alignment 16 would choose the 40-byte pool which is not
!   // correctly aligned for 16-byte alignment. It would be OK (but suboptimal)
!   // to have no pool of size 32 if we have pool sizes of 16 and 64 and no
!   // non-power of two sizes between those, because the example of (32, 16)
!   // would choose the 64-byte pool, which would be correctly aligned.
  
    constexpr size_t pool_sizes[] = {
        8, 16, 24,
*************** namespace pmr
*** 983,989 ****
    using exclusive_lock = lock_guard<shared_mutex>;
  #endif
  
!   } // namespace
  
    __pool_resource::
    __pool_resource(const pool_options& opts, memory_resource* upstream)
--- 992,998 ----
    using exclusive_lock = lock_guard<shared_mutex>;
  #endif
  
! } // namespace
  
    __pool_resource::
    __pool_resource(const pool_options& opts, memory_resource* upstream)
*************** namespace pmr
*** 1075,1086 ****
      return p;
    }
  
  #ifdef _GLIBCXX_HAS_GTHREADS
    // synchronized_pool_resource members.
  
    /* Notes on implementation and thread safety:
     *
!    * Each synchronized_pool_resource manages an linked list of N+1 _TPools
     * objects, where N is the number of threads using the pool resource.
     * Each _TPools object has its own set of pools, with their own chunks.
     * The first element of the list, _M_tpools[0], can be used by any thread.
--- 1084,1116 ----
      return p;
    }
  
+   // Determine the appropriate allocation size, rounding up to a multiple
+   // of the alignment if needed.
+   static inline size_t
+   choose_block_size(size_t bytes, size_t alignment)
+   {
+     if (bytes == 0) [[unlikely]]
+       return alignment;
+ 
+     // Use bit_ceil in case alignment is invalid (i.e. not a power of two).
+     size_t mask = std::__bit_ceil(alignment) - 1;
+     // Round up to a multiple of alignment.
+     size_t block_size = (bytes + mask) & ~mask;
+ 
+     if (block_size >= bytes) [[likely]]
+       return block_size;
+ 
+     // Wrapped around to zero, bytes must have been impossibly large.
+     return numeric_limits<size_t>::max();
+   }
+ 
+ 
  #ifdef _GLIBCXX_HAS_GTHREADS
    // synchronized_pool_resource members.
  
    /* Notes on implementation and thread safety:
     *
!    * Each synchronized_pool_resource manages a linked list of N+1 _TPools
     * objects, where N is the number of threads using the pool resource.
     * Each _TPools object has its own set of pools, with their own chunks.
     * The first element of the list, _M_tpools[0], can be used by any thread.
*************** namespace pmr
*** 1247,1253 ****
    synchronized_pool_resource::
    do_allocate(size_t bytes, size_t alignment)
    {
!     const auto block_size = std::max(bytes, alignment);
      const pool_options opts = _M_impl._M_opts;
      if (block_size <= opts.largest_required_pool_block)
        {
--- 1277,1283 ----
    synchronized_pool_resource::
    do_allocate(size_t bytes, size_t alignment)
    {
!     const auto block_size = choose_block_size(bytes, alignment);
      const pool_options opts = _M_impl._M_opts;
      if (block_size <= opts.largest_required_pool_block)
        {
*************** namespace pmr
*** 1294,1300 ****
    synchronized_pool_resource::
    do_deallocate(void* p, size_t bytes, size_t alignment)
    {
!     size_t block_size = std::max(bytes, alignment);
      if (block_size <= _M_impl._M_opts.largest_required_pool_block)
        {
  	const ptrdiff_t index = pool_index(block_size, _M_impl._M_npools);
--- 1324,1330 ----
    synchronized_pool_resource::
    do_deallocate(void* p, size_t bytes, size_t alignment)
    {
!     size_t block_size = choose_block_size(bytes, alignment);
      if (block_size <= _M_impl._M_opts.largest_required_pool_block)
        {
  	const ptrdiff_t index = pool_index(block_size, _M_impl._M_npools);
*************** namespace pmr
*** 1453,1459 ****
    void*
    unsynchronized_pool_resource::do_allocate(size_t bytes, size_t alignment)
    {
!     const auto block_size = std::max(bytes, alignment);
      if (block_size <= _M_impl._M_opts.largest_required_pool_block)
        {
  	// Recreate pools if release() has been called:
--- 1483,1489 ----
    void*
    unsynchronized_pool_resource::do_allocate(size_t bytes, size_t alignment)
    {
!     const auto block_size = choose_block_size(bytes, alignment);
      if (block_size <= _M_impl._M_opts.largest_required_pool_block)
        {
  	// Recreate pools if release() has been called:
*************** namespace pmr
*** 1470,1476 ****
    unsynchronized_pool_resource::
    do_deallocate(void* p, size_t bytes, size_t alignment)
    {
!     size_t block_size = std::max(bytes, alignment);
      if (block_size <= _M_impl._M_opts.largest_required_pool_block)
        {
  	if (auto pool = _M_find_pool(block_size))
--- 1500,1506 ----
    unsynchronized_pool_resource::
    do_deallocate(void* p, size_t bytes, size_t alignment)
    {
!     size_t block_size = choose_block_size(bytes, alignment);
      if (block_size <= _M_impl._M_opts.largest_required_pool_block)
        {
  	if (auto pool = _M_find_pool(block_size))
diff -Nrcpad gcc-15-20250705/libstdc++-v3/testsuite/20_util/synchronized_pool_resource/118681.cc gcc-15-20250712/libstdc++-v3/testsuite/20_util/synchronized_pool_resource/118681.cc
*** gcc-15-20250705/libstdc++-v3/testsuite/20_util/synchronized_pool_resource/118681.cc	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/libstdc++-v3/testsuite/20_util/synchronized_pool_resource/118681.cc	Sat Jul 12 22:33:42 2025
***************
*** 0 ****
--- 1,6 ----
+ // { dg-do run { target c++17 } }
+ // { dg-require-gthreads "" }
+ // Bug 118681 - unsynchronized_pool_resource may fail to respect alignment
+ 
+ #define RESOURCE std::pmr::synchronized_pool_resource
+ #include "../unsynchronized_pool_resource/118681.cc"
diff -Nrcpad gcc-15-20250705/libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/118681.cc gcc-15-20250712/libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/118681.cc
*** gcc-15-20250705/libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/118681.cc	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/118681.cc	Sat Jul 12 22:33:42 2025
***************
*** 0 ****
--- 1,58 ----
+ // { dg-do run { target c++17 } }
+ // Bug 118681 - unsynchronized_pool_resource may fail to respect alignment
+ 
+ #include <memory_resource>
+ #include <cstdio>
+ #include <testsuite_hooks.h>
+ 
+ #ifndef RESOURCE
+ # define RESOURCE std::pmr::unsynchronized_pool_resource
+ #endif
+ 
+ bool any_misaligned = false;
+ 
+ bool
+ is_aligned(void* p, [[maybe_unused]] std::size_t size, std::size_t alignment)
+ {
+   const bool misaligned = reinterpret_cast<std::uintptr_t>(p) % alignment;
+ #ifdef DEBUG
+   std::printf("allocate(%2zu, %2zu): %p is aligned %scorrectly\n",
+ 	      size, alignment, p, misaligned ? "in" : "");
+   any_misaligned |= misaligned;
+   return true;
+ #endif
+   return ! misaligned;
+ }
+ 
+ void
+ test_alignment(std::pmr::memory_resource& res, bool dealloc)
+ {
+   for (std::size_t alignment : { 8, 16, 32, 64 })
+   {
+     for (std::size_t size : { 9, 12, 24, 40, 48, 56, 72 })
+     {
+       void* p1 = res.allocate(size, alignment);
+       void* p2 = res.allocate(size, alignment);
+ 
+       VERIFY( is_aligned(p1, size, alignment) );
+       VERIFY( is_aligned(p2, size, alignment) );
+ 
+       if (dealloc)
+       {
+ 	res.deallocate(p1, size, alignment);
+ 	res.deallocate(p2, size, alignment);
+       }
+     }
+   }
+ }
+ 
+ int main()
+ {
+   RESOURCE res;
+   test_alignment(res, true);
+   res.release();
+   test_alignment(res, false);
+   res.release();
+ 
+   VERIFY( ! any_misaligned );
+ }
diff -Nrcpad gcc-15-20250705/libstdc++-v3/testsuite/23_containers/span/120997.cc gcc-15-20250712/libstdc++-v3/testsuite/23_containers/span/120997.cc
*** gcc-15-20250705/libstdc++-v3/testsuite/23_containers/span/120997.cc	Thu Jan  1 00:00:00 1970
--- gcc-15-20250712/libstdc++-v3/testsuite/23_containers/span/120997.cc	Sat Jul 12 22:33:43 2025
***************
*** 0 ****
--- 1,46 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <span>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test_first()
+ {
+   bool arr[5];
+   std::span<const bool> s(arr);
+   std::span<const bool> s2 = s.first(5);
+   VERIFY( s2.data() == s.data() );
+   std::span<const bool> s3 = s.first<5>();
+   VERIFY( s3.data() == s.data() );
+ }
+ 
+ void
+ test_last()
+ {
+   bool arr[5];
+   std::span<const bool> s(arr);
+   std::span<const bool> s2 = s.last(5);
+   VERIFY( s2.data() == s.data() );
+   std::span<const bool> s3 = s.last<5>();
+   VERIFY( s3.data() == s.data() );
+ }
+ 
+ void
+ test_subspan()
+ {
+   bool arr[5];
+   std::span<const bool> s(arr);
+   std::span<const bool> s2 = s.subspan(0, 5);
+   VERIFY( s2.data() == s.data() );
+   std::span<const bool> s3 = s.subspan<0>();
+   VERIFY( s3.data() == s.data() );
+   std::span<const bool> s4 = s.subspan<0, 5>();
+   VERIFY( s4.data() == s.data() );
+ }
+ 
+ int main()
+ {
+   test_first();
+   test_last();
+   test_subspan();
+ }
