diff -Nrcpad gcc-14-20251114/LAST_UPDATED gcc-14-20251121/LAST_UPDATED
*** gcc-14-20251114/LAST_UPDATED	Fri Nov 14 22:35:10 2025
--- gcc-14-20251121/LAST_UPDATED	Fri Nov 21 22:33:00 2025
***************
*** 1 ****
! Obtained from git: releases/gcc-14 revision 0c57a97066ceea1713a66a9ac9bc982c5941d1e7
--- 1 ----
! Obtained from git: releases/gcc-14 revision 6725c41516964cc5fcce6578f35f145c0caf2edc
diff -Nrcpad gcc-14-20251114/MD5SUMS gcc-14-20251121/MD5SUMS
*** gcc-14-20251114/MD5SUMS	Fri Nov 14 22:35:21 2025
--- gcc-14-20251121/MD5SUMS	Fri Nov 21 22:33:05 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-14-20251114.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-14-20251121.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
*************** fc9280b02bc68e4fb1ef8d51ccc25061  Change
*** 23,29 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 7527767ba0ac82b636f7863402568d02  LAST_UPDATED
  1671040823f8eb8436a06fdd18065e02  MAINTAINERS
  304c3887135aefa27c21292ec585b0a3  Makefile.def
  8dd93fbf2e32bcbd2faba10e3b8ba2b0  Makefile.in
--- 23,29 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! c9e52528af5481336bee3d9352d74450  LAST_UPDATED
  1671040823f8eb8436a06fdd18065e02  MAINTAINERS
  304c3887135aefa27c21292ec585b0a3  Makefile.def
  8dd93fbf2e32bcbd2faba10e3b8ba2b0  Makefile.in
*************** bc7394806417778d77541ba1ec0e4a70  gcc/BA
*** 505,511 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! a6e1a2c4951d3f8fb59af193ec7ebae2  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 505,511 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 451bf795b4fca62fc0d0f53b98d20dc6  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 541,547 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 8a16ecd969439fb368cc0dbdaef7f853  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 541,547 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! b9969bb2845fe8fa9aa55515a6f7a417  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ea6cc43b3fa3313db4228947eed2152e  gcc/co
*** 4307,4313 ****
  3ce5af4b5c069929ba519548d5342e90  gcc/config/loongarch/loongarch-protos.h
  3b7b410fd2ede1c56c692fa390a8d415  gcc/config/loongarch/loongarch-str.h
  2088d1b3164d3464806a7627d2fd6e52  gcc/config/loongarch/loongarch-tune.h
! 00a0857935bbadfe88dc1b06bb80ec4f  gcc/config/loongarch/loongarch.cc
  39c8662694bff1c4d52f90cba43e5048  gcc/config/loongarch/loongarch.h
  979b7bb4986f91fe92c3ac05a83f249c  gcc/config/loongarch/loongarch.md
  b62396c60e7bd1b4de8956c5869d45f2  gcc/config/loongarch/loongarch.opt
--- 4307,4313 ----
  3ce5af4b5c069929ba519548d5342e90  gcc/config/loongarch/loongarch-protos.h
  3b7b410fd2ede1c56c692fa390a8d415  gcc/config/loongarch/loongarch-str.h
  2088d1b3164d3464806a7627d2fd6e52  gcc/config/loongarch/loongarch-tune.h
! cb2d81b4311645ba3a28a86167631fb3  gcc/config/loongarch/loongarch.cc
  39c8662694bff1c4d52f90cba43e5048  gcc/config/loongarch/loongarch.h
  979b7bb4986f91fe92c3ac05a83f249c  gcc/config/loongarch/loongarch.md
  b62396c60e7bd1b4de8956c5869d45f2  gcc/config/loongarch/loongarch.opt
*************** bcb568abf327b00f131bad9c9f7e7bb3  gcc/do
*** 5769,5775 ****
  0d7cad95038d3ab60de21c0b6bf9d5f4  gcc/doc/cppinternals.texi
  2d634d06b732b28d386a9095438628af  gcc/doc/cppopts.texi
  ac6062ca0cac2513de84bff3633d1352  gcc/doc/cppwarnopts.texi
! d1c2589a50ae1fa35028b6b9eb3ebc21  gcc/doc/extend.texi
  36d2f8d35ab67c1ac73a3efd75a38aac  gcc/doc/fragments.texi
  b5f11d19f8c6228987f197fa8d65a9a3  gcc/doc/frontends.texi
  7040b312fc54f9359916634c463730b1  gcc/doc/gcc.texi
--- 5769,5775 ----
  0d7cad95038d3ab60de21c0b6bf9d5f4  gcc/doc/cppinternals.texi
  2d634d06b732b28d386a9095438628af  gcc/doc/cppopts.texi
  ac6062ca0cac2513de84bff3633d1352  gcc/doc/cppwarnopts.texi
! 35f3f8ea97985d5057fd6e39a07d13f0  gcc/doc/extend.texi
  36d2f8d35ab67c1ac73a3efd75a38aac  gcc/doc/fragments.texi
  b5f11d19f8c6228987f197fa8d65a9a3  gcc/doc/frontends.texi
  7040b312fc54f9359916634c463730b1  gcc/doc/gcc.texi
*************** a07c89837c969ab21785ed67be67ad49  gcc/lt
*** 6449,6456 ****
  f41f3240af59c920785f7ad7373f06c9  gcc/lto-streamer-out.cc
  2916ac789715a6c1398f1322b6b937db  gcc/lto-streamer.cc
  5c0abe5215dcb405391bf4047b52d8c5  gcc/lto-streamer.h
! 3c7b65559567afcec05f5a93a399e84f  gcc/lto-wrapper.cc
! b81151efdc86c94471d85d68fe1b7ba8  gcc/lto/ChangeLog
  b32abe0dfb9c9271f0bda635d92fa0d1  gcc/lto/Make-lang.in
  9f59490a66de9aa5822b069eef35b0ec  gcc/lto/common.cc
  770a74217f81f6124a1081aad362ee00  gcc/lto/common.h
--- 6449,6456 ----
  f41f3240af59c920785f7ad7373f06c9  gcc/lto-streamer-out.cc
  2916ac789715a6c1398f1322b6b937db  gcc/lto-streamer.cc
  5c0abe5215dcb405391bf4047b52d8c5  gcc/lto-streamer.h
! dfc5bd8804cb8c3a60dee7d8eeafccdb  gcc/lto-wrapper.cc
! 21e82f241fdba5d5f79e33e835fb9199  gcc/lto/ChangeLog
  b32abe0dfb9c9271f0bda635d92fa0d1  gcc/lto/Make-lang.in
  9f59490a66de9aa5822b069eef35b0ec  gcc/lto/common.cc
  770a74217f81f6124a1081aad362ee00  gcc/lto/common.h
*************** ae0dba9d0013e4c8cedcdd03afa46f86  gcc/lt
*** 6458,6475 ****
  ca7eb1cb6f46e46d89b0bd2d24fa7224  gcc/lto/lang-specs.h
  3d17fd327034a3b2340ce163e802bbfc  gcc/lto/lang.opt
  e09c982f34fcc53d88fb9b974a77d569  gcc/lto/lang.opt.urls
! a24f36ddd07ecc2f8d99fe518f7f69c7  gcc/lto/lto-common.cc
  cae920ee0ecb9f75f85298db508074be  gcc/lto/lto-common.h
  2ff531281d36cf4cb5ebf9d9bfa44d83  gcc/lto/lto-dump.cc
  9371b719ce0fc231f11fc9f406670e0d  gcc/lto/lto-lang.cc
! 7e0d46f2934717756ee9c73aeb0e9c32  gcc/lto/lto-object.cc
  139ffa7af7bcb2725f13712054826d61  gcc/lto/lto-partition.cc
  bc2082d166bc49e5fde949d6a3b20250  gcc/lto/lto-partition.h
  fc34da8b400831ec19b6560f82197128  gcc/lto/lto-symtab.cc
  1027da9d97d59eb02c9380864aa7f88f  gcc/lto/lto-symtab.h
  b6f8f59d247cdb7bbe7ca9c4e3d5aed5  gcc/lto/lto-tree.h
  45c9f57e8b2385b28db0bf87f25f8ffb  gcc/lto/lto.cc
! b87a73403ed413be57acb8b88a00edbf  gcc/lto/lto.h
  a12e66ceee57af9bf581b69a6bc80391  gcc/m2/COPYING.FDL
  ddf5e06ee9ecc65f914a821be9c5d30a  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
--- 6458,6475 ----
  ca7eb1cb6f46e46d89b0bd2d24fa7224  gcc/lto/lang-specs.h
  3d17fd327034a3b2340ce163e802bbfc  gcc/lto/lang.opt
  e09c982f34fcc53d88fb9b974a77d569  gcc/lto/lang.opt.urls
! fc269aa5460e53c582ca9ca821182310  gcc/lto/lto-common.cc
  cae920ee0ecb9f75f85298db508074be  gcc/lto/lto-common.h
  2ff531281d36cf4cb5ebf9d9bfa44d83  gcc/lto/lto-dump.cc
  9371b719ce0fc231f11fc9f406670e0d  gcc/lto/lto-lang.cc
! dbee5317908b4a76bfee54df4fd004cb  gcc/lto/lto-object.cc
  139ffa7af7bcb2725f13712054826d61  gcc/lto/lto-partition.cc
  bc2082d166bc49e5fde949d6a3b20250  gcc/lto/lto-partition.h
  fc34da8b400831ec19b6560f82197128  gcc/lto/lto-symtab.cc
  1027da9d97d59eb02c9380864aa7f88f  gcc/lto/lto-symtab.h
  b6f8f59d247cdb7bbe7ca9c4e3d5aed5  gcc/lto/lto-tree.h
  45c9f57e8b2385b28db0bf87f25f8ffb  gcc/lto/lto.cc
