diff -Nrcpad gcc-13-20260122/LAST_UPDATED gcc-13-20260129/LAST_UPDATED
*** gcc-13-20260122/LAST_UPDATED	Thu Jan 22 22:32:20 2026
--- gcc-13-20260129/LAST_UPDATED	Thu Jan 29 22:32:22 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-13 revision 43d6afb4711adee7e8b1d7f67c2b028d04841326
--- 1 ----
! Obtained from git: releases/gcc-13 revision c67142f19574e94a45ef91710e777ec17b4d5e4d
diff -Nrcpad gcc-13-20260122/MD5SUMS gcc-13-20260129/MD5SUMS
*** gcc-13-20260122/MD5SUMS	Thu Jan 22 22:32:24 2026
--- gcc-13-20260129/MD5SUMS	Thu Jan 29 22:32:26 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-13-20260122.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-13-20260129.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
*** 21,27 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! ceefdd0ed3d0d74fa5fe8c86c71c0681  LAST_UPDATED
  81b3330d422f3ce1ef8b720dfae35068  MAINTAINERS
  2b61ddbd876fa839639a7ca551773426  Makefile.def
  5d2d6a74f897f8158d37f5f2ec6877ce  Makefile.in
--- 21,27 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! a41e7591d5ba64d69fa05828269df0b8  LAST_UPDATED
  81b3330d422f3ce1ef8b720dfae35068  MAINTAINERS
  2b61ddbd876fa839639a7ca551773426  Makefile.def
  5d2d6a74f897f8158d37f5f2ec6877ce  Makefile.in
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 475,481 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 8f0d413fec59f4cb97783ab44006ed41  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 475,481 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 2fc1ab5e2b0fb48886fa1ddfd8339716  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 510,516 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! e2cac1f4c3bf6684abdbf4bffba28fdd  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 510,516 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! d6e6e1c3b06768d72d50f4cd8d04971a  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** b4ae894c7649abb1dc14070d9797b00d  gcc/co
*** 4642,4648 ****
  43cf8f7978a5d583e2342acb04cc595b  gcc/config/rs6000/aix72.h
  a87be9ee98a714eeeb92bad73f32f88f  gcc/config/rs6000/aix73.h
  02b877a569032dd21efb85d41dac9c4f  gcc/config/rs6000/altivec.h
! 071400944dc417db4ed74d3288710a61  gcc/config/rs6000/altivec.md
  347774e3882e15d0157b143fa1f2df42  gcc/config/rs6000/amo.h
  656fb98293d82a76779be75ae8207857  gcc/config/rs6000/biarch64.h
  8eb9a873478c1238a6d5921b1c5ed77e  gcc/config/rs6000/bmi2intrin.h
--- 4642,4648 ----
  43cf8f7978a5d583e2342acb04cc595b  gcc/config/rs6000/aix72.h
  a87be9ee98a714eeeb92bad73f32f88f  gcc/config/rs6000/aix73.h
  02b877a569032dd21efb85d41dac9c4f  gcc/config/rs6000/altivec.h
! f7a177877fafe47947dbc04e176c52bb  gcc/config/rs6000/altivec.md
  347774e3882e15d0157b143fa1f2df42  gcc/config/rs6000/amo.h
  656fb98293d82a76779be75ae8207857  gcc/config/rs6000/biarch64.h
  8eb9a873478c1238a6d5921b1c5ed77e  gcc/config/rs6000/bmi2intrin.h
*************** aec47cbaec48561e260557f0682793cf  gcc/cs
*** 5186,5192 ****
  a667c8581cf5009d6af17f19f1186065  gcc/ctfc.cc
  9881edbbb726db4859766d0a32beb6a7  gcc/ctfc.h
  744cafae198aaa990e1c303aa66f0504  gcc/ctfout.cc
! bfdb4adbd0ba2933f14b00bc7057f7a2  gcc/d/ChangeLog
  86f687c485111eedca2eb048294f957e  gcc/d/ChangeLog-2006
  70ed1c47fd9b3f5dd95055642ed79265  gcc/d/ChangeLog-2007
  a7090ab2dd83aa4f44823c17566b83ef  gcc/d/ChangeLog-2008
--- 5186,5192 ----
  a667c8581cf5009d6af17f19f1186065  gcc/ctfc.cc
  9881edbbb726db4859766d0a32beb6a7  gcc/ctfc.h
  744cafae198aaa990e1c303aa66f0504  gcc/ctfout.cc
! d471b6740b3344770d624a5f1ba4ad55  gcc/d/ChangeLog
  86f687c485111eedca2eb048294f957e  gcc/d/ChangeLog-2006
  70ed1c47fd9b3f5dd95055642ed79265  gcc/d/ChangeLog-2007
  a7090ab2dd83aa4f44823c17566b83ef  gcc/d/ChangeLog-2008
*************** c7b625d76017d2ec4f8970c167523c57  gcc/d/
*** 5209,5215 ****
  758e5fe316e70ac29cdf3b2f894655eb  gcc/d/config-lang.in
  85746b2dfddc127a55b01ebb697bf36d  gcc/d/d-attribs.cc
  8348e5c20fb3ad49d06d69cffb935c47  gcc/d/d-builtins.cc
! 62ea809eb84816d478adf86ee577874c  gcc/d/d-codegen.cc
  971f4804175b7a391dcd1281695fa5a2  gcc/d/d-compiler.cc
  6677da531b8c8e5f00f6772e6c4a0ed4  gcc/d/d-convert.cc
  d2b1f01e0988dcd39d9447e3e7178798  gcc/d/d-ctfloat.cc
--- 5209,5215 ----
  758e5fe316e70ac29cdf3b2f894655eb  gcc/d/config-lang.in
  85746b2dfddc127a55b01ebb697bf36d  gcc/d/d-attribs.cc
  8348e5c20fb3ad49d06d69cffb935c47  gcc/d/d-builtins.cc
! 08b2ccb618a79c25e97bc9fc1c8e6c56  gcc/d/d-codegen.cc
  971f4804175b7a391dcd1281695fa5a2  gcc/d/d-compiler.cc
  6677da531b8c8e5f00f6772e6c4a0ed4  gcc/d/d-convert.cc
  d2b1f01e0988dcd39d9447e3e7178798  gcc/d/d-ctfloat.cc
*************** eed95c64afa2c5152ed24f9e036c8558  gcc/d/
*** 5221,5227 ****
  ce6b33dda672c5a4dd51d395bb584cb5  gcc/d/d-lang.cc
  ef961ae9fa4971d839f64528e0a37ae0  gcc/d/d-longdouble.cc
  3681feafef438df6cf30a76d70231ab9  gcc/d/d-port.cc
! 185499ceba21feb6f33c538ec84ccc2b  gcc/d/d-spec.cc
  3d5fc447a9af0885c21b752580606718  gcc/d/d-system.h
  702fee3dac729038fda2766339cd7526  gcc/d/d-target-def.h
  fbc8000ee222d6ad5a0e1c6e84a312d4  gcc/d/d-target.cc
--- 5221,5227 ----
  ce6b33dda672c5a4dd51d395bb584cb5  gcc/d/d-lang.cc
  ef961ae9fa4971d839f64528e0a37ae0  gcc/d/d-longdouble.cc
  3681feafef438df6cf30a76d70231ab9  gcc/d/d-port.cc
! 0fd914e5960f7132da6673bb0eca25fe  gcc/d/d-spec.cc
  3d5fc447a9af0885c21b752580606718  gcc/d/d-system.h
  702fee3dac729038fda2766339cd7526  gcc/d/d-target-def.h
  fbc8000ee222d6ad5a0e1c6e84a312d4  gcc/d/d-target.cc
*************** fbc8000ee222d6ad5a0e1c6e84a312d4  gcc/d/
*** 5229,5235 ****
  0ef8ddb83bcd9713cc0bc91299edff2c  gcc/d/d-target.h
  df7deb9723aa01d867aaeec5d746c208  gcc/d/d-tree.def
  8bb261b53d8eeeb70c0c97ed965aacc2  gcc/d/d-tree.h
! 647b3e7b67ae9032b1716758b451426d  gcc/d/decl.cc
  2d7446d51cf4738aad1c8ceb43174a72  gcc/d/dmd/MERGE
  39fa65f9345bb0319180e90c1912a1ae  gcc/d/dmd/README.md
  dde7939f1c35c9e979832ac123e5692f  gcc/d/dmd/VERSION
--- 5229,5235 ----
  0ef8ddb83bcd9713cc0bc91299edff2c  gcc/d/d-target.h
  df7deb9723aa01d867aaeec5d746c208  gcc/d/d-tree.def
  8bb261b53d8eeeb70c0c97ed965aacc2  gcc/d/d-tree.h
! 10679d8c044e7de01ceb4eda974b70ee  gcc/d/decl.cc
  2d7446d51cf4738aad1c8ceb43174a72  gcc/d/dmd/MERGE
  39fa65f9345bb0319180e90c1912a1ae  gcc/d/dmd/README.md
  dde7939f1c35c9e979832ac123e5692f  gcc/d/dmd/VERSION
*************** c9a7dddb98d89035d4e0853147d7fb06  gcc/d/
*** 5404,5410 ****
  0e19f04aef543d4fabb6ec79def5b2df  gcc/d/dmd/version.h
  f9c518566ad51d0492965951bb50bc49  gcc/d/dmd/visitor.d
  0479d55eda5ee9de0e2106ae722ad649  gcc/d/dmd/visitor.h
! 88ab8c337e2d8355f94eb5fdf72cfe5d  gcc/d/expr.cc
  7c8d068883546d6053ab89a4aa3ad55c  gcc/d/gdc.texi
  09d8459a6a0334281c058ddbf35b079a  gcc/d/implement-d.texi
  52b373830c8db1956184db3d7c644eed  gcc/d/imports.cc
--- 5404,5410 ----
  0e19f04aef543d4fabb6ec79def5b2df  gcc/d/dmd/version.h
  f9c518566ad51d0492965951bb50bc49  gcc/d/dmd/visitor.d
  0479d55eda5ee9de0e2106ae722ad649  gcc/d/dmd/visitor.h
