diff -Nrcpad gcc-15-20251220/LAST_UPDATED gcc-15-20251227/LAST_UPDATED
*** gcc-15-20251220/LAST_UPDATED	Sat Dec 20 22:32:19 2025
--- gcc-15-20251227/LAST_UPDATED	Sat Dec 27 22:32:18 2025
***************
*** 1 ****
! Obtained from git: releases/gcc-15 revision 89a05e96fbe45543fb435502e97562aee70496bd
--- 1 ----
! Obtained from git: releases/gcc-15 revision 7f6720874b48df2d81188ce88a2ea8b95e405254
diff -Nrcpad gcc-15-20251220/MD5SUMS gcc-15-20251227/MD5SUMS
*** gcc-15-20251220/MD5SUMS	Sat Dec 20 22:32:24 2025
--- gcc-15-20251227/MD5SUMS	Sat Dec 27 22:32:23 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20251220.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20251227.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 25,31 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 579340af706fbfe3a621c3176c7f6871  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
--- 25,31 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 4243e01ffdf3f11d08c36c5c9153b92f  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 514,520 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! b82bcc810bb6497bb283635fa6e5f759  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 514,520 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 03fbbed23b1455a60cf91db05f23d835  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 551,557 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 08d4bf028a27e354dc6e074110415f49  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 551,557 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! a5a48118ac138f9c852d0aaf36fe5746  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ec6799501b2eb2923d5de6a66169dbd2  gcc/ON
*** 563,569 ****
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! f2b0107af1a15ba87eef477b531254ff  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 563,569 ----
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! e05d28d75086517b86ce7573b1c8dafe  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** e8ba734d63b4001c905ea24a0dc1b6a3  gcc/ad
*** 856,862 ****
  a74b4504c5ad4ed4e963f0691c289b40  gcc/ada/gcc-interface/system.ads
  b350a6fd65cafe8bd47dc42192437310  gcc/ada/gcc-interface/targtyps.cc
  da03d35f4d69ea6f735edce7df124c15  gcc/ada/gcc-interface/trans.cc
! 054d591deee18b8775aa2c7a898c8861  gcc/ada/gcc-interface/utils.cc
  7b0d708fd189018a87468ef844fc3811  gcc/ada/gcc-interface/utils2.cc
  20ab1d2ee73423b8b0fababbae54659c  gcc/ada/gen_il-fields.ads
  580645a6185724324a0a7aad4f86301c  gcc/ada/gen_il-gen-gen_entities.adb
--- 856,862 ----
  a74b4504c5ad4ed4e963f0691c289b40  gcc/ada/gcc-interface/system.ads
  b350a6fd65cafe8bd47dc42192437310  gcc/ada/gcc-interface/targtyps.cc
  da03d35f4d69ea6f735edce7df124c15  gcc/ada/gcc-interface/trans.cc
! a66c2acc9fb0d70b4c6209180d10b200  gcc/ada/gcc-interface/utils.cc
  7b0d708fd189018a87468ef844fc3811  gcc/ada/gcc-interface/utils2.cc
  20ab1d2ee73423b8b0fababbae54659c  gcc/ada/gen_il-fields.ads
  580645a6185724324a0a7aad4f86301c  gcc/ada/gen_il-gen-gen_entities.adb
*************** abd831e54ebd759115e62d420bdb5c2f  gcc/ad
*** 2910,2916 ****
  3bf01e026b494a442389a5d3541785b8  gcc/ada/seh_init.c
  b0607745e568ea27d4cb1091a13ee2ce  gcc/ada/sem.adb
  afaa0a52de285d1aad9c58b79b424a1f  gcc/ada/sem.ads
! 5b0fac9160329bb5a85d074678625b9f  gcc/ada/sem_aggr.adb
  d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ada/sem_aggr.ads
  5117d2afaf1213276b078ba84a5ead3c  gcc/ada/sem_attr.adb
  bfe4748123d415f6eb13d89a585468f1  gcc/ada/sem_attr.ads
--- 2910,2916 ----
  3bf01e026b494a442389a5d3541785b8  gcc/ada/seh_init.c
  b0607745e568ea27d4cb1091a13ee2ce  gcc/ada/sem.adb
  afaa0a52de285d1aad9c58b79b424a1f  gcc/ada/sem.ads
! 6a4e4d9fd915baf744f9c994e62a03f0  gcc/ada/sem_aggr.adb
  d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ada/sem_aggr.ads
  5117d2afaf1213276b078ba84a5ead3c  gcc/ada/sem_attr.adb
  bfe4748123d415f6eb13d89a585468f1  gcc/ada/sem_attr.ads
*************** e364f4e3ae92066699cc93a8f7b828c1  gcc/ad
*** 2924,2938 ****
  14c23ddb8ce8f7ab6478f3aff202d2bf  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! 8c99d8327e438dbd73304e886820050a  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
! 15816afaefd204ea408090cbab4fa002  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
  5c4cd4fb6b50f17df11a7eb313d1dba0  gcc/ada/sem_ch3.adb
  5fd10023b617fc61dce7c2801674285d  gcc/ada/sem_ch3.ads
! 3e54b6459faeeb42c9c8e748cfc81a3f  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
  3d2fb7e75bcf5cb7e2f014691fbc1d87  gcc/ada/sem_ch5.adb
  cbfbd3e4737f56717fc2ffda6b38f125  gcc/ada/sem_ch5.ads
--- 2924,2938 ----
  14c23ddb8ce8f7ab6478f3aff202d2bf  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! 04b649db1974330f13d4f8fde0553b4a  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
! d9e15a5a1c6892836db1aa8f3e778397  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
  5c4cd4fb6b50f17df11a7eb313d1dba0  gcc/ada/sem_ch3.adb
  5fd10023b617fc61dce7c2801674285d  gcc/ada/sem_ch3.ads
! 7907830806d307ed23ed1cc83098c116  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
  3d2fb7e75bcf5cb7e2f014691fbc1d87  gcc/ada/sem_ch5.adb
  cbfbd3e4737f56717fc2ffda6b38f125  gcc/ada/sem_ch5.ads
*************** e8e79e2a818321d7816e27eed8d17404  gcc/ad
*** 2962,2968 ****
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
  e194b17ba1df97f90ca61f6de49c194f  gcc/ada/sem_prag.adb
  3d4cec1697839c758bf4ee78035143d3  gcc/ada/sem_prag.ads
! 682159c8a517a990414691a040df1b40  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
  28d33ede4288814374d1909847798c7d  gcc/ada/sem_scil.adb
  db6f5a37bd59fd83ff3286e71ab985fe  gcc/ada/sem_scil.ads
--- 2962,2968 ----
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
  e194b17ba1df97f90ca61f6de49c194f  gcc/ada/sem_prag.adb
  3d4cec1697839c758bf4ee78035143d3  gcc/ada/sem_prag.ads
! 4cbcb93e569fe509da6c28638f2794f8  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
  28d33ede4288814374d1909847798c7d  gcc/ada/sem_scil.adb
  db6f5a37bd59fd83ff3286e71ab985fe  gcc/ada/sem_scil.ads
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5500,5506 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 8af16637500778cfaef006b1324ca3d6  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5500,5506 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 7e070c65ebc7f7ad7700c15ac12d8960  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** c2a7409e57253e5d9bfd8ce29fb85212  gcc/cp
*** 5580,5586 ****
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  8a43dc7eb02c2c19d4faa7344f490b26  gcc/cp/method.cc
! b095356a119cfb5897376a6f11228c04  gcc/cp/module.cc
  4fbf6c5b0391fc30bc3aaea6d8cb1e3e  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
--- 5580,5586 ----
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  8a43dc7eb02c2c19d4faa7344f490b26  gcc/cp/method.cc
! 91ec68362ef28437681aff266210dc11  gcc/cp/module.cc
  4fbf6c5b0391fc30bc3aaea6d8cb1e3e  gcc/cp/name-lookup.cc
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8447,8453 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 5139a8813335aff9b9482be08b809081  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8447,8453 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 6931f861ad97d0114661956d71bceb88  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** d684f71f3f20bed75ccc9aecab05ecdb  gcc/te
*** 27291,27296 ****
--- 27291,27298 ----
  af1e9e3b0cc46e0d597048ea5dda7431  gcc/testsuite/g++.dg/modules/pr119102_b.C
  d1e2592670bcdeda87ffce22aa27ec30  gcc/testsuite/g++.dg/modules/pr119608_a.C
  42f7d0ad39e2bd3aa2ca1c1f2e1b0410  gcc/testsuite/g++.dg/modules/pr119608_b.C