! bb855e29ca2e48b2775ddf10578600ab  gcc/lto/lto.h
  a12e66ceee57af9bf581b69a6bc80391  gcc/m2/COPYING.FDL
  ddf5e06ee9ecc65f914a821be9c5d30a  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
*************** e8a9eb01b9451a357155e7152df1c669  gcc/ta
*** 8061,8067 ****
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 47307e35e4d0e6294034b891f4bb4292  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 8061,8067 ----
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 7581a7ff538108d0faf5aa9fa31cd0d4  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** a1748e20d9862396a285906364208f44  gcc/te
*** 45748,45753 ****
--- 45748,45763 ----
  9f07bf819862bc85bb8767d97947d837  gcc/testsuite/gcc.dg/lto/pr113907_1.c
  4d872eeace42ef5001147db36f0eb548  gcc/testsuite/gcc.dg/lto/pr113907_2.c
  d043bebe314f4799a1f686632b791cca  gcc/testsuite/gcc.dg/lto/pr115815_0.c
+ f5f860d71dee47b53b433d6f33223758  gcc/testsuite/gcc.dg/lto/pr122515_0.c
+ 42ad058eb75d3c988533e8f8eecd45c5  gcc/testsuite/gcc.dg/lto/pr122515_1.c
+ c8348d97dcd57b983e2c4c696a5e8450  gcc/testsuite/gcc.dg/lto/pr122515_2.c
+ bc6aab4d748ab26c406bcfcfd94e43f4  gcc/testsuite/gcc.dg/lto/pr122515_3.c
+ b58dd1aaa3132751d46233b1e6a00a3e  gcc/testsuite/gcc.dg/lto/pr122515_4.c
+ e93496b3dab62466b11fccc4eb64033f  gcc/testsuite/gcc.dg/lto/pr122515_5.c
+ ce39b21091008775415dbe099db0aaf5  gcc/testsuite/gcc.dg/lto/pr122515_6.c
+ 7f03e9f210325e44859aafac7ad2f239  gcc/testsuite/gcc.dg/lto/pr122515_7.c
+ 6028a2dec4dfcb2bf14d8b228fb95959  gcc/testsuite/gcc.dg/lto/pr122515_8.c
+ ba260514a6f9ba02270018e5ccb3fc9c  gcc/testsuite/gcc.dg/lto/pr122515_9.c
  5192817b2492ca93ffadce3b4a5e4794  gcc/testsuite/gcc.dg/lto/pr27898_0.c
  c5f48897247dfaec60df4e32beffcd8e  gcc/testsuite/gcc.dg/lto/pr27898_1.c
  2ad724786bc4b555a7f31e8b3bf164b6  gcc/testsuite/gcc.dg/lto/pr28706_0.c
*************** dde2cba27bc4292492e4c0dd492a70e0  gcc/te
*** 78501,78506 ****
--- 78511,78518 ----
  359760e5160f4b52d2fa349806589a0d  gcc/testsuite/gcc.target/loongarch/pr121064.c
  acf1fac916847c2064b8d2bbb6535828  gcc/testsuite/gcc.target/loongarch/pr121542.c
  4fb67de6ceaa4d3d0dfff318541b470b  gcc/testsuite/gcc.target/loongarch/pr122097.c
+ 0626ac54385b7d00394be7a0b09850a1  gcc/testsuite/gcc.target/loongarch/pr122695-1.c
+ fb640df1e5eb969859e5c360f608dec4  gcc/testsuite/gcc.target/loongarch/pr122695-2.c
  3adba2a8ae6f671eb22ec8228777c1ac  gcc/testsuite/gcc.target/loongarch/prolog-opt.c
  1bfa30f99dc5f04f569fbff68640ab19  gcc/testsuite/gcc.target/loongarch/recip-divf.c
  dfa82d46bae04856dd91309f03684574  gcc/testsuite/gcc.target/loongarch/recip-sqrtf.c
*************** b7777c6604106297693e31038efb5ae1  gcc/te
*** 101385,101390 ****
--- 101397,101405 ----
  adc7e9976dd3bb424c92c2d7d3df32ed  gcc/testsuite/gfortran.fortran-torture/execute/where_8.f90
  bc764eca2f460bc6fb657fb675420237  gcc/testsuite/gfortran.fortran-torture/execute/write_a_1.f90
  eabee42e1a561616023ffd1f4d1a64e2  gcc/testsuite/gfortran.fortran-torture/execute/write_logical.f90
+ e37afcf68e701a2324e777ab5f6054bf  gcc/testsuite/gfortran.target/aarch64/aarch64.exp
+ f49a9e5ed9144077a6174c71610d8918  gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90
+ 6890252516b3245a15477e317869c38e  gcc/testsuite/gfortran.target/aarch64/pr122408_2.f90
  ae00a4e2372b755ec611b96aaff6a49b  gcc/testsuite/gfortran.target/riscv/rvv/pr111395.f90
  284fdebd0dafabcd770080ec38c8109a  gcc/testsuite/gfortran.target/riscv/rvv/pr111566.f90
  803fa495544cb97b2d47fa3c10b273ce  gcc/testsuite/gfortran.target/riscv/rvv/pr118182.f
*************** ea1a8984df21eb7b429a00bc3d0a99c7  gcc/te
*** 108210,108216 ****
  c4d8ec89484f8330ae0008d131fedf28  gcc/testsuite/lib/go-torture.exp
  192f15a6eb39416f8b8e16eb34ed9a7e  gcc/testsuite/lib/go.exp
  4818c4d4e4a63feda289f71aa5a2d3db  gcc/testsuite/lib/hwasan-dg.exp
! 484d239d5c61861001373c287746fbce  gcc/testsuite/lib/lto.exp
  d5c788891580183c0162d61bee2606c9  gcc/testsuite/lib/mike-g++.exp
  7b1a3e5d995ace232fab35f5c2bc144d  gcc/testsuite/lib/mike-gcc.exp
  8d644e83696b168db4e275e7aae92821  gcc/testsuite/lib/modules.exp
--- 108225,108231 ----
  c4d8ec89484f8330ae0008d131fedf28  gcc/testsuite/lib/go-torture.exp
  192f15a6eb39416f8b8e16eb34ed9a7e  gcc/testsuite/lib/go.exp
  4818c4d4e4a63feda289f71aa5a2d3db  gcc/testsuite/lib/hwasan-dg.exp
! 9475e0aa30a10d97a49791330297036d  gcc/testsuite/lib/lto.exp
  d5c788891580183c0162d61bee2606c9  gcc/testsuite/lib/mike-g++.exp
  7b1a3e5d995ace232fab35f5c2bc144d  gcc/testsuite/lib/mike-gcc.exp
  8d644e83696b168db4e275e7aae92821  gcc/testsuite/lib/modules.exp
*************** baa0d7c2a79888b8d490ef9ea9bf876b  gcc/tr
*** 110492,110498 ****
  a5c65c0281a1b6faf6652682936ae74e  gcc/tree-vect-loop-manip.cc
  8ebc6d25416138cfe7731f41f4152cbf  gcc/tree-vect-loop.cc
  43f6f3fee20eb715fd451bf19e9bfd4c  gcc/tree-vect-patterns.cc
! 7d8505e37be0d60874402ed24f0b78ff  gcc/tree-vect-slp-patterns.cc
  62afed2a3920f38b0d29565df04b36c8  gcc/tree-vect-slp.cc
  60a84350d394e7a4fc04ea46eb5c240e  gcc/tree-vect-stmts.cc
  795c5280c71f566f4b3e8c7fdcc3b609  gcc/tree-vector-builder.cc
--- 110507,110513 ----
  a5c65c0281a1b6faf6652682936ae74e  gcc/tree-vect-loop-manip.cc
  8ebc6d25416138cfe7731f41f4152cbf  gcc/tree-vect-loop.cc
  43f6f3fee20eb715fd451bf19e9bfd4c  gcc/tree-vect-patterns.cc
! 28617cab8a239cf14b40a71d5bbc169c  gcc/tree-vect-slp-patterns.cc
  62afed2a3920f38b0d29565df04b36c8  gcc/tree-vect-slp.cc
  60a84350d394e7a4fc04ea46eb5c240e  gcc/tree-vect-stmts.cc
  795c5280c71f566f4b3e8c7fdcc3b609  gcc/tree-vector-builder.cc
*************** d828e38384c506bf5e7d5a3c02725a37  libssp
*** 123740,123746 ****
  7bb3c32ba0a48d1cf785305e1b783eb6  libssp/strncpy-chk.c
  a19c79c1d86436e86b0fee41e6cf6b15  libssp/vsnprintf-chk.c
  145156e880b03115b393070d0ed37be3  libssp/vsprintf-chk.c
! a7896fb59ed38b8d8f5400b6f87233cf  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 123755,123761 ----
  7bb3c32ba0a48d1cf785305e1b783eb6  libssp/strncpy-chk.c
  a19c79c1d86436e86b0fee41e6cf6b15  libssp/vsnprintf-chk.c
  145156e880b03115b393070d0ed37be3  libssp/vsprintf-chk.c