! ab2867d4f09a6e871451a49dba15d4ba  gcc/d/expr.cc
  7c8d068883546d6053ab89a4aa3ad55c  gcc/d/gdc.texi
  09d8459a6a0334281c058ddbf35b079a  gcc/d/implement-d.texi
  52b373830c8db1956184db3d7c644eed  gcc/d/imports.cc
*************** a21521366267b1a7b68ceb6ce15a9246  gcc/d/
*** 5416,5424 ****
  5251baac92e17d12efc1de93cbfe6ba5  gcc/d/modules.cc
  b1d8cca7f88b3b7a419bdaad940457c0  gcc/d/runtime.cc
  7fbf81ad217c5efa6f267572778e7ab8  gcc/d/runtime.def
! 48b3a4ef1af87b926e52c50d3bc81595  gcc/d/toir.cc
  168e3e721d8dc43fb9d250ca847af79a  gcc/d/typeinfo.cc
! d36c80c26768a485a06631dbc94be775  gcc/d/types.cc
  accc2d7f211bb139fde71fcb94dbbf92  gcc/data-streamer-in.cc
  888eb4c7a007875545f7f89fa223643c  gcc/data-streamer-out.cc
  047c64792c9f1e60b4b6498df8817c94  gcc/data-streamer.cc
--- 5416,5424 ----
  5251baac92e17d12efc1de93cbfe6ba5  gcc/d/modules.cc
  b1d8cca7f88b3b7a419bdaad940457c0  gcc/d/runtime.cc
  7fbf81ad217c5efa6f267572778e7ab8  gcc/d/runtime.def
! 94e59e9f9adf115478148e8ffd079d8e  gcc/d/toir.cc
  168e3e721d8dc43fb9d250ca847af79a  gcc/d/typeinfo.cc
! 3e4a30df3b3b774bf3be26a9e1e5b5d5  gcc/d/types.cc
  accc2d7f211bb139fde71fcb94dbbf92  gcc/data-streamer-in.cc
  888eb4c7a007875545f7f89fa223643c  gcc/data-streamer-out.cc
  047c64792c9f1e60b4b6498df8817c94  gcc/data-streamer.cc
*************** b829ed0032c899e107be2db349c913f3  gcc/ta
*** 7637,7643 ****
  811da275a2b9d3186a6decf96c01b0ed  gcc/targhooks.cc
  edb193a32070c4a7626fb75382def9b9  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 41971f0738631bca6642c651c968c893  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 7637,7643 ----
  811da275a2b9d3186a6decf96c01b0ed  gcc/targhooks.cc
  edb193a32070c4a7626fb75382def9b9  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 58bcc8cda686a4ff2b9a25080aa8b7e5  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** c02928696f09c7fc9c99174083ecb49c  gcc/te
*** 74723,74729 ****
  a8f9adaf01b9c4605ccf3a2b91395d9a  gcc/testsuite/gcc.target/powerpc/builtins-1-be-folded.c
  d7a191d70b9b9996b4b19f79964cf6c2  gcc/testsuite/gcc.target/powerpc/builtins-1-le-folded.c
  3630b13056a134afac9072861304e1b7  gcc/testsuite/gcc.target/powerpc/builtins-1-p10-runnable.c
! f2df3bae9f5a0120e073ffd853edc95d  gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c
  b2a3592bc01a8390ab0bcd360e5bfb80  gcc/testsuite/gcc.target/powerpc/builtins-1.c
  ec989a2f75efdf3d6a18fdd8ae6ce35b  gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
  8e9c179d065241f1abc6396d9fe644c2  gcc/testsuite/gcc.target/powerpc/builtins-2-p9-runnable.c
--- 74723,74729 ----
  a8f9adaf01b9c4605ccf3a2b91395d9a  gcc/testsuite/gcc.target/powerpc/builtins-1-be-folded.c
  d7a191d70b9b9996b4b19f79964cf6c2  gcc/testsuite/gcc.target/powerpc/builtins-1-le-folded.c
  3630b13056a134afac9072861304e1b7  gcc/testsuite/gcc.target/powerpc/builtins-1-p10-runnable.c
! dc57c7d2d3ef6cbd9f55a24e38ba3fca  gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c
  b2a3592bc01a8390ab0bcd360e5bfb80  gcc/testsuite/gcc.target/powerpc/builtins-1.c
  ec989a2f75efdf3d6a18fdd8ae6ce35b  gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
  8e9c179d065241f1abc6396d9fe644c2  gcc/testsuite/gcc.target/powerpc/builtins-2-p9-runnable.c
*************** bcf389e3992a960c831b1dafe53a539c  gcc/te
*** 79911,79916 ****
--- 79911,79918 ----
  511a4b96302498f658f208676182a550  gcc/testsuite/gdc.dg/debug/pr119826.d
  0121ae6408f107a6bf6f915c24102bd3  gcc/testsuite/gdc.dg/debug/trivial.d
  221872e623e7561cf7ee01e02bd48936  gcc/testsuite/gdc.dg/dg.exp
+ 1f25f7140ea236c33498050fa3d25fc3  gcc/testsuite/gdc.dg/driver_debuglib.d
+ bfb9dc003b6110d37dc4b62c222afe7d  gcc/testsuite/gdc.dg/driver_defaultlib.d
  e13b61cf77c000f61413c39e9ed0fa64  gcc/testsuite/gdc.dg/extern-c++/extern-c++.exp
  61180002f0f17ca7ed75def599d123f0  gcc/testsuite/gdc.dg/extern-c++/pr101664.d
  68936fbe708c1d13dcaca6e4a4a06f77  gcc/testsuite/gdc.dg/extern-c++/pr101664_1.cc
*************** a2d402e0596a4abb1dc6e25b11e9aa9c  gcc/te
*** 80027,80032 ****
--- 80029,80040 ----
  204042c2eb4ac43dee360b7272aee369  gcc/testsuite/gdc.dg/pr116961.d
  a81f29fc44be5cd208351e9e8b4a742b  gcc/testsuite/gdc.dg/pr117621.d
  0b4ca5d336606fc94e656b8731b0a78e  gcc/testsuite/gdc.dg/pr119139.d
+ ad51c6065b49988f50a3f799a0e5f9a3  gcc/testsuite/gdc.dg/pr121477.d
+ e4d8064a02951cfe69cf639a94128dd0  gcc/testsuite/gdc.dg/pr123046.d
+ e89ebd75d9b162289c929675222e8501  gcc/testsuite/gdc.dg/pr123407a.d
+ a45efe7a1d6f8b7f15f7befa3e7b1768  gcc/testsuite/gdc.dg/pr123407b.d
+ 4e7020df6ad139d4b43104ca5b97d142  gcc/testsuite/gdc.dg/pr123419.d
+ 56c2a0939424aafd465f15ffdd08847b  gcc/testsuite/gdc.dg/pr123798.d
  d32aa8ed5ea10931be4ddb5bb9e863d8  gcc/testsuite/gdc.dg/pr89017.d
  53fa8db94d4ca3fc9ba83769733dc0e7  gcc/testsuite/gdc.dg/pr89041.d
  6c316b13f71ea31fcada56b58a41ebd1  gcc/testsuite/gdc.dg/pr89042a.d
*************** eebe0b1a8ecf5f5162d0d07addd22be4  gcc/te
*** 80142,80147 ****
--- 80150,80156 ----
  11af6bc37407477e6b53012a5574c0a9  gcc/testsuite/gdc.dg/torture/imports/pr108055spec.d
  e253515f214e7f5bb8a972ce8348282f  gcc/testsuite/gdc.dg/torture/imports/pr108055write.d
  50c9072e0ffdfc079790d637e1a5c72a  gcc/testsuite/gdc.dg/torture/imports/pr109108.d
+ 1759a92fda4dd14f25ea525b1ce3d479  gcc/testsuite/gdc.dg/torture/imports/pr119799c.c
  646170aa418a99d37c59a7bb02130400  gcc/testsuite/gdc.dg/torture/init1.d
  1ae8edb9b2cd9747efb9868621aec4e8  gcc/testsuite/gdc.dg/torture/pr100882.d
  cede80748e43884ad3613a2a7e4b6ff3  gcc/testsuite/gdc.dg/torture/pr101273.d
*************** de9193ce38f7ef3ee1cc3a94fc8a92dc  gcc/te
*** 80157,80162 ****
--- 80166,80174 ----
  ad67c2aef0ecf01677e58695b0cc5d36  gcc/testsuite/gdc.dg/torture/pr113758.d
  c3a3fcac804266bf984aad50e1f84157  gcc/testsuite/gdc.dg/torture/pr114171.d
  a1ef8a304026fe097c3f6356f2dd2b2a  gcc/testsuite/gdc.dg/torture/pr117002.d
+ afca27995d2dc34f26a56b5ac812a53a  gcc/testsuite/gdc.dg/torture/pr119799.d
+ 07b590affdb88374b53601052d66c8a8  gcc/testsuite/gdc.dg/torture/pr120096.d
+ 18190856d5dece191ecd40c185c2b684  gcc/testsuite/gdc.dg/torture/pr123422.d
  580aadb24b666799e25f1f02ef3b7bbb  gcc/testsuite/gdc.dg/torture/pr92309.d
  d5626e21f8cdc22799175cb6adfddfd6  gcc/testsuite/gdc.dg/torture/pr94424.d
  ae5b279461655f243d767b80a6d0bc1b  gcc/testsuite/gdc.dg/torture/pr94777b.d
*************** c265574887f4390ecccd1073ee5c0190  libssp
*** 113538,113544 ****
  02470b541ab713bd1bfb8e6787e65f2c  libssp/strncpy-chk.c
  8a7a0719ef45cb3ae0041192eac8d550  libssp/vsnprintf-chk.c
  d662ba7536e1bd06226d47b1a7f1f4e2  libssp/vsprintf-chk.c
! 2a3a788cedd701ba2b262ac190fbd97f  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 113550,113556 ----
  02470b541ab713bd1bfb8e6787e65f2c  libssp/strncpy-chk.c
  8a7a0719ef45cb3ae0041192eac8d550  libssp/vsnprintf-chk.c
  d662ba7536e1bd06226d47b1a7f1f4e2  libssp/vsprintf-chk.c