+ 2b317cc9d17067098caad41a9ab4b86e  gcc/testsuite/g++.dg/modules/pr122922_a.C
+ acc8849da8a5b2d5ba59c3913e5a6714  gcc/testsuite/g++.dg/modules/pr122922_b.C
  56ba9e2a41b995724a511df79d8df541  gcc/testsuite/g++.dg/modules/pr98531-1.h
  7155fba8679861dc6ac8879b5f49a6eb  gcc/testsuite/g++.dg/modules/pr98531-1_a.H
  db36409e89afb58e627178caf0f3d7d5  gcc/testsuite/g++.dg/modules/pr98531-1_b.C
*************** d69a35cfdc5358c8603e5c2e35112d75  gcc/te
*** 59305,59310 ****
--- 59307,59316 ----
  b14a7c563931d32378d5a7c177b4a9c9  gcc/testsuite/gcc.dg/vect/vect-early-break_136-pr120357.c
  40ef6dac17d7e04eaed85a5b371dc2eb  gcc/testsuite/gcc.dg/vect/vect-early-break_137-pr121190.c
  73bc7475d6af2bd77455abec5df316e4  gcc/testsuite/gcc.dg/vect/vect-early-break_14.c
+ 0f94ea8d32566351c449ef0923f780bb  gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_1.c
+ fca55cf03db9d8a5e743486b3427a96a  gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_2.c
+ 8cbd75311a4ecc168ec09085f538c7d0  gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_3.c
+ 25d4d94bafb1405becf55cc15f94275e  gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_4.c
  e90473e2ecf7c08db9278bdca5060773  gcc/testsuite/gcc.dg/vect/vect-early-break_15.c
  2232d395ceff11af9b28f269e86162c9  gcc/testsuite/gcc.dg/vect/vect-early-break_16.c
  74848a5e9be64a5356628885f52c286b  gcc/testsuite/gcc.dg/vect/vect-early-break_17.c
*************** e79a5fff5c4841ba8e2da41f54be1c1c  gcc/te
*** 105763,105768 ****
--- 105769,105775 ----
  05457962d41eef6a41a3de889144d78a  gcc/testsuite/gfortran.dg/pr120191_3.f90
  b1cb2c9a52574c2df5df49bd13ee7e5d  gcc/testsuite/gfortran.dg/pr120196.f90
  9a63937be6d5e03574fd9c46968454c5  gcc/testsuite/gfortran.dg/pr121234.f90
+ b9c77c8cd78fcd9e57fbfafe732a8c95  gcc/testsuite/gfortran.dg/pr122936.f90
  984f8307f36d56a0b48b5acce2dd5eb5  gcc/testsuite/gfortran.dg/pr12884.f
  64075248b9d1bffd6f380bb4e2a6eae0  gcc/testsuite/gfortran.dg/pr15129.f90
  e9cbd51db4e16292fc5dd1fead2e5a49  gcc/testsuite/gfortran.dg/pr15140.f90
*************** b3a316ada43c24ff36cbe71860fae91c  gcc/te
*** 110706,110711 ****
--- 110713,110724 ----
  3c5d0783cbdc3181db59d9f27a9e1a2d  gcc/testsuite/gnat.dg/aggr30.ads
  4c012319986c2dce532428fea4934ee2  gcc/testsuite/gnat.dg/aggr31.adb
  2e81bb438686c4b5e8022356634d0f32  gcc/testsuite/gnat.dg/aggr33.adb
+ fbdb338ed0af1dd948f3a9a5e3ee1805  gcc/testsuite/gnat.dg/aggr34.adb
+ 0849064da3e768041e2dec19d47f5461  gcc/testsuite/gnat.dg/aggr34_pkg1.adb
+ add67b8a04a202421f2564cbcbcdbc88  gcc/testsuite/gnat.dg/aggr34_pkg1.ads
+ 59299ad44fc7c1448bdc355f64dda579  gcc/testsuite/gnat.dg/aggr34_pkg2.adb
+ 564b8aed71e56ea8798f32904183e4cf  gcc/testsuite/gnat.dg/aggr34_pkg2.ads
+ dc8fcab04675e97bd3b1a9cc9ea62b81  gcc/testsuite/gnat.dg/aggr34_pkg3.ads
  35168b6dce753ec723ff0dcf21d977d0  gcc/testsuite/gnat.dg/aggr4.adb
  a12ec40d7ebc1ab08b05b0d1f6a57bc4  gcc/testsuite/gnat.dg/aggr7.adb
  39fba9f7f4870b15e9c37bcf9a358858  gcc/testsuite/gnat.dg/aggr8.adb
*************** bc5d484f0195c40f96573375913aad6a  gcc/te
*** 112492,112497 ****
--- 112505,112511 ----
  b028802f236df04a9a038de337a5c2dc  gcc/testsuite/gnat.dg/specs/aggr5.ads
  8317714735f6bcf3820730db670ecec1  gcc/testsuite/gnat.dg/specs/aggr6.ads
  d85e98dad301b07f80ba5ad3d5adbe63  gcc/testsuite/gnat.dg/specs/aggr8.ads
+ 8d9f49d860ee6a20314b8b77bfff71c6  gcc/testsuite/gnat.dg/specs/aggr9.ads
  03d5230a50a20391e0238f6841dcaf91  gcc/testsuite/gnat.dg/specs/ai_116.ads
  7d85593bd2feb29192cd8b150c52dde2  gcc/testsuite/gnat.dg/specs/alignment1.ads
  2137406ab24e57901900aff5d6a8f7d6  gcc/testsuite/gnat.dg/specs/alignment2.ads
*************** bfb26e1cdacb2ba2f03eb976978bb43f  gcc/te
*** 112514,112519 ****
--- 112528,112534 ----
  c32b716552779677ae176058dfb0e811  gcc/testsuite/gnat.dg/specs/attribute_parsing.ads
  f816d4862285932d8e7b70c2efc94426  gcc/testsuite/gnat.dg/specs/box1.ads
  250f7491f96f113a197899dda06a57fe  gcc/testsuite/gnat.dg/specs/bss1.ads
+ 9b7de00350e4ab77eabfdece45deb6e4  gcc/testsuite/gnat.dg/specs/class_wide1.ads
  22d47e1639397ee371d9448cf072ccfb  gcc/testsuite/gnat.dg/specs/clause_on_volatile.ads
  8def2fc44b62c48b1c9f7f2f3906807c  gcc/testsuite/gnat.dg/specs/compile_time1.ads
  78a5f35d64fd87f033de3894f27944ec  gcc/testsuite/gnat.dg/specs/compile_time1_pkg.ads
*************** bac1e8c2c28486c2dacd74f69ad37ca6  gcc/te
*** 112589,112594 ****
--- 112604,112610 ----
  8a6a0905a2e9d263001e69e19b9657c3  gcc/testsuite/gnat.dg/specs/lto3_pkg2.adb
  1d6fe3d382f738feda5c7c3faea04614  gcc/testsuite/gnat.dg/specs/lto3_pkg2.ads
  bd5a6ea89b23bd5629784ef6f9f822ab  gcc/testsuite/gnat.dg/specs/machine_attribute.ads
+ b1a7d26ec14c2e4b30e7f5732498d30e  gcc/testsuite/gnat.dg/specs/mutably_tagged1.ads
  a573c4fbee048b518c86be4ea7e21d27  gcc/testsuite/gnat.dg/specs/no_streams.ads
  d470d680d139ab860f9207e4c6a63125  gcc/testsuite/gnat.dg/specs/noinline1.ads
  750425a1e2a00ca741c599016cfcbb7b  gcc/testsuite/gnat.dg/specs/noinline3.ads
*************** a41c3fb8911461149186ff901cf31d4a  gcc/tr
*** 118030,118036 ****
  77240c08cea454c2d4a449206f7930c3  gcc/tree-vect-patterns.cc
  75eb406d11bc2ae9f01cc1e72787b3d5  gcc/tree-vect-slp-patterns.cc
  1509298594ae256fc192ed720185ee63  gcc/tree-vect-slp.cc