! 0d315611a47a97ba52e382dd56c67920  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** e76a68102b94e67b78e5373bb89fba15  libstd
*** 125541,125547 ****
  54ec2d5b20f9b937e2229987d22c5721  libstdc++-v3/src/filesystem/cow-path.cc
  c2201a7e547eb182262da97e2030eca2  libstdc++-v3/src/filesystem/dir-common.h
  341e56d4ba937b489ee52675959f94a5  libstdc++-v3/src/filesystem/dir.cc
! f3e6c6a14976534604a5e5999b6d4e60  libstdc++-v3/src/filesystem/ops-common.h
  31201d2814b587e016161cc37c048c05  libstdc++-v3/src/filesystem/ops.cc
  a54d16a61a8c25de06cdb983ca85e293  libstdc++-v3/src/filesystem/path.cc
  ad6b84b402cc8df4fe7a1e81235f3ea4  libstdc++-v3/src/libbacktrace/Makefile.am
--- 125556,125562 ----
  54ec2d5b20f9b937e2229987d22c5721  libstdc++-v3/src/filesystem/cow-path.cc
  c2201a7e547eb182262da97e2030eca2  libstdc++-v3/src/filesystem/dir-common.h
  341e56d4ba937b489ee52675959f94a5  libstdc++-v3/src/filesystem/dir.cc
! f8e49163f78596ff0ee236eee21299d5  libstdc++-v3/src/filesystem/ops-common.h
  31201d2814b587e016161cc37c048c05  libstdc++-v3/src/filesystem/ops.cc
  a54d16a61a8c25de06cdb983ca85e293  libstdc++-v3/src/filesystem/path.cc
  ad6b84b402cc8df4fe7a1e81235f3ea4  libstdc++-v3/src/libbacktrace/Makefile.am
*************** cecb46fce2cba2e40d35bdb10f5f2047  libstd
*** 132295,132301 ****
  3758fee1ba06fba8ecf9ea5789a4f69d  libstdc++-v3/testsuite/27_io/filesystem/operations/relative.cc
  40ddc534166b73723cb3cf2f17775536  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
  18abd8c8f676eee660331074eeb24b46  libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
! c562c13d312277dd683218b9c8293552  libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc
  3ffca5f28a466d05823facdae80f605d  libstdc++-v3/testsuite/27_io/filesystem/operations/resize_file.cc
  8328a09db3e4efe031a6a2ba359d1c7b  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
  641661017a1404a9d3867cbb09e3b531  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
--- 132310,132316 ----
  3758fee1ba06fba8ecf9ea5789a4f69d  libstdc++-v3/testsuite/27_io/filesystem/operations/relative.cc
  40ddc534166b73723cb3cf2f17775536  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
  18abd8c8f676eee660331074eeb24b46  libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
! 6bbdb113c29cfcb14ce7e4ef8624dbe0  libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc
  3ffca5f28a466d05823facdae80f605d  libstdc++-v3/testsuite/27_io/filesystem/operations/resize_file.cc
  8328a09db3e4efe031a6a2ba359d1c7b  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
  641661017a1404a9d3867cbb09e3b531  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
diff -Nrcpad gcc-14-20251114/gcc/ChangeLog gcc-14-20251121/gcc/ChangeLog
*** gcc-14-20251114/gcc/ChangeLog	Fri Nov 14 22:32:48 2025
--- gcc-14-20251121/gcc/ChangeLog	Fri Nov 21 22:32:18 2025
***************
*** 1,3 ****
--- 1,38 ----
+ 2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/122695
+ 	* config/loongarch/loongarch.cc (loongarch_expand_vec_perm_1):
+ 	Simplify and fix the logic preventing the xvshuf.* unpredictable
+ 	behavior.
+ 
+ 2025-11-18  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	Backported from master:
+ 	2025-11-04  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR lto/122515
+ 	* lto-wrapper.cc (debug_objcopy): Set type of INOFF to int64_t.
+ 	(run_gcc): Set type of FILE_OFFSET to int64_t.
+ 
+ 2025-11-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/122408
+ 	* tree-vect-slp-patterns.cc (vect_validate_multiplication): Cleanup and
+ 	document interface.
+ 	(complex_mul_pattern::matches, complex_fms_pattern::matches): Update to
+ 	new interface.
+ 
+ 2025-11-17  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	Backported from master:
+ 	2025-08-18  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR middle-end/121581
+ 	* doc/extend.texi (__builtin_object_size): Fix example.
+ 
  2025-11-12  Hu, Lin1  <lin1.hu@intel.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20251114/gcc/DATESTAMP gcc-14-20251121/gcc/DATESTAMP