! eaf7db76d8b9eed34fe418839654a655  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** a0d5f7157fc4b3fc206d8bf4497dd924  libstd
*** 113636,113642 ****
  8d8376bd496628e6daff6e43c6a00f43  libstdc++-v3/config/locale/darwin/ctype_members.cc
  f093a64957701e345212de01e53fea28  libstdc++-v3/config/locale/dragonfly/c_locale.cc
  214f9d51d4d1ecb13b2b070b96648e19  libstdc++-v3/config/locale/dragonfly/c_locale.h
! 99930a8b6fc64a818f7ff183ec3b26dc  libstdc++-v3/config/locale/dragonfly/codecvt_members.cc
  4a5699f8b5de77b6cb0185f837bac4f0  libstdc++-v3/config/locale/dragonfly/collate_members.cc
  a1463943efae57b930a3a778e2596408  libstdc++-v3/config/locale/dragonfly/ctype_members.cc
  e82371f75a7f131a45c51112632b00b4  libstdc++-v3/config/locale/dragonfly/monetary_members.cc
--- 113648,113654 ----
  8d8376bd496628e6daff6e43c6a00f43  libstdc++-v3/config/locale/darwin/ctype_members.cc
  f093a64957701e345212de01e53fea28  libstdc++-v3/config/locale/dragonfly/c_locale.cc
  214f9d51d4d1ecb13b2b070b96648e19  libstdc++-v3/config/locale/dragonfly/c_locale.h
! 140189cc17f59735139e8c963b8e00df  libstdc++-v3/config/locale/dragonfly/codecvt_members.cc
  4a5699f8b5de77b6cb0185f837bac4f0  libstdc++-v3/config/locale/dragonfly/collate_members.cc
  a1463943efae57b930a3a778e2596408  libstdc++-v3/config/locale/dragonfly/ctype_members.cc
  e82371f75a7f131a45c51112632b00b4  libstdc++-v3/config/locale/dragonfly/monetary_members.cc
*************** b6b915f387842bca4ee5e8a11b0385f8  libstd
*** 113658,113664 ****
  942cafcd7b13ed006a05b9b3cba3416b  libstdc++-v3/config/locale/gnu/c++locale_internal.h
  adc14174bf7d5246d2139f20e418378e  libstdc++-v3/config/locale/gnu/c_locale.cc
  b61cea41d386450b82fdf27639b4874d  libstdc++-v3/config/locale/gnu/c_locale.h
! a78cc28e1751d8d73b9efa685484a413  libstdc++-v3/config/locale/gnu/codecvt_members.cc
  1395acff5a39083f5231094df4befc63  libstdc++-v3/config/locale/gnu/collate_members.cc
  de202fda56a19eec7e45a1e10aed9752  libstdc++-v3/config/locale/gnu/ctype_members.cc
  327af32905ecdcce8bdaadc497871495  libstdc++-v3/config/locale/gnu/messages_members.cc
--- 113670,113676 ----
  942cafcd7b13ed006a05b9b3cba3416b  libstdc++-v3/config/locale/gnu/c++locale_internal.h
  adc14174bf7d5246d2139f20e418378e  libstdc++-v3/config/locale/gnu/c_locale.cc
  b61cea41d386450b82fdf27639b4874d  libstdc++-v3/config/locale/gnu/c_locale.h
! 9175bcd273d2a7b21d15abe75a7a095c  libstdc++-v3/config/locale/gnu/codecvt_members.cc
  1395acff5a39083f5231094df4befc63  libstdc++-v3/config/locale/gnu/collate_members.cc
  de202fda56a19eec7e45a1e10aed9752  libstdc++-v3/config/locale/gnu/ctype_members.cc
  327af32905ecdcce8bdaadc497871495  libstdc++-v3/config/locale/gnu/messages_members.cc
*************** b7a02d402cc5dc3b5900e144b1443bb7  libstd
*** 114219,114225 ****
  c5174ab6282ecbeced42a602ef71aa54  libstdc++-v3/include/bits/atomic_base.h
  f32e39c120815c7e19ae3bd66fae1f0c  libstdc++-v3/include/bits/atomic_futex.h
  10c6f59884b2d39c8bfaeb46e55b914d  libstdc++-v3/include/bits/atomic_timed_wait.h
! d365c012b1cfe6ca40197bca4b8e9abe  libstdc++-v3/include/bits/atomic_wait.h
  7a572f1436f9b069a82a366cd364af5c  libstdc++-v3/include/bits/basic_ios.h
  f72ffffc3ea2a2cb85b705217a116e9e  libstdc++-v3/include/bits/basic_ios.tcc
  b9b621010f3ee8b23e19f54706fcfe72  libstdc++-v3/include/bits/basic_string.h
--- 114231,114237 ----
  c5174ab6282ecbeced42a602ef71aa54  libstdc++-v3/include/bits/atomic_base.h
  f32e39c120815c7e19ae3bd66fae1f0c  libstdc++-v3/include/bits/atomic_futex.h
  10c6f59884b2d39c8bfaeb46e55b914d  libstdc++-v3/include/bits/atomic_timed_wait.h
! d89e6d1110a073677944d3c2f6d3b4b9  libstdc++-v3/include/bits/atomic_wait.h
  7a572f1436f9b069a82a366cd364af5c  libstdc++-v3/include/bits/basic_ios.h
  f72ffffc3ea2a2cb85b705217a116e9e  libstdc++-v3/include/bits/basic_ios.tcc
  b9b621010f3ee8b23e19f54706fcfe72  libstdc++-v3/include/bits/basic_string.h
*************** b692aa95f9f120acbe330c2893c3ce6e  libstd
*** 114893,114899 ****
  f77d53ba87bdc41f32fe05abd7640590  libstdc++-v3/include/pstl/numeric_impl.h
  f0154f75dafee0c95cfc13f091939f93  libstdc++-v3/include/pstl/parallel_backend.h
  e972bfc42cfac92bfde04a35e915514e  libstdc++-v3/include/pstl/parallel_backend_serial.h
! 902b12072934917ec50145590999c9ac  libstdc++-v3/include/pstl/parallel_backend_tbb.h
  e128e525f970f3948feec2f4750919a8  libstdc++-v3/include/pstl/parallel_backend_utils.h
  d3d2812c60e828c1e822801f148c7630  libstdc++-v3/include/pstl/parallel_impl.h
  64e9a3bc96d1e3015387cb95106544cf  libstdc++-v3/include/pstl/pstl_config.h
--- 114905,114911 ----
  f77d53ba87bdc41f32fe05abd7640590  libstdc++-v3/include/pstl/numeric_impl.h
  f0154f75dafee0c95cfc13f091939f93  libstdc++-v3/include/pstl/parallel_backend.h
  e972bfc42cfac92bfde04a35e915514e  libstdc++-v3/include/pstl/parallel_backend_serial.h
! 06921253c5d0c5ab4b315c0e2f16aa61  libstdc++-v3/include/pstl/parallel_backend_tbb.h
  e128e525f970f3948feec2f4750919a8  libstdc++-v3/include/pstl/parallel_backend_utils.h
  d3d2812c60e828c1e822801f148c7630  libstdc++-v3/include/pstl/parallel_impl.h
  64e9a3bc96d1e3015387cb95106544cf  libstdc++-v3/include/pstl/pstl_config.h
*************** c236e001d2914387b789ce13408d7224  libstd
*** 114902,114908 ****
  685f5bca7582106082732b3aa4facb12  libstdc++-v3/include/std/algorithm
  fc9b21dd5374fb6eb8ae18d329975612  libstdc++-v3/include/std/any
  2d7e12f609af86f79536f7ce64c736c4  libstdc++-v3/include/std/array
! 0919c06365948d659b248b825a7d0146  libstdc++-v3/include/std/atomic
  9f99ade7dd4b9b396effd0996ee55664  libstdc++-v3/include/std/barrier
  6a6e184e0a63330c64ab616785279ac6  libstdc++-v3/include/std/bit
  06852873ecbf5b23ff53ea0b1952d3d8  libstdc++-v3/include/std/bitset
--- 114914,114920 ----
  685f5bca7582106082732b3aa4facb12  libstdc++-v3/include/std/algorithm
  fc9b21dd5374fb6eb8ae18d329975612  libstdc++-v3/include/std/any
  2d7e12f609af86f79536f7ce64c736c4  libstdc++-v3/include/std/array
! 882b23ab9c7ba08dd769fd5181d847a9  libstdc++-v3/include/std/atomic
  9f99ade7dd4b9b396effd0996ee55664  libstdc++-v3/include/std/barrier
  6a6e184e0a63330c64ab616785279ac6  libstdc++-v3/include/std/bit
  06852873ecbf5b23ff53ea0b1952d3d8  libstdc++-v3/include/std/bitset
*************** c0e3faee3730a602e20eb2371cab4609  libstd
*** 117572,117577 ****
--- 117584,117590 ----
  4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_env.cc
  c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_locale.cc
  cc133e010fcec429e0ed8c3d45381ea1  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/1.cc
+ d1962df70f021ebd3de8499b1b388c4e  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/105857.cc
  db5451522f9a1cbddbd048f0a329642e  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/2.cc
  a17dff2c0511c57be6c2b17558a024a5  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/3.cc
  c913eb5a9f6543f72a184aee236f7fdc  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/4.cc
diff -Nrcpad gcc-13-20260122/gcc/ChangeLog gcc-13-20260129/gcc/ChangeLog
*** gcc-13-20260122/gcc/ChangeLog	Thu Jan 22 22:32:06 2026
--- gcc-13-20260129/gcc/ChangeLog	Thu Jan 29 22:32:05 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-01-23  Avinash Jayakar  <avinashd@linux.ibm.com>
+ 
+ 	PR target/119130
+ 	* config/rs6000/altivec.md (convert_4f32_8f16): Use same operand
+ 	order for both endian format.
+ 
  2026-01-16  Alice Carlotti  <alice.carlotti@arm.com>
  
  	PR target/123460