! c095caa5b1ced0e7d097e6a525709865  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  6a5457c324d4279acbd82f147f1dd823  gcc/tree-vectorizer.cc
--- 118046,118052 ----
  77240c08cea454c2d4a449206f7930c3  gcc/tree-vect-patterns.cc
  75eb406d11bc2ae9f01cc1e72787b3d5  gcc/tree-vect-slp-patterns.cc
  1509298594ae256fc192ed720185ee63  gcc/tree-vect-slp.cc
! 257592dcaddb183075b1dc6505be744b  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  6a5457c324d4279acbd82f147f1dd823  gcc/tree-vectorizer.cc
*************** b054056cc4fe4de7a78d34e43f2f3bab  libgco
*** 120480,120486 ****
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  7921a81e3cbf784d960d70db7bc6e242  libgcobol/valconv.cc
  c7d27fb7e36a42567d7cc4d14e7ed3fe  libgcobol/valconv.h
! 067d42a76c08567b3345a8e095e7284b  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
--- 120496,120502 ----
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  7921a81e3cbf784d960d70db7bc6e242  libgcobol/valconv.cc
  c7d27fb7e36a42567d7cc4d14e7ed3fe  libgcobol/valconv.h
! 8a6ce93714582d5ec3066ab168ef3f29  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
*************** c7169b01bb969daf7e30948005f39988  libgfo
*** 121398,121404 ****
  2c879686a9c5431b13c4d3a9323e5fed  libgfortran/io/inquire.c
  9a1581b774b6fa5ddc5861750824984f  libgfortran/io/intrinsics.c
  68b0f7c5c62320c0b053455824877d6e  libgfortran/io/io.h
! b95dff39f8b38e33ccf895ccf509a3a6  libgfortran/io/list_read.c
  bc0fa60eac17837b1c762e97a8c08673  libgfortran/io/lock.c
  d043bdbc42f0d079e46ba78d36d7d784  libgfortran/io/open.c
  fa8c3abd0f354521bcc23aa747c190fe  libgfortran/io/read.c
--- 121414,121420 ----
  2c879686a9c5431b13c4d3a9323e5fed  libgfortran/io/inquire.c
  9a1581b774b6fa5ddc5861750824984f  libgfortran/io/intrinsics.c
  68b0f7c5c62320c0b053455824877d6e  libgfortran/io/io.h
! 2885ac6fa470ae0851603e724c6b347e  libgfortran/io/list_read.c
  bc0fa60eac17837b1c762e97a8c08673  libgfortran/io/lock.c
  d043bdbc42f0d079e46ba78d36d7d784  libgfortran/io/open.c
  fa8c3abd0f354521bcc23aa747c190fe  libgfortran/io/read.c
diff -Nrcpad gcc-15-20251220/gcc/ChangeLog gcc-15-20251227/gcc/ChangeLog
*** gcc-15-20251220/gcc/ChangeLog	Sat Dec 20 22:32:05 2025
--- gcc-15-20251227/gcc/ChangeLog	Sat Dec 27 22:32:05 2025
***************
*** 1,3 ****
--- 1,9 ----
+ 2025-12-22  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/122868
+ 	* tree-vect-stmts.cc (vectorizable_load): Don't hoist loop invariant
+ 	conditional loads unless in header.
+ 
  2025-12-19  Yury Khrustalev  <yury.khrustalev@arm.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20251220/gcc/DATESTAMP gcc-15-20251227/gcc/DATESTAMP
*** gcc-15-20251220/gcc/DATESTAMP	Sat Dec 20 22:32:05 2025
--- gcc-15-20251227/gcc/DATESTAMP	Sat Dec 27 22:32:05 2025
***************
*** 1 ****
! 20251220
--- 1 ----
! 20251227
diff -Nrcpad gcc-15-20251220/gcc/ada/ChangeLog gcc-15-20251227/gcc/ada/ChangeLog
*** gcc-15-20251220/gcc/ada/ChangeLog	Sat Dec 20 22:32:05 2025
--- gcc-15-20251227/gcc/ada/ChangeLog	Sat Dec 27 22:32:05 2025
***************
*** 1,3 ****
--- 1,39 ----
+ 2025-12-26  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	PR ada/123088
+ 	* sem_aggr.adb (Resolve_Record_Aggregate): Add more robust guard.
+ 
+ 2025-12-26  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	PR ada/123302
+ 	* sem_ch12.adb (Save_Global_Reference.Save_References_In_Aggregate):
+ 	Recurse on the scope of the type to find one that is visible, in the
+ 	case of an actual in a subprogram call with a local type.
+ 
+ 2025-12-26  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	PR ada/123289
+ 	* sem_ch13.adb (Resolve_Aspect_Aggregate.Resolve_Operation): Give
+ 	an error if the operation's name denotes more than one subprogram.
+ 
+ 2025-12-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123185
+ 	* sem_ch4.adb (Analyze_Overloaded_Selected_Component): Go to the
+ 	root when the prefix has a class-wide type.
+ 	* sem_res.adb (Resolve_Selected_Component): Likewise.
+ 
+ 2025-12-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123060
+ 	* gcc-interface/utils.cc (update_pointer_to): Streamline.
+ 
+ 2025-12-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123060
+ 	* gcc-interface/utils.cc (update_pointer_to): Preserve the alias
+ 	sets present on the old pointer and old reference, if any.
+ 
  2025-12-15  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR ada/123138
diff -Nrcpad gcc-15-20251220/gcc/ada/gcc-interface/utils.cc gcc-15-20251227/gcc/ada/gcc-interface/utils.cc
*** gcc-15-20251220/gcc/ada/gcc-interface/utils.cc	Sat Dec 20 22:32:05 2025
--- gcc-15-20251227/gcc/ada/gcc-interface/utils.cc	Sat Dec 27 22:32:05 2025
*************** update_pointer_to (tree old_type, tree n
*** 4601,4615 ****
  	  /* If there is no pointer pointing to NEW_TYPE yet, re-compute the
  	     TYPE_CANONICAL of the old pointer but pointing to NEW_TYPE, like
  	     build_pointer_type would have done for such a pointer, because we
! 	     will propagate it in the adjustment loop below.  */
  	  if (TYPE_STRUCTURAL_EQUALITY_P (new_type))
  	    SET_TYPE_STRUCTURAL_EQUALITY (ptr);
  	  else if (TYPE_CANONICAL (new_type) != new_type
  		   || (TYPE_REF_CAN_ALIAS_ALL (ptr)
  		       && !lookup_attribute ("may_alias",
  					     TYPE_ATTRIBUTES (new_type))))
! 	    TYPE_CANONICAL (ptr)
! 	      = build_pointer_type (TYPE_CANONICAL (new_type));
  	}
  
        /* Now adjust them.  */
--- 4601,4623 ----
  	  /* If there is no pointer pointing to NEW_TYPE yet, re-compute the
  	     TYPE_CANONICAL of the old pointer but pointing to NEW_TYPE, like
  	     build_pointer_type would have done for such a pointer, because we
! 	     will propagate it in the adjustment loop below.  But make sure to
! 	     preserve an alias set already present on the old pointer.  */
  	  if (TYPE_STRUCTURAL_EQUALITY_P (new_type))
  	    SET_TYPE_STRUCTURAL_EQUALITY (ptr);
  	  else if (TYPE_CANONICAL (new_type) != new_type
  		   || (TYPE_REF_CAN_ALIAS_ALL (ptr)
  		       && !lookup_attribute ("may_alias",
  					     TYPE_ATTRIBUTES (new_type))))
! 	    {
! 	      const alias_set_type set
! 		= TYPE_STRUCTURAL_EQUALITY_P (ptr)
! 		  ? TYPE_ALIAS_SET (ptr)
! 		  : TYPE_ALIAS_SET (TYPE_CANONICAL (ptr));
! 	      TYPE_CANONICAL (ptr)
! 		= build_pointer_type (TYPE_CANONICAL (new_type));
! 	      TYPE_ALIAS_SET (TYPE_CANONICAL (ptr)) = set;
! 	    }
  	}
  
        /* Now adjust them.  */