*** gcc-14-20251114/gcc/DATESTAMP	Fri Nov 14 22:32:49 2025
--- gcc-14-20251121/gcc/DATESTAMP	Fri Nov 21 22:32:18 2025
***************
*** 1 ****
! 20251114
--- 1 ----
! 20251121
diff -Nrcpad gcc-14-20251114/gcc/config/loongarch/loongarch.cc gcc-14-20251121/gcc/config/loongarch/loongarch.cc
*** gcc-14-20251114/gcc/config/loongarch/loongarch.cc	Fri Nov 14 22:32:50 2025
--- gcc-14-20251121/gcc/config/loongarch/loongarch.cc	Fri Nov 21 22:32:19 2025
*************** loongarch_expand_vec_perm_1 (rtx operand
*** 8785,8841 ****
    /* Number of elements in the vector.  */
    w = GET_MODE_NUNITS (mode);
  
!   rtx round_data[MAX_VECT_LEN];
!   rtx round_reg, round_data_rtx;
! 
!   if (mode != E_V32QImode)
      {
!       for (int i = 0; i < w; i += 1)
! 	{
! 	  round_data[i] = GEN_INT (0x1f);
! 	}
! 
!       if (mode == E_V4DFmode)
! 	{
! 	  round_data_rtx = gen_rtx_CONST_VECTOR (E_V4DImode,
! 						 gen_rtvec_v (w, round_data));
! 	  round_reg = gen_reg_rtx (E_V4DImode);
! 	}
!       else if (mode == E_V8SFmode)
! 	{
! 
! 	  round_data_rtx = gen_rtx_CONST_VECTOR (E_V8SImode,
! 						 gen_rtvec_v (w, round_data));
! 	  round_reg = gen_reg_rtx (E_V8SImode);
! 	}
!       else
! 	{
! 	  round_data_rtx = gen_rtx_CONST_VECTOR (mode,
! 						 gen_rtvec_v (w, round_data));
! 	  round_reg = gen_reg_rtx (mode);
! 	}
! 
!       emit_move_insn (round_reg, round_data_rtx);
!       switch (mode)
! 	{
! 	case E_V32QImode:
! 	  emit_insn (gen_andv32qi3 (mask, mask, round_reg));
! 	  break;
! 	case E_V16HImode:
! 	  emit_insn (gen_andv16hi3 (mask, mask, round_reg));
! 	  break;
! 	case E_V8SImode:
! 	case E_V8SFmode:
! 	  emit_insn (gen_andv8si3 (mask, mask, round_reg));
! 	  break;
! 	case E_V4DImode:
! 	case E_V4DFmode:
! 	  emit_insn (gen_andv4di3 (mask, mask, round_reg));
! 	  break;
! 	default:
! 	  gcc_unreachable ();
! 	  break;
! 	}
      }
  
    if (mode == V4DImode || mode == V4DFmode)
--- 8785,8797 ----
    /* Number of elements in the vector.  */
    w = GET_MODE_NUNITS (mode);
  
!   /* If we are using xvshuf.*, clamp the selector to avoid unpredictable
!      output.  */
!   if (maskmode != V8SImode && maskmode != V4DImode)
      {
!       rtx t = gen_const_vec_duplicate (maskmode, GEN_INT (0x1f));
!       mask = expand_binop (maskmode, and_optab, mask, t, NULL_RTX, false,
! 			   OPTAB_DIRECT);
      }
  
    if (mode == V4DImode || mode == V4DFmode)
diff -Nrcpad gcc-14-20251114/gcc/doc/extend.texi gcc-14-20251121/gcc/doc/extend.texi
*** gcc-14-20251114/gcc/doc/extend.texi	Fri Nov 14 22:32:50 2025
--- gcc-14-20251121/gcc/doc/extend.texi	Fri Nov 21 22:32:20 2025
*************** is computed.
*** 13872,13878 ****
  
  @smallexample
  struct V @{ char buf1[10]; int b; char buf2[10]; @} var;
! char *p = &var.buf1[1], *q = &var.b;
  
  /* Here the object p points to is var.  */
  assert (__builtin_object_size (p, 0) == sizeof (var) - 1);
--- 13872,13879 ----
  
  @smallexample
  struct V @{ char buf1[10]; int b; char buf2[10]; @} var;
! char *p = &var.buf1[1];
! int *q = &var.b;
  
  /* Here the object p points to is var.  */
  assert (__builtin_object_size (p, 0) == sizeof (var) - 1);
diff -Nrcpad gcc-14-20251114/gcc/lto/ChangeLog gcc-14-20251121/gcc/lto/ChangeLog
*** gcc-14-20251114/gcc/lto/ChangeLog	Fri Nov 14 22:32:51 2025
--- gcc-14-20251121/gcc/lto/ChangeLog	Fri Nov 21 22:32:20 2025
***************
*** 1,3 ****
--- 1,14 ----
+ 2025-11-18  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	Backported from master:
+ 	2025-11-04  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR lto/122515
+ 	* lto.h (lto_section_slot): Set type of START to off_t.
+ 	* lto-common.cc (lto_read_section_data): Adjust.
+ 	* lto-object.cc (lto_obj_file_open): Set type of OFFSET to
+ 	int64_t.
+ 
  2025-05-23  Release Manager
  
  	* GCC 14.3.0 released.
diff -Nrcpad gcc-14-20251114/gcc/lto/lto-common.cc gcc-14-20251121/gcc/lto/lto-common.cc
*** gcc-14-20251114/gcc/lto/lto-common.cc	Fri Nov 14 22:32:51 2025
--- gcc-14-20251121/gcc/lto/lto-common.cc	Fri Nov 21 22:32:20 2025
*************** static size_t page_mask;
*** 2377,2391 ****
  
  static char *
  lto_read_section_data (struct lto_file_decl_data *file_data,
! 		       intptr_t offset, size_t len)
  {
    char *result;
    static int fd = -1;
    static char *fd_name;
  #if LTO_MMAP_IO
!   intptr_t computed_len;
!   intptr_t computed_offset;
!   intptr_t diff;
  #endif
  
    /* Keep a single-entry file-descriptor cache.  The last file we
--- 2377,2391 ----
  
  static char *
  lto_read_section_data (struct lto_file_decl_data *file_data,
! 		       off_t offset, size_t len)
  {
    char *result;
    static int fd = -1;
    static char *fd_name;
  #if LTO_MMAP_IO
!   size_t computed_len;
!   off_t computed_offset;
!   off_t diff;
  #endif
  
    /* Keep a single-entry file-descriptor cache.  The last file we
*************** lto_read_section_data (struct lto_file_d
*** 2418,2426 ****
        page_mask = ~(page_size - 1);
      }
  
!   computed_offset = offset & page_mask;
    diff = offset - computed_offset;
!   computed_len = len + diff;
  
    result = (char *) mmap (NULL, computed_len, PROT_READ, MAP_PRIVATE,
  			  fd, computed_offset);
--- 2418,2432 ----
        page_mask = ~(page_size - 1);
      }
  
!   computed_offset = offset & ((off_t) page_mask);
    diff = offset - computed_offset;
!   if (len > (size_t) (SSIZE_MAX - diff))
!     {
!       fatal_error (input_location, "Cannot map %s: section is too long",
! 		   file_data->file_name);
!       return NULL;
!     }
!   computed_len = (size_t) diff + len;
  
    result = (char *) mmap (NULL, computed_len, PROT_READ, MAP_PRIVATE,
  			  fd, computed_offset);
diff -Nrcpad gcc-14-20251114/gcc/lto/lto-object.cc gcc-14-20251121/gcc/lto/lto-object.cc
*** gcc-14-20251114/gcc/lto/lto-object.cc	Fri Nov 14 22:32:51 2025
--- gcc-14-20251121/gcc/lto/lto-object.cc	Fri Nov 21 22:32:20 2025
*************** lto_file *
*** 69,78 ****
  lto_obj_file_open (const char *filename, bool writable)
  {
    const char *offset_p;
-   long loffset;
    int consumed;
    char *fname;
!   off_t offset;
    struct lto_simple_object *lo;
    const char *errmsg;
    int err;
--- 69,77 ----
  lto_obj_file_open (const char *filename, bool writable)
  {
    const char *offset_p;
    int consumed;
    char *fname;
!   int64_t offset;
    struct lto_simple_object *lo;
    const char *errmsg;
    int err;
*************** lto_obj_file_open (const char *filename,
*** 80,92 ****
    offset_p = strrchr (filename, '@');
    if (offset_p != NULL
        && offset_p != filename
!       && sscanf (offset_p, "@%li%n", &loffset, &consumed) >= 1
        && strlen (offset_p) == (unsigned int) consumed)
      {
        fname = XNEWVEC (char, offset_p - filename + 1);
        memcpy (fname, filename, offset_p - filename);
        fname[offset_p - filename] = '\0';
-       offset = (off_t) loffset;
      }
    else
      {
--- 79,90 ----
    offset_p = strrchr (filename, '@');
    if (offset_p != NULL
        && offset_p != filename
!       && sscanf (offset_p, "@%" PRIi64 "%n", &offset, &consumed) >= 1
        && strlen (offset_p) == (unsigned int) consumed)
      {
        fname = XNEWVEC (char, offset_p - filename + 1);
        memcpy (fname, filename, offset_p - filename);
        fname[offset_p - filename] = '\0';
      }
    else
      {
diff -Nrcpad gcc-14-20251114/gcc/lto/lto.h gcc-14-20251121/gcc/lto/lto.h
*** gcc-14-20251114/gcc/lto/lto.h	Fri Nov 14 22:32:51 2025
--- gcc-14-20251121/gcc/lto/lto.h	Fri Nov 21 22:32:20 2025
*************** extern int lto_link_dump_id, decl_merge_
*** 58,64 ****
  struct lto_section_slot
  {
    const char *name;
!   intptr_t start;
    size_t len;
    struct lto_section_slot *next;
  };
--- 58,64 ----
  struct lto_section_slot
  {
    const char *name;
!   off_t start;
    size_t len;
    struct lto_section_slot *next;
  };
diff -Nrcpad gcc-14-20251114/gcc/lto-wrapper.cc gcc-14-20251121/gcc/lto-wrapper.cc
*** gcc-14-20251114/gcc/lto-wrapper.cc	Fri Nov 14 22:32:51 2025
--- gcc-14-20251121/gcc/lto-wrapper.cc	Fri Nov 21 22:32:20 2025
*************** debug_objcopy (const char *infile, bool
*** 1193,1210 ****
  
    const char *p;
    const char *orig_infile = infile;
!   off_t inoff = 0;
!   long loffset;
    int consumed;
    if ((p = strrchr (infile, '@'))
        && p != infile
!       && sscanf (p, "@%li%n", &loffset, &consumed) >= 1
        && strlen (p) == (unsigned int) consumed)
      {
        char *fname = xstrdup (infile);
        fname[p - infile] = '\0';
        infile = fname;
-       inoff = (off_t) loffset;
      }
    int infd = open (infile, O_RDONLY | O_BINARY);
    if (infd == -1)
--- 1193,1208 ----
  
    const char *p;
    const char *orig_infile = infile;
!   int64_t inoff = 0;
    int consumed;
    if ((p = strrchr (infile, '@'))
        && p != infile
!       && sscanf (p, "@%" PRIi64 "%n", &inoff, &consumed) >= 1
        && strlen (p) == (unsigned int) consumed)
      {
        char *fname = xstrdup (infile);
        fname[p - infile] = '\0';
        infile = fname;
      }
    int infd = open (infile, O_RDONLY | O_BINARY);
    if (infd == -1)
*************** run_gcc (unsigned argc, char *argv[])
*** 1477,1484 ****
      {
        char *p;
        int fd;
!       off_t file_offset = 0;
!       long loffset;
        int consumed;
        char *filename = argv[i];
  
--- 1475,1481 ----
      {
        char *p;
        int fd;
!       int64_t file_offset = 0;
        int consumed;
        char *filename = argv[i];
  
*************** run_gcc (unsigned argc, char *argv[])
*** 1491,1504 ****
  	}
  
        if ((p = strrchr (argv[i], '@'))
! 	  && p != argv[i] 
! 	  && sscanf (p, "@%li%n", &loffset, &consumed) >= 1
  	  && strlen (p) == (unsigned int) consumed)
  	{
  	  filename = XNEWVEC (char, p - argv[i] + 1);
  	  memcpy (filename, argv[i], p - argv[i]);
  	  filename[p - argv[i]] = '\0';
- 	  file_offset = (off_t) loffset;
  	}
        fd = open (filename, O_RDONLY | O_BINARY);
        /* Linker plugin passes -fresolution and -flinker-output options.
--- 1488,1500 ----
  	}
  
        if ((p = strrchr (argv[i], '@'))
! 	  && p != argv[i]
! 	  && sscanf (p, "@%" PRIi64 "%n", &file_offset, &consumed) >= 1
  	  && strlen (p) == (unsigned int) consumed)
  	{
  	  filename = XNEWVEC (char, p - argv[i] + 1);
  	  memcpy (filename, argv[i], p - argv[i]);
  	  filename[p - argv[i]] = '\0';
  	}
        fd = open (filename, O_RDONLY | O_BINARY);
        /* Linker plugin passes -fresolution and -flinker-output options.
*************** cont1:
*** 1779,1798 ****
        for (i = 0; i < num_offload_files; i++)
  	{
  	  char *p;
- 	  long loffset;
  	  int fd, consumed;
! 	  off_t file_offset = 0;
  	  char *filename = offload_argv[i];
  
  	  if ((p = strrchr (offload_argv[i], '@'))
  	      && p != offload_argv[i]
! 	      && sscanf (p, "@%li%n", &loffset, &consumed) >= 1
  	      && strlen (p) == (unsigned int) consumed)
  	    {
  	      filename = XNEWVEC (char, p - offload_argv[i] + 1);
  	      memcpy (filename, offload_argv[i], p - offload_argv[i]);
  	      filename[p - offload_argv[i]] = '\0';
- 	      file_offset = (off_t) loffset;
  	    }
  	  fd = open (filename, O_RDONLY | O_BINARY);
  	  if (fd == -1)
--- 1775,1792 ----
        for (i = 0; i < num_offload_files; i++)
  	{
  	  char *p;
  	  int fd, consumed;
! 	  int64_t file_offset = 0;
  	  char *filename = offload_argv[i];
  
  	  if ((p = strrchr (offload_argv[i], '@'))
  	      && p != offload_argv[i]
! 	      && sscanf (p, "@%" PRIi64 "%n", &file_offset, &consumed) >= 1
  	      && strlen (p) == (unsigned int) consumed)
  	    {
  	      filename = XNEWVEC (char, p - offload_argv[i] + 1);
  	      memcpy (filename, offload_argv[i], p - offload_argv[i]);
  	      filename[p - offload_argv[i]] = '\0';
  	    }
  	  fd = open (filename, O_RDONLY | O_BINARY);
  	  if (fd == -1)
diff -Nrcpad gcc-14-20251114/gcc/testsuite/ChangeLog gcc-14-20251121/gcc/testsuite/ChangeLog
*** gcc-14-20251114/gcc/testsuite/ChangeLog	Fri Nov 14 22:32:51 2025
--- gcc-14-20251121/gcc/testsuite/ChangeLog	Fri Nov 21 22:32:21 2025
***************
*** 1,3 ****
--- 1,43 ----
+ 2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	Backported from master:
+ 	2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/122695
+ 	* gcc.target/loongarch/pr122695-1.c: New test.
+ 	* gcc.target/loongarch/pr122695-2.c: New test.
+ 
+ 2025-11-18  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	Backported from master:
+ 	2025-11-04  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR lto/122515
+ 	* lib/lto.exp (lto-build-archive): New procedure.
+ 	(lto-execute-1): Use it.
+ 	(lto-link-and-maybe-run, lto-get-options-main): Handle ar-link.
+ 	* gcc.dg/lto/pr122515_0.c: New test case.
+ 	* gcc.dg/lto/pr122515_1.c: New file.
+ 	* gcc.dg/lto/pr122515_2.c: Likewise.
+ 	* gcc.dg/lto/pr122515_3.c: Likewise.
+ 	* gcc.dg/lto/pr122515_4.c: Likewise.
+ 	* gcc.dg/lto/pr122515_5.c: Likewise.
+ 	* gcc.dg/lto/pr122515_6.c: Likewise.
+ 	* gcc.dg/lto/pr122515_7.c: Likewise.
+ 	* gcc.dg/lto/pr122515_8.c: Likewise.
+ 	* gcc.dg/lto/pr122515_9.c: Likewise.
+ 
+ 2025-11-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/122408
+ 	* gfortran.target/aarch64/pr122408_1.f90: New test.
+ 	* gfortran.target/aarch64/pr122408_2.f90: New test.
+ 
+ 2025-11-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/122408
+ 	* gfortran.target/aarch64/aarch64.exp: New test.
+ 
  2025-11-12  Hu, Lin1  <lin1.hu@intel.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_0.c gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_0.c
*** gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_0.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_0.c	Fri Nov 21 22:32:25 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-lto-do ar-link } */
+ /* { dg-lto-options { { -flto=auto -ffat-lto-objects } } } */
+ 
+ extern int bar_7 (int);
+ 
+ int main (void)
+ {
+   return bar_7 (42);
+ }
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_1.c gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_1.c
*** gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_1.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_1.c	Fri Nov 21 22:32:25 2025
***************
*** 0 ****
--- 1,12 ----
+ typedef struct {
+   int num;
+   int foo[40000000];
+ } A_1;
+ 
+ A_1 a1_1 = {1};
+ A_1 a2_1 = {2};
+ 
+ int bar_1 (int i)
+ {
+   return i++;
+ }
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_2.c gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_2.c
*** gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_2.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_2.c	Fri Nov 21 22:32:25 2025
***************
*** 0 ****
--- 1,12 ----
+ typedef struct {
+   int num;
+   int foo[40000000];
+ } A_2;
+ 
+ A_2 a1_2 = {1};
+ A_2 a2_2 = {2};
+ 
+ int bar_2 (int i)
+ {
+   return i++;
+ }
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_3.c gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_3.c
*** gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_3.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_3.c	Fri Nov 21 22:32:25 2025
***************
*** 0 ****
--- 1,12 ----
+ typedef struct {
+   int num;
+   int foo[40000000];
+ } A_3;
+ 
+ A_3 a1_3 = {1};
+ A_3 a2_3 = {2};
+ 
+ int bar_3 (int i)
+ {
+   return i++;
+ }
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_4.c gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_4.c
*** gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_4.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_4.c	Fri Nov 21 22:32:25 2025
***************
*** 0 ****
--- 1,12 ----
+ typedef struct {
+   int num;
+   int foo[40000000];
+ } A_4;
+ 
+ A_4 a1_4 = {1};
+ A_4 a2_4 = {2};
+ 
+ int bar_4 (int i)
+ {
+   return i++;
+ }
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_5.c gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_5.c
*** gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_5.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_5.c	Fri Nov 21 22:32:25 2025
***************
*** 0 ****
--- 1,12 ----
+ typedef struct {
+   int num;
+   int foo[40000000];
+ } A_5;
+ 
+ A_5 a1_5 = {1};
+ A_5 a2_5 = {2};
+ 
+ int bar_5 (int i)
+ {
+   return i++;
+ }
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_6.c gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_6.c
*** gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_6.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_6.c	Fri Nov 21 22:32:25 2025
***************
*** 0 ****
--- 1,12 ----
+ typedef struct {
+   int num;
+   int foo[40000000];
+ } A_6;
+ 
+ A_6 a1_6 = {1};
+ A_6 a2_6 = {2};
+ 
+ int bar_6 (int i)
+ {
+   return i++;
+ }
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_7.c gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_7.c
*** gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_7.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_7.c	Fri Nov 21 22:32:25 2025
***************
*** 0 ****
--- 1,12 ----
+ typedef struct {
+   int num;
+   int foo[40000000];
+ } A_7;
+ 
+ A_7 a1_7 = {1};
+ A_7 a2_7 = {2};
+ 
+ int bar_7 (int i)
+ {
+   return i++;
+ }
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_8.c gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_8.c
*** gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_8.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_8.c	Fri Nov 21 22:32:25 2025
***************
*** 0 ****
--- 1,12 ----
+ typedef struct {
+   int num;
+   int foo[40000000];
+ } A_8;
+ 
+ A_8 a1_8 = {1};
+ A_8 a2_8 = {2};
+ 
+ int bar_8 (int i)
+ {
+   return i++;
+ }
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_9.c gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_9.c
*** gcc-14-20251114/gcc/testsuite/gcc.dg/lto/pr122515_9.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gcc.dg/lto/pr122515_9.c	Fri Nov 21 22:32:25 2025
***************
*** 0 ****
--- 1,12 ----
+ typedef struct {
+   int num;
+   int foo[40000000];
+ } A_9;
+ 
+ A_9 a1_9 = {1};
+ A_9 a2_9 = {2};
+ 
+ int bar_9 (int i)
+ {
+   return i++;
+ }
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gcc.target/loongarch/pr122695-1.c gcc-14-20251121/gcc/testsuite/gcc.target/loongarch/pr122695-1.c
*** gcc-14-20251114/gcc/testsuite/gcc.target/loongarch/pr122695-1.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gcc.target/loongarch/pr122695-1.c	Fri Nov 21 22:32:30 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -mlasx" } */
+ /* { dg-require-effective-target loongarch_asx_hw } */
+ 
+ [[gnu::vector_size (32)]] char a, b, c;
+ 
+ [[gnu::noipa]] void
+ test (void)
+ {
+   a = __builtin_shuffle (a, b, c);
+ }
+ 
+ int
+ main (void)
+ {
+   a = (typeof (a)){} + 5;
+   b = (typeof (a)){} + 6;
+   c = (typeof (a)){} + 64;
+   test ();
+   if (a[0] != 5)
+     __builtin_trap ();
+ }
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gcc.target/loongarch/pr122695-2.c gcc-14-20251121/gcc/testsuite/gcc.target/loongarch/pr122695-2.c
*** gcc-14-20251114/gcc/testsuite/gcc.target/loongarch/pr122695-2.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gcc.target/loongarch/pr122695-2.c	Fri Nov 21 22:32:30 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -mlasx" } */
+ /* { dg-require-effective-target loongarch_asx_hw } */
+ 
+ [[gnu::vector_size(32)]] short a, b, c;
+ 
+ [[gnu::noipa]] void
+ test (void)
+ {
+   a = __builtin_shuffle(a, b, c) + c;
+ }
+ 
+ int
+ main (void)
+ {
+   a = (typeof (a)){} + 1;
+   b = (typeof (b)){} + 2;
+   c = (typeof (c)){} + 128;
+   test ();
+   if (a[0] != 129)
+     __builtin_trap ();
+ }
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gfortran.target/aarch64/aarch64.exp gcc-14-20251121/gcc/testsuite/gfortran.target/aarch64/aarch64.exp
*** gcc-14-20251114/gcc/testsuite/gfortran.target/aarch64/aarch64.exp	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gfortran.target/aarch64/aarch64.exp	Fri Nov 21 22:32:45 2025
***************
*** 0 ****
--- 1,45 ----
+ #   Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3 of the License, or
+ # (at your option) any later version.
+ # 
+ # This program is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ # 
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING3.  If not see
+ # <http://www.gnu.org/licenses/>.
+ 
+ # GCC testsuite that uses the `dg.exp' driver.
+ 
+ # Exit immediately if this isn't a aarch64 target.
+ if { ![istarget aarch64*-*-*] } then {
+   return
+ }
+ 
+ # Make sure there is a fortran compiler to test.
+ if { ![check_no_compiler_messages fortran_available assembly {
+ ! Fortran
+ program P
+   stop
+ end program P
+ } ""] } {
+     return
+ }
+ 
+ # Load support procs.
+ load_lib gfortran-dg.exp
+ 
+ # Initialize `dg'.
+ dg-init
+ 
+ # Main loop.
+ gfortran-dg-runtest [lsort \
+    [glob -nocomplain $srcdir/$subdir/*.\[fF\]{,90,95,03,08} ] ] "" ""
+ 
+ # All done.
+ dg-finish
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90 gcc-14-20251121/gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90
*** gcc-14-20251114/gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gfortran.target/aarch64/pr122408_1.f90	Fri Nov 21 22:32:45 2025
***************
*** 0 ****
--- 1,61 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-O2 -march=armv8.3-a" }
+ 
+ subroutine c_add_ab(n, a, c, b)         ! C += A * B
+   use iso_fortran_env, only: real64
+   implicit none
+   !GCC$ ATTRIBUTES noinline :: c_add_ab
+   integer, intent(in) :: n
+   complex(real64), intent(in)    :: a
+   complex(real64), intent(inout) :: c(*)
+   complex(real64), intent(in)    :: b(*)
+   integer :: k
+   do k = 1, n
+     c(k) = c(k) + a * b(k)
+   end do
+ end subroutine c_add_ab
+ 
+ subroutine c_sub_ab(n, a, c, b)         ! C -= A * B
+   use iso_fortran_env, only: real64
+   implicit none
+   !GCC$ ATTRIBUTES noinline :: c_sub_ab
+   integer, intent(in) :: n
+   complex(real64), intent(in)    :: a
+   complex(real64), intent(inout) :: c(*)
+   complex(real64), intent(in)    :: b(*)
+   integer :: k
+   do k = 1, n
+     c(k) = c(k) - a * b(k)
+   end do
+ end subroutine c_sub_ab
+ 
+ subroutine c_add_a_conjb(n, a, c, b)    ! C += A * conj(B)
+   use iso_fortran_env, only: real64
+   implicit none
+   !GCC$ ATTRIBUTES noinline :: c_add_a_conjb
+   integer, intent(in) :: n
+   complex(real64), intent(in)    :: a
+   complex(real64), intent(inout) :: c(*)
+   complex(real64), intent(in)    :: b(*)
+   integer :: k
+   do k = 1, n
+     c(k) = c(k) + a * conjg(b(k))
+   end do
+ end subroutine c_add_a_conjb
+ 
+ subroutine c_sub_a_conjb(n, a, c, b)    ! C -= A * conj(B)
+   use iso_fortran_env, only: real64
+   implicit none
+   !GCC$ ATTRIBUTES noinline :: c_sub_a_conjb
+   integer, intent(in) :: n
+   complex(real64), intent(in)    :: a
+   complex(real64), intent(inout) :: c(*)
+   complex(real64), intent(in)    :: b(*)
+   integer :: k
+   do k = 1, n
+     c(k) = c(k) - a * conjg(b(k))
+   end do
+ end subroutine c_sub_a_conjb
+ 
+ ! { dg-final { scan-assembler-times {fcmla\s+v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #0} 2 } }
+ ! { dg-final { scan-assembler-times {fcmla\s+v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #270} 2 } }
diff -Nrcpad gcc-14-20251114/gcc/testsuite/gfortran.target/aarch64/pr122408_2.f90 gcc-14-20251121/gcc/testsuite/gfortran.target/aarch64/pr122408_2.f90
*** gcc-14-20251114/gcc/testsuite/gfortran.target/aarch64/pr122408_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20251121/gcc/testsuite/gfortran.target/aarch64/pr122408_2.f90	Fri Nov 21 22:32:45 2025
***************
*** 0 ****
--- 1,140 ----
+ ! { dg-do run }
+ ! { dg-additional-options "-O2" }
+ ! { dg-additional-options "-O2 -march=armv8.3-a" { target arm_v8_3a_complex_neon_hw } }
+ 
+ module util
+   use iso_fortran_env, only: real64, int64
+   implicit none
+ contains
+   pure logical function bitwise_eq(x, y)
+     complex(real64), intent(in) :: x, y
+     integer(int64) :: xr, xi, yr, yi
+     xr = transfer(real(x,kind=real64), 0_int64)
+     xi = transfer(aimag(x),             0_int64)
+     yr = transfer(real(y,kind=real64),  0_int64)
+     yi = transfer(aimag(y),              0_int64)
+     bitwise_eq = (xr == yr) .and. (xi == yi)
+   end function bitwise_eq
+ 
+   subroutine check_equal(tag, got, ref, nfail)
+     character(*), intent(in) :: tag
+     complex(real64), intent(in) :: got(:), ref(:)
+     integer, intent(inout) :: nfail
+     integer :: i
+     do i = 1, size(got)
+       if (.not. bitwise_eq(got(i), ref(i))) then
+         nfail = nfail + 1
+         write(*,'(A,": mismatch at i=",I0, "  got=",2ES16.8,"  ref=",2ES16.8)') &
+              trim(tag), i, real(got(i)), aimag(got(i)), real(ref(i)), aimag(ref(i))
+       end if
+     end do
+   end subroutine check_equal
+ end module util
+ 
+ module fcmla_ops
+   use iso_fortran_env, only: real64
+   implicit none
+ contains
+   subroutine c_add_ab(n, a, c, b)         ! C += A * B
+     !GCC$ ATTRIBUTES noinline :: c_add_ab
+     integer, intent(in) :: n
+     complex(real64), intent(in)    :: a
+     complex(real64), intent(inout) :: c(*)
+     complex(real64), intent(in)    :: b(*)
+     integer :: k
+     do k = 1, n
+       c(k) = c(k) + a * b(k)
+     end do
+   end subroutine c_add_ab
+ 
+   subroutine c_sub_ab(n, a, c, b)         ! C -= A * B
+     !GCC$ ATTRIBUTES noinline :: c_sub_ab
+     integer, intent(in) :: n
+     complex(real64), intent(in)    :: a
+     complex(real64), intent(inout) :: c(*)
+     complex(real64), intent(in)    :: b(*)
+     integer :: k
+     do k = 1, n
+       c(k) = c(k) - a * b(k)
+     end do
+   end subroutine c_sub_ab
+ 
+   subroutine c_add_a_conjb(n, a, c, b)    ! C += A * conj(B)
+     !GCC$ ATTRIBUTES noinline :: c_add_a_conjb
+     integer, intent(in) :: n
+     complex(real64), intent(in)    :: a
+     complex(real64), intent(inout) :: c(*)
+     complex(real64), intent(in)    :: b(*)
+     integer :: k
+     do k = 1, n
+       c(k) = c(k) + a * conjg(b(k))
+     end do
+   end subroutine c_add_a_conjb
+ 
+   subroutine c_sub_a_conjb(n, a, c, b)    ! C -= A * conj(B)
+     !GCC$ ATTRIBUTES noinline :: c_sub_a_conjb
+     integer, intent(in) :: n
+     complex(real64), intent(in)    :: a
+     complex(real64), intent(inout) :: c(*)
+     complex(real64), intent(in)    :: b(*)
+     integer :: k
+     do k = 1, n
+       c(k) = c(k) - a * conjg(b(k))
+     end do
+   end subroutine c_sub_a_conjb
+ end module fcmla_ops
+ 
+ program fcmla_accum_pairs
+   use iso_fortran_env, only: real64
+   use util
+   use fcmla_ops
+   implicit none
+ 
+   integer, parameter :: n = 4
+   complex(real64) :: a, b(n), c0(n)
+   complex(real64) :: c_add_ab_got(n),      c_add_ab_ref(n)
+   complex(real64) :: c_sub_ab_got(n),      c_sub_ab_ref(n)
+   complex(real64) :: c_add_conjb_got(n),   c_add_conjb_ref(n)
+   complex(real64) :: c_sub_conjb_got(n),   c_sub_conjb_ref(n)
+   integer :: i, fails
+ 
+   ! Constants (include a signed-zero lane)
+   a    = cmplx( 2.0_real64, -3.0_real64, kind=real64)
+   b(1) = cmplx( 1.5_real64, -2.0_real64, kind=real64)
+   b(2) = cmplx(-4.0_real64,  5.0_real64, kind=real64)
+   b(3) = cmplx(-0.0_real64,  0.0_real64, kind=real64)
+   b(4) = cmplx( 0.25_real64, 3.0_real64, kind=real64)
+ 
+   c0(1) = cmplx( 1.0_real64, -2.0_real64, kind=real64)
+   c0(2) = cmplx( 3.0_real64, -4.0_real64, kind=real64)
+   c0(3) = cmplx(-5.0_real64,  6.0_real64, kind=real64)
+   c0(4) = cmplx( 0.0_real64,  0.0_real64, kind=real64)
+ 
+   ! Run each form
+   c_add_ab_got    = c0; call c_add_ab     (n, a, c_add_ab_got,    b)
+   c_sub_ab_got    = c0; call c_sub_ab     (n, a, c_sub_ab_got,    b)
+   c_add_conjb_got = c0; call c_add_a_conjb(n, a, c_add_conjb_got, b)
+   c_sub_conjb_got = c0; call c_sub_a_conjb(n, a, c_sub_conjb_got, b)
+ 
+   ! Scalar references
+   do i = 1, n
+     c_add_ab_ref(i)    = c0(i) + a * b(i)
+     c_sub_ab_ref(i)    = c0(i) - a * b(i)
+     c_add_conjb_ref(i) = c0(i) + a * conjg(b(i))
+     c_sub_conjb_ref(i) = c0(i) - a * conjg(b(i))
+   end do
+ 
+   ! Bitwise checks
+   fails = 0
+   call check_equal("C +=  A*B       ", c_add_ab_got,    c_add_ab_ref,    fails)
+   call check_equal("C -=  A*B       ", c_sub_ab_got,    c_sub_ab_ref,    fails)
+   call check_equal("C +=  A*conj(B) ", c_add_conjb_got, c_add_conjb_ref, fails)
+   call check_equal("C -=  A*conj(B) ", c_sub_conjb_got, c_sub_conjb_ref, fails)
+ 
+   if (fails == 0) then
+     stop 0
+   else
+     stop 1
+   end if
+ end program fcmla_accum_pairs
+ 
diff -Nrcpad gcc-14-20251114/gcc/testsuite/lib/lto.exp gcc-14-20251121/gcc/testsuite/lib/lto.exp
*** gcc-14-20251114/gcc/testsuite/lib/lto.exp	Fri Nov 14 22:34:15 2025
--- gcc-14-20251121/gcc/testsuite/lib/lto.exp	Fri Nov 21 22:32:46 2025
*************** proc lto-obj { source dest optall optfil
*** 309,314 ****
--- 309,351 ----
      ${tool}_check_compile "$testcase $dest assemble" $optstr $dest $comp_output
  }
  
+ proc lto-build-archive { testname objlist dest } {
+     global testcase
+     global tool
+     global GCC_UNDER_TEST
+ 
+     upvar dg-messages-by-file dg-messages-by-file
+ 
+     verbose "lto-build-archive" 2
+     file_on_host delete $dest
+ 
+     # Check that all of the objects were built successfully.
+     foreach obj [split $objlist] {
+ 	if ![file_on_host exists $obj] then {
+ 	    unresolved "$testcase $testname build-archive"
+ 	    return
+ 	}
+     }
+ 
+     # Hack up the gcc-ar command from $GCC_UNDER_TEST.
+     set ar_cmd [file dirname [lindex $GCC_UNDER_TEST 0]]
+     set ar_cmd "$ar_cmd/gcc-ar [lrange $GCC_UNDER_TEST 1 end]"
+     set ar_output [remote_exec host "$ar_cmd rcs $dest $objlist"]
+     set retval [lindex $ar_output 0]
+     set retmsg [lindex $ar_output 1]
+ 
+     # If any message remains, we fail.  Don't bother overriding tool since
+     # we're not really looking to match any specific error or warning patterns
+     # here.
+     if ![string match "0" $retval] then {
+ 	${tool}_fail $testcase "ar returned $retval: $retmsg"
+ 	return 0
+     } else {
+ 	${tool}_pass $testcase "archive"
+ 	return 0
+     }
+ }
+ 
  # lto-link-and-maybe-run -- link the object files and run the executable
  # if compile_type is set to "run"
  #
*************** proc lto-link-and-maybe-run { testname o
*** 379,385 ****
      }
  
      # Return if we only needed to link.
!     if { ![string compare "link" $compile_type] } {
  	return
      }
  
--- 416,423 ----
      }
  
      # Return if we only needed to link.
!     if { ![string compare "link" $compile_type] \
!         || ![string compare "ar-link" $compile_type] } {
  	return
      }
  
*************** proc lto-get-options-main { src } {
*** 510,515 ****
--- 548,555 ----
  		set compile_type "run"
  	    } elseif { ![string compare "link" $dgdo] } {
  		set compile_type "link"
+ 	    } elseif { ![string compare "ar-link" $dgdo] } {
+ 		set compile_type "ar-link"
  	    } else {
  		warning "lto.exp does not support dg-lto-do $dgdo"
  	    }
*************** proc lto-execute-1 { src1 sid } {
*** 691,696 ****
--- 731,742 ----
      # Get the base name of this test, for use in messages.
      set testcase [lindex ${src_list} 0]
  
+     # The test needs to build all but the main file into an archive and then
+     # link them all together.
+     if { ![string compare "ar-link" $compile_type] } {
+         set arname "${sid}_${base}.a"
+     }
+ 
      # Remove the $srcdir and $tmpdir prefixes from $src1.  (It would
      # be possible to use "regsub" here, if we were careful to escape
      # all regular expression characters in $srcdir and $tmpdir, but
*************** proc lto-execute-1 { src1 sid } {
*** 755,762 ****
--- 801,824 ----
  	    incr i
  	}
  
+ 	# Bundle all but the main file into an archive. Update objlist to only
+ 	# have the archive and the last file.
+ 	if { ![string compare "ar-link" $compile_type] } {
+ 	    set mainsrc [lindex $obj_list 0]
+ 	    set obj_list [lrange $obj_list 1 end]
+ 	    lto-build-archive \
+ 		"[lindex $obj_list 1]-[lindex $obj_list end]" \
+ 		$obj_list $arname
+ 
+ 	    set obj_list ""
+ 	    lappend obj_list $mainsrc
+ 	    lappend obj_list $arname
+ 	    set num_srcs 2
+ 	}
+ 
  	# Link (using the compiler under test), run, and clean up tests.
  	if { ![string compare "run" $compile_type] \
+ 	     || ![string compare "ar-link" $compile_type] \
  	     || ![string compare "link" $compile_type] } {
  
  	    # Filter out any link options we were asked to suppress.
*************** proc lto-execute-1 { src1 sid } {
*** 772,777 ****
--- 834,843 ----
  		    "[lindex $obj_list 0]-[lindex $obj_list end]" \
  		    $obj_list $execname $filtered ${dg-extra-ld-options} \
  		    $filtered
+ 
+ 	    if (![string compare "ar-link" $compile_type]) {
+ 		file_on_host delete $arname
+ 	      }
  	}
  
  
*************** proc lto-execute-1 { src1 sid } {
*** 818,823 ****
--- 884,890 ----
  	unset testname_with_flags
  	
  	if { ![string compare "run" $compile_type] \
+ 	     || ![string compare "ar-link" $compile_type] \
  	     || ![string compare "link" $compile_type] } {
  	    file_on_host delete $execname
  	}
diff -Nrcpad gcc-14-20251114/gcc/tree-vect-slp-patterns.cc gcc-14-20251121/gcc/tree-vect-slp-patterns.cc
*** gcc-14-20251114/gcc/tree-vect-slp-patterns.cc	Fri Nov 14 22:34:18 2025
--- gcc-14-20251121/gcc/tree-vect-slp-patterns.cc	Fri Nov 21 22:32:46 2025
*************** compatible_complex_nodes_p (slp_compat_n
*** 841,855 ****
    return true;
  }
  
  static inline bool
  vect_validate_multiplication (slp_tree_to_load_perm_map_t *perm_cache,
  			      slp_compat_nodes_map_t *compat_cache,
! 			      vec<slp_tree> &left_op,
! 			      vec<slp_tree> &right_op,
! 			      bool subtract,
  			      enum _conj_status *_status)
  {
-   auto_vec<slp_tree> ops;
    enum _conj_status stats = CONJ_NONE;
  
    /* The complex operations can occur in two layouts and two permute sequences
--- 841,863 ----
    return true;
  }
  
+ 
+ /* Check to see if the oprands to two multiplies, 2 each in LEFT_OP and
+    RIGHT_OP match a complex multiplication  or complex multiply-and-accumulate
+    or complex multiply-and-subtract pattern.  Do this using the permute cache
+    PERM_CACHE and the combination compatibility list COMPAT_CACHE.  If
+    the operation is successful the macthing operands are returned in OPS and
+    _STATUS indicates if the operation matched includes a conjugate of one of the
+    operands.  If the operation succeeds True is returned, otherwise False and
+    the values in ops are meaningless.  */
  static inline bool
  vect_validate_multiplication (slp_tree_to_load_perm_map_t *perm_cache,
  			      slp_compat_nodes_map_t *compat_cache,
! 			      const vec<slp_tree> &left_op,
! 			      const vec<slp_tree> &right_op,
! 			      bool subtract, vec<slp_tree> &ops,
  			      enum _conj_status *_status)
  {
    enum _conj_status stats = CONJ_NONE;
  
    /* The complex operations can occur in two layouts and two permute sequences
*************** vect_validate_multiplication (slp_tree_t
*** 880,910 ****
    bool neg0 = vect_match_expression_p (right_op[0], NEGATE_EXPR);
    bool neg1 = vect_match_expression_p (right_op[1], NEGATE_EXPR);
  
    /* Determine which style we're looking at.  We only have different ones
       whenever a conjugate is involved.  */
    if (neg0 && neg1)
      ;
    else if (neg0)
      {
!       right_op[0] = SLP_TREE_CHILDREN (right_op[0])[0];
        stats = CONJ_FST;
        if (subtract)
  	perm = 0;
      }
    else if (neg1)
      {
!       right_op[1] = SLP_TREE_CHILDREN (right_op[1])[0];
        stats = CONJ_SND;
        perm = 1;
      }
  
    *_status = stats;
  
-   /* Flatten the inputs after we've remapped them.  */
-   ops.create (4);
-   ops.safe_splice (left_op);
-   ops.safe_splice (right_op);
- 
    /* Extract out the elements to check.  */
    slp_tree op0 = ops[styles[style][0]];
    slp_tree op1 = ops[styles[style][1]];
--- 888,918 ----
    bool neg0 = vect_match_expression_p (right_op[0], NEGATE_EXPR);
    bool neg1 = vect_match_expression_p (right_op[1], NEGATE_EXPR);
  
+   /* Create the combined inputs after remapping and flattening.  */
+   ops.create (4);
+   ops.safe_splice (left_op);
+   ops.safe_splice (right_op);
+ 
    /* Determine which style we're looking at.  We only have different ones
       whenever a conjugate is involved.  */
    if (neg0 && neg1)
      ;
    else if (neg0)
      {
!       ops[2] = SLP_TREE_CHILDREN (right_op[0])[0];
        stats = CONJ_FST;
        if (subtract)
  	perm = 0;
      }
    else if (neg1)
      {
!       ops[3] = SLP_TREE_CHILDREN (right_op[1])[0];
        stats = CONJ_SND;
        perm = 1;
      }
  
    *_status = stats;
  
    /* Extract out the elements to check.  */
    slp_tree op0 = ops[styles[style][0]];
    slp_tree op1 = ops[styles[style][1]];
*************** complex_mul_pattern::matches (complex_op
*** 1067,1081 ****
      return IFN_LAST;
  
    enum _conj_status status;
    if (!vect_validate_multiplication (perm_cache, compat_cache, left_op,
! 				     right_op, false, &status))
      {
        /* Try swapping the order and re-trying since multiplication is
  	 commutative.  */
        std::swap (left_op[0], left_op[1]);
        std::swap (right_op[0], right_op[1]);
        if (!vect_validate_multiplication (perm_cache, compat_cache, left_op,
! 					 right_op, false, &status))
  	return IFN_LAST;
      }
  
--- 1075,1090 ----
      return IFN_LAST;
  
    enum _conj_status status;
+   auto_vec<slp_tree> res_ops;
    if (!vect_validate_multiplication (perm_cache, compat_cache, left_op,
! 				     right_op, false, res_ops, &status))
      {
        /* Try swapping the order and re-trying since multiplication is
  	 commutative.  */
        std::swap (left_op[0], left_op[1]);
        std::swap (right_op[0], right_op[1]);
        if (!vect_validate_multiplication (perm_cache, compat_cache, left_op,
! 					 right_op, false, res_ops, &status))
  	return IFN_LAST;
      }
  
*************** complex_mul_pattern::matches (complex_op
*** 1103,1126 ****
    if (add0)
      ops->quick_push (add0);
  
!   complex_perm_kinds_t kind = linear_loads_p (perm_cache, left_op[0]);
    if (kind == PERM_EVENODD || kind == PERM_TOP)
      {
!       ops->quick_push (left_op[1]);
!       ops->quick_push (right_op[1]);
!       ops->quick_push (left_op[0]);
      }
    else if (kind == PERM_EVENEVEN && status != CONJ_SND)
      {
!       ops->quick_push (left_op[0]);
!       ops->quick_push (right_op[0]);
!       ops->quick_push (left_op[1]);
      }
    else
      {
!       ops->quick_push (left_op[0]);
!       ops->quick_push (right_op[1]);
!       ops->quick_push (left_op[1]);
      }
  
    return ifn;
--- 1112,1135 ----
    if (add0)
      ops->quick_push (add0);
  
!   complex_perm_kinds_t kind = linear_loads_p (perm_cache, res_ops[0]);
    if (kind == PERM_EVENODD || kind == PERM_TOP)
      {
!       ops->quick_push (res_ops[1]);
!       ops->quick_push (res_ops[3]);
!       ops->quick_push (res_ops[0]);
      }
    else if (kind == PERM_EVENEVEN && status != CONJ_SND)
      {
!       ops->quick_push (res_ops[0]);
!       ops->quick_push (res_ops[2]);
!       ops->quick_push (res_ops[1]);
      }
    else
      {
!       ops->quick_push (res_ops[0]);
!       ops->quick_push (res_ops[3]);
!       ops->quick_push (res_ops[1]);
      }
  
    return ifn;
*************** complex_fms_pattern::matches (complex_op
*** 1292,1306 ****
      return IFN_LAST;
  
    enum _conj_status status;
    if (!vect_validate_multiplication (perm_cache, compat_cache, right_op,
! 				     left_op, true, &status))
      {
        /* Try swapping the order and re-trying since multiplication is
  	 commutative.  */
        std::swap (left_op[0], left_op[1]);
        std::swap (right_op[0], right_op[1]);
        if (!vect_validate_multiplication (perm_cache, compat_cache, right_op,
! 					 left_op, true, &status))
  	return IFN_LAST;
      }
  
--- 1301,1317 ----
      return IFN_LAST;
  
    enum _conj_status status;
+   auto_vec<slp_tree> res_ops;
    if (!vect_validate_multiplication (perm_cache, compat_cache, right_op,
! 				     left_op, true, res_ops, &status))
      {
        /* Try swapping the order and re-trying since multiplication is
  	 commutative.  */
        std::swap (left_op[0], left_op[1]);
        std::swap (right_op[0], right_op[1]);
+       auto_vec<slp_tree> res_ops;
        if (!vect_validate_multiplication (perm_cache, compat_cache, right_op,
! 					 left_op, true, res_ops, &status))
  	return IFN_LAST;
      }
  
*************** complex_fms_pattern::matches (complex_op
*** 1315,1334 ****
    ops->truncate (0);
    ops->create (4);
  
!   complex_perm_kinds_t kind = linear_loads_p (perm_cache, right_op[0]);
    if (kind == PERM_EVENODD)
      {
        ops->quick_push (l0node[0]);
!       ops->quick_push (right_op[0]);
!       ops->quick_push (right_op[1]);
!       ops->quick_push (left_op[1]);
      }
    else
      {
        ops->quick_push (l0node[0]);
!       ops->quick_push (right_op[1]);
!       ops->quick_push (right_op[0]);
!       ops->quick_push (left_op[0]);
      }
  
    return ifn;
--- 1326,1345 ----
    ops->truncate (0);
    ops->create (4);
  
!   complex_perm_kinds_t kind = linear_loads_p (perm_cache, res_ops[2]);
    if (kind == PERM_EVENODD)
      {
        ops->quick_push (l0node[0]);
!       ops->quick_push (res_ops[2]);
!       ops->quick_push (res_ops[3]);
!       ops->quick_push (res_ops[1]);
      }
    else
      {
        ops->quick_push (l0node[0]);
!       ops->quick_push (res_ops[3]);
!       ops->quick_push (res_ops[2]);
!       ops->quick_push (res_ops[0]);
      }
  
    return ifn;
diff -Nrcpad gcc-14-20251114/libstdc++-v3/ChangeLog gcc-14-20251121/libstdc++-v3/ChangeLog
*** gcc-14-20251114/libstdc++-v3/ChangeLog	Fri Nov 14 22:34:44 2025
--- gcc-14-20251121/libstdc++-v3/ChangeLog	Fri Nov 21 22:32:49 2025
***************
*** 1,3 ****
--- 1,70 ----
+ 2025-11-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122726
+ 	* src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
+ 	(rename): Use __last_system_error to set errno accurately.
+ 	* testsuite/27_io/filesystem/operations/rename.cc: Test
+ 	error_code matches errc::no_such_file_or_directory.
+ 
+ 2025-11-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/any: Add diagnostic pragmas to disable warning
+ 	about std::aligned_storage being deprecated.
+ 
+ 2025-11-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2024-09-27  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/atomic_base.h (__atomic_base<T*>::_M_type_size):
+ 	Replace overloaded functions with static _S_type_size.
+ 	* include/std/atomic (atomic<T*>): Use is_object_v instead of
+ 	is_object.
+ 	* testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
+ 	Add dg-warning for -Wpointer-arith warning.
+ 
+ 2025-11-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2024-09-27  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/20_util/bind/dangling_ref.cc: Add an additional
+ 	dg-warning for -Wreturn-local-addr warning.
+ 	* testsuite/30_threads/packaged_task/cons/dangling_ref.cc:
+ 	Likewise.
+ 
+ 2025-11-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-11-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122661
+ 	* include/bits/forward_list.h (forward_list::assign(I, I)): Fix
+ 	value category in is_assignable check.
+ 	* testsuite/23_containers/forward_list/modifiers/122661.cc:
+ 	New test.
+ 
+ 2025-11-14  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-10-20  Jonathan Wakely  <jwakely@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20251114/libstdc++-v3/src/filesystem/ops-common.h gcc-14-20251121/libstdc++-v3/src/filesystem/ops-common.h
*** gcc-14-20251114/libstdc++-v3/src/filesystem/ops-common.h	Fri Nov 14 22:34:52 2025
--- gcc-14-20251121/libstdc++-v3/src/filesystem/ops-common.h	Fri Nov 21 22:32:50 2025
*************** namespace __gnu_posix
*** 159,168 ****
      if (MoveFileExW(oldname, newname,
  		    MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED))
        return 0;
!     if (GetLastError() == ERROR_ACCESS_DENIED)
!       errno = EACCES;
!     else
!       errno = EIO;
      return -1;
    }
  
--- 159,165 ----
      if (MoveFileExW(oldname, newname,
  		    MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED))
        return 0;
!     errno = std::__last_system_error().default_error_condition().value();
      return -1;
    }
  
diff -Nrcpad gcc-14-20251114/libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc gcc-14-20251121/libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc
*** gcc-14-20251114/libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc	Fri Nov 14 22:34:58 2025
--- gcc-14-20251121/libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc	Fri Nov 21 22:32:54 2025
*************** test_directories()
*** 170,179 ****
--- 170,189 ----
    fs::remove_all(dir, ec);
  }
  
+ void
+ test_pr122726()
+ {
+   std::error_code ec;
+   const auto nonesuch = __gnu_test::nonexistent_path();
+   fs::rename(nonesuch, "new-name", ec);
+   VERIFY( ec == std::make_error_code(std::errc::no_such_file_or_directory) );
+ }
+ 
  int
  main()
  {
    test01();
    test_symlinks();
    test_directories();
+   test_pr122726();
  }