diff -Nrcpad gcc-13-20260122/gcc/DATESTAMP gcc-13-20260129/gcc/DATESTAMP
*** gcc-13-20260122/gcc/DATESTAMP	Thu Jan 22 22:32:06 2026
--- gcc-13-20260129/gcc/DATESTAMP	Thu Jan 29 22:32:05 2026
***************
*** 1 ****
! 20260122
--- 1 ----
! 20260129
diff -Nrcpad gcc-13-20260122/gcc/config/rs6000/altivec.md gcc-13-20260129/gcc/config/rs6000/altivec.md
*** gcc-13-20260122/gcc/config/rs6000/altivec.md	Thu Jan 22 22:32:07 2026
--- gcc-13-20260129/gcc/config/rs6000/altivec.md	Thu Jan 29 22:32:07 2026
***************
*** 3522,3531 ****
  
    emit_insn (gen_vsx_xvcvsphp (rtx_tmp_hi, operands[1]));
    emit_insn (gen_vsx_xvcvsphp (rtx_tmp_lo, operands[2]));
!   if (!BYTES_BIG_ENDIAN)
!     emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_hi, rtx_tmp_lo));
!   else
!     emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_lo, rtx_tmp_hi));
    DONE;
  })
  
--- 3522,3528 ----
  
    emit_insn (gen_vsx_xvcvsphp (rtx_tmp_hi, operands[1]));
    emit_insn (gen_vsx_xvcvsphp (rtx_tmp_lo, operands[2]));
!   emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_hi, rtx_tmp_lo));
    DONE;
  })
  
diff -Nrcpad gcc-13-20260122/gcc/d/ChangeLog gcc-13-20260129/gcc/d/ChangeLog
*** gcc-13-20260122/gcc/d/ChangeLog	Thu Jan 22 22:32:08 2026
--- gcc-13-20260129/gcc/d/ChangeLog	Thu Jan 29 22:32:07 2026
***************
*** 1,3 ****
--- 1,60 ----
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2025-04-15  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/119799
+ 	* decl.cc (DeclVisitor::visit (VarDeclaration *)): Check front-end
+ 	type size before building the VAR_DECL.  Allow C symbols to have a
+ 	size of `0'.
+ 
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123419
+ 	* expr.cc (ExprVisitor::visit (VarExp *)): Adjust assertion.
+ 
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123798
+ 	* types.cc (insert_aggregate_bitfield): Set DECL_NONADDRESSABLE_P and
+ 	DECL_PADDING_P on bit-field decls.
+ 	(finish_aggregate_type): Pass the aligned bit offset to layout_decl.
+ 
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/121477
+ 	* d-codegen.cc (d_mark_addressable): Give an error if taking the
+ 	address of a DECL_BIT_FIELD.
+ 
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123422
+ 	* expr.cc (ExprVisitor::visit (ArrayLiteralExp *)): Don't add
+ 	TARGET_EXPR around constructor.
+ 	* toir.cc (IRVisitor::visit (ReturnStatement *)): Recognize more
+ 	patterns for return value optimization.
+ 
+ 2026-01-27  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-27  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/120096
+ 	* expr.cc (ExprVisitor::visit (ArrayLiteralExp *)): Include saved side
+ 	effects in expression result.
+ 
  2025-06-05  Release Manager
  
  	* GCC 13.4.0 released.
diff -Nrcpad gcc-13-20260122/gcc/d/d-codegen.cc gcc-13-20260129/gcc/d/d-codegen.cc
*** gcc-13-20260122/gcc/d/d-codegen.cc	Thu Jan 22 22:32:08 2026
--- gcc-13-20260129/gcc/d/d-codegen.cc	Thu Jan 29 22:32:07 2026
*************** build_address (tree exp)
*** 665,670 ****
--- 665,675 ----
    if (TREE_CODE (exp) == CONST_DECL)
      exp = DECL_INITIAL (exp);
  
+   /* Type `noreturn' has no storage, return `null' for the expression.  */
+   if (DECL_P (exp) && TREE_CODE (exp) != FIELD_DECL
+       && TYPE_MAIN_VARIANT (TREE_TYPE (exp)) == noreturn_type_node)
+     return compound_expr (init, null_pointer_node);
+ 
    /* Some expression lowering may request an address of a compile-time constant,
       or other non-lvalue expression.  Make sure it is assigned to a location we
       can reference.  */