*************** update_pointer_to (tree old_type, tree n
*** 4637,4651 ****
  	  /* If there is no reference pointing to NEW_TYPE yet, re-compute the
  	     TYPE_CANONICAL of the old reference but pointing to NEW_TYPE, like
  	     build_reference_type would have done for such a reference, because
! 	     we will propagate it in the adjustment loop below.  */
  	  if (TYPE_STRUCTURAL_EQUALITY_P (new_type))
  	    SET_TYPE_STRUCTURAL_EQUALITY (ref);
  	  else if (TYPE_CANONICAL (new_type) != new_type
  		   || (TYPE_REF_CAN_ALIAS_ALL (ref)
  		       && !lookup_attribute ("may_alias",
  					     TYPE_ATTRIBUTES (new_type))))
! 	    TYPE_CANONICAL (ref)
! 	      = build_reference_type (TYPE_CANONICAL (new_type));
  	}
  
        /* Now adjust them.  */
--- 4645,4667 ----
  	  /* If there is no reference pointing to NEW_TYPE yet, re-compute the
  	     TYPE_CANONICAL of the old reference but pointing to NEW_TYPE, like
  	     build_reference_type would have done for such a reference, because
! 	     we will propagate it in the adjustment loop below.  But make sure
! 	     to preserve an alias set already present on the old reference.  */
  	  if (TYPE_STRUCTURAL_EQUALITY_P (new_type))
  	    SET_TYPE_STRUCTURAL_EQUALITY (ref);
  	  else if (TYPE_CANONICAL (new_type) != new_type
  		   || (TYPE_REF_CAN_ALIAS_ALL (ref)
  		       && !lookup_attribute ("may_alias",
  					     TYPE_ATTRIBUTES (new_type))))
! 	    {
! 	      const alias_set_type set
! 		= TYPE_STRUCTURAL_EQUALITY_P (ref)
! 		  ? TYPE_ALIAS_SET (ref)
! 		  : TYPE_ALIAS_SET (TYPE_CANONICAL (ref));
! 	      TYPE_CANONICAL (ref)
! 		= build_reference_type (TYPE_CANONICAL (new_type));
! 	      TYPE_ALIAS_SET (TYPE_CANONICAL (ref)) = set;
! 	    }
  	}
  
        /* Now adjust them.  */
diff -Nrcpad gcc-15-20251220/gcc/ada/sem_aggr.adb gcc-15-20251227/gcc/ada/sem_aggr.adb
*** gcc-15-20251220/gcc/ada/sem_aggr.adb	Sat Dec 20 22:32:06 2025
--- gcc-15-20251227/gcc/ada/sem_aggr.adb	Sat Dec 27 22:32:06 2025
*************** package body Sem_Aggr is
*** 6590,6599 ****
  
           --  Typ is not a derived tagged type
  
!          else
              Record_Def := Type_Definition (Parent (Base_Type (Typ)));
  
!             if No (Record_Def) or else Null_Present (Record_Def) then
                 null;
  
              elsif not Has_Unknown_Discriminants (Typ) then
--- 6590,6599 ----
  
           --  Typ is not a derived tagged type
  
!          elsif Nkind (Parent (Base_Type (Typ))) = N_Full_Type_Declaration then
              Record_Def := Type_Definition (Parent (Base_Type (Typ)));
  
!             if Null_Present (Record_Def) then
                 null;
  
              elsif not Has_Unknown_Discriminants (Typ) then
diff -Nrcpad gcc-15-20251220/gcc/ada/sem_ch12.adb gcc-15-20251227/gcc/ada/sem_ch12.adb
*** gcc-15-20251220/gcc/ada/sem_ch12.adb	Sat Dec 20 22:32:06 2025
--- gcc-15-20251227/gcc/ada/sem_ch12.adb	Sat Dec 27 22:32:06 2025
*************** package body Sem_Ch12 is
*** 2596,2604 ****
--- 2596,2615 ----
                 if Ekind (Etype (Match)) /= E_Void
                   and then Is_Mutably_Tagged_Type (Etype (Match))
                 then
+                   --  The declaration of the CW-equivalent type of a mutably
+                   --  tagged type is analyzed when the tagged type is frozen.
+ 
+                   if Nkind (I_Node) /= N_Formal_Package_Declaration
+                     and then Ekind (Defining_Identifier (Assoc.An_Formal)) /=
+                                                               E_Incomplete_Type
+                   then
+                      Freeze_Before (I_Node, Root_Type (Etype (Match)));
+                   end if;
+ 
                    Rewrite (Match, New_Occurrence_Of
                      (Class_Wide_Equivalent_Type
                        (Etype (Match)), Sloc (Match)));
+ 
                    Analyze (Match);
                 end if;
  
*************** package body Sem_Ch12 is
*** 17384,17390 ****
           ----------------------------------
  
           procedure Save_References_In_Aggregate (N : Node_Id) is
-             Nam   : Node_Id;
              Qual  : Node_Id   := Empty;
              Typ   : Entity_Id := Empty;
  
--- 17395,17400 ----
*************** package body Sem_Ch12 is
*** 17440,17455 ****
                    end;
                 end if;
  
!                --  If the aggregate is an actual in a call, it has been
!                --  resolved in the current context, to some local type. The
                 --  enclosing call may have been disambiguated by the aggregate,
                 --  and this disambiguation might fail at instantiation time
                 --  because the type to which the aggregate did resolve is not
                 --  preserved. In order to preserve some of this information,
                 --  wrap the aggregate in a qualified expression, using the id
                 --  of its type. For further disambiguation we qualify the type
!                --  name with its scope (if visible and not hidden by a local
!                --  homograph) because both id's will have corresponding
                 --  entities in an instance. This resolves most of the problems
                 --  with missing type information on aggregates in instances.
  
--- 17450,17465 ----
                    end;
                 end if;
  
!                --  If the aggregate is an actual in a subprogram call, it has
!                --  been resolved in the current context to some local type. The
                 --  enclosing call may have been disambiguated by the aggregate,
                 --  and this disambiguation might fail at instantiation time
                 --  because the type to which the aggregate did resolve is not
                 --  preserved. In order to preserve some of this information,
                 --  wrap the aggregate in a qualified expression, using the id
                 --  of its type. For further disambiguation we qualify the type
!                --  name with its scope recursively (if visible and not hidden
!                --  by a local homograph) because both will have corresponding
                 --  entities in an instance. This resolves most of the problems
                 --  with missing type information on aggregates in instances.
  
*************** package body Sem_Ch12 is
*** 17459,17482 ****
                   and then Present (Typ)
                   and then Comes_From_Source (Typ)
                 then
!                   Nam := Make_Identifier (Loc, Chars (Typ));
  
!                   if Is_Immediately_Visible (Scope (Typ))
!                     and then
!                       (not In_Open_Scopes (Scope (Typ))
!                          or else Current_Entity (Scope (Typ)) = Scope (Typ))
!                   then
!                      Nam :=
!                        Make_Selected_Component (Loc,
!                          Prefix        =>
!                            Make_Identifier (Loc, Chars (Scope (Typ))),
!                          Selector_Name => Nam);
!                   end if;
  
!                   Qual :=
!                     Make_Qualified_Expression (Loc,
!                       Subtype_Mark => Nam,
!                       Expression   => Relocate_Node (N));
                 end if;
  
              --  For a full aggregate, if the type is global and a derived
--- 17469,17508 ----
                   and then Present (Typ)
                   and then Comes_From_Source (Typ)
                 then
!                   declare
!                      function Qualify_Name (S, E : Entity_Id) return Node_Id is
!                        (if E = S
!                         then Make_Identifier (Loc, Chars (E))
!                         else Make_Selected_Component (Loc,
!                                Prefix        => Qualify_Name (S, Scope (E)),
!                                Selector_Name =>
!                                  Make_Identifier (Loc, Chars (E))));
!                      --  Return the qualified name of E up to scope S
  
!                      Nam : Node_Id;
!                      S   : Entity_Id;
  
!                   begin
!                      S := Scope (Typ);
!                      while not Is_Immediately_Visible (S) loop
!                         S := Scope (S);
!                         exit when Is_Generic_Unit (S);
!                      end loop;
! 
!                      if not Is_Generic_Unit (S)
!                        and then (not In_Open_Scopes (S)
!                                   or else Current_Entity (S) = S)
!                      then
!                         Nam := Qualify_Name (S, Typ);
!                      else
!                         Nam := Make_Identifier (Loc, Chars (Typ));
!                      end if;
! 
!                      Qual :=
!                        Make_Qualified_Expression (Loc,
!                          Subtype_Mark => Nam,
!                          Expression   => Relocate_Node (N));
!                   end;
                 end if;
  
              --  For a full aggregate, if the type is global and a derived
diff -Nrcpad gcc-15-20251220/gcc/ada/sem_ch13.adb gcc-15-20251227/gcc/ada/sem_ch13.adb
*** gcc-15-20251220/gcc/ada/sem_ch13.adb	Sat Dec 20 22:32:06 2025
--- gcc-15-20251227/gcc/ada/sem_ch13.adb	Sat Dec 27 22:32:06 2025
*************** package body Sem_Ch13 is
*** 17238,17252 ****
        -----------------------
  
        procedure Resolve_Operation (Subp_Id : Node_Id) is
-          Subp : Entity_Id;
- 
           I  : Interp_Index;
           It : Interp;
  
        begin
           if not Is_Overloaded (Subp_Id) then
!             Subp := Entity (Subp_Id);
!             if not Pred (Subp) then
                 Error_Msg_NE
                   ("improper aggregate operation for&", Subp_Id, Typ);
              end if;
--- 17238,17249 ----
        -----------------------
  
        procedure Resolve_Operation (Subp_Id : Node_Id) is
           I  : Interp_Index;
           It : Interp;
  
        begin
           if not Is_Overloaded (Subp_Id) then
!             if not Pred (Entity (Subp_Id)) then
                 Error_Msg_NE
                   ("improper aggregate operation for&", Subp_Id, Typ);
              end if;
*************** package body Sem_Ch13 is
*** 17256,17264 ****
              Get_First_Interp (Subp_Id, I, It);
              while Present (It.Nam) loop
                 if Pred (It.Nam) then
                    Set_Is_Overloaded (Subp_Id, False);
                    Set_Entity (Subp_Id, It.Nam);
-                   exit;
                 end if;
  
                 Get_Next_Interp (I, It);
--- 17253,17273 ----
              Get_First_Interp (Subp_Id, I, It);
              while Present (It.Nam) loop
                 if Pred (It.Nam) then
+                   if Present (Entity (Subp_Id)) then
+                      --  ??? Cope with the obsolete renaming of Append_Vector
+                      --  in Ada.Containers.Vectors retained for compatibility.
+ 
+                      if No (Alias (Entity (Subp_Id)))
+                        and then No (Alias (It.Nam))
+                      then
+                         Error_Msg_N
+                           ("& must denote exactly one subprogram", Subp_Id);
+                      end if;
+ 
+                      exit;
+                   end if;
                    Set_Is_Overloaded (Subp_Id, False);
                    Set_Entity (Subp_Id, It.Nam);
                 end if;
  
                 Get_Next_Interp (I, It);
diff -Nrcpad gcc-15-20251220/gcc/ada/sem_ch4.adb gcc-15-20251227/gcc/ada/sem_ch4.adb
*** gcc-15-20251220/gcc/ada/sem_ch4.adb	Sat Dec 20 22:32:06 2025
--- gcc-15-20251227/gcc/ada/sem_ch4.adb	Sat Dec 27 22:32:06 2025
*************** package body Sem_Ch4 is
*** 4381,4396 ****
              T := It.Typ;
           end if;
  
!          --  Locate the component. For a private prefix the selector can denote
!          --  a discriminant.
  
           if Is_Record_Type (T) or else Is_Private_Type (T) then
  
!             --  If the prefix is a class-wide type, the visible components are
!             --  those of the base type.
  
              if Is_Class_Wide_Type (T) then
!                T := Etype (T);
              end if;
  
              Comp := First_Entity (T);
--- 4381,4396 ----
              T := It.Typ;
           end if;
  
!          --  Find the selected component. For a private prefix, the selector
!          --  can denote a discriminant.
  
           if Is_Record_Type (T) or else Is_Private_Type (T) then
  
!             --  If the prefix has a class-wide type, the visible components are
!             --  those of the root type.
  
              if Is_Class_Wide_Type (T) then
!                T := Root_Type (T);
              end if;
  
              Comp := First_Entity (T);
diff -Nrcpad gcc-15-20251220/gcc/ada/sem_res.adb gcc-15-20251227/gcc/ada/sem_res.adb
*** gcc-15-20251220/gcc/ada/sem_res.adb	Sat Dec 20 22:32:06 2025
--- gcc-15-20251227/gcc/ada/sem_res.adb	Sat Dec 27 22:32:06 2025
*************** package body Sem_Res is
*** 11433,11448 ****
                 T := It.Typ;
              end if;
  
!             --  Locate selected component. For a private prefix the selector
              --  can denote a discriminant.
  
              if Is_Record_Type (T) or else Is_Private_Type (T) then
  
!                --  The visible components of a class-wide type are those of
!                --  the root type.
  
                 if Is_Class_Wide_Type (T) then
!                   T := Etype (T);
                 end if;
  
                 Comp := First_Entity (T);
--- 11433,11448 ----
                 T := It.Typ;
              end if;
  
!             --  Find the selected component. For a private prefix, the selector
              --  can denote a discriminant.
  
              if Is_Record_Type (T) or else Is_Private_Type (T) then
  
!                --  If the prefix has a class-wide type, the visible components
!                --  are those of the root type.
  
                 if Is_Class_Wide_Type (T) then
!                   T := Root_Type (T);
                 end if;
  
                 Comp := First_Entity (T);
diff -Nrcpad gcc-15-20251220/gcc/cp/ChangeLog gcc-15-20251227/gcc/cp/ChangeLog
*** gcc-15-20251220/gcc/cp/ChangeLog	Sat Dec 20 22:32:06 2025
--- gcc-15-20251227/gcc/cp/ChangeLog	Sat Dec 27 22:32:06 2025
***************
*** 1,3 ****
--- 1,18 ----
+ 2025-12-23  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-12-19  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122922
+ 	* module.cc (trees_in::post_types): New member.
+ 	(trees_in::trees_in): Initialize it.
+ 	(trees_in::~trees_in): Clean it up.
+ 	(trees_in::post_process_type): New functions.
+ 	(trees_in::tree_node): Save incomplete ARRAY_TYPEs for later
+ 	post-processing.
+ 	(module_state::read_cluster): Attempt to complete any
+ 	ARRAY_TYPEs we saved earlier.
+ 
  2025-12-16  Patrick Palka  <ppalka@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20251220/gcc/cp/module.cc gcc-15-20251227/gcc/cp/module.cc
*** gcc-15-20251220/gcc/cp/module.cc	Sat Dec 20 22:32:06 2025
--- gcc-15-20251227/gcc/cp/module.cc	Sat Dec 27 22:32:06 2025
*************** private:
*** 2954,2959 ****
--- 2954,2960 ----
    vec<tree> back_refs;		/* Back references.  */
    duplicate_hash_map *duplicates;	/* Map from existings to duplicate.  */
    vec<post_process_data> post_decls;	/* Decls to post process.  */
+   vec<tree> post_types;		/* Types to post process.  */
    unsigned unused;		/* Inhibit any interior TREE_USED
  				   marking.  */
  
*************** public:
*** 3058,3069 ****
--- 3059,3081 ----
    {
      return post_decls;
    }
+   /* Return the types to postprocess.  */
+   const vec<tree>& post_process_type ()
+   {
+     return post_types;
+   }
  private:
    /* Register DATA for postprocessing.  */
    void post_process (post_process_data data)
    {
      post_decls.safe_push (data);
    }
+   /* Register TYPE for postprocessing.  */
+   void post_process_type (tree type)
+   {
+     gcc_checking_assert (TYPE_P (type));
+     post_types.safe_push (type);
+   }
  
  private:
    void assert_definition (tree, bool installing);
*************** trees_in::trees_in (module_state *state)
*** 3076,3081 ****
--- 3088,3094 ----
    duplicates = NULL;
    back_refs.create (500);
    post_decls.create (0);
+   post_types.create (0);
  }
  
  trees_in::~trees_in ()