*************** d_mark_addressable (tree exp, bool compl
*** 704,711 ****
  {
    switch (TREE_CODE (exp))
      {
-     case ADDR_EXPR:
      case COMPONENT_REF:
      case ARRAY_REF:
      case REALPART_EXPR:
      case IMAGPART_EXPR:
--- 709,720 ----
  {
    switch (TREE_CODE (exp))
      {
      case COMPONENT_REF:
+       if (complain && DECL_BIT_FIELD (TREE_OPERAND (exp, 1)))
+ 	error ("cannot take address of bit-field %qD", TREE_OPERAND (exp, 1));
+ 
+       /* Fall through.  */
+     case ADDR_EXPR:
      case ARRAY_REF:
      case REALPART_EXPR:
      case IMAGPART_EXPR:
*************** d_build_call (TypeFunction *tf, tree cal
*** 2241,2247 ****
  
  	  /* Type `noreturn` is a terminator, as no other arguments can possibly
  	     be evaluated after it.  */
! 	  if (TREE_TYPE (targ) == noreturn_type_node)
  	    noreturn_call = true;
  
  	  vec_safe_push (args, targ);
--- 2250,2256 ----
  
  	  /* Type `noreturn` is a terminator, as no other arguments can possibly
  	     be evaluated after it.  */
! 	  if (TYPE_MAIN_VARIANT (TREE_TYPE (targ)) == noreturn_type_node)
  	    noreturn_call = true;
  
  	  vec_safe_push (args, targ);
*************** d_build_call (TypeFunction *tf, tree cal
*** 2261,2267 ****
        unsigned int ix;
  
        FOR_EACH_VEC_SAFE_ELT (args, ix, arg)
! 	saved_args = compound_expr (saved_args, arg);
  
        /* Add a stub result type for the expression.  */
        tree result = build_zero_cst (TREE_TYPE (ctype));
--- 2270,2281 ----
        unsigned int ix;
  
        FOR_EACH_VEC_SAFE_ELT (args, ix, arg)
! 	{
! 	  saved_args = compound_expr (saved_args, arg);
! 
! 	  if (TYPE_MAIN_VARIANT (TREE_TYPE (arg)) == noreturn_type_node)
! 	    break;
! 	}
  
        /* Add a stub result type for the expression.  */
        tree result = build_zero_cst (TREE_TYPE (ctype));
diff -Nrcpad gcc-13-20260122/gcc/d/d-spec.cc gcc-13-20260129/gcc/d/d-spec.cc
*** gcc-13-20260122/gcc/d/d-spec.cc	Thu Jan 22 22:32:08 2026
--- gcc-13-20260129/gcc/d/d-spec.cc	Thu Jan 29 22:32:07 2026
*************** lang_specific_driver (cl_decoded_option
*** 162,185 ****
  	  break;
  
  	case OPT_defaultlib_:
! 	  if (defaultlib != NULL)
! 	    free (CONST_CAST (char *, defaultlib));
  	  if (arg != NULL)
  	    {
  	      args[i] |= SKIPOPT;
! 	      defaultlib = XNEWVEC (char, strlen (arg));
! 	      strcpy (CONST_CAST (char *, defaultlib), arg);
  	    }
  	  break;
  
  	case OPT_debuglib_:
! 	  if (debuglib != NULL)
! 	    free (CONST_CAST (char *, debuglib));
  	  if (arg != NULL)
  	    {
  	      args[i] |= SKIPOPT;
! 	      debuglib = XNEWVEC (char, strlen (arg));
! 	      strcpy (CONST_CAST (char *, debuglib), arg);
  	    }
  	  break;
  
--- 162,181 ----
  	  break;
  
  	case OPT_defaultlib_:
! 	  free (CONST_CAST (char *, defaultlib));
  	  if (arg != NULL)
  	    {
  	      args[i] |= SKIPOPT;
! 	      defaultlib = xstrdup (arg);
  	    }
  	  break;
  
  	case OPT_debuglib_:
! 	  free (CONST_CAST (char *, debuglib));
  	  if (arg != NULL)
  	    {
  	      args[i] |= SKIPOPT;
! 	      debuglib = xstrdup (arg);
  	    }
  	  break;
  
diff -Nrcpad gcc-13-20260122/gcc/d/decl.cc gcc-13-20260129/gcc/d/decl.cc
*** gcc-13-20260122/gcc/d/decl.cc	Thu Jan 22 22:32:08 2026
--- gcc-13-20260129/gcc/d/decl.cc	Thu Jan 29 22:32:07 2026
*************** get_fndecl_arguments (FuncDeclaration *d
*** 183,189 ****
  
  	  /* Type `noreturn` is a terminator, as no other arguments can possibly
  	     be evaluated after it.  */
! 	  if (TREE_TYPE (parm_decl) == noreturn_type_node)
  	    break;
  
  	  /* Chain them in the correct order.  */
--- 183,189 ----
  
  	  /* Type `noreturn` is a terminator, as no other arguments can possibly
  	     be evaluated after it.  */
! 	  if (TYPE_MAIN_VARIANT (TREE_TYPE (parm_decl)) == noreturn_type_node)
  	    break;
  
  	  /* Chain them in the correct order.  */
*************** public:
*** 781,786 ****
--- 781,792 ----
        }
      else if (d->isDataseg ())
        {
+ 	/* When the front-end type size is invalid, an error has already been
+ 	   given for the declaration or type.  */
+ 	dinteger_t size = d->type->size (d->loc);
+ 	if (size == SIZE_INVALID)
+ 	  return;
+ 
  	tree decl = get_symbol_decl (d);
  
  	/* Only need to build the VAR_DECL for extern declarations.  */
*************** public:
*** 794,802 ****
  	  return;
  
  	/* How big a symbol can be should depend on back-end.  */
! 	tree size = build_integer_cst (d->type->size (d->loc),
! 				       build_ctype (Type::tsize_t));
! 	if (!valid_constant_size_p (size))
  	  {
  	    error_at (make_location_t (d->loc), "size is too large");
  	    return;
--- 800,806 ----
  	  return;
  
  	/* How big a symbol can be should depend on back-end.  */
! 	if (!valid_constant_size_p (build_integer_cst (size, size_type_node)))
  	  {
  	    error_at (make_location_t (d->loc), "size is too large");
  	    return;
*************** public:
*** 824,831 ****
  	  }
  
  	/* Frontend should have already caught this.  */
! 	gcc_assert (!integer_zerop (size)
! 		    || d->type->toBasetype ()->isTypeSArray ());
  
  	d_finish_decl (decl);
  
--- 828,836 ----
  	  }
  
  	/* Frontend should have already caught this.  */
! 	gcc_assert ((size != 0 && size != SIZE_INVALID)
! 		    || d->type->toBasetype ()->isTypeSArray ()
! 		    || d->isCsymbol ());
  
  	d_finish_decl (decl);
  
*************** get_symbol_decl (Declaration *decl)
*** 1197,1204 ****
  
    /* Deal with placeholder symbols immediately:
       SymbolDeclaration is used as a shell around an initializer symbol.  */
!   SymbolDeclaration *sd = decl->isSymbolDeclaration ();
!   if (sd)
      {
        decl->csym = aggregate_initializer_decl (sd->dsym);
        return decl->csym;
--- 1202,1208 ----
  
    /* Deal with placeholder symbols immediately:
       SymbolDeclaration is used as a shell around an initializer symbol.  */
!   if (SymbolDeclaration *sd = decl->isSymbolDeclaration ())
      {
        decl->csym = aggregate_initializer_decl (sd->dsym);
        return decl->csym;
*************** get_symbol_decl (Declaration *decl)
*** 1209,1216 ****
      return get_typeinfo_decl ((TypeInfoDeclaration *) decl);
  
    /* FuncAliasDeclaration is used to import functions from another scope.  */
!   FuncAliasDeclaration *fad = decl->isFuncAliasDeclaration ();
!   if (fad)
      {
        decl->csym = get_symbol_decl (fad->funcalias);
        return decl->csym;
--- 1213,1219 ----
      return get_typeinfo_decl ((TypeInfoDeclaration *) decl);
  
    /* FuncAliasDeclaration is used to import functions from another scope.  */
!   if (FuncAliasDeclaration *fad = decl->isFuncAliasDeclaration ())
      {
        decl->csym = get_symbol_decl (fad->funcalias);
        return decl->csym;
*************** get_symbol_decl (Declaration *decl)
*** 1245,1252 ****
      }
  
    /* Build the tree for the symbol.  */
!   FuncDeclaration *fd = decl->isFuncDeclaration ();
!   if (fd)
      {
        /* Run full semantic on functions we need to know about.  */
        if (!fd->functionSemantic ())
--- 1248,1254 ----
      }
  
    /* Build the tree for the symbol.  */
!   if (FuncDeclaration *fd = decl->isFuncDeclaration ())
      {
        /* Run full semantic on functions we need to know about.  */
        if (!fd->functionSemantic ())
*************** get_symbol_decl (Declaration *decl)
*** 1338,1366 ****
        if (IDENTIFIER_DSYMBOL (mangled_name))
  	{
  	  Declaration *other = IDENTIFIER_DSYMBOL (mangled_name);
! 	  tree olddecl = decl->csym;
! 	  decl->csym = get_symbol_decl (other);
! 
! 	  /* Update the symbol location to the current definition.  */
! 	  if (DECL_EXTERNAL (decl->csym) && !DECL_INITIAL (decl->csym))
! 	    DECL_SOURCE_LOCATION (decl->csym) = DECL_SOURCE_LOCATION (olddecl);
  
! 	  /* The current declaration is a prototype or marked extern, merge
! 	     applied user attributes and return.  */
! 	  if (DECL_EXTERNAL (olddecl) && !DECL_INITIAL (olddecl))
! 	    {
! 	      apply_user_attributes (decl, decl->csym);
! 	      return decl->csym;
! 	    }
! 	  /* The previous declaration is a prototype or marked extern, set the
! 	     current declaration as the main reference of the symbol.  */
! 	  else if (DECL_EXTERNAL (decl->csym) && !DECL_INITIAL (decl->csym))
  	    {
! 	      IDENTIFIER_DSYMBOL (mangled_name) = decl;
! 	      DECL_EXTERNAL (decl->csym) = 0;
  	    }
! 	  /* Non-extern, non-templated decls shouldn't be defined twice.  */
! 	  else if (!decl->isInstantiated ())
  	    ScopeDsymbol::multiplyDefined (decl->loc, decl, other);
  	}
        else
--- 1340,1377 ----
        if (IDENTIFIER_DSYMBOL (mangled_name))
  	{
  	  Declaration *other = IDENTIFIER_DSYMBOL (mangled_name);
! 	  tree newdecl = decl->csym;
! 	  tree olddecl = get_symbol_decl (other);
  
! 	  if (TREE_CODE (olddecl) == TREE_CODE (newdecl))
  	    {
! 	      /* Update the symbol location to the current definition.  */
! 	      if (DECL_EXTERNAL (olddecl) && !DECL_INITIAL (olddecl))
! 		DECL_SOURCE_LOCATION (olddecl) = DECL_SOURCE_LOCATION (newdecl);
! 
! 	      /* The current declaration is a prototype or marked extern, merge
! 		 applied user attributes and return.  */
! 	      if (DECL_EXTERNAL (newdecl) && !DECL_INITIAL (newdecl))
! 		{
! 		  apply_user_attributes (decl, olddecl);
! 		  decl->csym = olddecl;
! 		  return decl->csym;
! 		}
! 	      /* The previous declaration is a prototype or marked extern, set
! 		 the current declaration as the main reference of the symbol.
! 	       */
! 	      else if (DECL_EXTERNAL (olddecl) && !DECL_INITIAL (olddecl))
! 		{
! 		  IDENTIFIER_DSYMBOL (mangled_name) = decl;
! 		  decl->csym = olddecl;
! 		  DECL_EXTERNAL (decl->csym) = 0;
! 		}
! 	      /* Non-extern, non-templated decls shouldn't be defined twice.  */
! 	      else if (!decl->isInstantiated ())
! 		ScopeDsymbol::multiplyDefined (decl->loc, decl, other);
  	    }
! 	  /* Declarations are for conflicting kinds of symbol.  */
! 	  else
  	    ScopeDsymbol::multiplyDefined (decl->loc, decl, other);
  	}
        else
*************** get_symbol_decl (Declaration *decl)
*** 1402,1407 ****
--- 1413,1421 ----
      }
    else if (TREE_CODE (decl->csym) == FUNCTION_DECL)
      {
+       FuncDeclaration *fd = decl->isFuncDeclaration ();
+       gcc_assert (fd != NULL);
+ 
        /* Dual-context functions require the code generation to build an array
  	 for the context pointer of the function, making the delicate task of
  	 tracking which context to follow when encountering a non-local symbol,
*************** get_symbol_decl (Declaration *decl)
*** 1555,1560 ****
--- 1569,1575 ----
    if (decl->isDataseg () || decl->isCodeseg () || decl->isThreadlocal ())
      {
        /* Set TREE_PUBLIC by default, but allow private template to override.  */
+       FuncDeclaration *fd = decl->isFuncDeclaration ();
        if (!fd || !fd->isNested ())
  	TREE_PUBLIC (decl->csym) = 1;
  
diff -Nrcpad gcc-13-20260122/gcc/d/expr.cc gcc-13-20260129/gcc/d/expr.cc
*** gcc-13-20260122/gcc/d/expr.cc	Thu Jan 22 22:32:08 2026
--- gcc-13-20260129/gcc/d/expr.cc	Thu Jan 29 22:32:07 2026
*************** public:
*** 2193,2199 ****
  	      {
  		/* Generate a slice for non-zero initialized aggregates,
  		   otherwise create an empty array.  */
! 		gcc_assert (e->type == Type::tvoid->arrayOf ()->constOf ());
  
  		tree type = build_ctype (e->type);
  		tree length = size_int (sd->dsym->structsize);
--- 2193,2200 ----
  	      {
  		/* Generate a slice for non-zero initialized aggregates,
  		   otherwise create an empty array.  */
! 		gcc_assert (e->type->nextOf ()->isConst ()
! 			    && e->type->nextOf ()->ty == TY::Tvoid);
  
  		tree type = build_ctype (e->type);
  		tree length = size_int (sd->dsym->structsize);
*************** public:
*** 2736,2743 ****
  	/* Array literal for a `scope' dynamic array.  */
  	gcc_assert (tb->ty == TY::Tarray);
  	ctor = force_target_expr (ctor);
! 	this->result_ = d_array_value (type, size_int (e->elements->length),
! 				       build_address (ctor));
        }
      else
        {
--- 2737,2745 ----
  	/* Array literal for a `scope' dynamic array.  */
  	gcc_assert (tb->ty == TY::Tarray);
  	ctor = force_target_expr (ctor);
! 	ctor = d_array_value (type, size_int (e->elements->length),
! 			      build_address (ctor));
! 	this->result_ = compound_expr (saved_elems, ctor);
        }
      else
        {
diff -Nrcpad gcc-13-20260122/gcc/d/toir.cc gcc-13-20260129/gcc/d/toir.cc
*** gcc-13-20260122/gcc/d/toir.cc	Thu Jan 22 22:32:08 2026
--- gcc-13-20260129/gcc/d/toir.cc	Thu Jan 29 22:32:07 2026
*************** public:
*** 990,1030 ****
  	/* Detect a call to a constructor function, or if returning a struct
  	   literal, write result directly into the return value.  */
  	StructLiteralExp *sle = NULL;
  	bool using_rvo_p = false;
  
  	if (DotVarExp *dve = (s->exp->isCallExp ()
  			      ? s->exp->isCallExp ()->e1->isDotVarExp ()
  			      : NULL))
  	  {
  	    if (dve->var->isCtorDeclaration ())
  	      {
  		if (CommaExp *ce = dve->e1->isCommaExp ())
  		  {
! 		    /* Temporary initialized inside a return expression, and
! 		       used as the return value.  Replace it with the hidden
! 			reference to allow RVO return.  */
! 		    DeclarationExp *de = ce->e1->isDeclarationExp ();
! 		    VarExp *ve = ce->e2->isVarExp ();
! 		    if (de != NULL && ve != NULL
! 			&& ve->var == de->declaration
! 			&& ve->var->storage_class & STCtemp)
! 		      {
! 			tree var = get_symbol_decl (ve->var);
! 			TREE_ADDRESSABLE (var) = 1;
! 			SET_DECL_VALUE_EXPR (var, decl);
! 			DECL_HAS_VALUE_EXPR_P (var) = 1;
! 			SET_DECL_LANG_NRVO (var, this->func_->shidden);
! 			using_rvo_p = true;
! 		      }
  		  }
  		else
  		  sle = dve->e1->isStructLiteralExp ();
  	      }
  	  }
  	else
  	  sle = s->exp->isStructLiteralExp ();
  
! 	if (sle != NULL)
  	  {
  	    StructDeclaration *sd = type->baseElemOf ()->isTypeStruct ()->sym;
  	    sle->sym = build_address (this->func_->shidden);
--- 990,1053 ----
  	/* Detect a call to a constructor function, or if returning a struct
  	   literal, write result directly into the return value.  */
  	StructLiteralExp *sle = NULL;
+ 	DeclarationExp *de = NULL;
+ 	VarExp *ve = NULL;
  	bool using_rvo_p = false;
  
  	if (DotVarExp *dve = (s->exp->isCallExp ()
  			      ? s->exp->isCallExp ()->e1->isDotVarExp ()
  			      : NULL))
  	  {
+ 	    /* Look for `var.__ctor(copytmp = {}, &copytmp)'  */
  	    if (dve->var->isCtorDeclaration ())
  	      {
  		if (CommaExp *ce = dve->e1->isCommaExp ())
  		  {
! 		    de = ce->e1->isDeclarationExp ();
! 		    ve = ce->e2->isVarExp ();
  		  }
  		else
  		  sle = dve->e1->isStructLiteralExp ();
  	      }
  	  }
+ 	else if (CommaExp *ce1 = s->exp->isCommaExp ())
+ 	  {
+ 	    /* Look for `copytmp = {}, copytmp.__ctor(), copytmp'  */
+ 	    if (CommaExp *ce2 = ce1->e2->isCommaExp ())
+ 	      {
+ 		DotVarExp *dve = ce2->e1->isCallExp ()
+ 		  ? ce2->e1->isCallExp ()->e1->isDotVarExp () : NULL;
+ 
+ 		if (dve && dve->var->isCtorDeclaration ())
+ 		  {
+ 		    de = ce1->e1->isDeclarationExp ();
+ 		    ve = ce2->e2->isVarExp ();
+ 		  }
+ 	      }
+ 	    else
+ 	      {
+ 		de = ce1->e1->isDeclarationExp ();
+ 		ve = ce1->e2->isVarExp ();
+ 	      }
+ 	  }
  	else
  	  sle = s->exp->isStructLiteralExp ();
  
! 	if (de != NULL && ve != NULL
! 	    && ve->var == de->declaration
! 	    && ve->var->storage_class & STCtemp)
! 	  {
! 	    /* Temporary initialized inside a return expression, and
! 	       used as the return value.  Replace it with the hidden
! 	       reference to allow RVO return.  */
! 	    tree var = get_symbol_decl (ve->var);
! 	    TREE_ADDRESSABLE (var) = 1;
! 	    SET_DECL_VALUE_EXPR (var, decl);
! 	    DECL_HAS_VALUE_EXPR_P (var) = 1;
! 	    SET_DECL_LANG_NRVO (var, this->func_->shidden);
! 	    using_rvo_p = true;
! 	  }
! 	else if (sle != NULL)
  	  {
  	    StructDeclaration *sd = type->baseElemOf ()->isTypeStruct ()->sym;
  	    sle->sym = build_address (this->func_->shidden);
diff -Nrcpad gcc-13-20260122/gcc/d/types.cc gcc-13-20260129/gcc/d/types.cc
*** gcc-13-20260122/gcc/d/types.cc	Thu Jan 22 22:32:08 2026
--- gcc-13-20260129/gcc/d/types.cc	Thu Jan 29 22:32:07 2026
*************** insert_aggregate_bitfield (tree type, tr
*** 324,329 ****
--- 324,333 ----
    DECL_BIT_FIELD (bitfield) = 1;
    DECL_BIT_FIELD_TYPE (bitfield) = TREE_TYPE (bitfield);
  
+   DECL_NONADDRESSABLE_P (bitfield) = 1;
+   if (DECL_NAME (bitfield) == NULL_TREE)
+     DECL_PADDING_P (bitfield) = 1;
+ 
    TYPE_FIELDS (type) = chainon (TYPE_FIELDS (type), bitfield);
  }
  
*************** finish_aggregate_type (unsigned structsi
*** 671,677 ****
  	  continue;
  	}
  
!       layout_decl (field, 0);
  
        /* Give bit-field its proper type after layout_decl.  */
        if (DECL_BIT_FIELD (field))
--- 675,685 ----
  	  continue;
  	}
  
!       /* Layout the field decl using its known alignment.  */
!       unsigned int known_align =
! 	least_bit_hwi (tree_to_uhwi (DECL_FIELD_BIT_OFFSET (field)));
! 
!       layout_decl (field, known_align);
  
        /* Give bit-field its proper type after layout_decl.  */
        if (DECL_BIT_FIELD (field))
*************** public:
*** 955,961 ****
  
  	/* Type `noreturn` is a terminator, as no other arguments can possibly
  	   be evaluated after it.  */
! 	if (type == noreturn_type_node)
  	  break;
  
  	fnparams = chainon (fnparams, build_tree_list (0, type));
--- 963,969 ----
  
  	/* Type `noreturn` is a terminator, as no other arguments can possibly
  	   be evaluated after it.  */
! 	if (TYPE_MAIN_VARIANT (type) == noreturn_type_node)
  	  break;
  
  	fnparams = chainon (fnparams, build_tree_list (0, type));
*************** public:
*** 981,987 ****
      d_keep (t->ctype);
  
      /* Qualify function types that have the type `noreturn` as volatile.  */
!     if (fntype == noreturn_type_node)
        t->ctype = build_qualified_type (t->ctype, TYPE_QUAL_VOLATILE);
  
      /* Handle any special support for calling conventions.  */
--- 989,995 ----
      d_keep (t->ctype);
  
      /* Qualify function types that have the type `noreturn` as volatile.  */
!     if (TYPE_MAIN_VARIANT (fntype) == noreturn_type_node)
        t->ctype = build_qualified_type (t->ctype, TYPE_QUAL_VOLATILE);
  
      /* Handle any special support for calling conventions.  */
diff -Nrcpad gcc-13-20260122/gcc/testsuite/ChangeLog gcc-13-20260129/gcc/testsuite/ChangeLog
*** gcc-13-20260122/gcc/testsuite/ChangeLog	Thu Jan 22 22:32:09 2026
--- gcc-13-20260129/gcc/testsuite/ChangeLog	Thu Jan 29 22:32:08 2026
***************
*** 1,3 ****
--- 1,58 ----
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2025-04-15  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/119799
+ 	* gdc.dg/torture/pr119799.d: New test.
+ 	* gdc.dg/torture/imports/pr119799c.c: New test.
+ 
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123419
+ 	* gdc.dg/pr123419.d: New test.
+ 
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123798
+ 	* gdc.dg/pr123798.d: New test.
+ 
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/121477
+ 	* gdc.dg/pr121477.d: New test.
+ 
+ 2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/123422
+ 	* gdc.dg/torture/pr123422.d: New test.
+ 
+ 2026-01-27  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2026-01-27  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/120096
+ 	* gdc.dg/torture/pr120096.d: New test.
+ 
+ 2026-01-23  Avinash Jayakar  <avinashd@linux.ibm.com>
+ 
+ 	PR target/119130
+ 	* gcc.target/powerpc/builtins-1-p9-runnable.c: Use same expected
+ 	results for both endian format.
+ 
  2026-01-16  Vladimir N. Makarov  <vmakarov@redhat.com>
  
  	PR rtl-optimization/123121
diff -Nrcpad gcc-13-20260122/gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c gcc-13-20260129/gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c
*** gcc-13-20260122/gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c	Thu Jan 22 22:32:12 2026
--- gcc-13-20260129/gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c	Thu Jan 29 22:32:15 2026
*************** int main() {
*** 16,28 ****
    vfb = (vector float){10.0, -2.0, 70.0, 999.0 };
  
    /* Expected results.  */
- #ifdef __BIG_ENDIAN__
-   vexpected = (vector unsigned short) { 0x4900, 0xc000, 0x5460, 0x63ce,
- 					0x3666, 0x3e66, 0x4d00, 0x563e };
- #else
    vexpected = (vector unsigned short) { 0x3666, 0x3e66, 0x4d00, 0x563e,
  					0x4900, 0xc000, 0x5460, 0x63ce };
- #endif
  
  /*
       vresult = vec_pack_to_short_fp32 (vfa, vfb);
--- 16,23 ----
diff -Nrcpad gcc-13-20260122/gcc/testsuite/gdc.dg/driver_debuglib.d gcc-13-20260129/gcc/testsuite/gdc.dg/driver_debuglib.d
*** gcc-13-20260122/gcc/testsuite/gdc.dg/driver_debuglib.d	Thu Jan  1 00:00:00 1970
--- gcc-13-20260129/gcc/testsuite/gdc.dg/driver_debuglib.d	Thu Jan 29 22:32:15 2026
***************
*** 0 ****
--- 1,2 ----
+ // { dg-do compile }
+ // { dg-additional-options "-debuglib=a -debuglib=b" }
diff -Nrcpad gcc-13-20260122/gcc/testsuite/gdc.dg/driver_defaultlib.d gcc-13-20260129/gcc/testsuite/gdc.dg/driver_defaultlib.d
*** gcc-13-20260122/gcc/testsuite/gdc.dg/driver_defaultlib.d	Thu Jan  1 00:00:00 1970
--- gcc-13-20260129/gcc/testsuite/gdc.dg/driver_defaultlib.d	Thu Jan 29 22:32:15 2026
***************
*** 0 ****
--- 1,2 ----
+ // { dg-do compile }
+ // { dg-additional-options "-defaultlib=a -defaultlib=b" }
diff -Nrcpad gcc-13-20260122/gcc/testsuite/gdc.dg/pr121477.d gcc-13-20260129/gcc/testsuite/gdc.dg/pr121477.d
*** gcc-13-20260122/gcc/testsuite/gdc.dg/pr121477.d	Thu Jan  1 00:00:00 1970
--- gcc-13-20260129/gcc/testsuite/gdc.dg/pr121477.d	Thu Jan 29 22:32:15 2026
***************
*** 0 ****
--- 1,12 ----
+ // { dg-do compile }
+ // { dg-additional-options "-fpreview=bitfields" }
+ struct S121477
+ {
+     int x : 4;
+ }
+ 
+ void f121477(S121477 s)
+ {
+     asm {"%0" :: "m" (s.x); } // { dg-error "cannot take address of bit-field" }
+     asm {"%0" : "=m" (s.x); } // { dg-error "cannot take address of bit-field" }
+ }
diff -Nrcpad gcc-13-20260122/gcc/testsuite/gdc.dg/pr123046.d gcc-13-20260129/gcc/testsuite/gdc.dg/pr123046.d
*** gcc-13-20260122/gcc/testsuite/gdc.dg/pr123046.d	Thu Jan  1 00:00:00 1970
--- gcc-13-20260129/gcc/testsuite/gdc.dg/pr123046.d	Thu Jan 29 22:32:15 2026
***************
*** 0 ****
--- 1,10 ----
+ // { dg-do compile }
+ ulong pure_hashOf(const ref typeof(*null) key)
+ {
+     return hashOf(key);
+ }
+ 
+ ulong hashOf(const typeof(*null) val)
+ {
+     return 0;
+ }
diff -Nrcpad gcc-13-20260122/gcc/testsuite/gdc.dg/pr123407a.d gcc-13-20260129/gcc/testsuite/gdc.dg/pr123407a.d
*** gcc-13-20260122/gcc/testsuite/gdc.dg/pr123407a.d	Thu Jan  1 00:00:00 1970
--- gcc-13-20260129/gcc/testsuite/gdc.dg/pr123407a.d	Thu Jan 29 22:32:15 2026
***************
*** 0 ****
--- 1,4 ----
+ // { dg-do compile }
+ module pr123407;
+ pragma(mangle, "ice") int fun();
+ pragma(mangle, "ice") int var; // { dg-error "matches conflicting symbols" }
diff -Nrcpad gcc-13-20260122/gcc/testsuite/gdc.dg/pr123407b.d gcc-13-20260129/gcc/testsuite/gdc.dg/pr123407b.d
*** gcc-13-20260122/gcc/testsuite/gdc.dg/pr123407b.d	Thu Jan  1 00:00:00 1970
--- gcc-13-20260129/gcc/testsuite/gdc.dg/pr123407b.d	Thu Jan 29 22:32:15 2026
***************
*** 0 ****
--- 1,4 ----
+ // { dg-do compile }
+ module pr123407;
+ int fun();
+ extern(C) int _D8pr1234073funFZi; // { dg-error "matches conflicting symbols" }
diff -Nrcpad gcc-13-20260122/gcc/testsuite/gdc.dg/pr123419.d gcc-13-20260129/gcc/testsuite/gdc.dg/pr123419.d
*** gcc-13-20260122/gcc/testsuite/gdc.dg/pr123419.d	Thu Jan  1 00:00:00 1970
--- gcc-13-20260129/gcc/testsuite/gdc.dg/pr123419.d	Thu Jan 29 22:32:15 2026
***************
*** 0 ****
--- 1,9 ----
+ // { dg-do compile }
+ struct S123419 {}
+ 
+ void t123419(T)(T _) {}
+ 
+ void f123419()
+ {
+     t123419(__traits(initSymbol, S123419));
+ }
diff -Nrcpad gcc-13-20260122/gcc/testsuite/gdc.dg/pr123798.d gcc-13-20260129/gcc/testsuite/gdc.dg/pr123798.d
*** gcc-13-20260122/gcc/testsuite/gdc.dg/pr123798.d	Thu Jan  1 00:00:00 1970
--- gcc-13-20260129/gcc/testsuite/gdc.dg/pr123798.d	Thu Jan 29 22:32:15 2026
***************
*** 0 ****
--- 1,14 ----
+ // { dg-do compile }
+ // { dg-additional-options "-fpreview=bitfields" }
+ class C123798
+ {
+     int a : 4;
+     long b : 8;
+ }
+ 
+ struct S123798
+ {
+     int a = 1;
+     int b : 4;
+     long c : 8;
+ }
diff -Nrcpad gcc-13-20260122/gcc/testsuite/gdc.dg/torture/imports/pr119799c.c gcc-13-20260129/gcc/testsuite/gdc.dg/torture/imports/pr119799c.c
*** gcc-13-20260122/gcc/testsuite/gdc.dg/torture/imports/pr119799c.c	Thu Jan  1 00:00:00 1970
--- gcc-13-20260129/gcc/testsuite/gdc.dg/torture/imports/pr119799c.c	Thu Jan 29 22:32:15 2026
***************
*** 0 ****
--- 1,4 ----
+ inline void fn119799()
+ {
+     static struct {} s119799;
+ }
diff -Nrcpad gcc-13-20260122/gcc/testsuite/gdc.dg/torture/pr119799.d gcc-13-20260129/gcc/testsuite/gdc.dg/torture/pr119799.d
*** gcc-13-20260122/gcc/testsuite/gdc.dg/torture/pr119799.d	Thu Jan  1 00:00:00 1970
--- gcc-13-20260129/gcc/testsuite/gdc.dg/torture/pr119799.d	Thu Jan 29 22:32:15 2026
***************
*** 0 ****
--- 1,9 ----
+ // { dg-do compile }
+ // { dg-additional-files "imports/pr119799c.c" }
+ // { dg-additional-options "-I[srcdir]" }
+ import imports.pr119799c;
+ 
+ void test()
+ {
+     fn119799;
+ }
diff -Nrcpad gcc-13-20260122/gcc/testsuite/gdc.dg/torture/pr120096.d gcc-13-20260129/gcc/testsuite/gdc.dg/torture/pr120096.d
*** gcc-13-20260122/gcc/testsuite/gdc.dg/torture/pr120096.d	Thu Jan  1 00:00:00 1970
--- gcc-13-20260129/gcc/testsuite/gdc.dg/torture/pr120096.d	Thu Jan 29 22:32:15 2026
***************
*** 0 ****
--- 1,18 ----
+ // { dg-do run }
+ // { dg-additional-options "-fpreview=dip1000" }
+ // { dg-skip-if "needs gcc/config.d" { ! d_runtime } }
+ struct S
+ {
+     this(int p) nothrow @nogc @safe
+     { f = p; }
+     int f;
+ }
+ 
+ int main() nothrow @nogc @safe
+ {
+     scope S[] sa = [S(1), S(2)];
+ 
+     assert(sa[0].f == 1);
+     assert(sa[1].f == 2);
+     return 0;
+ }
diff -Nrcpad gcc-13-20260122/gcc/testsuite/gdc.dg/torture/pr123422.d gcc-13-20260129/gcc/testsuite/gdc.dg/torture/pr123422.d
*** gcc-13-20260122/gcc/testsuite/gdc.dg/torture/pr123422.d	Thu Jan  1 00:00:00 1970
--- gcc-13-20260129/gcc/testsuite/gdc.dg/torture/pr123422.d	Thu Jan 29 22:32:15 2026
***************
*** 0 ****
--- 1,25 ----
+ // { dg-do run }
+ // { dg-skip-if "needs gcc/config.d" { ! d_runtime } }
+ struct S123422
+ {
+     S123422* ptr;
+     this(int) { ptr = &this; }
+     this(ref inout S123422) { ptr = &this; }
+ }
+ 
+ struct V123422
+ {
+     S123422 s;
+     this(int) { s = S123422(1); }
+ }
+ 
+ S123422 foo()
+ {
+     return V123422(1).s;
+ }
+ 
+ void main()
+ {
+     S123422 s = foo();
+     assert(&s == s.ptr);
+ }
diff -Nrcpad gcc-13-20260122/libstdc++-v3/ChangeLog gcc-13-20260129/libstdc++-v3/ChangeLog
*** gcc-13-20260122/libstdc++-v3/ChangeLog	Thu Jan 22 22:32:15 2026
--- gcc-13-20260129/libstdc++-v3/ChangeLog	Thu Jan 29 22:32:18 2026
***************
*** 1,3 ****
--- 1,34 ----
+ 2026-01-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2024-11-27  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/105857
+ 	* config/locale/dragonfly/codecvt_members.cc (do_length): Limit
+ 	size of alloca buffer to 4k.
+ 	* config/locale/gnu/codecvt_members.cc (do_length): Likewise.
+ 	* testsuite/22_locale/codecvt/length/wchar_t/105857.cc: New
+ 	test.
+ 
+ 2026-01-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/117276
+ 	* include/pstl/parallel_backend_tbb.h (__func_task::finalize):
+ 	Make deallocation unconditional.
+ 
+ 2026-01-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-12-06  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/atomic_wait.h (__detail::__atomic_compare): Use
+ 	std::addressof instead of &.
+ 	* include/std/atomic (atomic::wait, atomic::notify_one)
+ 	(atomic::notify_all): Likewise.
+ 
  2025-11-18  Jonathan Wakely  <jwakely@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-13-20260122/libstdc++-v3/config/locale/dragonfly/codecvt_members.cc gcc-13-20260129/libstdc++-v3/config/locale/dragonfly/codecvt_members.cc
*** gcc-13-20260122/libstdc++-v3/config/locale/dragonfly/codecvt_members.cc	Thu Jan 22 22:32:16 2026
--- gcc-13-20260129/libstdc++-v3/config/locale/dragonfly/codecvt_members.cc	Thu Jan 29 22:32:18 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 226,237 ****
  
      // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
      // in case we advance past it and then continue, in a loop.
!     // NB: mbsnrtowcs is a GNU extension
  
      // A dummy internal buffer is needed in order for mbsnrtocws to consider
      // its fourth parameter (it wouldn't with NULL as first parameter).
      wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t)
! 							   * __max));
      while (__from < __end && __max)
        {
  	const extern_type* __from_chunk_end;
--- 226,239 ----
  
      // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
      // in case we advance past it and then continue, in a loop.
!     // NB: mbsnrtowcs is in POSIX.1-2008
! 
!     const size_t __to_len = 1024; // Size of alloca'd output buffer
  
      // A dummy internal buffer is needed in order for mbsnrtocws to consider
      // its fourth parameter (it wouldn't with NULL as first parameter).
      wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t)
! 							   * __to_len));
      while (__from < __end && __max)
        {
  	const extern_type* __from_chunk_end;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 244,250 ****
  	const extern_type* __tmp_from = __from;
  	size_t __conv = mbsnrtowcs(__to, &__from,
  				   __from_chunk_end - __from,
! 				   __max, &__state);
  	if (__conv == static_cast<size_t>(-1))
  	  {
  	    // In case of error, in order to stop at the exact place we
--- 246,253 ----
  	const extern_type* __tmp_from = __from;
  	size_t __conv = mbsnrtowcs(__to, &__from,
  				   __from_chunk_end - __from,
! 				   __max > __to_len ? __to_len : __max,
! 				   &__state);
  	if (__conv == static_cast<size_t>(-1))
  	  {
  	    // In case of error, in order to stop at the exact place we
diff -Nrcpad gcc-13-20260122/libstdc++-v3/config/locale/gnu/codecvt_members.cc gcc-13-20260129/libstdc++-v3/config/locale/gnu/codecvt_members.cc
*** gcc-13-20260122/libstdc++-v3/config/locale/gnu/codecvt_members.cc	Thu Jan 22 22:32:16 2026
--- gcc-13-20260129/libstdc++-v3/config/locale/gnu/codecvt_members.cc	Thu Jan 29 22:32:18 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 243,254 ****
  
      // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
      // in case we advance past it and then continue, in a loop.
!     // NB: mbsnrtowcs is a GNU extension
  
      // A dummy internal buffer is needed in order for mbsnrtocws to consider
      // its fourth parameter (it wouldn't with NULL as first parameter).
      wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t)
! 							   * __max));
      while (__from < __end && __max)
        {
  	const extern_type* __from_chunk_end;
--- 243,256 ----
  
      // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
      // in case we advance past it and then continue, in a loop.
!     // NB: mbsnrtowcs is in POSIX.1-2008
! 
!     const size_t __to_len = 1024; // Size of alloca'd output buffer
  
      // A dummy internal buffer is needed in order for mbsnrtocws to consider
      // its fourth parameter (it wouldn't with NULL as first parameter).
      wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t)
! 							   * __to_len));
      while (__from < __end && __max)
        {
  	const extern_type* __from_chunk_end;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 261,267 ****
  	const extern_type* __tmp_from = __from;
  	size_t __conv = mbsnrtowcs(__to, &__from,
  				   __from_chunk_end - __from,
! 				   __max, &__state);
  	if (__conv == static_cast<size_t>(-1))
  	  {
  	    // In case of error, in order to stop at the exact place we
--- 263,270 ----
  	const extern_type* __tmp_from = __from;
  	size_t __conv = mbsnrtowcs(__to, &__from,
  				   __from_chunk_end - __from,
! 				   __max > __to_len ? __to_len : __max,
! 				   &__state);
  	if (__conv == static_cast<size_t>(-1))
  	  {
  	    // In case of error, in order to stop at the exact place we
diff -Nrcpad gcc-13-20260122/libstdc++-v3/include/bits/atomic_wait.h gcc-13-20260129/libstdc++-v3/include/bits/atomic_wait.h
*** gcc-13-20260122/libstdc++-v3/include/bits/atomic_wait.h	Thu Jan 22 22:32:16 2026
--- gcc-13-20260129/libstdc++-v3/include/bits/atomic_wait.h	Thu Jan 29 22:32:18 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 187,193 ****
        bool __atomic_compare(const _Tp& __a, const _Tp& __b)
        {
  	// TODO make this do the correct padding bit ignoring comparison
! 	return __builtin_memcmp(&__a, &__b, sizeof(_Tp)) == 0;
        }
  
      struct __waiter_pool_base
--- 187,194 ----
        bool __atomic_compare(const _Tp& __a, const _Tp& __b)
        {
  	// TODO make this do the correct padding bit ignoring comparison
! 	return __builtin_memcmp(std::addressof(__a), std::addressof(__b),
! 				sizeof(_Tp)) == 0;
        }
  
      struct __waiter_pool_base
diff -Nrcpad gcc-13-20260122/libstdc++-v3/include/pstl/parallel_backend_tbb.h gcc-13-20260129/libstdc++-v3/include/pstl/parallel_backend_tbb.h
*** gcc-13-20260122/libstdc++-v3/include/pstl/parallel_backend_tbb.h	Thu Jan 22 22:32:16 2026
--- gcc-13-20260129/libstdc++-v3/include/pstl/parallel_backend_tbb.h	Thu Jan 29 22:32:18 2026
*************** class __root_task
*** 521,527 ****
      friend class __func_task<_Func>;
  };
  
! #else  // TBB_INTERFACE_VERSION <= 12000
  class __task : public tbb::detail::d1::task
  {
    protected:
--- 521,527 ----
      friend class __func_task<_Func>;
  };
  
! #else  // TBB_INTERFACE_VERSION > 12000
  class __task : public tbb::detail::d1::task
  {
    protected:
*************** class __func_task : public __task
*** 656,665 ****
  
          _PSTL_ASSERT(__parent != nullptr);
          _PSTL_ASSERT(__parent->_M_refcount.load(std::memory_order_relaxed) > 0);
!         if (--__parent->_M_refcount == 0)
          {
              _PSTL_ASSERT(__next == nullptr);
-             __alloc.deallocate(this, *__ed);
              return __parent;
          }
  
--- 656,671 ----
  
          _PSTL_ASSERT(__parent != nullptr);
          _PSTL_ASSERT(__parent->_M_refcount.load(std::memory_order_relaxed) > 0);
! 
!         auto __refcount = --__parent->_M_refcount;
! 
!         // Placing the deallocation after the refcount decrement allows another thread to proceed with tree
!         // folding concurrently with this task cleanup.
!         __alloc.deallocate(this, *__ed);
! 
!         if (__refcount == 0)
          {
              _PSTL_ASSERT(__next == nullptr);
              return __parent;
          }
  
diff -Nrcpad gcc-13-20260122/libstdc++-v3/include/std/atomic gcc-13-20260129/libstdc++-v3/include/std/atomic
*** gcc-13-20260122/libstdc++-v3/include/std/atomic	Thu Jan 22 22:32:16 2026
--- gcc-13-20260129/libstdc++-v3/include/std/atomic	Thu Jan 29 22:32:18 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 387,410 ****
                                         __cmpexch_failure_order(__m)); }
  
  #if __cpp_lib_atomic_wait
!     void
!     wait(_Tp __old, memory_order __m = memory_order_seq_cst) const noexcept
!     {
!       std::__atomic_wait_address_v(&_M_i, __old,
! 			 [__m, this] { return this->load(__m); });
!     }
  
!     // TODO add const volatile overload
  
!     void
!     notify_one() noexcept
!     { std::__atomic_notify_address(&_M_i, false); }
  
!     void
!     notify_all() noexcept
!     { std::__atomic_notify_address(&_M_i, true); }
  #endif // __cpp_lib_atomic_wait
- 
      };
  #undef _GLIBCXX20_INIT
  
--- 387,409 ----
                                         __cmpexch_failure_order(__m)); }
  
  #if __cpp_lib_atomic_wait
!       void
!       wait(_Tp __old, memory_order __m = memory_order_seq_cst) const noexcept
!       {
! 	std::__atomic_wait_address_v(std::addressof(_M_i), __old,
! 				     [__m, this] { return this->load(__m); });
!       }
  
!       // TODO add const volatile overload
  
!       void
!       notify_one() noexcept
!       { std::__atomic_notify_address(std::addressof(_M_i), false); }
  
!       void
!       notify_all() noexcept
!       { std::__atomic_notify_address(std::addressof(_M_i), true); }
  #endif // __cpp_lib_atomic_wait
      };
  #undef _GLIBCXX20_INIT
  
diff -Nrcpad gcc-13-20260122/libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/105857.cc gcc-13-20260129/libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/105857.cc
*** gcc-13-20260122/libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/105857.cc	Thu Jan  1 00:00:00 1970
--- gcc-13-20260129/libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/105857.cc	Thu Jan 29 22:32:18 2026
***************
*** 0 ****
--- 1,21 ----
+ // { dg-do run }
+ 
+ // Bug libstdc++/105857 codecvt::do_length causes unexpected buffer overflow
+ 
+ #include <locale>
+ #include <testsuite_hooks.h>
+ 
+ int main()
+ {
+   std::string s(1050, 'a');
+   typedef std::codecvt<wchar_t, char, std::mbstate_t> Cvt;
+   const Cvt& cvt = std::use_facet<Cvt>(std::locale());
+   const char* from = s.c_str();
+   const char* from_end = s.c_str() + s.size();
+   std::size_t max = std::size_t(-1) / 4 + 2;
+   std::mbstate_t state = std::mbstate_t();
+   int n = cvt.length(state, from, from_end, max);
+   VERIFY( n == s.size() );
+   n = cvt.length(state, from, from_end, 2);
+   VERIFY( n == 2 );
+ }