*************** trees_in::~trees_in ()
*** 3083,3088 ****
--- 3096,3102 ----
    delete (duplicates);
    back_refs.release ();
    post_decls.release ();
+   post_types.release ();
  }
  
  /* Tree stream writer.  */
*************** trees_in::tree_node (bool is_use)
*** 10203,10212 ****
  
  	  case ARRAY_TYPE:
  	    {
  	      tree domain = tree_node ();
  	      int dep = u ();
  	      if (!get_overrun ())
! 		res = build_cplus_array_type (res, domain, dep);
  	    }
  	    break;
  
--- 10217,10239 ----
  
  	  case ARRAY_TYPE:
  	    {
+ 	      tree elt_type = res;
  	      tree domain = tree_node ();
  	      int dep = u ();
  	      if (!get_overrun ())
! 		{
! 		  res = build_cplus_array_type (elt_type, domain, dep);
! 		  /* If we're an array of an incomplete imported type,
! 		     save it for post-processing so that we can attempt
! 		     to complete the type later if it will get a
! 		     definition later in the cluster.  */
! 		  if (!dep
! 		      && !COMPLETE_TYPE_P (elt_type)
! 		      && CLASS_TYPE_P (elt_type)
! 		      && DECL_LANG_SPECIFIC (TYPE_NAME (elt_type))
! 		      && DECL_MODULE_IMPORT_P (TYPE_NAME (elt_type)))
! 		    post_process_type (res);
! 		}
  	    }
  	    break;
  
*************** module_state::read_cluster (unsigned snu
*** 16839,16845 ****
  	      && DECL_NOT_REALLY_EXTERN (decl))
  	    DECL_EXTERNAL (decl) = false;
  	}
! 
      }
    /* Look, function.cc's interface to cfun does too much for us, we
       just need to restore the old value.  I do not want to go
--- 16866,16878 ----
  	      && DECL_NOT_REALLY_EXTERN (decl))
  	    DECL_EXTERNAL (decl) = false;
  	}
!     }
!   for (const tree& type : sec.post_process_type ())
!     {
!       /* Attempt to complete an array type now in case its element type
! 	 had a definition streamed later in the cluster.  */
!       gcc_checking_assert (TREE_CODE (type) == ARRAY_TYPE);
!       complete_type (type);
      }
    /* Look, function.cc's interface to cfun does too much for us, we
       just need to restore the old value.  I do not want to go
diff -Nrcpad gcc-15-20251220/gcc/testsuite/ChangeLog gcc-15-20251227/gcc/testsuite/ChangeLog
*** gcc-15-20251220/gcc/testsuite/ChangeLog	Sat Dec 20 22:32:07 2025
--- gcc-15-20251227/gcc/testsuite/ChangeLog	Sat Dec 27 22:32:07 2025
***************
*** 1,3 ****
--- 1,43 ----
+ 2025-12-26  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	* gnat.dg/aggr34.adb: New test.
+ 	* gnat.dg/aggr34_pkg1.ads, gnat.dg/aggr34_pkg1.adb: New helper.
+ 	* gnat.dg/aggr34_pkg2.ads, gnat.dg/aggr34_pkg2.adb: Likewise.
+ 	* gnat.dg/aggr34_pkg3.ads: Likewise.
+ 
+ 2025-12-26  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	* gnat.dg/specs/aggr9.ads: New test.
+ 
+ 2025-12-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/specs/class_wide1.ads: New test.
+ 
+ 2025-12-23  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	Backported from master:
+ 	2025-12-19  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122922
+ 	* g++.dg/modules/pr122922_a.C: New test.
+ 	* g++.dg/modules/pr122922_b.C: New test.
+ 
+ 2025-12-22  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/122868
+ 	* gcc.dg/vect/vect-early-break_140-pr122868_1.c: New test.
+ 	* gcc.dg/vect/vect-early-break_140-pr122868_2.c: New test.
+ 	* gcc.dg/vect/vect-early-break_140-pr122868_3.c: New test.
+ 	* gcc.dg/vect/vect-early-break_140-pr122868_4.c: New test.
+ 
+ 2025-12-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-12-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/122936
+ 	* gfortran.dg/pr122936.f90: New test.
+ 
  2025-12-19  Yury Khrustalev  <yury.khrustalev@arm.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20251220/gcc/testsuite/g++.dg/modules/pr122922_a.C gcc-15-20251227/gcc/testsuite/g++.dg/modules/pr122922_a.C
*** gcc-15-20251220/gcc/testsuite/g++.dg/modules/pr122922_a.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/g++.dg/modules/pr122922_a.C	Sat Dec 27 22:32:08 2025
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/122922
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi VF }
+ 
+ export module VF;
+ 
+ template <int N> struct TTensor {
+   friend void foo(TTensor) {}
+   TTensor<N - 1> TensorArr[1];
+ };
+ 
+ template <> struct TTensor<0> {
+   friend void foo(TTensor) {}
+ };
+ 
+ template <typename T = void> void TCampo() {
+   foo(TTensor<1>());
+ }
diff -Nrcpad gcc-15-20251220/gcc/testsuite/g++.dg/modules/pr122922_b.C gcc-15-20251227/gcc/testsuite/g++.dg/modules/pr122922_b.C
*** gcc-15-20251220/gcc/testsuite/g++.dg/modules/pr122922_b.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/g++.dg/modules/pr122922_b.C	Sat Dec 27 22:32:08 2025
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/122922
+ // { dg-additional-options "-fmodules" }
+ 
+ module VF;
+ 
+ void go() {
+   TCampo();
+ }
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_1.c gcc-15-20251227/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_1.c
*** gcc-15-20251220/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_1.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_1.c	Sat Dec 27 22:32:10 2025
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-require-effective-target vect_sizes_16B_8B } */
+ /* { dg-require-effective-target vect_early_break_hw } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ 
+ #include "tree-vect.h"
+ 
+ __attribute__ ((noipa))
+ int f (int a[12], int b[12], int n)
+ {
+ #ifdef __arm__
+     a = __builtin_assume_aligned (a, 8);
+     b = __builtin_assume_aligned (b, 8);
+ #else
+     a = __builtin_assume_aligned (a, 16);
+     b = __builtin_assume_aligned (b, 16);
+ #endif
+     for (int i = 0; i < n; i++)
+       {
+         if (b[i] == 0)
+           return 0;
+         if (a[0] > b[i])
+           return 1;
+       }
+     return 2;
+ }
+ 
+ int main ()
+ {
+    check_vect ();
+ 
+    int *a = 0;
+    int b[12] = {0};
+    return f (a, b, 10);
+ }
+ 
+ /* { dg-final { scan-tree-dump "not hoisting invariant load due to early break" "vect" } } */
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_2.c gcc-15-20251227/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_2.c
*** gcc-15-20251220/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_2.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_2.c	Sat Dec 27 22:32:10 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-require-effective-target vect_early_break_hw } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ 
+ #include "tree-vect.h"
+ 
+ __attribute__ ((noipa))
+ int f (int a[12], int b[12], int n)
+ {
+     for (int i = 0; i < n; i++)
+       {
+         if (b[i] == 0)
+           return 0;
+         if (a[0] > b[i])
+           return 1;
+       }
+     return 2;
+ }
+ 
+ int main ()
+ {
+    check_vect ();
+ 
+    int *a = 0;
+    int b[12] = {0};
+    return f (a, b, 10);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "not hoisting invariant load due to early break" 0 "vect" { xfail *-*-* } } } */
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_3.c gcc-15-20251227/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_3.c
*** gcc-15-20251220/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_3.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_3.c	Sat Dec 27 22:32:10 2025
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-require-effective-target vect_sizes_16B_8B } */
+ /* { dg-require-effective-target vect_early_break_hw } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ 
+ #include "tree-vect.h"
+ 
+ __attribute__ ((noipa))
+ int f (int a[12], int b[12], int n)
+ {
+ #ifdef __arm__
+     a = __builtin_assume_aligned (a, 8);
+     b = __builtin_assume_aligned (b, 8);
+ #else
+     a = __builtin_assume_aligned (a, 16);
+     b = __builtin_assume_aligned (b, 16);
+ #endif
+     for (int i = 0; i < n; i++)
+       {
+         if (a[0] > b[i])
+           return 0;
+         if (b[i] == 0)
+           return 1;
+       }
+     return 2;
+ }
+ 
+ int main ()
+ {
+    check_vect ();
+ 
+    int a[12] = {1};
+    int b[12] = {0};
+    return f (a, b, 10);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "not hoisting invariant load due to early break" 0 "vect" } } */
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_4.c gcc-15-20251227/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_4.c
*** gcc-15-20251220/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_4.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_4.c	Sat Dec 27 22:32:10 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-require-effective-target vect_early_break_hw } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ 
+ #include "tree-vect.h"
+ 
+ __attribute__ ((noipa))
+ int f (int a[12], int b[12], int n)
+ {
+     for (int i = 0; i < n; i++)
+       {
+         if (a[0] > b[i])
+           return 0;
+         if (b[i] == 0)
+           return 0;
+       }
+     return 2;
+ }
+ 
+ int main ()
+ {
+    check_vect ();
+ 
+    int a[12] = {1};
+    int b[12] = {0};
+    return f (a, b, 10);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "not hoisting invariant load due to early break" 0 "vect" } } */
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gfortran.dg/pr122936.f90 gcc-15-20251227/gcc/testsuite/gfortran.dg/pr122936.f90
*** gcc-15-20251220/gcc/testsuite/gfortran.dg/pr122936.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gfortran.dg/pr122936.f90	Sat Dec 27 22:32:12 2025
***************
*** 0 ****
--- 1,43 ----
+ ! { dg-do run }
+ ! PR122936, derived from the original provided by the reporter.
+ ! Before the patch this gave a runtime error.
+ module test_io
+     TYPE :: MYTYPE
+         REAL :: value
+     END TYPE
+     INTERFACE read(formatted)
+         MODULE PROCEDURE read_formatted
+     END INTERFACE
+     PUBLIC :: read(formatted)
+ contains
+     ! Formatted Input
+     SUBROUTINE read_formatted(dtv, unit, iotype, v_list, iostat, iomsg)
+         CLASS(MYTYPE), INTENT(INOUT) :: dtv
+         INTEGER, INTENT(IN)      :: unit
+         CHARACTER(*), INTENT(IN) :: iotype
+         INTEGER, INTENT(IN)      :: v_list(:)
+         INTEGER, INTENT(OUT)     :: iostat
+         CHARACTER(*), INTENT(INOUT) :: iomsg
+ 
+         REAL   :: tmp
+ 
+         READ(unit, FMT = *, IOSTAT=iostat, IOMSG=iomsg) tmp
+         IF (iostat == 0) dtv%value = tmp
+     END SUBROUTINE read_formatted
+ 
+ end module
+ 
+ PROGRAM MAIN
+     USE test_io
+     INTEGER, PARAMETER  :: NIN = 15
+     TYPE(MYTYPE)       :: V11, V12, V13
+     INTEGER            :: V21, V22, V23
+     OPEN(NIN, status='scratch')
+     WRITE(NIN,*) "    2.5 9 1.5, AValue for V1"
+     WRITE(NIN,*) "    15 2.4 17,  BValue for V2"
+     REWIND(NIN)
+     READ(NIN, FMT = *) V11, V23, V12
+     READ(NIN, FMT = *) V21, V13, V22
+     CLOSE(NIN)
+ END PROGRAM MAIN
+ 
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gnat.dg/aggr34.adb gcc-15-20251227/gcc/testsuite/gnat.dg/aggr34.adb
*** gcc-15-20251220/gcc/testsuite/gnat.dg/aggr34.adb	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gnat.dg/aggr34.adb	Sat Dec 27 22:32:12 2025
***************
*** 0 ****
--- 1,15 ----
+ -- PR ada/123302
+ -- { dg-do link }
+ -- { dg-options "-gnat2022" }
+ 
+ with Aggr34_Pkg3;
+ with Aggr34_Pkg1;
+ 
+ procedure Aggr34 is
+ 
+   package My_Pkg3 is new Aggr34_Pkg3;
+   package My_Pkg1 is new Aggr34_Pkg1 (My_Pkg3);
+ 
+ begin
+   My_Pkg1.Proc;
+ end;
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gnat.dg/aggr34_pkg1.adb gcc-15-20251227/gcc/testsuite/gnat.dg/aggr34_pkg1.adb
*** gcc-15-20251220/gcc/testsuite/gnat.dg/aggr34_pkg1.adb	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gnat.dg/aggr34_pkg1.adb	Sat Dec 27 22:32:12 2025
***************
*** 0 ****
--- 1,6 ----
+ -- { dg-do compile }
+ -- { dg-options "-gnat2022" }
+ 
+ package body Aggr34_Pkg1 is
+    procedure Proc is null;
+ end Aggr34_Pkg1;
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gnat.dg/aggr34_pkg1.ads gcc-15-20251227/gcc/testsuite/gnat.dg/aggr34_pkg1.ads
*** gcc-15-20251220/gcc/testsuite/gnat.dg/aggr34_pkg1.ads	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gnat.dg/aggr34_pkg1.ads	Sat Dec 27 22:32:12 2025
***************
*** 0 ****
--- 1,9 ----
+ with Aggr34_Pkg3;
+ with Aggr34_Pkg2;
+ 
+ generic
+    with package My_Config is new Aggr34_Pkg3;
+ package Aggr34_Pkg1 is
+    package My_Module_Basic_Config is new Aggr34_Pkg2 (My_Config);
+    procedure Proc;
+ end Aggr34_Pkg1;
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gnat.dg/aggr34_pkg2.adb gcc-15-20251227/gcc/testsuite/gnat.dg/aggr34_pkg2.adb
*** gcc-15-20251220/gcc/testsuite/gnat.dg/aggr34_pkg2.adb	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gnat.dg/aggr34_pkg2.adb	Sat Dec 27 22:32:12 2025
***************
*** 0 ****
--- 1,9 ----
+ -- { dg-do compile }
+ -- { dg-options "-gnat2022" }
+ 
+ package body Aggr34_Pkg2 is
+    procedure Disable_Prunt is
+    begin
+       My_Config.Set (["a", "b"]);
+    end Disable_Prunt;
+ end Aggr34_Pkg2;
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gnat.dg/aggr34_pkg2.ads gcc-15-20251227/gcc/testsuite/gnat.dg/aggr34_pkg2.ads
*** gcc-15-20251220/gcc/testsuite/gnat.dg/aggr34_pkg2.ads	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gnat.dg/aggr34_pkg2.ads	Sat Dec 27 22:32:12 2025
***************
*** 0 ****
--- 1,7 ----
+ with Aggr34_Pkg3;
+ 
+ generic
+    with package My_Config is new Aggr34_Pkg3;
+ package Aggr34_Pkg2 is
+    procedure Disable_Prunt;
+ end Aggr34_Pkg2;
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gnat.dg/aggr34_pkg3.ads gcc-15-20251227/gcc/testsuite/gnat.dg/aggr34_pkg3.ads
*** gcc-15-20251220/gcc/testsuite/gnat.dg/aggr34_pkg3.ads	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gnat.dg/aggr34_pkg3.ads	Sat Dec 27 22:32:12 2025
***************
*** 0 ****
--- 1,8 ----
+ with Ada.Containers.Indefinite_Vectors;
+ 
+ generic
+ package Aggr34_Pkg3 is
+    package Config_Data_Paths is new
+      Ada.Containers.Indefinite_Vectors (Positive, String);
+    procedure Set (Path : Config_Data_Paths.Vector) is null;
+ end Aggr34_Pkg3;
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gnat.dg/specs/aggr9.ads gcc-15-20251227/gcc/testsuite/gnat.dg/specs/aggr9.ads
*** gcc-15-20251220/gcc/testsuite/gnat.dg/specs/aggr9.ads	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gnat.dg/specs/aggr9.ads	Sat Dec 27 22:32:12 2025
***************
*** 0 ****
--- 1,26 ----
+ -- PR ada/123289
+ -- { dg-do compile }
+ -- { dg-options "-gnat2022" }
+ 
+ package Aggr9 is
+ 
+    type JSON_Value is tagged null record;
+    type JSON_Object is new JSON_Value with null record
+      with Aggregate => (Empty => Empty, Add_Named => Insert); -- { dg-error "exactly one" }
+    type JSON_Integer is new JSON_Value with null record
+      with Integer_Literal => From_Universal_Image;
+ 
+    function Empty return JSON_Object
+    is (null record);
+ 
+    procedure Insert
+       (O : in out JSON_Object; Key : String; Value : JSON_Integer'Class)
+    is null;
+ 
+    procedure Insert (O : in out JSON_Object; Key : String; Value : String)
+    is null;
+ 
+    function From_Universal_Image (Value : String) return JSON_Integer
+    is (null record);
+ 
+ end Aggr9;
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gnat.dg/specs/class_wide1.ads gcc-15-20251227/gcc/testsuite/gnat.dg/specs/class_wide1.ads
*** gcc-15-20251220/gcc/testsuite/gnat.dg/specs/class_wide1.ads	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gnat.dg/specs/class_wide1.ads	Sat Dec 27 22:32:12 2025
***************
*** 0 ****
--- 1,19 ----
+ -- { dg-do compile }
+ 
+ with Ada.Containers.Indefinite_Vectors;
+ 
+ generic
+ package Class_Wide1 is
+ 
+    type R is tagged record
+       X : Integer;
+    end record;
+ 
+    package V is new Ada.Containers.Indefinite_Vectors (Positive, R);
+    package V_CW is new Ada.Containers.Indefinite_Vectors (Positive, R'Class);
+ 
+    function F1 (VV : V.Vector) return Integer is (VV (1).X);
+    function F2 (VV : V_CW.Vector) return Integer is (VV (1).Element.X);
+    function F3 (VV : V_CW.Vector) return Integer is (VV (1).X);
+ 
+ end Class_Wide1;
diff -Nrcpad gcc-15-20251220/gcc/testsuite/gnat.dg/specs/mutably_tagged1.ads gcc-15-20251227/gcc/testsuite/gnat.dg/specs/mutably_tagged1.ads
*** gcc-15-20251220/gcc/testsuite/gnat.dg/specs/mutably_tagged1.ads	Thu Jan  1 00:00:00 1970
--- gcc-15-20251227/gcc/testsuite/gnat.dg/specs/mutably_tagged1.ads	Sat Dec 27 22:32:12 2025
***************
*** 0 ****
--- 1,15 ----
+ -- { dg-do compile }
+ -- { dg-options "-gnatX0" }
+ 
+ package Mutably_Tagged1 is
+ 
+   generic
+     type T is private;
+   package G is
+   end G;
+ 
+   type Rec is tagged null record with Size'Class => 128;
+ 
+   package My_G is new G (Rec'Class);
+ 
+ end Mutably_Tagged1;
diff -Nrcpad gcc-15-20251220/gcc/tree-vect-stmts.cc gcc-15-20251227/gcc/tree-vect-stmts.cc
*** gcc-15-20251220/gcc/tree-vect-stmts.cc	Sat Dec 20 22:32:13 2025
--- gcc-15-20251227/gcc/tree-vect-stmts.cc	Sat Dec 27 22:32:13 2025
*************** vectorizable_load (vec_info *vinfo,
*** 10708,10715 ****
  	 once at analysis time, remembered and used in the
  	 transform time.  */
        bool hoist_p = (LOOP_VINFO_NO_DATA_DEPENDENCIES (loop_vinfo)
! 		      && !nested_in_vect_loop
! 		      && hoist_defs_of_uses (stmt_info->stmt, loop, false));
        if (costing_p)
  	{
  	  enum vect_cost_model_location cost_loc
--- 10708,10747 ----
  	 once at analysis time, remembered and used in the
  	 transform time.  */
        bool hoist_p = (LOOP_VINFO_NO_DATA_DEPENDENCIES (loop_vinfo)
! 		      && !nested_in_vect_loop);
! 
!       for (stmt_vec_info sinfo : SLP_TREE_SCALAR_STMTS (slp_node))
! 	{
! 	  /* It is unsafe to hoist a conditional load over the conditions that
! 	     make it valid.  When early break this means that any invariant load
! 	     can't be hoisted unless it's in the loop header or if we know
! 	     something else has verified the load is valid to do.  Alignment
! 	     peeling would do this since getting through the prologue means the
! 	     load was done at least once and so the vector main body is free to
! 	     hoist it.  However today GCC will hoist the load above the PFA
! 	     loop.  As such that makes it still invalid and so we can't allow it
! 	     today.  */
! 	  if (LOOP_VINFO_EARLY_BREAKS (loop_vinfo)
! 	      && !DR_SCALAR_KNOWN_BOUNDS (STMT_VINFO_DR_INFO (sinfo))
! 	      && gimple_bb (STMT_VINFO_STMT (vect_orig_stmt (sinfo)))
! 		  != loop->header)
! 	    {
! 	      if (LOOP_VINFO_PEELING_FOR_ALIGNMENT (loop_vinfo)
! 		  && dump_enabled_p ())
! 		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 			     "not hoisting invariant load due to early break"
! 			     "constraints\n");
! 	      else if (dump_enabled_p ())
! 	       dump_printf_loc (MSG_NOTE, vect_location,
! 			     "not hoisting invariant load due to early break"
! 			     "constraints\n");
! 	      hoist_p = false;
! 	      break;
! 	    }
! 
! 	  hoist_p = hoist_p && hoist_defs_of_uses (sinfo->stmt, loop, false);
! 	}
! 
        if (costing_p)
  	{
  	  enum vect_cost_model_location cost_loc
diff -Nrcpad gcc-15-20251220/libgfortran/ChangeLog gcc-15-20251227/libgfortran/ChangeLog
*** gcc-15-20251220/libgfortran/ChangeLog	Sat Dec 20 22:32:14 2025
--- gcc-15-20251227/libgfortran/ChangeLog	Sat Dec 27 22:32:13 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-12-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-12-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/122936
+ 	* io/list_read.c (finish_list_read): Remove the use of hit_eof
+ 	and free_line. Simplify the logic. Add comments to clarify.
+ 
  2025-08-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-15-20251220/libgfortran/io/list_read.c gcc-15-20251227/libgfortran/io/list_read.c
*** gcc-15-20251220/libgfortran/io/list_read.c	Sat Dec 20 22:32:14 2025
--- gcc-15-20251227/libgfortran/io/list_read.c	Sat Dec 27 22:32:13 2025
*************** finish_list_read (st_parameter_dt *dtp)
*** 2554,2559 ****
--- 2554,2560 ----
        return;
      }
  
+   /* Only perform the following cleanup on external files or the stdin file.  */
    if (!is_internal_unit (dtp))
      {
        int c;
*************** finish_list_read (st_parameter_dt *dtp)
*** 2561,2583 ****
        /* Set the next_char and push_char worker functions.  */
        set_workers (dtp);
  
!       if (likely (dtp->u.p.child_saved_iostat == LIBERROR_OK)
! 	      && ((dtp->common.flags & IOPARM_DT_HAS_UDTIO) == 0))
  	{
  	  c = next_char (dtp);
! 	  if (c == EOF)
  	    {
! 	      free_line (dtp);
! 	      hit_eof (dtp);
! 	      return;
  	    }
  	  if (c != '\n')
  	    eat_line (dtp);
  	}
      }
- 
-   free_line (dtp);
- 
  }
  
  /*			NAMELIST INPUT
--- 2562,2592 ----
        /* Set the next_char and push_char worker functions.  */
        set_workers (dtp);
  
!       /* Make sure there were no errors from a DTIO child read.  */
!       if (likely (dtp->u.p.child_saved_iostat == LIBERROR_OK))
  	{
+ 	  /* Peek ahead to see where we are in the parent read.  */
  	  c = next_char (dtp);
! 	  unget_char (dtp, c);
! 
! 	  /* If the last read used DTIO, handle end conditions differently.  */
! 	  if ((dtp->common.flags & IOPARM_DT_HAS_UDTIO) != 0)
  	    {
! 	      if ((c == EOF) || (c == ' '))
! 		return;
! 	    }
! 	  else
! 	    {
! 	      if (c == EOF)
! 		{
! 		  hit_eof (dtp);
! 		  return;
! 		}
  	    }
  	  if (c != '\n')
  	    eat_line (dtp);
  	}
      }
  }
  
  /*			NAMELIST INPUT
