diff -Nrcpad gcc-15-20250628/LAST_UPDATED gcc-15-20250705/LAST_UPDATED
*** gcc-15-20250628/LAST_UPDATED	Sat Jun 28 22:32:39 2025
--- gcc-15-20250705/LAST_UPDATED	Sat Jul  5 22:32:52 2025
***************
*** 1 ****
! Obtained from git: releases/gcc-15 revision 06a26f4d643a5d045d893cd443425b13bd3d1b4b
--- 1 ----
! Obtained from git: releases/gcc-15 revision ea99ca71c1d14ed046b14e41d6a5717d55863a91
diff -Nrcpad gcc-15-20250628/MD5SUMS gcc-15-20250705/MD5SUMS
*** gcc-15-20250628/MD5SUMS	Sat Jun 28 22:32:43 2025
--- gcc-15-20250705/MD5SUMS	Sat Jul  5 22:32:57 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-15-20250628.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-20250705.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 25,31 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 7eab583296bf83c5b4f2a703a7e110df  LAST_UPDATED
  9d2cf5b58292c2e8b0804d3eafc2d6f3  MAINTAINERS
  b714b83dd28679b75c5fd3e619d35956  Makefile.def
  9d0808afc70085c5ca8d45062fc59689  Makefile.in
--- 25,31 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 9647623f1aa438be9c9f0a4f85cd74ad  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
! 8d404087474d8beea0bc5a26c0bf8b67  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
! fe96fd7c18d6e46583456d83c7292020  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
! 41dd7c8ddf104551adfce118fdfe4a56  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
! a450efa367e38cbb86b8be88ad31a3d3  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
! 6cc83d581488222632662c18a901928b  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
! f6808247cf58a318c97a6679dd0a3f7a  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** eb0642ebe2b75475e73f7ae765d24bd2  gcc/ad
*** 755,765 ****
  b270d994d3afc78b194d5ab9ddd800c0  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! 85ee1ec5360a870732539e27c75f545c  gcc/ada/exp_aggr.adb
  cc3a6ec62bea106872aef6143609f920  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! 491df01b54bcad5420e3bd209fd97be8  gcc/ada/exp_attr.adb
  16622dd90fd58bfbfa68224d0bfaf8b2  gcc/ada/exp_attr.ads
  4cb08de59df5f8d0a124038dcbb392f0  gcc/ada/exp_cg.adb
  b18d9873e8e43583acd0e69ba6635023  gcc/ada/exp_cg.ads
--- 755,765 ----
  b270d994d3afc78b194d5ab9ddd800c0  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! bf6347103aec4d2c7abcf829cb740017  gcc/ada/exp_aggr.adb
  cc3a6ec62bea106872aef6143609f920  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! 21d2c4bba0a8e76e8fed08b94023fc91  gcc/ada/exp_attr.adb
  16622dd90fd58bfbfa68224d0bfaf8b2  gcc/ada/exp_attr.ads
  4cb08de59df5f8d0a124038dcbb392f0  gcc/ada/exp_cg.adb
  b18d9873e8e43583acd0e69ba6635023  gcc/ada/exp_cg.ads
*************** fce186389d317dec9c580f569a2a845a  gcc/ad
*** 772,786 ****
  c6728830f0888dc3385e474b5925c01f  gcc/ada/exp_ch13.ads
  d037443d1b61c02110e124f3c701b449  gcc/ada/exp_ch2.adb
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
! 058a67bc4c6ae671017f76da4b3e214e  gcc/ada/exp_ch3.adb
  53e0d855cd76aedff48a9e6266db49e8  gcc/ada/exp_ch3.ads
! cf41a0e79c6a1d13896484a7d7759086  gcc/ada/exp_ch4.adb
  689dbf89ad9d44a03b54f8ce05455a31  gcc/ada/exp_ch4.ads
  c642a1d7102316f2db8b308db52c324b  gcc/ada/exp_ch5.adb
  3564a044f1e9954ffdd8d3a48643fff9  gcc/ada/exp_ch5.ads
! 3b455b92cb2aac43de03ec9bb9548c81  gcc/ada/exp_ch6.adb
  c22c79787fe7516adb5a4c55613fb6ab  gcc/ada/exp_ch6.ads
! 2dc46f230b6e63c0bfff64ad173315b8  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
  ff5f2710ba824ff8ef979c388663bac2  gcc/ada/exp_ch8.adb
  c1f464d28d24669bfe156f13cabe5fca  gcc/ada/exp_ch8.ads
--- 772,786 ----
  c6728830f0888dc3385e474b5925c01f  gcc/ada/exp_ch13.ads
  d037443d1b61c02110e124f3c701b449  gcc/ada/exp_ch2.adb
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
! e4038d2c72447e972a32b3dfdae7ae55  gcc/ada/exp_ch3.adb
  53e0d855cd76aedff48a9e6266db49e8  gcc/ada/exp_ch3.ads
! 00a2257236804c03d1ca7604dc7c55cf  gcc/ada/exp_ch4.adb
  689dbf89ad9d44a03b54f8ce05455a31  gcc/ada/exp_ch4.ads
  c642a1d7102316f2db8b308db52c324b  gcc/ada/exp_ch5.adb
  3564a044f1e9954ffdd8d3a48643fff9  gcc/ada/exp_ch5.ads
! 2263856420a09ab0977660d04793adc4  gcc/ada/exp_ch6.adb
  c22c79787fe7516adb5a4c55613fb6ab  gcc/ada/exp_ch6.ads
! 07739de5018ec5e803c97a0c46a1fd92  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
  ff5f2710ba824ff8ef979c388663bac2  gcc/ada/exp_ch8.adb
  c1f464d28d24669bfe156f13cabe5fca  gcc/ada/exp_ch8.ads
*************** c5ca94cffafc304193b3e436bceb3fb3  gcc/ad
*** 804,810 ****
  0e4de6363c3876604fc8fa97e180ddcf  gcc/ada/exp_pakd.ads
  d5272b91cd7a6980710ec6f6981d62c1  gcc/ada/exp_prag.adb
  044c8a4d86db8fbb4eaa241c597290a7  gcc/ada/exp_prag.ads
! e72f0d3871865a20e4168ee757febcf5  gcc/ada/exp_put_image.adb
  c0f39ee1d515a13193e5726a49291c99  gcc/ada/exp_put_image.ads
  e224b65ac653dc73160c1665f825b557  gcc/ada/exp_sel.adb
  adda0da8d4f449351c0486c3277f39bd  gcc/ada/exp_sel.ads
--- 804,810 ----
  0e4de6363c3876604fc8fa97e180ddcf  gcc/ada/exp_pakd.ads
  d5272b91cd7a6980710ec6f6981d62c1  gcc/ada/exp_prag.adb
  044c8a4d86db8fbb4eaa241c597290a7  gcc/ada/exp_prag.ads
! 5c439124d2bab6aebfa6ddc31b112752  gcc/ada/exp_put_image.adb
  c0f39ee1d515a13193e5726a49291c99  gcc/ada/exp_put_image.ads
  e224b65ac653dc73160c1665f825b557  gcc/ada/exp_sel.adb
  adda0da8d4f449351c0486c3277f39bd  gcc/ada/exp_sel.ads
*************** b042ff9582cb94caab7f476203ea6809  gcc/ad
*** 818,825 ****
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  17c1e6db56a29cef37eb0acfa2e2176f  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! 6afcccc69a788475f4e8565dc1d1d259  gcc/ada/exp_util.adb
! 8b222934ed10101bc9553a5d06edfabb  gcc/ada/exp_util.ads
  3bba6a658c16a14ec3297c802dcde881  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
  b38851c9b7a0167a71b96e69b7c86fb1  gcc/ada/expect.c
--- 818,825 ----
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  17c1e6db56a29cef37eb0acfa2e2176f  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! ad9d60284e18b4cf2409b45d4632a379  gcc/ada/exp_util.adb
! cae531f0465d59eedf5daf97690f2e50  gcc/ada/exp_util.ads
  3bba6a658c16a14ec3297c802dcde881  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
  b38851c9b7a0167a71b96e69b7c86fb1  gcc/ada/expect.c
*************** fdb9382a8288a3a5b805910a0a3615e8  gcc/ad
*** 833,844 ****
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  ec7cf235c00294fe67198b9bf264f3d9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! 8f62b51cd98cb503dcdb7a3196652fff  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
  94e87c9cab4c338fd7a9cd7f89adbc90  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
  7d09f66d77b747916fdcfbba221e06d4  gcc/ada/gcc-interface/Make-lang.in
! 0a634346a9941ab64b7906cc0cbb449b  gcc/ada/gcc-interface/Makefile.in
  b02134e55a04db5c49a710da26b19be1  gcc/ada/gcc-interface/ada-builtin-types.def
  bc1175cb4ea0b9cb5f8751b3f0da7f74  gcc/ada/gcc-interface/ada-builtins.def
  9671d558ad879f15e73993538906ebda  gcc/ada/gcc-interface/ada-tree.def
--- 833,844 ----
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  ec7cf235c00294fe67198b9bf264f3d9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! 0654e14fe6913f4b6d80a4c5f51805df  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
  94e87c9cab4c338fd7a9cd7f89adbc90  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
  7d09f66d77b747916fdcfbba221e06d4  gcc/ada/gcc-interface/Make-lang.in
! 2aaadb71138cee29399d07dffa7d4f0c  gcc/ada/gcc-interface/Makefile.in
  b02134e55a04db5c49a710da26b19be1  gcc/ada/gcc-interface/ada-builtin-types.def
  bc1175cb4ea0b9cb5f8751b3f0da7f74  gcc/ada/gcc-interface/ada-builtins.def
  9671d558ad879f15e73993538906ebda  gcc/ada/gcc-interface/ada-tree.def
*************** b5542229d5cce6dd4fff7dc4ba8e789b  gcc/ad
*** 846,852 ****
  9225a8cf7f4c37e1ac2c83d2916a1bdf  gcc/ada/gcc-interface/ada.h
  910c4ca7f1543916fa6923fa18e926e0  gcc/ada/gcc-interface/config-lang.in
  27a97efc2691bb0e500931269e932bee  gcc/ada/gcc-interface/cuintp.cc
! 1410ead8845c3bdca36756999821990a  gcc/ada/gcc-interface/decl.cc
  fa1feb51010fc73b933487acbdcf85e8  gcc/ada/gcc-interface/gadaint.h
  846fe3bd3db6658b85769bf0216e74fb  gcc/ada/gcc-interface/gigi.h
  8c3391ec25d2f8a3e26b0553d537d3e2  gcc/ada/gcc-interface/lang-specs.h
--- 846,852 ----
  9225a8cf7f4c37e1ac2c83d2916a1bdf  gcc/ada/gcc-interface/ada.h
  910c4ca7f1543916fa6923fa18e926e0  gcc/ada/gcc-interface/config-lang.in
  27a97efc2691bb0e500931269e932bee  gcc/ada/gcc-interface/cuintp.cc
! 8fca78975db7b17ddd18c2ddf77f1647  gcc/ada/gcc-interface/decl.cc
  fa1feb51010fc73b933487acbdcf85e8  gcc/ada/gcc-interface/gadaint.h
  846fe3bd3db6658b85769bf0216e74fb  gcc/ada/gcc-interface/gigi.h
  8c3391ec25d2f8a3e26b0553d537d3e2  gcc/ada/gcc-interface/lang-specs.h
*************** fa1feb51010fc73b933487acbdcf85e8  gcc/ad
*** 855,862 ****
  e8ba734d63b4001c905ea24a0dc1b6a3  gcc/ada/gcc-interface/misc.cc
  a74b4504c5ad4ed4e963f0691c289b40  gcc/ada/gcc-interface/system.ads
  b350a6fd65cafe8bd47dc42192437310  gcc/ada/gcc-interface/targtyps.cc
! 459f0b99e7a1b0ab35902e89fc170732  gcc/ada/gcc-interface/trans.cc
! 3220b6e793a1a8e961e0a82e74aea4b6  gcc/ada/gcc-interface/utils.cc
  7b0d708fd189018a87468ef844fc3811  gcc/ada/gcc-interface/utils2.cc
  e98c75620d0cefed3bc5965c7974b5a9  gcc/ada/gen_il-fields.ads
  42ea61b238f9b98831503c2afdbad9d3  gcc/ada/gen_il-gen-gen_entities.adb
--- 855,862 ----
  e8ba734d63b4001c905ea24a0dc1b6a3  gcc/ada/gcc-interface/misc.cc
  a74b4504c5ad4ed4e963f0691c289b40  gcc/ada/gcc-interface/system.ads
  b350a6fd65cafe8bd47dc42192437310  gcc/ada/gcc-interface/targtyps.cc
! c77b069c11d396024d465bc58c32292f  gcc/ada/gcc-interface/trans.cc
! e8e1dea48e7ee6c84d438db1b4a6a9b2  gcc/ada/gcc-interface/utils.cc
  7b0d708fd189018a87468ef844fc3811  gcc/ada/gcc-interface/utils2.cc
  e98c75620d0cefed3bc5965c7974b5a9  gcc/ada/gen_il-fields.ads
  42ea61b238f9b98831503c2afdbad9d3  gcc/ada/gen_il-gen-gen_entities.adb
*************** ca50c109ab873565785735a0fc7b519c  gcc/ad
*** 2766,2772 ****
  6e0df90c197a855b968fcbf7f3b75168  gcc/ada/libgnat/system-linux-arm.ads
  46c7642eea429c4c381655f00aa89219  gcc/ada/libgnat/system-linux-hppa.ads
  0ef39f058633550414ed85daf5b0176a  gcc/ada/libgnat/system-linux-ia64.ads
! 53fc71cd1ef500bb36caf52c33ad6d8a  gcc/ada/libgnat/system-linux-loongarch.ads
  01a608db32885c695a0b8e3d05ec33b5  gcc/ada/libgnat/system-linux-m68k.ads
  2e6961fb9d192db0300eb43023c51c45  gcc/ada/libgnat/system-linux-mips.ads
  33193af368f24333f1577b5b11768eb6  gcc/ada/libgnat/system-linux-ppc.ads
--- 2766,2772 ----
  6e0df90c197a855b968fcbf7f3b75168  gcc/ada/libgnat/system-linux-arm.ads
  46c7642eea429c4c381655f00aa89219  gcc/ada/libgnat/system-linux-hppa.ads
  0ef39f058633550414ed85daf5b0176a  gcc/ada/libgnat/system-linux-ia64.ads
! 629fa89b2e492e788b8414313fb8a0fd  gcc/ada/libgnat/system-linux-loongarch.ads
  01a608db32885c695a0b8e3d05ec33b5  gcc/ada/libgnat/system-linux-m68k.ads
  2e6961fb9d192db0300eb43023c51c45  gcc/ada/libgnat/system-linux-mips.ads
  33193af368f24333f1577b5b11768eb6  gcc/ada/libgnat/system-linux-ppc.ads
*************** f1c598b9ed25c6a7f9ca4fe6ae452f22  gcc/ad
*** 2820,2826 ****
  751e8542774037ed27a6bc9f4ece18cb  gcc/ada/mdll.ads
  1c3b6dcadfa6a8c0f677bbc6532e4df4  gcc/ada/mingw32.h
  204b17cea6ee8ef6f625bdb94e8bea02  gcc/ada/mkdir.c
! df5aa0dd04daf543efbc0f72adda7a9a  gcc/ada/mutably_tagged.adb
  8b3ea8a8e93333d3199fe382c5a9bb29  gcc/ada/mutably_tagged.ads
  7f39a63ae2aca38a1e09b830d8298e42  gcc/ada/namet-sp.adb
  6bcaf8f1c19dc69c747c2d495b341d5f  gcc/ada/namet-sp.ads
--- 2820,2826 ----
  751e8542774037ed27a6bc9f4ece18cb  gcc/ada/mdll.ads
  1c3b6dcadfa6a8c0f677bbc6532e4df4  gcc/ada/mingw32.h
  204b17cea6ee8ef6f625bdb94e8bea02  gcc/ada/mkdir.c
! 251f6965bae5313f3f52222e273ce774  gcc/ada/mutably_tagged.adb
  8b3ea8a8e93333d3199fe382c5a9bb29  gcc/ada/mutably_tagged.ads
  7f39a63ae2aca38a1e09b830d8298e42  gcc/ada/namet-sp.adb
  6bcaf8f1c19dc69c747c2d495b341d5f  gcc/ada/namet-sp.ads
*************** e364f4e3ae92066699cc93a8f7b828c1  gcc/ad
*** 2925,2942 ****
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
  d5a830d4c7f937442a45f667249e9a85  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
! 68a4ab355d2e5ec7094e5a397fe51cee  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! 7a47d45d34f8d63a0f58ce81291f38cc  gcc/ada/sem_ch3.adb
  5fd10023b617fc61dce7c2801674285d  gcc/ada/sem_ch3.ads
! ca460b7fc99c5961aa541b95e1730a66  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
  3d2fb7e75bcf5cb7e2f014691fbc1d87  gcc/ada/sem_ch5.adb
  cbfbd3e4737f56717fc2ffda6b38f125  gcc/ada/sem_ch5.ads
! 7c3b00e7399acf0f697e0caee99f9645  gcc/ada/sem_ch6.adb
! 3adb4dc0d6d1183f0fe82a96638bac4c  gcc/ada/sem_ch6.ads
  3c7c6e6b95a9cddb1d6f1a42a5962379  gcc/ada/sem_ch7.adb
  24a1265e6a25756265643858abcf7ded  gcc/ada/sem_ch7.ads
  3fa2088c8a170324d2bae749a94e32d9  gcc/ada/sem_ch8.adb
--- 2925,2942 ----
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
  d5a830d4c7f937442a45f667249e9a85  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
! bdd184bdbe9fb946500215a918ba9014  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! 765c2d32eb7f8e81ce9da54ba469dde3  gcc/ada/sem_ch3.adb
  5fd10023b617fc61dce7c2801674285d  gcc/ada/sem_ch3.ads
! 4477e3a08f99e2712526aa1d0e8240c8  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
  3d2fb7e75bcf5cb7e2f014691fbc1d87  gcc/ada/sem_ch5.adb
  cbfbd3e4737f56717fc2ffda6b38f125  gcc/ada/sem_ch5.ads
! 7992ecc42e8487f8cdb65f2d2b283a10  gcc/ada/sem_ch6.adb
! b514f7f350605ee2678b654f7eef9152  gcc/ada/sem_ch6.ads
  3c7c6e6b95a9cddb1d6f1a42a5962379  gcc/ada/sem_ch7.adb
  24a1265e6a25756265643858abcf7ded  gcc/ada/sem_ch7.ads
  3fa2088c8a170324d2bae749a94e32d9  gcc/ada/sem_ch8.adb
*************** e8e79e2a818321d7816e27eed8d17404  gcc/ad
*** 2959,2965 ****
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! f0957cd419f505120a3366c63e8a45f7  gcc/ada/sem_prag.adb
  3d4cec1697839c758bf4ee78035143d3  gcc/ada/sem_prag.ads
  682159c8a517a990414691a040df1b40  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
--- 2959,2965 ----
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! 44710494391a9ea926e38cb81fa49fbf  gcc/ada/sem_prag.adb
  3d4cec1697839c758bf4ee78035143d3  gcc/ada/sem_prag.ads
  682159c8a517a990414691a040df1b40  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
*************** b5bad059d1da34b0f6f1f8e3b605f212  gcc/ad
*** 3005,3011 ****
  6a1a72215ac86e7110b29ca0d8fef7f6  gcc/ada/socket.c
  8bdf1e57c628c071b503b49f5c5078f6  gcc/ada/spark_xrefs.adb
  2753ed3eddef50a315406d42f653c5d3  gcc/ada/spark_xrefs.ads
! 79f131b16a5cd929ba26cec5480770f1  gcc/ada/sprint.adb
  3e9a55e0b0a74656ccf4d6b370f9f3b9  gcc/ada/sprint.ads
  ec2c88d86fa3c44323427da53121cd94  gcc/ada/stand.ads
  995259a03fc6743547480930ff72b93a  gcc/ada/standard.ads.h
--- 3005,3011 ----
  6a1a72215ac86e7110b29ca0d8fef7f6  gcc/ada/socket.c
  8bdf1e57c628c071b503b49f5c5078f6  gcc/ada/spark_xrefs.adb
  2753ed3eddef50a315406d42f653c5d3  gcc/ada/spark_xrefs.ads
! a6f0ec0501cd3ab2cfca9b234e7042b1  gcc/ada/sprint.adb
  3e9a55e0b0a74656ccf4d6b370f9f3b9  gcc/ada/sprint.ads
  ec2c88d86fa3c44323427da53121cd94  gcc/ada/stand.ads
  995259a03fc6743547480930ff72b93a  gcc/ada/standard.ads.h
*************** a2bf0873375fc2ab681bcd55a2b23e26  gcc/co
*** 4149,4155 ****
  a5346c37d189bcadf27fd946fe2c2566  gcc/config/i386/djgpp.opt
  1b346c8cab1daa697ecd6c31e8e0e1d5  gcc/config/i386/djgpp.opt.urls
  0ada511dcea9cb884e7aed714cecb141  gcc/config/i386/dragonfly.h
! fee6d2534a6e114692c649906a840579  gcc/config/i386/driver-i386.cc
  8db059b2a4621231dcdc591159eace91  gcc/config/i386/driver-mingw32.cc
  436804c1d1ef71b2a318f01e7e91c190  gcc/config/i386/emmintrin.h
  def0edea16aac07cf3e0e7d2daf27455  gcc/config/i386/enqcmdintrin.h
--- 4149,4155 ----
  a5346c37d189bcadf27fd946fe2c2566  gcc/config/i386/djgpp.opt
  1b346c8cab1daa697ecd6c31e8e0e1d5  gcc/config/i386/djgpp.opt.urls
  0ada511dcea9cb884e7aed714cecb141  gcc/config/i386/dragonfly.h
! 136661c3f00ab0e5caae3d0b17f4f399  gcc/config/i386/driver-i386.cc
  8db059b2a4621231dcdc591159eace91  gcc/config/i386/driver-mingw32.cc
  436804c1d1ef71b2a318f01e7e91c190  gcc/config/i386/emmintrin.h
  def0edea16aac07cf3e0e7d2daf27455  gcc/config/i386/enqcmdintrin.h
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5496,5502 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 0cc487737c542f17315bb5207a265875  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5496,5502 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  2a5216aefb9cdf4b270ef8e599cc794f  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! a4e908dcbb74a6c16b32af88d962538c  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** fce8de27014c109814b3f69be6a5d4f6  gcc/cp
*** 5537,5543 ****
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  bfc0a4cea2b61e7ae38934b220f84e85  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! f23093e4883224d6463518abe835a62b  gcc/cp/constexpr.cc
  d132f7f4c080ce3048977e23e33b9b1c  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
--- 5537,5543 ----
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  bfc0a4cea2b61e7ae38934b220f84e85  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! d3e0520cc8281a0fcfb1aa4f33f529c2  gcc/cp/constexpr.cc
  d132f7f4c080ce3048977e23e33b9b1c  gcc/cp/constraint.cc
  a4c4f7387ee41213f5d0113f9e78d30c  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
*************** aaf76a9b03fd0532d2904aef004fd66a  gcc/cp
*** 5581,5587 ****
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! ddfdd9a2ec312004387f88308d0d1208  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
  27a10d7b6902641140f84afb4830228b  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
--- 5581,5587 ----
  9644410086c3beb90033e77613e9d1a7  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 9ea47e86994188466fabb7292ab2f21e  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
  27a10d7b6902641140f84afb4830228b  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
*************** b58bf61fbfed45af179b7104e72a9486  gcc/cp
*** 5592,5598 ****
  67c8ace75ad63aabe8efb9f9c016b437  gcc/cp/std-name-hint.h
  e3798db73e0b3e892e772acbe569a5b8  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! 85fae1b0abaa0af8321e22f847ee2fad  gcc/cp/typeck.cc
  1fea2b59dbf93b59626d7546b3c1f738  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
--- 5592,5598 ----
  67c8ace75ad63aabe8efb9f9c016b437  gcc/cp/std-name-hint.h
  e3798db73e0b3e892e772acbe569a5b8  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! a935e600afe4c661c30f0f5b35413cd9  gcc/cp/typeck.cc
  1fea2b59dbf93b59626d7546b3c1f738  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
*************** b5fa845ff578d70e8ceae655d6affc51  gcc/ex
*** 6039,6045 ****
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
  bc438860c6c9b2d1d32fad8eb6040ccd  gcc/expr.cc
  5480b0f834e382e22c92192d7f5a4744  gcc/expr.h
! 6023e86ee70f68a65ad9ecb5735697ae  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
  4e78fbbdb0a8c835b984d732a6d97a7b  gcc/fibonacci_heap.h
  ee644c05e4a3461a8c2f5a4a5ea285bd  gcc/file-find.cc
--- 6039,6045 ----
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
  bc438860c6c9b2d1d32fad8eb6040ccd  gcc/expr.cc
  5480b0f834e382e22c92192d7f5a4744  gcc/expr.h
! b7ef4a8453eca6dbe12f52da45389cf6  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
  4e78fbbdb0a8c835b984d732a6d97a7b  gcc/fibonacci_heap.h
  ee644c05e4a3461a8c2f5a4a5ea285bd  gcc/file-find.cc
*************** a798cdca802a57ffa3473ab610b37c86  gcc/fo
*** 6056,6062 ****
  4b1bef753dda2d19671f35332c69a0f7  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! ee35caeada61a0858ea277fc915ab1db  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6056,6062 ----
  4b1bef753dda2d19671f35332c69a0f7  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 97ca54fc8fd862bcf40eb3d185803720  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** c78c72f9e780bf1c0eea63295c5ba590  gcc/fo
*** 6143,6149 ****
  7fc6fb7f159830fc0d98a9cd72e5cdf9  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! 99a62aecb245ac7add34159ffc6cca1d  gcc/fortran/trans-array.cc
  a4f5f15bbfd3cf3b780e3a8875ebf0df  gcc/fortran/trans-array.h
  134a72b3349d427eccb35198acc48a71  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
--- 6143,6149 ----
  7fc6fb7f159830fc0d98a9cd72e5cdf9  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! 6d5de0711cf335a4a100f5ff822f641c  gcc/fortran/trans-array.cc
  a4f5f15bbfd3cf3b780e3a8875ebf0df  gcc/fortran/trans-array.h
  134a72b3349d427eccb35198acc48a71  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
*************** b2f692287d25760afcef126c010f7078  gcc/pa
*** 7718,7724 ****
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  82f4a87ff4fd2d77e57f3f46d6e0c197  gcc/pass_manager.h
  1a496be43b4e534d45cbad96b36be29d  gcc/passes.cc
! 8bef7ffcda2165b2b4a54854eb7ea8b4  gcc/passes.def
  e3f908061f2b051f55381b513a49022b  gcc/path-coverage.cc
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
--- 7718,7724 ----
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  82f4a87ff4fd2d77e57f3f46d6e0c197  gcc/pass_manager.h
  1a496be43b4e534d45cbad96b36be29d  gcc/passes.cc
! 7f0f76bbd4bb4eaf2a26cd45d0e14f02  gcc/passes.def
  e3f908061f2b051f55381b513a49022b  gcc/path-coverage.cc
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8430,8436 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! c73ab54c87c62e02b11280d2fcb55f2d  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8430,8436 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! f4e5bc461fb15b5000cb6793bf609073  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** cc00a3c5a3fe4188220028449567b571  gcc/te
*** 12003,12008 ****
--- 12003,12010 ----
  d89ff70e1d21d4c436a2561d33888f83  gcc/testsuite/c-c++-common/asan/pr106558.c
  fabe4f563e2a6b04ace68b9b7e010e6b  gcc/testsuite/c-c++-common/asan/pr120608-1.c
  a81fada6339487ed882e8189aae31718  gcc/testsuite/c-c++-common/asan/pr120608-2.c
+ 4bf79f26fda6692969b7b7acd3996a01  gcc/testsuite/c-c++-common/asan/pr120608-3.c
+ bfeb7c22d0f9799de47d33dd1bcdde09  gcc/testsuite/c-c++-common/asan/pr120608-4.c
  9a0dd3dcef02945c8967f40a29316496  gcc/testsuite/c-c++-common/asan/pr56330.c
  202bae43b2843228776d43c8d07c92c8  gcc/testsuite/c-c++-common/asan/pr59029.c
  65128b17436f6406d9e224257030e000  gcc/testsuite/c-c++-common/asan/pr59063-1.c
*************** b03be3a03970717959df65ccdcbebe88  gcc/te
*** 15196,15201 ****
--- 15198,15205 ----
  7998896b5b941ead8835759e67d0fff5  gcc/testsuite/g++.dg/asan/pr117845-2.C
  bcebd751b296d1287bb9fa7c080ccecb  gcc/testsuite/g++.dg/asan/pr117845.C
  350e8cfd78cd243b5ca66f3b0149e4b7  gcc/testsuite/g++.dg/asan/pr118763.C
+ 5b2d3a20968e0f4254721c157eb7c67c  gcc/testsuite/g++.dg/asan/pr120608-3.C
+ 8cb6a9a2f920a7486ac33480f9cab891  gcc/testsuite/g++.dg/asan/pr120608-4.C
  a012f82a08211153b4c4517641e43c3d  gcc/testsuite/g++.dg/asan/pr120608.C
  e472f2ce37f2b55b1358ec08717d9f08  gcc/testsuite/g++.dg/asan/pr55617.C
  74a04a20e12a8acd0fd7d05742cf8d63  gcc/testsuite/g++.dg/asan/pr62017.C
*************** db740268984e13059571b37af26229f7  gcc/te
*** 20717,20722 ****
--- 20721,20727 ----
  ef7d7c0e26159c8de94fcb3f8aeb2c11  gcc/testsuite/g++.dg/cpp23/normalize7.C
  1559cfc237c4cd0b5a977e0a3e97dcef  gcc/testsuite/g++.dg/cpp23/pr117287-attr.C
  bef1cfaa7a0c843e14d86e3cefd20837  gcc/testsuite/g++.dg/cpp23/range-for1.C
+ daec90ffb75379f104da0b9f4503d2b5  gcc/testsuite/g++.dg/cpp23/range-for10.C
  769314536bd2595caab3098e2d27f697  gcc/testsuite/g++.dg/cpp23/range-for2.C
  22632bf1d42798a1dc41e4771915e05a  gcc/testsuite/g++.dg/cpp23/range-for3.C
  d687312a7453171ab6159b043423f880  gcc/testsuite/g++.dg/cpp23/range-for4.C
*************** a0fee4f3ee4678b54afd993b619baa05  gcc/te
*** 28946,28951 ****
--- 28951,28958 ----
  45c8a98fb67b502b90968b85f37350fd  gcc/testsuite/g++.dg/parse/pr113788.C
  4f1090730a2c9b918d79fed001575a31  gcc/testsuite/g++.dg/parse/pr113929.C
  dfa745316c10162491bb418266c2b932  gcc/testsuite/g++.dg/parse/pr116071.C
+ 732ccde523003692267913067f6a0ccd  gcc/testsuite/g++.dg/parse/pr120471.C
+ 225e1d7f8cf80186eac35ff37acc9379  gcc/testsuite/g++.dg/parse/pr120940.C
  2dde7d845edb3fc1b6b06c1f7c1d71f6  gcc/testsuite/g++.dg/parse/pr16696-permissive.C
  f8326578679fecd658e1bec2d3ed7654  gcc/testsuite/g++.dg/parse/pr16696.C
  29f6ba15da1283765b5179abe6707d09  gcc/testsuite/g++.dg/parse/pr18770.C
*************** eb665dfa7b7ea47842e7a0ca1a4046e2  gcc/te
*** 30607,30612 ****
--- 30614,30620 ----
  5617adf87656fe7cb0eff6a0b9c0033c  gcc/testsuite/g++.dg/template/permissive-error1b.C
  6cdb652b5984198200693a1bd0d70d93  gcc/testsuite/g++.dg/template/permissive-error1c.C
  28d3f4512b4406102180ca1103ff1454  gcc/testsuite/g++.dg/template/permissive-error2.C
+ e4d0b292389630976cca25f6a5808a1e  gcc/testsuite/g++.dg/template/permissive-error3.C
  14967698fd85bf0506454b2df17f8d2a  gcc/testsuite/g++.dg/template/pr108206.C
  47c32753e30b4754695e8eabfcc1e9f5  gcc/testsuite/g++.dg/template/pr119138.C
  1cb28c70209f6da9c6fd5dc25fde1e1a  gcc/testsuite/g++.dg/template/pr16564.C
*************** ad6c0b4132032f21f64bfdd4836d3313  gcc/te
*** 32268,32273 ****
--- 32276,32282 ----
  59f2687e6719ef7d3d19b4de0e99a075  gcc/testsuite/g++.dg/ubsan/pr105729.C
  06fb5e3c91f4d1b4f58ee978dd2b4b30  gcc/testsuite/g++.dg/ubsan/pr116449.C
  a9c7210a5fb28a26cd54ad5ce0872a53  gcc/testsuite/g++.dg/ubsan/pr117259.C
+ a4c08c025f777efea858788766890b26  gcc/testsuite/g++.dg/ubsan/pr120471.C
  a654df71119821a4303cc9fe0501191b  gcc/testsuite/g++.dg/ubsan/pr59250.C
  420a6623146bb014dc1310134356d81f  gcc/testsuite/g++.dg/ubsan/pr59306.C
  79755a51c3cbb97ff48bd411272f6b08  gcc/testsuite/g++.dg/ubsan/pr59331.C
*************** c32e2d9c26f73ceab75448129f154a62  gcc/te
*** 32657,32662 ****
--- 32666,32672 ----
  c1c94fbed68712c556c47675075fab08  gcc/testsuite/g++.dg/warn/Wduplicated-branches6.C
  df34a3119747a72018c056305c89abd6  gcc/testsuite/g++.dg/warn/Wduplicated-branches7.C
  b9cda5e4dff795d15eaf9fe9108df523  gcc/testsuite/g++.dg/warn/Wduplicated-branches8.C
+ b78135999b9fbdc92326bfae8b355202  gcc/testsuite/g++.dg/warn/Wduplicated-branches9.C
  53e8ba692e810326b135e28115da516a  gcc/testsuite/g++.dg/warn/Wduplicated-cond1.C
  aee46bcb7031162dcee9c8ebe1228c6f  gcc/testsuite/g++.dg/warn/Wduplicated-cond2.C
  3fd71ef4467ff2d96bedfb8624c9f6c9  gcc/testsuite/g++.dg/warn/Wduplicated-cond3.C
*************** b7a69609ea582386c302afd514d8e233  gcc/te
*** 47689,47695 ****
  29ace6c606b191c80e6eda01848c3e07  gcc/testsuite/gcc.dg/ipa/pr118097.c
  03eb6d8014b7164bbbc15cf1299be9d4  gcc/testsuite/gcc.dg/ipa/pr118138.c
  c8d0678c2016d21f4da748a79301946a  gcc/testsuite/gcc.dg/ipa/pr118535.c
! d2d98a344c776f2cee643c99d05eb20c  gcc/testsuite/gcc.dg/ipa/pr119318.c
  d8f0256cde05093b9738e8287c58d5c3  gcc/testsuite/gcc.dg/ipa/pr119530.c
  8724c127eb269868ca6c918a72fc36b1  gcc/testsuite/gcc.dg/ipa/pr119803.c
  e39432b4ae7797e55b13f6d2fd29a4a6  gcc/testsuite/gcc.dg/ipa/pr119852.c
--- 47699,47705 ----
  29ace6c606b191c80e6eda01848c3e07  gcc/testsuite/gcc.dg/ipa/pr118097.c
  03eb6d8014b7164bbbc15cf1299be9d4  gcc/testsuite/gcc.dg/ipa/pr118138.c
  c8d0678c2016d21f4da748a79301946a  gcc/testsuite/gcc.dg/ipa/pr118535.c
! 60f619bf7905d44b5480ef9c557d9112  gcc/testsuite/gcc.dg/ipa/pr119318.c
  d8f0256cde05093b9738e8287c58d5c3  gcc/testsuite/gcc.dg/ipa/pr119530.c
  8724c127eb269868ca6c918a72fc36b1  gcc/testsuite/gcc.dg/ipa/pr119803.c
  e39432b4ae7797e55b13f6d2fd29a4a6  gcc/testsuite/gcc.dg/ipa/pr119852.c
*************** e1b9ad351c56aebfaff790ff4002bf6e  gcc/te
*** 53160,53165 ****
--- 53170,53176 ----
  e9469d38b4234580f9b2284233404b3c  gcc/testsuite/gcc.dg/torture/pr120341-1.c
  aef01c040da8abd2a1e547ed6a07eb5a  gcc/testsuite/gcc.dg/torture/pr120341-2.c
  12e839fd30c3a301bab4708aee3c9815  gcc/testsuite/gcc.dg/torture/pr120347.c
+ 590593d14c26e1d9ed776d01fc734a3c  gcc/testsuite/gcc.dg/torture/pr120369-1.c
  e6e17b2280f19928b738f46328c5dcf7  gcc/testsuite/gcc.dg/torture/pr120654.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
*************** f1ea877f35ca466bb967858a715d4f6c  gcc/te
*** 84869,84875 ****
  c02928696f09c7fc9c99174083ecb49c  gcc/testsuite/gcc.target/powerpc/builtin-feclearexcept-feraiseexcept-2.c
  04b3fc34bfccb1856530015004e53b0f  gcc/testsuite/gcc.target/powerpc/builtin-fegetround.c
  47bacabfccc9e78ddef3b0b6f2d15106  gcc/testsuite/gcc.target/powerpc/builtin-vec-sums-be-int.c
! ac5fc8abef0ee25e3006e84d9ec6e994  gcc/testsuite/gcc.target/powerpc/builtin_altivec_tr_stxvr_runnable.c
  a8f9adaf01b9c4605ccf3a2b91395d9a  gcc/testsuite/gcc.target/powerpc/builtins-1-be-folded.c
  d7a191d70b9b9996b4b19f79964cf6c2  gcc/testsuite/gcc.target/powerpc/builtins-1-le-folded.c
  3caa2573bbad9fdef8b5573d969fe446  gcc/testsuite/gcc.target/powerpc/builtins-1-p10-runnable.c
--- 84880,84886 ----
  c02928696f09c7fc9c99174083ecb49c  gcc/testsuite/gcc.target/powerpc/builtin-feclearexcept-feraiseexcept-2.c
  04b3fc34bfccb1856530015004e53b0f  gcc/testsuite/gcc.target/powerpc/builtin-fegetround.c
  47bacabfccc9e78ddef3b0b6f2d15106  gcc/testsuite/gcc.target/powerpc/builtin-vec-sums-be-int.c
! 0a0b275d0be04b242c475f65eea6a60a  gcc/testsuite/gcc.target/powerpc/builtin_altivec_tr_stxvr_runnable.c
  a8f9adaf01b9c4605ccf3a2b91395d9a  gcc/testsuite/gcc.target/powerpc/builtins-1-be-folded.c
  d7a191d70b9b9996b4b19f79964cf6c2  gcc/testsuite/gcc.target/powerpc/builtins-1-le-folded.c
  3caa2573bbad9fdef8b5573d969fe446  gcc/testsuite/gcc.target/powerpc/builtins-1-p10-runnable.c
*************** ecbbab960980ce6717cd871016f94e2b  gcc/te
*** 93452,93458 ****
  00c677b45b031010d00b9a08464d45c2  gcc/testsuite/gcc.target/s390/vector/vec-abi-struct-1.c
  49445c57bcd7c342eb0107bc9b13d44e  gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-1.c
  dd0d54001d5c0c89de9ecbfeca7d9163  gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-2.c
! b032ea34a9409f0482c317fa2ea7ebed  gcc/testsuite/gcc.target/s390/vector/vec-abs-emu.c
  18a30b21905501cfe3b583c13b3c756a  gcc/testsuite/gcc.target/s390/vector/vec-clobber-1.c
  f4f003702feb568dbc88ed411b2783e9  gcc/testsuite/gcc.target/s390/vector/vec-cmp-1.c
  6ad5106106095fa0defa7e045850f1a6  gcc/testsuite/gcc.target/s390/vector/vec-cmp-2.c
--- 93463,93469 ----
  00c677b45b031010d00b9a08464d45c2  gcc/testsuite/gcc.target/s390/vector/vec-abi-struct-1.c
  49445c57bcd7c342eb0107bc9b13d44e  gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-1.c
  dd0d54001d5c0c89de9ecbfeca7d9163  gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-2.c
! 04edf5219581ca639beb3a6702c0c825  gcc/testsuite/gcc.target/s390/vector/vec-abs-emu.c
  18a30b21905501cfe3b583c13b3c756a  gcc/testsuite/gcc.target/s390/vector/vec-clobber-1.c
  f4f003702feb568dbc88ed411b2783e9  gcc/testsuite/gcc.target/s390/vector/vec-cmp-1.c
  6ad5106106095fa0defa7e045850f1a6  gcc/testsuite/gcc.target/s390/vector/vec-cmp-2.c
*************** b149a03c83e407974152eb2857fa31fd  gcc/te
*** 93475,93482 ****
  2c26f350a22588870ab9a7eca3102f56  gcc/testsuite/gcc.target/s390/vector/vec-init-2.c
  7d8a2a5d26b13c07f6024709aedd0742  gcc/testsuite/gcc.target/s390/vector/vec-init-3.c
  03cc140b84b037d2fe9c9c0be079e135  gcc/testsuite/gcc.target/s390/vector/vec-int-math-compile-1.c
! 856674a75a8200b391a94aeaefe62dbc  gcc/testsuite/gcc.target/s390/vector/vec-max-emu.c
! aac15cbd63557a6d4fce6fbf70f1e964  gcc/testsuite/gcc.target/s390/vector/vec-min-emu.c
  3f0e273f04c5175b1fdb100976e981c6  gcc/testsuite/gcc.target/s390/vector/vec-nopeel-1.c
  36edbd8af8f3368a9b83ac5c88068cfc  gcc/testsuite/gcc.target/s390/vector/vec-nopeel-2.c
  604b357bf5bdc9c25e2e900ed77fd858  gcc/testsuite/gcc.target/s390/vector/vec-scalar-cmp-1.c
--- 93486,93493 ----
  2c26f350a22588870ab9a7eca3102f56  gcc/testsuite/gcc.target/s390/vector/vec-init-2.c
  7d8a2a5d26b13c07f6024709aedd0742  gcc/testsuite/gcc.target/s390/vector/vec-init-3.c
  03cc140b84b037d2fe9c9c0be079e135  gcc/testsuite/gcc.target/s390/vector/vec-int-math-compile-1.c
! 85a7a93be54451633e5847d1fe706a13  gcc/testsuite/gcc.target/s390/vector/vec-max-emu.c
! ff8a9ec0d970b55dd483a1d16ac9c94e  gcc/testsuite/gcc.target/s390/vector/vec-min-emu.c
  3f0e273f04c5175b1fdb100976e981c6  gcc/testsuite/gcc.target/s390/vector/vec-nopeel-1.c
  36edbd8af8f3368a9b83ac5c88068cfc  gcc/testsuite/gcc.target/s390/vector/vec-nopeel-2.c
  604b357bf5bdc9c25e2e900ed77fd858  gcc/testsuite/gcc.target/s390/vector/vec-scalar-cmp-1.c
*************** ca5ed9b7a4b086d732df1a505d87813b  gcc/te
*** 99610,99615 ****
--- 99621,99627 ----
  d6fad859ae9f254219fe0b62c52472a0  gcc/testsuite/gfortran.dg/arrayio_9.f90
  a7a4d71734bf9559e09017fe4616e065  gcc/testsuite/gfortran.dg/arrayio_derived_1.f90
  2b2c726e08ba1c26507c7392e63e1029  gcc/testsuite/gfortran.dg/arrayio_derived_2.f90
+ eede070a28c17448e8635dfa208829ae  gcc/testsuite/gfortran.dg/asan/array_constructor_1.f90
  084d73893a30ee8bc9420fc82f944f3c  gcc/testsuite/gfortran.dg/asan/asan.exp
  3b8425a2f59699b47aac6da29c11aba9  gcc/testsuite/gfortran.dg/asan/associate_58.f90
  e9f58df1de071d2b106b16b3af8f6764  gcc/testsuite/gfortran.dg/asan/associate_59.f90
*************** a7bd734382497172aa271ae6f28c2872  gcc/te
*** 111913,111918 ****
--- 111925,111931 ----
  757c6c1089f7521b4d88d3ea98faeac3  gcc/testsuite/gnat.dg/specs/fe_inlining_helper.adb
  bc790bd930f8c4f971b8268bdda83659  gcc/testsuite/gnat.dg/specs/fe_inlining_helper.ads
  07a75ac7ade09270a3df5c08ed7d6c00  gcc/testsuite/gnat.dg/specs/finalizable1.ads
+ 8b2c27da0d1a366c730abf05792e6535  gcc/testsuite/gnat.dg/specs/finalizable2.ads
  085a1214c06b4e9495c47b56f30e6cd3  gcc/testsuite/gnat.dg/specs/formal_type.ads
  b605c919a473b8d6808dd232aa7eaf49  gcc/testsuite/gnat.dg/specs/gen_interface.ads
  4830454a8335e61b1876284f60de9782  gcc/testsuite/gnat.dg/specs/gen_interface_p.ads
*************** a48b85120f042a19d52da08d304cc287  gcc/tr
*** 117253,117259 ****
  4357345e39068e97ced26f06af8109a6  gcc/tree-cfgcleanup.h
  1718a36253ebbb17fe4570fc768216c9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
! 8bf7d3cd5470b24f391fbdaf27a7fa3d  gcc/tree-complex.cc
  1a4cfcc258f7e90de06692e266fb2918  gcc/tree-core.h
  77244f55dae576a255f5b69b70774e54  gcc/tree-data-ref.cc
  e43a555cdaab9a97ba3910364910f865  gcc/tree-data-ref.h
--- 117266,117272 ----
  4357345e39068e97ced26f06af8109a6  gcc/tree-cfgcleanup.h
  1718a36253ebbb17fe4570fc768216c9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
! 631f383225878af718642d2a458aefae  gcc/tree-complex.cc
  1a4cfcc258f7e90de06692e266fb2918  gcc/tree-core.h
  77244f55dae576a255f5b69b70774e54  gcc/tree-data-ref.cc
  e43a555cdaab9a97ba3910364910f865  gcc/tree-data-ref.h
*************** bf137326f0a436ec66b505f490068cd7  gcc/tr
*** 117376,117386 ****
  6714826bb9cd5f171a08cbabcb1da8e6  gcc/tree-streamer.h
  899a002f8aec509c2457b02d6c7634d9  gcc/tree-switch-conversion.cc
  834999e1b44b915632e773927cdaa397  gcc/tree-switch-conversion.h
! 5ff24777133e10759c49ab4b36c7c5bd  gcc/tree-tailcall.cc
  1efeaf70ebe667efd4c946b4086d2802  gcc/tree-vect-data-refs.cc
  7ac587d2dd45a9437f9daa1b6409dca9  gcc/tree-vect-generic.cc
  cc0bdf3f684b251509b8552d2d8549a3  gcc/tree-vect-loop-manip.cc
! c9e0819262f9539fff68f6b698f40f5b  gcc/tree-vect-loop.cc
  77240c08cea454c2d4a449206f7930c3  gcc/tree-vect-patterns.cc
  baa70369c21f662d5e61d1296052d231  gcc/tree-vect-slp-patterns.cc
  09d798b4fe50daf2514eca382d37c9ae  gcc/tree-vect-slp.cc
--- 117389,117399 ----
  6714826bb9cd5f171a08cbabcb1da8e6  gcc/tree-streamer.h
  899a002f8aec509c2457b02d6c7634d9  gcc/tree-switch-conversion.cc
  834999e1b44b915632e773927cdaa397  gcc/tree-switch-conversion.h
! 4395c5694fb8d6adf7c34f1dc685bc7c  gcc/tree-tailcall.cc
  1efeaf70ebe667efd4c946b4086d2802  gcc/tree-vect-data-refs.cc
  7ac587d2dd45a9437f9daa1b6409dca9  gcc/tree-vect-generic.cc
  cc0bdf3f684b251509b8552d2d8549a3  gcc/tree-vect-loop-manip.cc
! 7ea120edfd69e73498dd90e3a1dfc0fc  gcc/tree-vect-loop.cc
  77240c08cea454c2d4a449206f7930c3  gcc/tree-vect-patterns.cc
  baa70369c21f662d5e61d1296052d231  gcc/tree-vect-slp-patterns.cc
  09d798b4fe50daf2514eca382d37c9ae  gcc/tree-vect-slp.cc
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 131354,131360 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 86c4917dbb68aca95086d4cec18b5fbc  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 131367,131373 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! e6884233ff4fcf2017103b0a0486b77d  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** a155d2afa910d24be0955f42c4585228  libstd
*** 132044,132050 ****
  4ab7627c024bab75db708e43d35616aa  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
  8a303c55e1a9a90d751641a38581e2bc  libstdc++-v3/include/bits/chrono.h
! 11dfe3645ed9c064bfe03ea9bcf79134  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
  e999e0783a5ca2165919f352526501e9  libstdc++-v3/include/bits/cow_string.h
--- 132057,132063 ----
  4ab7627c024bab75db708e43d35616aa  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
  8a303c55e1a9a90d751641a38581e2bc  libstdc++-v3/include/bits/chrono.h
! 3448d66faf4aeb61396ce4ac5dbcc176  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
  e999e0783a5ca2165919f352526501e9  libstdc++-v3/include/bits/cow_string.h
*************** ef960a69cca203133e14f230f029c45f  libstd
*** 132158,132164 ****
  c48928d63732da42056105c33cf860ff  libstdc++-v3/include/bits/stl_stack.h
  e090d043a8cdc4479dde4340af533938  libstdc++-v3/include/bits/stl_tempbuf.h
  c0874190fac1e81e66ba299a8440f4e4  libstdc++-v3/include/bits/stl_tree.h
! 875a120da5d87944fd151bca22a7703c  libstdc++-v3/include/bits/stl_uninitialized.h
  396190da81f504591c361c73a800287e  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
  69fecd7181ec71c850dba6e19cf9a58c  libstdc++-v3/include/bits/streambuf.tcc
--- 132171,132177 ----
  c48928d63732da42056105c33cf860ff  libstdc++-v3/include/bits/stl_stack.h
  e090d043a8cdc4479dde4340af533938  libstdc++-v3/include/bits/stl_tempbuf.h
  c0874190fac1e81e66ba299a8440f4e4  libstdc++-v3/include/bits/stl_tree.h
! b31972c7c1f5542e08193d3a13b52432  libstdc++-v3/include/bits/stl_uninitialized.h
  396190da81f504591c361c73a800287e  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
  69fecd7181ec71c850dba6e19cf9a58c  libstdc++-v3/include/bits/streambuf.tcc
*************** e03c583ee7c5891df1c7b190275435c9  libstd
*** 132776,132782 ****
  0f1bf0fdfc91c5159496ce06fc478adc  libstdc++-v3/include/std/print
  317c818ab1030cf117c8d8ef03df06aa  libstdc++-v3/include/std/queue
  01746ff9db8573f15b943b0c36cce6a8  libstdc++-v3/include/std/random
! 83f0b1fb9db24c31bf034bd93bb4dec8  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
  400d95a1fd416911b5c47562d7a586cf  libstdc++-v3/include/std/regex
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
--- 132789,132795 ----
  0f1bf0fdfc91c5159496ce06fc478adc  libstdc++-v3/include/std/print
  317c818ab1030cf117c8d8ef03df06aa  libstdc++-v3/include/std/queue
  01746ff9db8573f15b943b0c36cce6a8  libstdc++-v3/include/std/random
! c6665422c4d30802eb800b4bed33b200  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
  400d95a1fd416911b5c47562d7a586cf  libstdc++-v3/include/std/regex
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
*************** d3159b84b2e9833a521af84ceffbacfa  libstd
*** 134635,134640 ****
--- 134648,134654 ----
  131fd8d66b4f4501ac218ad00b557ef8  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc
  0de29c71eed69f5dd9c1663e99323429  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc
  39a02fadd67d7b20114705bd3af7113d  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/102064.cc
+ feb06362a46b71fbdb97217735aa60ab  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/120931.cc
  1bd6a89394feba8d8f6fff469ba5ea32  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/32158.cc
  2e5dfaf792edfc3d054bd2df519fac37  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/58982.cc
  e7d66f65613424b0c5442bcd109b99dc  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc
*************** a0e630899068a41f2ddf2c81cbd386a4  libstd
*** 142286,142292 ****
  b84e90f734d1e8ca59322b53758c6f9c  libstdc++-v3/testsuite/std/ranges/adaptors/to_input/1.cc
  05b5fe236bc0b5ee3fe341b1435caeba  libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc
  c1b23609040e813a09294f54b708a162  libstdc++-v3/testsuite/std/ranges/cartesian_product/1.cc
! dc17d5542c1969aa4c52c6a15de5c4fa  libstdc++-v3/testsuite/std/ranges/concat/1.cc
  474d22d474aece24ab6833bba4c36b37  libstdc++-v3/testsuite/std/ranges/conv/1.cc
  63a2d6de25511179d0f6232f1739a1bd  libstdc++-v3/testsuite/std/ranges/conv/112803.cc
  30b021647d63542228568a19a21f2fd4  libstdc++-v3/testsuite/std/ranges/conv/2_neg.cc
--- 142300,142306 ----
  b84e90f734d1e8ca59322b53758c6f9c  libstdc++-v3/testsuite/std/ranges/adaptors/to_input/1.cc
  05b5fe236bc0b5ee3fe341b1435caeba  libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc
  c1b23609040e813a09294f54b708a162  libstdc++-v3/testsuite/std/ranges/cartesian_product/1.cc
! 6121dbeb75930b73fe5c552392ee5693  libstdc++-v3/testsuite/std/ranges/concat/1.cc
  474d22d474aece24ab6833bba4c36b37  libstdc++-v3/testsuite/std/ranges/conv/1.cc
  63a2d6de25511179d0f6232f1739a1bd  libstdc++-v3/testsuite/std/ranges/conv/112803.cc
  30b021647d63542228568a19a21f2fd4  libstdc++-v3/testsuite/std/ranges/conv/2_neg.cc
*************** a87e1152f6bc2804b93ce070a51eeb54  libstd
*** 142349,142355 ****
  90714e66b9741259bb9b9cd2ea23288c  libstdc++-v3/testsuite/std/time/format/format.cc
  06b738d93b3d78681b0da48efd0a60bf  libstdc++-v3/testsuite/std/time/format/localized.cc
  9cd4d6791c125e40939cae77277f928d  libstdc++-v3/testsuite/std/time/format/pr117085.cc
! 419cdd8872b10325a937888fac85a489  libstdc++-v3/testsuite/std/time/format/pr117214.cc
  107c8c7bd6daa477dad84b5cfee3eacf  libstdc++-v3/testsuite/std/time/format/pr119517.cc
  7151cef2bf017dd6ee0e0ee9830b8909  libstdc++-v3/testsuite/std/time/format/pr120114.cc
  2be47743c9d490923037b020cfc220b7  libstdc++-v3/testsuite/std/time/freestanding.cc
--- 142363,142369 ----
  90714e66b9741259bb9b9cd2ea23288c  libstdc++-v3/testsuite/std/time/format/format.cc
  06b738d93b3d78681b0da48efd0a60bf  libstdc++-v3/testsuite/std/time/format/localized.cc
  9cd4d6791c125e40939cae77277f928d  libstdc++-v3/testsuite/std/time/format/pr117085.cc
! 11836aec53351222d0be5ee9402f3069  libstdc++-v3/testsuite/std/time/format/pr117214.cc
  107c8c7bd6daa477dad84b5cfee3eacf  libstdc++-v3/testsuite/std/time/format/pr119517.cc
  7151cef2bf017dd6ee0e0ee9830b8909  libstdc++-v3/testsuite/std/time/format/pr120114.cc
  2be47743c9d490923037b020cfc220b7  libstdc++-v3/testsuite/std/time/freestanding.cc
diff -Nrcpad gcc-15-20250628/gcc/ChangeLog gcc-15-20250705/gcc/ChangeLog
*** gcc-15-20250628/gcc/ChangeLog	Sat Jun 28 22:32:15 2025
--- gcc-15-20250705/gcc/ChangeLog	Sat Jul  5 22:32:05 2025
***************
*** 1,3 ****
--- 1,61 ----
+ 2025-07-03  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	Backported from master:
+ 	2025-05-21  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR middle-end/120369
+ 	* tree-complex.cc (gimple_expand_builtin_cabs): Return early
+ 	if the LHS of cabs is null.
+ 
+ 2025-07-03  Sam James  <sam@gentoo.org>
+ 
+ 	Backported from master:
+ 	2025-06-23  Sam James  <sam@gentoo.org>
+ 		    Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR rtl-optimization/120795
+ 	* ext-dce.cc (ext_dce_try_optimize_insn): Enable rescan in
+ 	remove_reg_equal_equiv_notes call.
+ 
+ 2025-07-03  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	Backported from master:
+ 	2025-06-22  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR rtl-optimization/120550
+ 	* ext-dce.cc (ext_dce_try_optimize_insn): Drop REG_EQUAL/REG_EQUIV
+ 	notes on modified insns.
+ 
+ 2025-07-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-07-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120927
+ 	* tree-vect-loop.cc (vect_analyze_loop): Stop querying
+ 	further epilogues after one with partial vectors.
+ 
+ 2025-07-02  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* config/i386/driver-i386.cc (host_detect_local_cpu): Change
+ 	to AMX-FP8 for Diamond Rapids.
+ 
+ 2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120608
+ 	* passes.def (pass_musttail): Move before pass_sanopt.
+ 	* tree-tailcall.cc (empty_eh_cleanup): Handle GIMPLE_RESX
+ 	which doesn't throw externally through recursion on single
+ 	eh edge (if any and cnt still allows that).
+ 	(find_tail_calls): Add ESUCC, IGNORED_EDGES and MUST_SEE_BBS
+ 	arguments.  Handle GIMPLE_CONDs for non-simplified cleanups with
+ 	finally_tmp temporaries both on backward and forward walks, adjust
+ 	recursive call.
+ 	(tree_optimize_tail_calls_1): Adjust find_tail_calls callers.
+ 
  2025-06-27  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* gimple-fold.cc (fold_const_aggregate_ref_1) <COMPONENT_REF>:
diff -Nrcpad gcc-15-20250628/gcc/DATESTAMP gcc-15-20250705/gcc/DATESTAMP
*** gcc-15-20250628/gcc/DATESTAMP	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/DATESTAMP	Sat Jul  5 22:32:05 2025
***************
*** 1 ****
! 20250628
--- 1 ----
! 20250705
diff -Nrcpad gcc-15-20250628/gcc/ada/ChangeLog gcc-15-20250705/gcc/ada/ChangeLog
*** gcc-15-20250628/gcc/ada/ChangeLog	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/ChangeLog	Sat Jul  5 22:32:05 2025
***************
*** 1,3 ****
--- 1,205 ----
+ 2025-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.cc (make_packable_type): Clear the TYPE_PACKED
+ 	flag in the case where the alignment is bumped.
+ 
+ 2025-07-04  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* exp_ch7.adb (Make_Final_Call): Tweak search of Finalize primitive.
+ 	* exp_util.adb (Finalize_Address): Likewise.
+ 
+ 2025-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Check_Compile_Time_Size): Try harder to see whether
+ 	the bounds of array types are known at compile time.
+ 
+ 2025-07-04  Steve Baird  <baird@adacore.com>
+ 
+ 	* mutably_tagged.adb (Make_CW_Size_Compile_Check): Include the
+ 	value of the Size'Class limit in the message generated via a
+ 	Compile_Time_Error pragma.
+ 
+ 2025-07-04  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): Fix error emission.
+ 
+ 2025-07-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in (gnatlib-sjlj): Delete.
+ 	(gnatlib-zcx): Do not modify Frontend_Exceptions constant.
+ 	* libgnat/system-linux-loongarch.ads (Frontend_Exceptions): Delete.
+ 
+ 2025-07-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (addressable_p): Add COMPG third parameter.
+ 	<COMPONENT_REF>: Do not return true out of alignment considerations
+ 	for non-strict-alignment targets if COMPG is set.
+ 	(Call_to_gnu): Pass true as COMPG in the call to the addressable_p
+ 	predicate if the called subprogram is an initialization procedure.
+ 
+ 2025-07-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (gnat_to_gnu) <N_Allocator>: Allocate the
+ 	bounds alongside the data if the Is_Constr_Array_Subt_With_Bounds
+ 	flag is set on the designated type.
+ 	<N_Free_Statement>: Take into account the allocated bounds if the
+ 	Is_Constr_Array_Subt_With_Bounds flag is set on the designated type.
+ 
+ 2025-07-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_component_type): Validate the
+ 	Component_Size like the size of a type only if the component type
+ 	is actually packed.
+ 
+ 2025-07-03  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* exp_util.adb (Insert_Actions): Fix check.
+ 
+ 2025-07-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Ctrl_Function_Call): Do not bail out for the
+ 	declarations of return objects.
+ 
+ 2025-07-03  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* exp_ch7.adb (Make_Deep_Record_Body): Fix case of absent Initialize
+ 	primitive.
+ 
+ 2025-07-03  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* exp_aggr.adb (Generate_Finalization_Actions): Stop assuming that
+ 	initialize primitive exists.
+ 
+ 2025-07-03  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* exp_ch7.adb (Insert_Actions_In_Scope_Around): Fix condition.
+ 
+ 2025-07-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Handle_Changed_Representation): Alphabetize local
+ 	variables.  Set the No_Finalize_Actions flag on the assignment.
+ 
+ 2025-07-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/120705
+ 	* exp_ch6.adb (Needs_BIP_Collection): Always return False if the
+ 	type has relaxed finalization.
+ 
+ 2025-07-01  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Heap_Or_Pool_Allocator): Test not Has_Relaxed_Finalization
+ 	as a guard against retrieving BIP_Collection formal (and related code).
+ 
+ 2025-07-01  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch3.adb (Constrain_Corresponding_Record): Inherit Class_Wide_Type on the
+ 	created constrained subtype.
+ 
+ 2025-07-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch7.adb (Shift_Address_For_Descriptor): Add dummy variable
+ 	to make sure that System_Storage_Elements is loaded.
+ 
+ 2025-07-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch7.adb (Shift_Address_For_Descriptor): New function.
+ 	(Make_Address_For_Finalize): Call above function.
+ 	(Make_Finalize_Address_Stmts): Likewise.
+ 	* exp_util.ads (Is_Constr_Array_Subt_Of_Unc_With_Controlled): New
+ 	predicate.
+ 	* exp_util.adb (Is_Constr_Array_Subt_Of_Unc_With_Controlled): Ditto.
+ 	(Remove_Side_Effects): Call above predicate.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Likewise.
+ 	* sem_ch4.adb (Analyze_Allocator): Allocate the bounds by setting
+ 	Is_Constr_Array_Subt_With_Bounds when appropriate.
+ 
+ 2025-07-01  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch4.adb (Try_Object_Operation): Handle mutably tagged
+ 	class-wide type prefix.
+ 
+ 2025-07-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Finalize_Address): Do not go to the root type for
+ 	array types.
+ 
+ 2025-07-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.ads (Is_Finalizable_Access): New predicate.
+ 	(Is_Non_BIP_Func_Call): Delete.
+ 	(Is_Secondary_Stack_BIP_Func_Call): Likewise.
+ 	* exp_util.adb (Is_Finalizable_Access): New predicate.
+ 	(Initialized_By_Aliased_BIP_Func_Call): Delete.
+ 	(Initialized_By_Reference): Likewise.
+ 	(Is_Aliased): Only consider the nontransient object serviced by
+ 	the transient scope.
+ 	(Is_Part_Of_BIP_Return_Statement): Minor tweak.
+ 	(Is_Finalizable_Transient): Remove calls to Initialized_By_Reference
+ 	and Initialized_By_Aliased_BIP_Func_Call.
+ 	Call Is_Finalizable_Access for access objects.
+ 	(Is_Non_BIP_Func_Call): Delete.
+ 	(Is_Secondary_Stack_BIP_Func_Call): Likewise.
+ 	(Requires_Cleanup_Actions): Call Is_Finalizable_Access for access
+ 	objects.
+ 	(Side_Effect_Free): Return True for N_Reference.
+ 	* exp_ch7.adb (Build_Finalizer.Process_Declarations): Call
+ 	Is_Finalizable_Access for access objects.
+ 
+ 2025-07-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Is_Expression_Of_Func_Return): New predicate.
+ 	(Is_Related_To_Func_Return): Call Is_Expression_Of_Func_Return.
+ 	(Remove_Side_Effects): Generate a temporary for a function call
+ 	that returns a constrained array type with controlled component
+ 	and an unconstrained first subtype.
+ 
+ 2025-06-30  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_attr.adb (Attribute_Max_Size_In_Storage_Elements):
+ 	Return Storage_Count'Last converted to universal_integer.
+ 
+ 2025-06-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma) <Pragma_No_Component_Reordering>:
+ 	Call Find_Type on the first argument of the pragma.
+ 
+ 2025-06-30  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_put_image.adb (Build_Record_Put_Image_Procedure): If
+ 	Discriminant_Specifications takes us from the full view of a type
+ 	to an (intentionally) unanalyzed subtree, then instead find
+ 	discriminant entities by calling Discriminant_Specifications on
+ 	the partial view of the type.
+ 
+ 2025-06-30  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Delayed_Subprogram, Possible_Freeze): Restrict
+ 	cases where freezing is delayed.
+ 	* sem_ch6.ads (Check_Delayed_Subprogram): Improve documentation
+ 	comment.
+ 	* sprint.adb (Write_Itype): Improve output.
+ 
+ 2025-06-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch7.adb (Process_Transient_In_Scope): Bail out if the object
+ 	is an ignored ghost entity.
+ 
+ 2025-06-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Insert_Actions): Extend special treatment applied
+ 	to freeze nodes to the case of blocks generated for aggregates.
+ 
+ 2025-06-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/120854
+ 	* sem_eval.adb (Get_String_Val): Be prepared for an integer literal
+ 	after a serious error is detected, and raise PE on other nodes.
+ 
+ 2025-06-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/120665
+ 	* sem_aggr.adb (Resolve_Container_Aggregate): Use robust guards.
+ 
  2025-06-12  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* doc/gnat_rm/gnat_language_extensions.rst
diff -Nrcpad gcc-15-20250628/gcc/ada/exp_aggr.adb gcc-15-20250705/gcc/ada/exp_aggr.adb
*** gcc-15-20250628/gcc/ada/exp_aggr.adb	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/exp_aggr.adb	Sat Jul  5 22:32:06 2025
*************** package body Exp_Aggr is
*** 2490,2501 ****
              Ref := Convert_To (Init_Typ, New_Copy_Tree (Target));
              Set_Assignment_OK (Ref);
  
!             Append_To (L,
!               Make_Procedure_Call_Statement (Loc,
!                 Name                   =>
!                   New_Occurrence_Of
!                     (Find_Controlled_Prim_Op (Init_Typ, Name_Initialize), Loc),
!                 Parameter_Associations => New_List (New_Copy_Tree (Ref))));
           end if;
        end Generate_Finalization_Actions;
  
--- 2490,2510 ----
              Ref := Convert_To (Init_Typ, New_Copy_Tree (Target));
              Set_Assignment_OK (Ref);
  
!             declare
!                Intlz : constant Entity_Id :=
!                  Find_Controlled_Prim_Op (Init_Typ, Name_Initialize);
!             begin
!                if Present (Intlz) then
!                   Append_To
!                     (L,
!                      Make_Procedure_Call_Statement
!                        (Loc,
!                         Name                   =>
!                           New_Occurrence_Of (Intlz, Loc),
!                         Parameter_Associations =>
!                           New_List (New_Copy_Tree (Ref))));
!                end if;
!             end;
           end if;
        end Generate_Finalization_Actions;
  
diff -Nrcpad gcc-15-20250628/gcc/ada/exp_attr.adb gcc-15-20250705/gcc/ada/exp_attr.adb
*** gcc-15-20250628/gcc/ada/exp_attr.adb	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/exp_attr.adb	Sat Jul  5 22:32:06 2025
*************** package body Exp_Attr is
*** 5042,5063 ****
           Typ : constant Entity_Id := Etype (N);
  
        begin
!          --  If the prefix is X'Class, we transform it into a direct reference
!          --  to the class-wide type, because the back end must not see a 'Class
!          --  reference. See also 'Size.
  
           if Is_Entity_Name (Pref)
             and then Is_Class_Wide_Type (Entity (Pref))
           then
!             Rewrite (Prefix (N), New_Occurrence_Of (Entity (Pref), Loc));
!             return;
!          end if;
  
           --  Heap-allocated controlled objects contain two extra pointers which
           --  are not part of the actual type. Transform the attribute reference
           --  into a runtime expression to add the size of the hidden header.
  
!          if Needs_Finalization (Ptyp) and then not Header_Size_Added (N) then
              Set_Header_Size_Added (N);
  
              --  Generate:
--- 5042,5083 ----
           Typ : constant Entity_Id := Etype (N);
  
        begin
!          --  Tranform T'Class'Max_Size_In_Storage_Elements (for any T) into
!          --  Storage_Count'Pos (Storage_Count'Last), because it must include
!          --  all descendants, which can be arbitrarily large. Note that the
!          --  back end must not see any 'Class attribute references.
!          --  The 'Pos is to make it be of type universal_integer.
!          --
!          --  ???If T'Class'Size is specified, it should probably affect
!          --  T'Class'Max_Size_In_Storage_Elements accordingly.
  
           if Is_Entity_Name (Pref)
             and then Is_Class_Wide_Type (Entity (Pref))
           then
!             declare
!                Storage_Count_Type : constant Entity_Id :=
!                  RTE (RE_Storage_Count);
!                Attr : constant Node_Id :=
!                  Make_Attribute_Reference (Loc,
!                    Prefix => New_Occurrence_Of (Storage_Count_Type, Loc),
!                    Attribute_Name => Name_Pos,
!                    Expressions => New_List (
!                      Make_Attribute_Reference (Loc,
!                        Prefix => New_Occurrence_Of (Storage_Count_Type, Loc),
!                        Attribute_Name => Name_Last)));
!             begin
!                Rewrite (N, Attr);
!                Analyze_And_Resolve (N, Typ);
!                return;
!             end;
  
           --  Heap-allocated controlled objects contain two extra pointers which
           --  are not part of the actual type. Transform the attribute reference
           --  into a runtime expression to add the size of the hidden header.
  
!          elsif Needs_Finalization (Ptyp)
!            and then not Header_Size_Added (N)
!          then
              Set_Header_Size_Added (N);
  
              --  Generate:
diff -Nrcpad gcc-15-20250628/gcc/ada/exp_ch3.adb gcc-15-20250705/gcc/ada/exp_ch3.adb
*** gcc-15-20250628/gcc/ada/exp_ch3.adb	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/exp_ch3.adb	Sat Jul  5 22:32:06 2025
*************** package body Exp_Ch3 is
*** 6888,6894 ****
  
           --  Processing for objects that require finalization actions
  
!          if Needs_Finalization (Ret_Typ) then
              declare
                 Decls       : constant List_Id := New_List;
                 Fin_Coll_Id : constant Entity_Id :=
--- 6888,6896 ----
  
           --  Processing for objects that require finalization actions
  
!          if Needs_Finalization (Ret_Typ)
!            and then not Has_Relaxed_Finalization (Ret_Typ)
!          then
              declare
                 Decls       : constant List_Id := New_List;
                 Fin_Coll_Id : constant Entity_Id :=
diff -Nrcpad gcc-15-20250628/gcc/ada/exp_ch4.adb gcc-15-20250705/gcc/ada/exp_ch4.adb
*** gcc-15-20250628/gcc/ada/exp_ch4.adb	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/exp_ch4.adb	Sat Jul  5 22:32:06 2025
*************** package body Exp_Ch4 is
*** 11303,11313 ****
        -----------------------------------
  
        procedure Handle_Changed_Representation is
!          Temp : Entity_Id;
           Decl : Node_Id;
-          Odef : Node_Id;
           N_Ix : Node_Id;
!          Cons : List_Id;
  
        begin
           --  Nothing else to do if no change of representation
--- 11303,11314 ----
        -----------------------------------
  
        procedure Handle_Changed_Representation is
!          Cons : List_Id;
           Decl : Node_Id;
           N_Ix : Node_Id;
!          Odef : Node_Id;
!          Stmt : Node_Id;
!          Temp : Entity_Id;
  
        begin
           --  Nothing else to do if no change of representation
*************** package body Exp_Ch4 is
*** 11450,11468 ****
                  Defining_Identifier => Temp,
                  Object_Definition   => Odef);
  
!             Set_No_Initialization (Decl, True);
  
              --  Insert required actions. It is essential to suppress checks
              --  since we have suppressed default initialization, which means
              --  that the variable we create may have no discriminants.
  
!             Insert_Actions (N,
!               New_List (
!                 Decl,
!                 Make_Assignment_Statement (Loc,
!                   Name       => New_Occurrence_Of (Temp, Loc),
!                   Expression => Relocate_Node (N))),
!                 Suppress => All_Checks);
  
              Rewrite (N, New_Occurrence_Of (Temp, Loc));
              return;
--- 11451,11474 ----
                  Defining_Identifier => Temp,
                  Object_Definition   => Odef);
  
!             --  The temporary need not be initialized
! 
!             Set_No_Initialization (Decl);
! 
!             Stmt :=
!               Make_Assignment_Statement (Loc,
!                 Name       => New_Occurrence_Of (Temp, Loc),
!                 Expression => Relocate_Node (N));
! 
!             --  And, therefore, cannot be finalized
! 
!             Set_No_Finalize_Actions (Stmt);
  
              --  Insert required actions. It is essential to suppress checks
              --  since we have suppressed default initialization, which means
              --  that the variable we create may have no discriminants.
  
!             Insert_Actions (N, New_List (Decl, Stmt), Suppress => All_Checks);
  
              Rewrite (N, New_Occurrence_Of (Temp, Loc));
              return;
diff -Nrcpad gcc-15-20250628/gcc/ada/exp_ch6.adb gcc-15-20250705/gcc/ada/exp_ch6.adb
*** gcc-15-20250628/gcc/ada/exp_ch6.adb	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/exp_ch6.adb	Sat Jul  5 22:32:06 2025
*************** package body Exp_Ch6 is
*** 5391,5399 ****
           end if;
  
        --  Note that object declarations are also distributed into conditional
!       --  expressions but we may be invoked before this distribution is done.
  
!       elsif Nkind (Uncond_Par) = N_Object_Declaration then
           return;
        end if;
  
--- 5391,5404 ----
           end if;
  
        --  Note that object declarations are also distributed into conditional
!       --  expressions, but we may be invoked before this distribution is done.
!       --  However that's not the case for the declarations of return objects,
!       --  see the twin Is_Optimizable_Declaration predicates that are present
!       --  in Expand_N_Case_Expression and Expand_N_If_Expression of Exp_Ch4.
  
!       elsif Nkind (Uncond_Par) = N_Object_Declaration
!         and then not Is_Return_Object (Defining_Identifier (Uncond_Par))
!       then
           return;
        end if;
  
*************** package body Exp_Ch6 is
*** 9546,9554 ****
        --  such build-in-place functions, primitive or not.
  
        return not Restriction_Active (No_Finalization)
!         and then ((Needs_Finalization (Typ)
!                     and then not Has_Relaxed_Finalization (Typ))
!                   or else Is_Tagged_Type (Typ))
          and then not Has_Foreign_Convention (Typ);
     end Needs_BIP_Collection;
  
--- 9551,9558 ----
        --  such build-in-place functions, primitive or not.
  
        return not Restriction_Active (No_Finalization)
!         and then (Needs_Finalization (Typ) or else Is_Tagged_Type (Typ))
!         and then not Has_Relaxed_Finalization (Typ)
          and then not Has_Foreign_Convention (Typ);
     end Needs_BIP_Collection;
  
diff -Nrcpad gcc-15-20250628/gcc/ada/exp_ch7.adb gcc-15-20250705/gcc/ada/exp_ch7.adb
*** gcc-15-20250628/gcc/ada/exp_ch7.adb	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/exp_ch7.adb	Sat Jul  5 22:32:06 2025
*************** package body Exp_Ch7 is
*** 696,701 ****
--- 696,710 ----
     --  Set the Finalize_Address primitive for the object that has been
     --  attached to a finalization Master_Node.
  
+    function Shift_Address_For_Descriptor
+      (Addr   : Node_Id;
+       Typ    : Entity_Id;
+       Op_Nam : Name_Id) return Node_Id
+      with Pre => Is_Array_Type (Typ)
+                    and then not Is_Constrained (Typ)
+                    and then Op_Nam in Name_Op_Add | Name_Op_Subtract;
+    --  Add to Addr, or subtract from Addr, the size of the descriptor of Typ
+ 
     ----------------------------------
     -- Attach_Object_To_Master_Node --
     ----------------------------------
*************** package body Exp_Ch7 is
*** 2466,2472 ****
           --  Local variables
  
           Decl    : Node_Id;
-          Expr    : Node_Id;
           Obj_Id  : Entity_Id;
           Obj_Typ : Entity_Id;
           Pack_Id : Entity_Id;
--- 2475,2480 ----
*************** package body Exp_Ch7 is
*** 2516,2522 ****
              elsif Nkind (Decl) = N_Object_Declaration then
                 Obj_Id  := Defining_Identifier (Decl);
                 Obj_Typ := Base_Type (Etype (Obj_Id));
-                Expr    := Expression (Decl);
  
                 --  Bypass any form of processing for objects which have their
                 --  finalization disabled. This applies only to objects at the
--- 2524,2529 ----
*************** package body Exp_Ch7 is
*** 2572,2592 ****
                    Processing_Actions
                      (Decl, Strict => not Has_Relaxed_Finalization (Obj_Typ));
  
!                --  The object is of the form:
!                --    Obj : Access_Typ := Non_BIP_Function_Call'reference;
! 
!                --    Obj : Access_Typ :=
!                --            BIP_Function_Call (BIPalloc => 2, ...)'reference;
  
                 elsif Is_Access_Type (Obj_Typ)
!                  and then Needs_Finalization
!                             (Available_View (Designated_Type (Obj_Typ)))
!                  and then Present (Expr)
!                  and then
!                    (Is_Secondary_Stack_BIP_Func_Call (Expr)
!                      or else
!                        (Is_Non_BIP_Func_Call (Expr)
!                          and then not Is_Related_To_Func_Return (Obj_Id)))
                 then
                    Processing_Actions
                      (Decl,
--- 2579,2588 ----
                    Processing_Actions
                      (Decl, Strict => not Has_Relaxed_Finalization (Obj_Typ));
  
!                --  The object is an access-to-controlled that must be finalized
  
                 elsif Is_Access_Type (Obj_Typ)
!                  and then Is_Finalizable_Access (Decl)
                 then
                    Processing_Actions
                      (Decl,
*************** package body Exp_Ch7 is
*** 5275,5280 ****
--- 5271,5283 ----
              Obj_Typ          : Entity_Id;
  
           begin
+             --  Ignored Ghost objects do not need any cleanup actions because
+             --  they will not appear in the final tree.
+ 
+             if Is_Ignored_Ghost_Entity (Obj_Id) then
+                return;
+             end if;
+ 
              --  If the object needs to be exported to the outer finalizer,
              --  create the declaration of the Master_Node for the object,
              --  which will later be picked up by Build_Finalizer.
*************** package body Exp_Ch7 is
*** 5457,5463 ****
  
        --  Finalization calls are inserted after the target
  
!       if Present (Act_After) then
           Last_Obj := Last (Act_After);
           Insert_List_After (Target, Act_After);
        else
--- 5460,5466 ----
  
        --  Finalization calls are inserted after the target
  
!       if Is_Non_Empty_List (Act_After) then
           Last_Obj := Last (Act_After);
           Insert_List_After (Target, Act_After);
        else
*************** package body Exp_Ch7 is
*** 5552,5586 ****
        --  an object with a dope vector (see Make_Finalize_Address_Stmts).
        --  This is achieved by setting Is_Constr_Array_Subt_With_Bounds,
        --  but the address of the object is still that of its elements,
!       --  so we need to shift it.
  
        if Is_Array_Type (Utyp)
          and then not Is_Constrained (First_Subtype (Utyp))
        then
-          --  Shift the address from the start of the elements to the
-          --  start of the dope vector:
- 
-          --    V - (Utyp'Descriptor_Size / Storage_Unit)
- 
           Obj_Addr :=
!            Make_Function_Call (Loc,
!              Name                   =>
!                Make_Expanded_Name (Loc,
!                  Chars => Name_Op_Subtract,
!                  Prefix =>
!                    New_Occurrence_Of
!                      (RTU_Entity (System_Storage_Elements), Loc),
!                  Selector_Name =>
!                    Make_Identifier (Loc, Name_Op_Subtract)),
!              Parameter_Associations => New_List (
!                Obj_Addr,
!                Make_Op_Divide (Loc,
!                  Left_Opnd  =>
!                    Make_Attribute_Reference (Loc,
!                      Prefix         => New_Occurrence_Of (Utyp, Loc),
!                      Attribute_Name => Name_Descriptor_Size),
!                  Right_Opnd =>
!                    Make_Integer_Literal (Loc, System_Storage_Unit))));
        end if;
  
        return Obj_Addr;
--- 5555,5568 ----
        --  an object with a dope vector (see Make_Finalize_Address_Stmts).
        --  This is achieved by setting Is_Constr_Array_Subt_With_Bounds,
        --  but the address of the object is still that of its elements,
!       --  so we need to shift it back to skip the dope vector.
  
        if Is_Array_Type (Utyp)
          and then not Is_Constrained (First_Subtype (Utyp))
        then
           Obj_Addr :=
!            Shift_Address_For_Descriptor
!              (Obj_Addr, First_Subtype (Utyp), Name_Op_Subtract);
        end if;
  
        return Obj_Addr;
*************** package body Exp_Ch7 is
*** 7848,7860 ****
  
           when Initialize_Case =>
              if Is_Controlled (Typ) then
!                return New_List (
!                  Make_Procedure_Call_Statement (Loc,
!                    Name                   =>
!                      New_Occurrence_Of
!                        (Find_Controlled_Prim_Op (Typ, Name_Initialize), Loc),
!                    Parameter_Associations => New_List (
!                      Make_Identifier (Loc, Name_V))));
              else
                 return Empty_List;
              end if;
--- 7830,7852 ----
  
           when Initialize_Case =>
              if Is_Controlled (Typ) then
!                declare
!                   Intlz : constant Entity_Id :=
!                     Find_Controlled_Prim_Op (Typ, Name_Initialize);
!                begin
!                   if Present (Intlz) then
!                      return
!                        New_List
!                          (Make_Procedure_Call_Statement
!                             (Loc,
!                              Name                   =>
!                                New_Occurrence_Of (Intlz, Loc),
!                              Parameter_Associations =>
!                                New_List (Make_Identifier (Loc, Name_V))));
!                   else
!                      return Empty_List;
!                   end if;
!                end;
              else
                 return Empty_List;
              end if;
*************** package body Exp_Ch7 is
*** 7914,7925 ****
        if Is_Untagged_Derivation (Typ) then
           if Is_Protected_Type (Typ) then
              Utyp := Corresponding_Record_Type (Root_Type (Base_Type (Typ)));
-          else
-             Utyp := Underlying_Type (Root_Type (Base_Type (Typ)));
  
!             if Is_Protected_Type (Utyp) then
!                Utyp := Corresponding_Record_Type (Utyp);
!             end if;
           end if;
  
           Ref := Unchecked_Convert_To (Utyp, Ref);
--- 7906,7921 ----
        if Is_Untagged_Derivation (Typ) then
           if Is_Protected_Type (Typ) then
              Utyp := Corresponding_Record_Type (Root_Type (Base_Type (Typ)));
  
!          else
!             declare
!                Root : constant Entity_Id :=
!                  Underlying_Type (Root_Type (Base_Type (Typ)));
!             begin
!                if Is_Protected_Type (Root) then
!                   Utyp := Corresponding_Record_Type (Root);
!                end if;
!             end;
           end if;
  
           Ref := Unchecked_Convert_To (Utyp, Ref);
*************** package body Exp_Ch7 is
*** 8189,8194 ****
--- 8185,8194 ----
        Ptr_Typ   : Entity_Id;
  
     begin
+       --  Array types: picking the (unconstrained) base type as designated type
+       --  requires allocating the bounds alongside the data, so we only do this
+       --  when the first subtype itself was declared as unconstrained.
+ 
        if Is_Array_Type (Typ) then
           if Is_Constrained (First_Subtype (Typ)) then
              Desig_Typ := First_Subtype (Typ);
*************** package body Exp_Ch7 is
*** 8284,8346 ****
        --  lays in front of the elements and then use a thin pointer to perform
        --  the address-to-access conversion.
  
!       if Is_Array_Type (Typ)
!         and then not Is_Constrained (First_Subtype (Typ))
!       then
!          declare
!             Dope_Id : Entity_Id;
! 
!          begin
!             --  Ensure that Ptr_Typ is a thin pointer; generate:
!             --    for Ptr_Typ'Size use System.Address'Size;
! 
!             Append_To (Decls,
!               Make_Attribute_Definition_Clause (Loc,
!                 Name       => New_Occurrence_Of (Ptr_Typ, Loc),
!                 Chars      => Name_Size,
!                 Expression =>
!                   Make_Integer_Literal (Loc, System_Address_Size)));
! 
!             --  Generate:
!             --    Dnn : constant Storage_Offset :=
!             --            Desig_Typ'Descriptor_Size / Storage_Unit;
! 
!             Dope_Id := Make_Temporary (Loc, 'D');
! 
!             Append_To (Decls,
!               Make_Object_Declaration (Loc,
!                 Defining_Identifier => Dope_Id,
!                 Constant_Present    => True,
!                 Object_Definition   =>
!                   New_Occurrence_Of (RTE (RE_Storage_Offset), Loc),
!                 Expression          =>
!                   Make_Op_Divide (Loc,
!                     Left_Opnd  =>
!                       Make_Attribute_Reference (Loc,
!                         Prefix         => New_Occurrence_Of (Desig_Typ, Loc),
!                         Attribute_Name => Name_Descriptor_Size),
!                     Right_Opnd =>
!                       Make_Integer_Literal (Loc, System_Storage_Unit))));
  
!             --  Shift the address from the start of the dope vector to the
!             --  start of the elements:
!             --
!             --    V + Dnn
  
!             Obj_Expr :=
!               Make_Function_Call (Loc,
!                 Name                   =>
!                   Make_Expanded_Name (Loc,
!                     Chars => Name_Op_Add,
!                     Prefix =>
!                       New_Occurrence_Of
!                         (RTU_Entity (System_Storage_Elements), Loc),
!                     Selector_Name =>
!                       Make_Identifier (Loc, Name_Op_Add)),
!                 Parameter_Associations => New_List (
!                   Obj_Expr,
!                   New_Occurrence_Of (Dope_Id, Loc)));
!          end;
        end if;
  
        Fin_Call :=
--- 8284,8301 ----
        --  lays in front of the elements and then use a thin pointer to perform
        --  the address-to-access conversion.
  
!       if Is_Array_Type (Typ) and then not Is_Constrained (Desig_Typ) then
!          Obj_Expr :=
!            Shift_Address_For_Descriptor (Obj_Expr, Desig_Typ, Name_Op_Add);
  
!          --  Ensure that Ptr_Typ is a thin pointer; generate:
!          --    for Ptr_Typ'Size use System.Address'Size;
  
!          Append_To (Decls,
!            Make_Attribute_Definition_Clause (Loc,
!              Name       => New_Occurrence_Of (Ptr_Typ, Loc),
!              Chars      => Name_Size,
!              Expression => Make_Integer_Literal (Loc, System_Address_Size)));
        end if;
  
        Fin_Call :=
*************** package body Exp_Ch7 is
*** 8918,8923 ****
--- 8873,8915 ----
        return Scope_Stack.Table (Scope_Stack.Last).Node_To_Be_Wrapped;
     end Node_To_Be_Wrapped;
  
+    ----------------------------------
+    -- Shift_Address_For_Descriptor --
+    ----------------------------------
+ 
+    function Shift_Address_For_Descriptor
+      (Addr   : Node_Id;
+       Typ    : Entity_Id;
+       Op_Nam : Name_Id) return Node_Id
+    is
+       Loc   : constant Source_Ptr := Sloc (Addr);
+       Dummy : constant Entity_Id  := RTE (RE_Storage_Offset);
+       --  Make sure System_Storage_Elements is loaded for RTU_Entity
+ 
+    begin
+       --  Generate:
+       --    Addr +/- (Typ'Descriptor_Size / Storage_Unit)
+ 
+       return
+         Make_Function_Call (Loc,
+           Name                   =>
+             Make_Expanded_Name (Loc,
+               Chars  => Op_Nam,
+               Prefix =>
+                 New_Occurrence_Of
+                   (RTU_Entity (System_Storage_Elements), Loc),
+               Selector_Name => Make_Identifier (Loc, Op_Nam)),
+           Parameter_Associations => New_List (
+             Addr,
+             Make_Op_Divide (Loc,
+               Left_Opnd  =>
+                 Make_Attribute_Reference (Loc,
+                   Prefix         => New_Occurrence_Of (Typ, Loc),
+                   Attribute_Name => Name_Descriptor_Size),
+               Right_Opnd =>
+                 Make_Integer_Literal (Loc, System_Storage_Unit))));
+    end Shift_Address_For_Descriptor;
+ 
     ----------------------------
     -- Store_Actions_In_Scope --
     ----------------------------
diff -Nrcpad gcc-15-20250628/gcc/ada/exp_put_image.adb gcc-15-20250705/gcc/ada/exp_put_image.adb
*** gcc-15-20250628/gcc/ada/exp_put_image.adb	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/exp_put_image.adb	Sat Jul  5 22:32:06 2025
*************** package body Exp_Put_Image is
*** 695,711 ****
             Put_Image_Base_Type
               (Get_Corresponding_Mutably_Tagged_Type_If_Present (Etype (C)));
        begin
!          if Ekind (C) /= E_Void then
!             Append_To (Clist,
!               Make_Attribute_Reference (Loc,
!                 Prefix         => New_Occurrence_Of (Component_Typ, Loc),
!                 Attribute_Name => Name_Put_Image,
!                 Expressions    => New_List (
!                   Make_Identifier (Loc, Name_S),
!                   Make_Selected_Component (Loc,
!                     Prefix        => Make_Identifier (Loc, Name_V),
!                     Selector_Name => New_Occurrence_Of (C, Loc)))));
!          end if;
        end Append_Component_Attr;
  
        -------------------------------
--- 695,709 ----
             Put_Image_Base_Type
               (Get_Corresponding_Mutably_Tagged_Type_If_Present (Etype (C)));
        begin
!          Append_To (Clist,
!            Make_Attribute_Reference (Loc,
!              Prefix         => New_Occurrence_Of (Component_Typ, Loc),
!              Attribute_Name => Name_Put_Image,
!              Expressions    => New_List (
!                Make_Identifier (Loc, Name_S),
!                Make_Selected_Component (Loc,
!                  Prefix        => Make_Identifier (Loc, Name_V),
!                  Selector_Name => New_Occurrence_Of (C, Loc)))));
        end Append_Component_Attr;
  
        -------------------------------
*************** package body Exp_Put_Image is
*** 944,952 ****
  
           --  Generate Put_Images for the discriminants of the type
  
!          Append_List_To (Stms,
!            Make_Component_Attributes
!              (Discriminant_Specifications (Type_Decl)));
  
           Rdef := Type_Definition (Type_Decl);
  
--- 942,979 ----
  
           --  Generate Put_Images for the discriminants of the type
  
!          declare
!             Discrim_Specs : List_Id := Discriminant_Specifications (Type_Decl);
!             Partial_View  : Entity_Id;
!          begin
!             if Present (First (Discrim_Specs))
!               and then Ekind (Defining_Identifier (First (Discrim_Specs))) =
!                        E_Void
!             then
!                --  If the known discriminant part is repeated for the
!                --  completion of a private type declaration, then the
!                --  second copy is (by design) not analyzed. So we'd better
!                --  use the first copy instead.
! 
!                Partial_View := Incomplete_Or_Partial_View
!                                  (Defining_Identifier (Type_Decl));
! 
!                pragma Assert (Ekind (Partial_View) in
!                               E_Private_Type
!                                 | E_Limited_Private_Type
!                                 | E_Record_Type_With_Private);
! 
!                Discrim_Specs :=
!                  Discriminant_Specifications (Parent (Partial_View));
! 
!                pragma Assert (Present (First (Discrim_Specs)));
!                pragma Assert
!                  (Ekind (Defining_Identifier (First (Discrim_Specs))) /=
!                   E_Void);
!             end if;
! 
!             Append_List_To (Stms, Make_Component_Attributes (Discrim_Specs));
!          end;
  
           Rdef := Type_Definition (Type_Decl);
  
diff -Nrcpad gcc-15-20250628/gcc/ada/exp_util.adb gcc-15-20250705/gcc/ada/exp_util.adb
*** gcc-15-20250628/gcc/ada/exp_util.adb	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/exp_util.adb	Sat Jul  5 22:32:06 2025
*************** package body Exp_Util is
*** 167,172 ****
--- 167,175 ----
     --  Force evaluation of bounds of a slice, which may be given by a range
     --  or by a subtype indication with or without a constraint.
  
+    function Is_Expression_Of_Func_Return (N : Node_Id) return Boolean;
+    --  Return True if N is the expression of a function return
+ 
     function Is_Uninitialized_Aggregate
       (Exp : Node_Id;
        T   : Entity_Id) return Boolean;
*************** package body Exp_Util is
*** 6069,6086 ****
        --  now known to be protected, the finalization routine is the one
        --  defined on the corresponding record of the ancestor (corresponding
        --  records do not automatically inherit operations, but maybe they
!       --  should???)
  
!       if Is_Untagged_Derivation (Btyp) then
           if Is_Protected_Type (Btyp) then
              Utyp := Corresponding_Record_Type (Root_Type (Btyp));
  
           else
!             Utyp := Underlying_Type (Root_Type (Btyp));
! 
!             if Is_Protected_Type (Utyp) then
!                Utyp := Corresponding_Record_Type (Utyp);
!             end if;
           end if;
        end if;
  
--- 6072,6096 ----
        --  now known to be protected, the finalization routine is the one
        --  defined on the corresponding record of the ancestor (corresponding
        --  records do not automatically inherit operations, but maybe they
!       --  should???). This does not apply to array types, where every base
!       --  type has a finalization routine that depends on the first subtype.
  
!       if Is_Untagged_Derivation (Btyp) and then not Is_Array_Type (Btyp) then
           if Is_Protected_Type (Btyp) then
              Utyp := Corresponding_Record_Type (Root_Type (Btyp));
  
           else
!             declare
!                Root : constant Entity_Id := Underlying_Type (Root_Type (Btyp));
!             begin
!                if Is_Protected_Type (Root) then
!                   Utyp := Corresponding_Record_Type (Root);
!                else
!                   while No (TSS (Utyp, TSS_Finalize_Address)) loop
!                      Utyp := Underlying_Type (Base_Type (Etype (Utyp)));
!                   end loop;
!                end if;
!             end;
           end if;
        end if;
  
*************** package body Exp_Util is
*** 8053,8073 ****
              --  never climb up as far as the N_Expression_With_Actions itself.
  
              when N_Expression_With_Actions =>
!                if N = Expression (P) then
!                   if Is_Empty_List (Actions (P)) then
!                      Append_List_To (Actions (P), Ins_Actions);
!                      Analyze_List (Actions (P));
!                   else
!                      Insert_List_After_And_Analyze
!                        (Last (Actions (P)), Ins_Actions);
!                   end if;
! 
!                   return;
  
                 else
!                   raise Program_Error;
                 end if;
  
              --  Case of appearing in the condition of a while expression or
              --  elsif. We insert the actions into the Condition_Actions field.
              --  They will be moved further out when the while loop or elsif
--- 8063,8083 ----
              --  never climb up as far as the N_Expression_With_Actions itself.
  
              when N_Expression_With_Actions =>
!                if Is_List_Member (N) and then List_Containing (N) = Actions (P)
!                then
!                   raise Program_Error;
!                end if;
  
+                if Is_Empty_List (Actions (P)) then
+                   Append_List_To (Actions (P), Ins_Actions);
+                   Analyze_List (Actions (P));
                 else
!                   Insert_List_After_And_Analyze
!                     (Last (Actions (P)), Ins_Actions);
                 end if;
  
+                return;
+ 
              --  Case of appearing in the condition of a while expression or
              --  elsif. We insert the actions into the Condition_Actions field.
              --  They will be moved further out when the while loop or elsif
*************** package body Exp_Util is
*** 8195,8214 ****
                 elsif Nkind (Parent (P)) in N_Variant | N_Record_Definition then
                    null;
  
!                --  Do not insert freeze nodes within the loop generated for
!                --  an aggregate, because they may be elaborated too late for
!                --  subsequent use in the back end: within a package spec the
!                --  loop is part of the elaboration procedure and is only
!                --  elaborated during the second pass.
  
!                --  If the loop comes from source, or the entity is local to the
!                --  loop itself it must remain within.
  
!                elsif Nkind (Parent (P)) = N_Loop_Statement
!                  and then not Comes_From_Source (Parent (P))
                   and then Nkind (First (Ins_Actions)) = N_Freeze_Entity
!                  and then
!                    Scope (Entity (First (Ins_Actions))) /= Current_Scope
                 then
                    null;
  
--- 8205,8228 ----
                 elsif Nkind (Parent (P)) in N_Variant | N_Record_Definition then
                    null;
  
!                --  Do not insert freeze nodes within a block or loop generated
!                --  for an aggregate, because they may be elaborated too late
!                --  for subsequent use in the back end: within a package spec,
!                --  the block or loop is part of the elaboration procedure and
!                --  is only elaborated during the second pass.
  
!                --  If the block or loop comes from source, or the entity is
!                --  local to the block or loop itself, it must remain within.
  
!                elsif ((Nkind (Parent (P)) = N_Handled_Sequence_Of_Statements
!                         and then
!                           Nkind (Parent (Parent (P))) = N_Block_Statement
!                         and then not Comes_From_Source (Parent (Parent (P))))
!                       or else (Nkind (Parent (P)) = N_Loop_Statement
!                                 and then not Comes_From_Source (Parent (P))))
                   and then Nkind (First (Ins_Actions)) = N_Freeze_Entity
!                  and then not
!                    Within_Scope (Entity (First (Ins_Actions)), Current_Scope)
                 then
                    null;
  
*************** package body Exp_Util is
*** 8695,8700 ****
--- 8709,8728 ----
        end if;
     end Is_Captured_Function_Call;
  
+    -------------------------------------------------
+    -- Is_Constr_Array_Subt_Of_Unc_With_Controlled --
+    -------------------------------------------------
+ 
+    function Is_Constr_Array_Subt_Of_Unc_With_Controlled (Typ : Entity_Id)
+      return Boolean
+    is
+    begin
+       return Is_Array_Type (Typ)
+         and then Is_Constrained (Typ)
+         and then Has_Controlled_Component (Typ)
+         and then not Is_Constrained (First_Subtype (Typ));
+    end Is_Constr_Array_Subt_Of_Unc_With_Controlled;
+ 
     ------------------------------------------
     -- Is_Conversion_Or_Reference_To_Formal --
     ------------------------------------------
*************** package body Exp_Util is
*** 8738,8743 ****
--- 8766,8862 ----
          and then Nkind (Name (N)) = N_Explicit_Dereference;
     end Is_Expanded_Class_Wide_Interface_Object_Decl;
  
+    ----------------------------------
+    -- Is_Expression_Of_Func_Return --
+    ----------------------------------
+ 
+    function Is_Expression_Of_Func_Return (N : Node_Id) return Boolean is
+       Par : constant Node_Id := Parent (N);
+ 
+    begin
+       return Nkind (Par) = N_Simple_Return_Statement
+         or else (Nkind (Par) in N_Object_Declaration
+                               | N_Object_Renaming_Declaration
+                   and then Is_Return_Object (Defining_Entity (Par)));
+    end Is_Expression_Of_Func_Return;
+ 
+    ---------------------------
+    -- Is_Finalizable_Access --
+    ---------------------------
+ 
+    function Is_Finalizable_Access (Decl : Node_Id) return Boolean is
+       Obj   : constant Entity_Id := Defining_Identifier (Decl);
+       Typ   : constant Entity_Id := Base_Type (Etype (Obj));
+       Desig : constant Entity_Id := Available_View (Designated_Type (Typ));
+       Expr  : constant Node_Id   := Expression (Decl);
+ 
+       Secondary_Stack_Val : constant Uint :=
+         UI_From_Int (BIP_Allocation_Form'Pos (Secondary_Stack));
+ 
+       Actual : Node_Id;
+       Call   : Node_Id;
+       Formal : Node_Id;
+       Param  : Node_Id;
+ 
+    begin
+       --  The prerequisite is a reference to a controlled object
+ 
+       if No (Expr)
+         or else Nkind (Expr) /= N_Reference
+         or else not Needs_Finalization (Desig)
+       then
+          return False;
+       end if;
+ 
+       Call := Unqual_Conv (Prefix (Expr));
+ 
+       --  For a BIP function call, the only case where the return object needs
+       --  to be finalized through Obj is when it is allocated on the secondary
+       --  stack; when it is allocated in the caller, it is finalized directly,
+       --  and when it is allocated on the global heap or in a storage pool, it
+       --  is finalized through another mechanism.
+ 
+       --  Obj : Access_Typ :=
+       --    BIP_Function_Call (BIPalloc => Secondary_Stack, ...)'reference;
+ 
+       if Is_Build_In_Place_Function_Call (Call) then
+ 
+          --  Examine all parameter associations of the function call
+ 
+          Param := First (Parameter_Associations (Call));
+          while Present (Param) loop
+             if Nkind (Param) = N_Parameter_Association then
+                Formal := Selector_Name (Param);
+                Actual := Explicit_Actual_Parameter (Param);
+ 
+                --  A match for BIPalloc => Secondary_Stack has been found
+ 
+                if Is_Build_In_Place_Entity (Formal)
+                  and then BIP_Suffix_Kind (Formal) = BIP_Alloc_Form
+                  and then Nkind (Actual) = N_Integer_Literal
+                  and then Intval (Actual) = Secondary_Stack_Val
+                then
+                   return True;
+                end if;
+             end if;
+ 
+             Next (Param);
+          end loop;
+ 
+       --  For a non-BIP function call, the only case where the return object
+       --  need not be finalized is when it itself is going to be returned.
+ 
+       --  Obj : Typ := Non_BIP_Function_Call'reference;
+ 
+       elsif Nkind (Call) = N_Function_Call
+         and then not Is_Related_To_Func_Return (Obj)
+       then
+          return True;
+       end if;
+ 
+       return False;
+    end Is_Finalizable_Access;
+ 
     ------------------------------
     -- Is_Finalizable_Transient --
     ------------------------------
*************** package body Exp_Util is
*** 8749,8767 ****
        Obj_Id  : constant Entity_Id := Defining_Identifier (Decl);
        Obj_Typ : constant Entity_Id := Base_Type (Etype (Obj_Id));
  
-       function Initialized_By_Aliased_BIP_Func_Call
-         (Trans_Id : Entity_Id) return Boolean;
-       --  Determine whether transient object Trans_Id is initialized by a
-       --  build-in-place function call where the BIPalloc parameter either
-       --  does not exist or is Caller_Allocation, and BIPaccess is not null.
-       --  This case creates an aliasing between the returned value and the
-       --  value denoted by BIPaccess.
- 
-       function Initialized_By_Reference (Trans_Id : Entity_Id) return Boolean;
-       --  Determine whether transient object Trans_Id is initialized by a
-       --  reference to another object. This is the only case where we can
-       --  possibly finalize a transient object through an access value.
- 
        function Is_Aliased
          (Trans_Id   : Entity_Id;
           First_Stmt : Node_Id) return Boolean;
--- 8868,8873 ----
*************** package body Exp_Util is
*** 8787,8901 ****
        --  Return True if N is directly part of a build-in-place return
        --  statement.
  
-       ------------------------------------------
-       -- Initialized_By_Aliased_BIP_Func_Call --
-       ------------------------------------------
- 
-       function Initialized_By_Aliased_BIP_Func_Call
-         (Trans_Id : Entity_Id) return Boolean
-       is
-          Call : Node_Id := Expression (Parent (Trans_Id));
- 
-       begin
-          --  Build-in-place calls usually appear in 'reference format
- 
-          if Nkind (Call) = N_Reference then
-             Call := Prefix (Call);
-          end if;
- 
-          Call := Unqual_Conv (Call);
- 
-          --  We search for a formal with a matching suffix. We can't search
-          --  for the full name, because of the code at the end of Sem_Ch6.-
-          --  Create_Extra_Formals, which copies the Extra_Formals over to
-          --  the Alias of an instance, which will cause the formals to have
-          --  "incorrect" names. See also Exp_Ch6.Build_In_Place_Formal.
- 
-          if Is_Build_In_Place_Function_Call (Call) then
-             declare
-                Caller_Allocation_Val : constant Uint :=
-                  UI_From_Int (BIP_Allocation_Form'Pos (Caller_Allocation));
-                Access_Suffix         : constant String :=
-                  BIP_Formal_Suffix (BIP_Object_Access);
-                Alloc_Suffix          : constant String :=
-                  BIP_Formal_Suffix (BIP_Alloc_Form);
- 
-                function Has_Suffix (Name, Suffix : String) return Boolean;
-                --  Return True if Name has suffix Suffix
- 
-                ----------------
-                -- Has_Suffix --
-                ----------------
- 
-                function Has_Suffix (Name, Suffix : String) return Boolean is
-                   Len : constant Natural := Suffix'Length;
- 
-                begin
-                   return Name'Length > Len
-                     and then Name (Name'Last - Len + 1 .. Name'Last) = Suffix;
-                end Has_Suffix;
- 
-                Access_OK  : Boolean := False;
-                Alloc_OK   : Boolean := True;
-                Param      : Node_Id;
- 
-             begin
-                --  Examine all parameter associations of the function call
- 
-                Param := First (Parameter_Associations (Call));
- 
-                while Present (Param) loop
-                   if Nkind (Param) = N_Parameter_Association
-                     and then Nkind (Selector_Name (Param)) = N_Identifier
-                   then
-                      declare
-                         Actual : constant Node_Id :=
-                           Explicit_Actual_Parameter (Param);
-                         Formal : constant Node_Id :=
-                           Selector_Name (Param);
-                         Name   : constant String :=
-                           Get_Name_String (Chars (Formal));
- 
-                      begin
-                         --  A nonnull BIPaccess has been found
- 
-                         if Has_Suffix (Name, Access_Suffix)
-                           and then Nkind (Actual) /= N_Null
-                         then
-                            Access_OK := True;
- 
-                         --  A BIPalloc has been found
- 
-                         elsif Has_Suffix (Name, Alloc_Suffix)
-                           and then Nkind (Actual) = N_Integer_Literal
-                         then
-                            Alloc_OK := Intval (Actual) = Caller_Allocation_Val;
-                         end if;
-                      end;
-                   end if;
- 
-                   Next (Param);
-                end loop;
- 
-                return Access_OK and Alloc_OK;
-             end;
-          end if;
- 
-          return False;
-       end Initialized_By_Aliased_BIP_Func_Call;
- 
-       ------------------------------
-       -- Initialized_By_Reference --
-       ------------------------------
- 
-       function Initialized_By_Reference (Trans_Id : Entity_Id) return Boolean
-       is
-          Expr : constant Node_Id := Expression (Parent (Trans_Id));
- 
-       begin
-          return Present (Expr) and then Nkind (Expr) = N_Reference;
-       end Initialized_By_Reference;
- 
        ----------------
        -- Is_Aliased --
        ----------------
--- 8893,8898 ----
*************** package body Exp_Util is
*** 9001,9013 ****
  
           Stmt := First_Stmt;
           while Present (Stmt) loop
!             --  Transient objects initialized by a reference are finalized
!             --  (see Initialized_By_Reference above), so we must make sure
!             --  not to finalize the referenced object twice. And we cannot
!             --  finalize it at all if it is referenced by the nontransient
!             --  object serviced by the transient scope.
  
!             if Nkind (Stmt) = N_Object_Declaration then
                 Expr := Expression (Stmt);
  
                 --  Aliasing of the form:
--- 8998,9013 ----
  
           Stmt := First_Stmt;
           while Present (Stmt) loop
!             --  (Transient) objects initialized by a reference to another named
!             --  object are never finalized (see Is_Finalizable_Access), so we
!             --  need not worry about finalizing (transient) referenced objects
!             --  twice. Therefore, we only need to look at the nontransient
!             --  object serviced by the transient scope, if it exists and is
!             --  declared as a reference to another named object.
  
!             if Nkind (Stmt) = N_Object_Declaration
!               and then Stmt = N
!             then
                 Expr := Expression (Stmt);
  
                 --  Aliasing of the form:
*************** package body Exp_Util is
*** 9021,9028 ****
                    return True;
                 end if;
  
!             --  (Transient) renamings are never finalized so we need not bother
!             --  about finalizing transient renamed objects twice. Therefore, we
              --  we only need to look at the nontransient object serviced by the
              --  transient scope, if it exists and is declared as a renaming.
  
--- 9021,9028 ----
                    return True;
                 end if;
  
!             --  (Transient) renamings are never finalized so we need not worry
!             --  about finalizing (transient) renamed objects twice. Therefore,
              --  we only need to look at the nontransient object serviced by the
              --  transient scope, if it exists and is declared as a renaming.
  
*************** package body Exp_Util is
*** 9222,9233 ****
        function Is_Part_Of_BIP_Return_Statement (N : Node_Id) return Boolean is
           Subp    : constant Entity_Id := Current_Subprogram;
           Context : Node_Id;
        begin
           --  First check if N is part of a BIP function
  
!          if No (Subp)
!            or else not Is_Build_In_Place_Function (Subp)
!          then
              return False;
           end if;
  
--- 9222,9232 ----
        function Is_Part_Of_BIP_Return_Statement (N : Node_Id) return Boolean is
           Subp    : constant Entity_Id := Current_Subprogram;
           Context : Node_Id;
+ 
        begin
           --  First check if N is part of a BIP function
  
!          if No (Subp) or else not Is_Build_In_Place_Function (Subp) then
              return False;
           end if;
  
*************** package body Exp_Util is
*** 9251,9256 ****
--- 9250,9264 ----
     --  Start of processing for Is_Finalizable_Transient
  
     begin
+       --  If the node serviced by the transient context is a return statement,
+       --  then the finalization needs to be deferred to the generic machinery.
+ 
+       if Nkind (N) = N_Simple_Return_Statement
+         or else Is_Part_Of_BIP_Return_Statement (N)
+       then
+          return False;
+       end if;
+ 
        --  Handle access types
  
        if Is_Access_Type (Desig) then
*************** package body Exp_Util is
*** 9260,9293 ****
        return
          Ekind (Obj_Id) in E_Constant | E_Variable
            and then Needs_Finalization (Desig)
-           and then Nkind (N) /= N_Simple_Return_Statement
-           and then not Is_Part_Of_BIP_Return_Statement (N)
  
            --  Do not consider a transient object that was already processed
  
            and then not Is_Finalized_Transient (Obj_Id)
  
!           --  Do not consider renamed or 'reference-d transient objects because
!           --  the act of renaming extends the object's lifetime.
  
!           and then not Is_Aliased (Obj_Id, Decl)
  
!           --  If the transient object is of an access type, check that it is
!           --  initialized by a reference to another object.
  
            and then (not Is_Access_Type (Obj_Typ)
!                      or else Initialized_By_Reference (Obj_Id))
! 
!           --  Do not consider transient objects which act as indirect aliases
!           --  of build-in-place function results.
! 
!           and then not Initialized_By_Aliased_BIP_Func_Call (Obj_Id)
  
!           --  Do not consider iterators because those are treated as normal
!           --  controlled objects and are processed by the usual finalization
!           --  machinery. This avoids the double finalization of an iterator.
  
!           and then not Is_Iterator (Desig)
  
            --  Do not consider containers in the context of iterator loops. Such
            --  transient objects must exist for as long as the loop is around,
--- 9268,9294 ----
        return
          Ekind (Obj_Id) in E_Constant | E_Variable
            and then Needs_Finalization (Desig)
  
            --  Do not consider a transient object that was already processed
  
            and then not Is_Finalized_Transient (Obj_Id)
  
!           --  Do not consider iterators because those are treated as normal
!           --  controlled objects and are processed by the usual finalization
!           --  machinery. This avoids the double finalization of an iterator.
  
!           and then not Is_Iterator (Desig)
  
!           --  If the transient object is of an access type, check that it must
!           --  be finalized.
  
            and then (not Is_Access_Type (Obj_Typ)
!                      or else Is_Finalizable_Access (Decl))
  
!           --  Do not consider renamed transient objects because the act of
!           --  renaming extends the object's lifetime.
  
!           and then not Is_Aliased (Obj_Id, Decl)
  
            --  Do not consider containers in the context of iterator loops. Such
            --  transient objects must exist for as long as the loop is around,
*************** package body Exp_Util is
*** 9356,9377 ****
          and then Present (LSP_Subprogram (E));
     end Is_LSP_Wrapper;
  
-    --------------------------
-    -- Is_Non_BIP_Func_Call --
-    --------------------------
- 
-    function Is_Non_BIP_Func_Call (Expr : Node_Id) return Boolean is
-    begin
-       --  The expected call is of the format
-       --
-       --    Func_Call'reference
- 
-       return
-         Nkind (Expr) = N_Reference
-           and then Nkind (Prefix (Expr)) = N_Function_Call
-           and then not Is_Build_In_Place_Function_Call (Prefix (Expr));
-    end Is_Non_BIP_Func_Call;
- 
     ----------------------------------
     -- Is_Possibly_Unaligned_Object --
     ----------------------------------
--- 9357,9362 ----
*************** package body Exp_Util is
*** 9644,9664 ****
  
     function Is_Related_To_Func_Return (Id : Entity_Id) return Boolean is
        Expr : constant Node_Id := Related_Expression (Id);
     begin
        --  In the case of a function with a class-wide result that returns
        --  a call to a function with a specific result, we introduce a
        --  type conversion for the return expression. We do not want that
        --  type conversion to influence the result of this function.
  
!       return
!         Present (Expr)
!           and then Nkind (Unqual_Conv (Expr)) = N_Explicit_Dereference
!           and then (Nkind (Parent (Expr)) = N_Simple_Return_Statement
!                      or else
!                        (Nkind (Parent (Expr)) in N_Object_Declaration
!                                                | N_Object_Renaming_Declaration
!                          and then
!                         Is_Return_Object (Defining_Entity (Parent (Expr)))));
     end Is_Related_To_Func_Return;
  
     --------------------------------
--- 9629,9644 ----
  
     function Is_Related_To_Func_Return (Id : Entity_Id) return Boolean is
        Expr : constant Node_Id := Related_Expression (Id);
+ 
     begin
        --  In the case of a function with a class-wide result that returns
        --  a call to a function with a specific result, we introduce a
        --  type conversion for the return expression. We do not want that
        --  type conversion to influence the result of this function.
  
!       return Present (Expr)
!         and then Nkind (Unqual_Conv (Expr)) = N_Explicit_Dereference
!         and then Is_Expression_Of_Func_Return (Expr);
     end Is_Related_To_Func_Return;
  
     --------------------------------
*************** package body Exp_Util is
*** 9744,9798 ****
        end if;
     end Is_Renamed_Object;
  
-    --------------------------------------
-    -- Is_Secondary_Stack_BIP_Func_Call --
-    --------------------------------------
- 
-    function Is_Secondary_Stack_BIP_Func_Call (Expr : Node_Id) return Boolean is
-       Actual    : Node_Id;
-       Call      : Node_Id := Expr;
-       Formal    : Node_Id;
-       Param     : Node_Id;
- 
-    begin
-       --  Build-in-place calls usually appear in 'reference format. Note that
-       --  the accessibility check machinery may add an extra 'reference due to
-       --  side-effect removal.
- 
-       while Nkind (Call) = N_Reference loop
-          Call := Prefix (Call);
-       end loop;
- 
-       Call := Unqual_Conv (Call);
- 
-       if Is_Build_In_Place_Function_Call (Call) then
- 
-          --  Examine all parameter associations of the function call
- 
-          Param := First (Parameter_Associations (Call));
-          while Present (Param) loop
-             if Nkind (Param) = N_Parameter_Association then
-                Formal := Selector_Name (Param);
-                Actual := Explicit_Actual_Parameter (Param);
- 
-                --  A match for BIPalloc => 2 has been found
- 
-                if Is_Build_In_Place_Entity (Formal)
-                  and then BIP_Suffix_Kind (Formal) = BIP_Alloc_Form
-                  and then Nkind (Actual) = N_Integer_Literal
-                  and then Intval (Actual) = Uint_2
-                then
-                   return True;
-                end if;
-             end if;
- 
-             Next (Param);
-          end loop;
-       end if;
- 
-       return False;
-    end Is_Secondary_Stack_BIP_Func_Call;
- 
     ------------------------------
     -- Is_Secondary_Stack_Thunk --
     ------------------------------
--- 9724,9729 ----
*************** package body Exp_Util is
*** 12836,12853 ****
        --  Otherwise we generate a reference to the expression
  
        else
!          --  Special processing for function calls that return a limited type.
!          --  We need to build a declaration that will enable build-in-place
!          --  expansion of the call. This is not done if the context is already
!          --  an object declaration, to prevent infinite recursion.
  
!          --  This is relevant only in Ada 2005 mode. In Ada 95 programs we have
!          --  to accommodate functions returning limited objects by reference.
  
!          if Ada_Version >= Ada_2005
!            and then Nkind (Exp) = N_Function_Call
!            and then Is_Inherently_Limited_Type (Etype (Exp))
             and then Nkind (Parent (Exp)) /= N_Object_Declaration
           then
              declare
                 Obj  : constant Entity_Id := Make_Temporary (Loc, 'F', Exp);
--- 12767,12788 ----
        --  Otherwise we generate a reference to the expression
  
        else
!          --  Special processing for function calls with a result type that is
!          --  either BIP or a constrained array with controlled component and
!          --  an unconstrained first subtype, when the context is neither an
!          --  object declaration (to prevent infinite recursion) nor a function
!          --  return (to propagate the anonymous return object).
  
!          --  We need to build an object declaration to trigger build-in-place
!          --  expansion of the call in the former case, and addition of bounds
!          --  to the object in the latter case.
  
!          if Nkind (Exp) = N_Function_Call
!            and then (Is_Build_In_Place_Result_Type (Exp_Type)
!                       or else
!                      Is_Constr_Array_Subt_Of_Unc_With_Controlled (Exp_Type))
             and then Nkind (Parent (Exp)) /= N_Object_Declaration
+            and then not Is_Expression_Of_Func_Return (Exp)
           then
              declare
                 Obj  : constant Entity_Id := Make_Temporary (Loc, 'F', Exp);
*************** package body Exp_Util is
*** 13456,13462 ****
        Nested_Constructs : Boolean) return Boolean
     is
        Decl    : Node_Id;
-       Expr    : Node_Id;
        Obj_Id  : Entity_Id;
        Obj_Typ : Entity_Id;
        Pack_Id : Entity_Id;
--- 13391,13396 ----
*************** package body Exp_Util is
*** 13494,13500 ****
           elsif Nkind (Decl) = N_Object_Declaration then
              Obj_Id  := Defining_Identifier (Decl);
              Obj_Typ := Base_Type (Etype (Obj_Id));
-             Expr    := Expression (Decl);
  
              --  Bypass any form of processing for objects which have their
              --  finalization disabled. This applies only to objects at the
--- 13428,13433 ----
*************** package body Exp_Util is
*** 13548,13568 ****
              then
                 return True;
  
!             --  The object is of the form:
!             --    Obj : Access_Typ := Non_BIP_Function_Call'reference;
!             --
!             --    Obj : Access_Typ :=
!             --            BIP_Function_Call (BIPalloc => 2, ...)'reference;
  
              elsif Is_Access_Type (Obj_Typ)
!               and then Needs_Finalization
!                          (Available_View (Designated_Type (Obj_Typ)))
!               and then Present (Expr)
!               and then
!                 (Is_Secondary_Stack_BIP_Func_Call (Expr)
!                   or else
!                     (Is_Non_BIP_Func_Call (Expr)
!                       and then not Is_Related_To_Func_Return (Obj_Id)))
              then
                 return True;
  
--- 13481,13490 ----
              then
                 return True;
  
!             --  The object is an access-to-controlled that must be finalized
  
              elsif Is_Access_Type (Obj_Typ)
!               and then Is_Finalizable_Access (Decl)
              then
                 return True;
  
*************** package body Exp_Util is
*** 14571,14576 ****
--- 14493,14503 ----
           when N_Aggregate =>
              return Compile_Time_Known_Aggregate (N);
  
+          --  A reference is side-effect-free
+ 
+          when N_Reference =>
+             return True;
+ 
           --  We consider that anything else has side effects. This is a bit
           --  crude, but we are pretty close for most common cases, and we
           --  are certainly correct (i.e. we never return True when the
diff -Nrcpad gcc-15-20250628/gcc/ada/exp_util.ads gcc-15-20250705/gcc/ada/exp_util.ads
*** gcc-15-20250628/gcc/ada/exp_util.ads	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/exp_util.ads	Sat Jul  5 22:32:06 2025
*************** package Exp_Util is
*** 816,821 ****
--- 816,826 ----
     --    Rnn : constant Ann := Func (...)'reference;
     --    Rnn.all
  
+    function Is_Constr_Array_Subt_Of_Unc_With_Controlled (Typ : Entity_Id)
+      return Boolean;
+    --  Return True if Typ is a constrained subtype of an array type with an
+    --  unconstrained first subtype and a controlled component type.
+ 
     function Is_Conversion_Or_Reference_To_Formal (N : Node_Id) return Boolean;
     --  Return True if N is a type conversion, or a dereference thereof, or a
     --  reference to a formal parameter.
*************** package Exp_Util is
*** 825,830 ****
--- 830,843 ----
     --  Determine if N is the expanded code for a class-wide interface type
     --  object declaration.
  
+    function Is_Finalizable_Access (Decl : Node_Id) return Boolean;
+    --  Determine whether declaration Decl denotes an access-to-controlled
+    --  object that must be finalized, i.e. both that the designated object
+    --  is controlled and that it must be finalized through this access, in
+    --  particular that it will not be also finalized directly. That is the
+    --  case only for objects initialized by a reference to a function call
+    --  that meet specific conditions.
+ 
     function Is_Finalizable_Transient
       (Decl : Node_Id;
        N    : Node_Id) return Boolean;
*************** package Exp_Util is
*** 851,859 ****
     --  preconditions or postconditions affected by overriding (AI12-0195).
     --  LSP stands for Liskov Substitution Principle.
  
-    function Is_Non_BIP_Func_Call (Expr : Node_Id) return Boolean;
-    --  Determine whether node Expr denotes a non build-in-place function call
- 
     function Is_Possibly_Unaligned_Object (N : Node_Id) return Boolean;
     --  Node N is an object reference. This function returns True if it is
     --  possible that the object may not be aligned according to the normal
--- 864,869 ----
*************** package Exp_Util is
*** 898,907 ****
     --  We consider that a (1 .. 2) is a renamed object since it is the prefix
     --  of the name in the renaming declaration.
  
-    function Is_Secondary_Stack_BIP_Func_Call (Expr : Node_Id) return Boolean;
-    --  Determine whether Expr denotes a build-in-place function which returns
-    --  its result on the secondary stack.
- 
     function Is_Secondary_Stack_Thunk (Id : Entity_Id) return Boolean;
     --  Determine whether Id denotes a secondary stack thunk
  
--- 908,913 ----
diff -Nrcpad gcc-15-20250628/gcc/ada/freeze.adb gcc-15-20250705/gcc/ada/freeze.adb
*** gcc-15-20250628/gcc/ada/freeze.adb	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/freeze.adb	Sat Jul  5 22:32:06 2025
*************** package body Freeze is
*** 764,769 ****
--- 764,772 ----
        --  in fact constrained by non-static discriminant values. Could be made
        --  more precise ???
  
+       function Value_Known (Exp : Node_Id) return Boolean;
+       --  Return True if the value of expression Exp is known at compile time
+ 
        --------------------
        -- Set_Small_Size --
        --------------------
*************** package body Freeze is
*** 879,891 ****
                       High := Type_High_Bound (Etype (Index));
                    end if;
  
!                   if not Compile_Time_Known_Value (Low)
!                     or else not Compile_Time_Known_Value (High)
!                     or else Etype (Index) = Any_Type
!                   then
                       return False;
  
!                   else
                       Dim := Expr_Value (High) - Expr_Value (Low) + 1;
  
                       if Dim > Uint_0 then
--- 882,894 ----
                       High := Type_High_Bound (Etype (Index));
                    end if;
  
!                   if Etype (Index) = Any_Type then
                       return False;
  
!                   elsif Compile_Time_Known_Value (Low)
!                     and then Compile_Time_Known_Value (High)
!                   then
! 
                       Dim := Expr_Value (High) - Expr_Value (Low) + 1;
  
                       if Dim > Uint_0 then
*************** package body Freeze is
*** 893,898 ****
--- 896,907 ----
                       else
                          Size := Uint_0;
                       end if;
+ 
+                   elsif Value_Known (Low) and then Value_Known (High) then
+                      Size := Uint_0;
+ 
+                   else
+                      return False;
                    end if;
  
                    Next_Index (Index);
*************** package body Freeze is
*** 1159,1164 ****
--- 1168,1237 ----
           return True;
        end Static_Discriminated_Components;
  
+       -----------------
+       -- Value_Known --
+       -----------------
+ 
+       function Value_Known (Exp : Node_Id) return Boolean is
+       begin
+          --  This is the immediate case
+ 
+          if Compile_Time_Known_Value (Exp) then
+             return True;
+          end if;
+ 
+          --  The value may be known only to the back end, the typical example
+          --  being the alignment or the various sizes of composite types; in
+          --  the latter case, we may mutually recurse with Size_Known.
+ 
+          case Nkind (Exp) is
+             when N_Attribute_Reference =>
+                declare
+                   P : constant Node_Id := Prefix (Exp);
+ 
+                begin
+                   if not Is_Entity_Name (P)
+                     or else not Is_Type (Entity (P))
+                   then
+                      return False;
+                   end if;
+ 
+                   case Get_Attribute_Id (Attribute_Name (Exp)) is
+                      when Attribute_Alignment =>
+                         return True;
+ 
+                      when Attribute_Component_Size =>
+                         return Size_Known (Component_Type (Entity (P)));
+ 
+                      when Attribute_Object_Size
+                         | Attribute_Size
+                         | Attribute_Value_Size
+                      =>
+                         return Size_Known (Entity (P));
+ 
+                      when others =>
+                         return False;
+                   end case;
+                end;
+ 
+             when N_Binary_Op =>
+                return Value_Known (Left_Opnd (Exp))
+                  and then Value_Known (Right_Opnd (Exp));
+ 
+             when N_Qualified_Expression
+                | N_Type_Conversion
+                | N_Unchecked_Type_Conversion
+             =>
+                return Value_Known (Expression (Exp));
+ 
+             when N_Unary_Op =>
+                return Value_Known (Right_Opnd (Exp));
+ 
+             when others =>
+                return False;
+          end case;
+       end Value_Known;
+ 
     --  Start of processing for Check_Compile_Time_Size
  
     begin
diff -Nrcpad gcc-15-20250628/gcc/ada/gcc-interface/Makefile.in gcc-15-20250705/gcc/ada/gcc-interface/Makefile.in
*** gcc-15-20250628/gcc/ada/gcc-interface/Makefile.in	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/gcc-interface/Makefile.in	Sat Jul  5 22:32:06 2025
*************** gnatlib-shared:
*** 843,877 ****
  	     PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \
  	     $(GNATLIB_SHARED)
  
- # When building a SJLJ runtime for VxWorks, we need to ensure that the extra
- # linker options needed for ZCX are not passed to prevent the inclusion of
- # useless objects and potential troubles from the presence of extra symbols
- # and references in some configurations.  The inhibition is performed by
- # commenting the pragma instead of deleting the line, as the latter might
- # result in getting multiple blank lines, hence possible style check errors.
- gnatlib-sjlj:
- 	$(MAKE) $(FLAGS_TO_PASS) \
- 	     EH_MECHANISM="" \
- 	     MULTISUBDIR="$(MULTISUBDIR)" \
- 	     THREAD_KIND="$(THREAD_KIND)" \
- 	     LN_S="$(LN_S)" \
- 	     ../stamp-gnatlib1-$(RTSDIR)
- 	sed \
- 	  -e 's/Frontend_Exceptions.*/Frontend_Exceptions       : constant Boolean := True;/' \
- 	  -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := False;/' \
- 	  $(RTSDIR)/system.ads > $(RTSDIR)/s.ads
- 	$(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads
- 	$(MAKE) $(FLAGS_TO_PASS) \
- 	     EH_MECHANISM="" \
- 	     GNATLIBFLAGS="$(GNATLIBFLAGS)" \
- 	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
- 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
- 	     FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
- 	     MULTISUBDIR="$(MULTISUBDIR)" \
- 	     THREAD_KIND="$(THREAD_KIND)" \
- 	     LN_S="$(LN_S)" \
- 	     gnatlib
- 
  gnatlib-zcx:
  	$(MAKE) $(FLAGS_TO_PASS) \
  	     EH_MECHANISM="-gcc" \
--- 843,848 ----
*************** gnatlib-zcx:
*** 880,886 ****
  	     LN_S="$(LN_S)" \
  	     ../stamp-gnatlib1-$(RTSDIR)
  	sed \
- 	  -e 's/Frontend_Exceptions.*/Frontend_Exceptions       : constant Boolean := False;/' \
  	  -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := True;/' \
  	  $(RTSDIR)/system.ads > $(RTSDIR)/s.ads
  	$(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads
--- 851,856 ----
diff -Nrcpad gcc-15-20250628/gcc/ada/gcc-interface/decl.cc gcc-15-20250705/gcc/ada/gcc-interface/decl.cc
*** gcc-15-20250628/gcc/ada/gcc-interface/decl.cc	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/gcc-interface/decl.cc	Sat Jul  5 22:32:06 2025
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5426,5432 ****
    const bool is_bit_packed = Is_Bit_Packed_Array (gnat_array);
    tree gnu_type = gnat_to_gnu_type (gnat_type);
    tree gnu_comp_size;
!   bool has_packed_components;
    unsigned int max_align;
  
    /* If an alignment is specified, use it as a cap on the component type
--- 5426,5432 ----
    const bool is_bit_packed = Is_Bit_Packed_Array (gnat_array);
    tree gnu_type = gnat_to_gnu_type (gnat_type);
    tree gnu_comp_size;
!   bool has_packed_component;
    unsigned int max_align;
  
    /* If an alignment is specified, use it as a cap on the component type
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5447,5462 ****
        && !TYPE_FAT_POINTER_P (gnu_type)
        && tree_fits_uhwi_p (TYPE_SIZE (gnu_type)))
      {
!       gnu_type = make_packable_type (gnu_type, false, max_align);
!       has_packed_components = true;
      }
    else
!     has_packed_components = is_bit_packed;
  
    /* Get and validate any specified Component_Size.  */
    gnu_comp_size
      = validate_size (Component_Size (gnat_array), gnu_type, gnat_array,
! 		     has_packed_components ? TYPE_DECL : VAR_DECL, true,
  		     Has_Component_Size_Clause (gnat_array), NULL, NULL);
  
    /* If the component type is a RECORD_TYPE that has a self-referential size,
--- 5447,5468 ----
        && !TYPE_FAT_POINTER_P (gnu_type)
        && tree_fits_uhwi_p (TYPE_SIZE (gnu_type)))
      {
!       tree gnu_packable_type = make_packable_type (gnu_type, false, max_align);
!       if (gnu_packable_type != gnu_type)
! 	{
! 	  gnu_type = gnu_packable_type;
! 	  has_packed_component = true;
! 	}
!       else
! 	has_packed_component = false;
      }
    else
!     has_packed_component = is_bit_packed;
  
    /* Get and validate any specified Component_Size.  */
    gnu_comp_size
      = validate_size (Component_Size (gnat_array), gnu_type, gnat_array,
! 		     has_packed_component ? TYPE_DECL : VAR_DECL, true,
  		     Has_Component_Size_Clause (gnat_array), NULL, NULL);
  
    /* If the component type is a RECORD_TYPE that has a self-referential size,
diff -Nrcpad gcc-15-20250628/gcc/ada/gcc-interface/trans.cc gcc-15-20250705/gcc/ada/gcc-interface/trans.cc
*** gcc-15-20250628/gcc/ada/gcc-interface/trans.cc	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/gcc-interface/trans.cc	Sat Jul  5 22:32:06 2025
*************** static tree emit_check (tree, tree, int,
*** 257,263 ****
  static tree build_unary_op_trapv (enum tree_code, tree, tree, Node_Id);
  static tree build_binary_op_trapv (enum tree_code, tree, tree, tree, Node_Id);
  static tree convert_with_check (Entity_Id, tree, bool, bool, Node_Id);
! static bool addressable_p (tree, tree);
  static bool aliasable_p (tree, tree);
  static tree assoc_to_constructor (Entity_Id, Node_Id, tree);
  static tree pos_to_constructor (Node_Id, tree);
--- 257,263 ----
  static tree build_unary_op_trapv (enum tree_code, tree, tree, Node_Id);
  static tree build_binary_op_trapv (enum tree_code, tree, tree, tree, Node_Id);
  static tree convert_with_check (Entity_Id, tree, bool, bool, Node_Id);
! static bool addressable_p (tree, tree, bool);
  static bool aliasable_p (tree, tree);
  static tree assoc_to_constructor (Entity_Id, Node_Id, tree);
  static tree pos_to_constructor (Node_Id, tree);
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4876,4881 ****
--- 4876,4883 ----
        tree gnu_formal = present_gnu_tree (gnat_formal)
  			? get_gnu_tree (gnat_formal) : NULL_TREE;
        tree gnu_actual_type = gnat_to_gnu_type (Etype (gnat_actual));
+       const bool is_init_proc
+ 	= Is_Entity_Name (gnat_subprog) && Is_Init_Proc (Entity (gnat_subprog));
        const bool in_param = (Ekind (gnat_formal) == E_In_Parameter);
        const bool is_true_formal_parm
  	= gnu_formal && TREE_CODE (gnu_formal) == PARM_DECL;
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4925,4931 ****
  	 copy to avoid breaking strict aliasing rules.  */
        if (is_by_ref_formal_parm
  	  && (gnu_name_type = gnat_to_gnu_type (Etype (gnat_name)))
! 	  && (!addressable_p (gnu_name, gnu_name_type)
  	      || (node_is_type_conversion (gnat_actual)
  		  && (aliasing = !aliasable_p (gnu_name, gnu_actual_type)))))
  	{
--- 4927,4933 ----
  	 copy to avoid breaking strict aliasing rules.  */
        if (is_by_ref_formal_parm
  	  && (gnu_name_type = gnat_to_gnu_type (Etype (gnat_name)))
! 	  && (!addressable_p (gnu_name, gnu_name_type, is_init_proc)
  	      || (node_is_type_conversion (gnat_actual)
  		  && (aliasing = !aliasable_p (gnu_name, gnu_actual_type)))))
  	{
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5051,5059 ****
  
  	  /* Do not initialize it for the _Init parameter of an initialization
  	     procedure since no data is meant to be passed in.  */
! 	  if (Ekind (gnat_formal) == E_Out_Parameter
! 	      && Is_Entity_Name (gnat_subprog)
! 	      && Is_Init_Proc (Entity (gnat_subprog)))
  	    gnu_name = gnu_temp = create_temporary ("A", TREE_TYPE (gnu_name));
  
  	  /* Initialize it on the fly like for an implicit temporary in the
--- 5053,5059 ----
  
  	  /* Do not initialize it for the _Init parameter of an initialization
  	     procedure since no data is meant to be passed in.  */
! 	  if (Ekind (gnat_formal) == E_Out_Parameter && is_init_proc)
  	    gnu_name = gnu_temp = create_temporary ("A", TREE_TYPE (gnu_name));
  
  	  /* Initialize it on the fly like for an implicit temporary in the
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7590,7595 ****
--- 7590,7599 ----
  
      case N_Allocator:
        {
+ 	const Entity_Id gnat_desig_type
+ 	  = Designated_Type (Underlying_Type (Etype (gnat_node)));
+ 	const Entity_Id gnat_pool = Storage_Pool (gnat_node);
+ 
  	tree gnu_type, gnu_init;
  	bool ignore_init_type;
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7608,7616 ****
  
  	else if (Nkind (gnat_temp) == N_Qualified_Expression)
  	  {
- 	    const Entity_Id gnat_desig_type
- 	      = Designated_Type (Underlying_Type (Etype (gnat_node)));
- 
  	    ignore_init_type = Has_Constrained_Partial_View (gnat_desig_type);
  
  	    gnu_init = gnat_to_gnu (Expression (gnat_temp));
--- 7612,7617 ----
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7637,7647 ****
  	else
  	  gcc_unreachable ();
  
! 	gnu_result_type = get_unpadded_type (Etype (gnat_node));
  	return build_allocator (gnu_type, gnu_init, gnu_result_type,
  				Procedure_To_Call (gnat_node),
! 				Storage_Pool (gnat_node), gnat_node,
! 				ignore_init_type);
        }
        break;
  
--- 7638,7661 ----
  	else
  	  gcc_unreachable ();
  
! 	/* If this is an array allocated with its bounds, use the thin pointer
! 	   as the result type to trigger the machinery in build_allocator, but
! 	   make sure not to do it for allocations on the return and secondary
! 	   stacks (see build_call_alloc_dealloc_proc for more details).  */
!         if (Is_Constr_Array_Subt_With_Bounds (gnat_desig_type)
! 	    && Is_Record_Type (Underlying_Type (Etype (gnat_pool)))
! 	    && !type_annotate_only)
! 	  {
! 	    tree gnu_array = gnat_to_gnu_type (Base_Type (gnat_desig_type));
! 	    gnu_result_type
! 	      = build_pointer_type (TYPE_OBJECT_RECORD_TYPE (gnu_array));
! 	  }
! 	else
! 	  gnu_result_type = get_unpadded_type (Etype (gnat_node));
! 
  	return build_allocator (gnu_type, gnu_init, gnu_result_type,
  				Procedure_To_Call (gnat_node),
! 				gnat_pool, gnat_node, ignore_init_type);
        }
        break;
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8577,8582 ****
--- 8591,8608 ----
  	  (void) gnat_to_gnu_entity (gnat_desig_type, NULL_TREE, false);
  
  	  gnu_ptr = gnat_to_gnu (gnat_temp);
+ 
+ 	  /* If this is an array allocated with its bounds, first convert to
+ 	     the thin pointer to trigger the special machinery below.  */
+ 	  if (Is_Constr_Array_Subt_With_Bounds (gnat_desig_type))
+ 	    {
+ 	      tree gnu_array = gnat_to_gnu_type (Base_Type (gnat_desig_type));
+ 	      gnu_ptr
+ 		= convert (build_pointer_type
+ 			   (TYPE_OBJECT_RECORD_TYPE (gnu_array)),
+ 			   gnu_ptr);
+ 	    }
+ 
  	  gnu_ptr_type = TREE_TYPE (gnu_ptr);
  
  	  /* If this is a thin pointer, we must first dereference it to create
*************** convert_with_check (Entity_Id gnat_type,
*** 10353,10359 ****
     unless it is an expression involving computation or if it involves a
     reference to a bitfield or to an object not sufficiently aligned for
     its type.  If GNU_TYPE is non-null, return true only if GNU_EXPR can
!    be directly addressed as an object of this type.
  
     *** Notes on addressability issues in the Ada compiler ***
  
--- 10379,10386 ----
     unless it is an expression involving computation or if it involves a
     reference to a bitfield or to an object not sufficiently aligned for
     its type.  If GNU_TYPE is non-null, return true only if GNU_EXPR can
!    be directly addressed as an object of this type.  COMPG is true when
!    the predicate is invoked for compiler-generated code.
  
     *** Notes on addressability issues in the Ada compiler ***
  
*************** convert_with_check (Entity_Id gnat_type,
*** 10410,10416 ****
     generated to connect everything together.  */
  
  static bool
! addressable_p (tree gnu_expr, tree gnu_type)
  {
    /* For an integral type, the size of the actual type of the object may not
       be greater than that of the expected type, otherwise an indirect access
--- 10437,10443 ----
     generated to connect everything together.  */
  
  static bool
! addressable_p (tree gnu_expr, tree gnu_type, bool compg)
  {
    /* For an integral type, the size of the actual type of the object may not
       be greater than that of the expected type, otherwise an indirect access
*************** addressable_p (tree gnu_expr, tree gnu_t
*** 10471,10483 ****
  
      case COMPOUND_EXPR:
        /* The address of a compound expression is that of its 2nd operand.  */
!       return addressable_p (TREE_OPERAND (gnu_expr, 1), gnu_type);
  
      case COND_EXPR:
        /* We accept &COND_EXPR as soon as both operands are addressable and
  	 expect the outcome to be the address of the selected operand.  */
!       return (addressable_p (TREE_OPERAND (gnu_expr, 1), NULL_TREE)
! 	      && addressable_p (TREE_OPERAND (gnu_expr, 2), NULL_TREE));
  
      case COMPONENT_REF:
        return (((!DECL_BIT_FIELD (TREE_OPERAND (gnu_expr, 1))
--- 10498,10510 ----
  
      case COMPOUND_EXPR:
        /* The address of a compound expression is that of its 2nd operand.  */
!       return addressable_p (TREE_OPERAND (gnu_expr, 1), gnu_type, compg);
  
      case COND_EXPR:
        /* We accept &COND_EXPR as soon as both operands are addressable and
  	 expect the outcome to be the address of the selected operand.  */
!       return (addressable_p (TREE_OPERAND (gnu_expr, 1), NULL_TREE, compg)
! 	      && addressable_p (TREE_OPERAND (gnu_expr, 2), NULL_TREE, compg));
  
      case COMPONENT_REF:
        return (((!DECL_BIT_FIELD (TREE_OPERAND (gnu_expr, 1))
*************** addressable_p (tree gnu_expr, tree gnu_t
*** 10491,10513 ****
  		&& (DECL_ALIGN (TREE_OPERAND (gnu_expr, 1))
  		    >= default_field_alignment (TREE_OPERAND (gnu_expr, 1),
  						TREE_TYPE (gnu_expr))
! 		    /* We do not enforce this on strict-alignment platforms for
! 		       internal fields in order to keep supporting misalignment
! 		       of tagged types in legacy code.  */
  		    || (!STRICT_ALIGNMENT
! 			&& DECL_INTERNAL_P (TREE_OPERAND (gnu_expr, 1)))))
  	       /* The field of a padding record is always addressable.  */
  	       || TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (gnu_expr, 0))))
! 	      && addressable_p (TREE_OPERAND (gnu_expr, 0), NULL_TREE));
  
      case ARRAY_REF:  case ARRAY_RANGE_REF:
      case REALPART_EXPR:  case IMAGPART_EXPR:
      case NOP_EXPR:
!       return addressable_p (TREE_OPERAND (gnu_expr, 0), NULL_TREE);
  
      case CONVERT_EXPR:
        return (AGGREGATE_TYPE_P (TREE_TYPE (gnu_expr))
! 	      && addressable_p (TREE_OPERAND (gnu_expr, 0), NULL_TREE));
  
      case VIEW_CONVERT_EXPR:
        {
--- 10518,10543 ----
  		&& (DECL_ALIGN (TREE_OPERAND (gnu_expr, 1))
  		    >= default_field_alignment (TREE_OPERAND (gnu_expr, 1),
  						TREE_TYPE (gnu_expr))
! 		    /* But this was historically not enforced for targets that
! 		       do not require strict alignment, so we keep not doing
! 		       it for 1) internal fields in order to keep supporting
! 		       misalignment of tagged types and 2) compiler-generated
! 		       code in order to avoid creating useless temporaries.  */
  		    || (!STRICT_ALIGNMENT
! 			&& (DECL_INTERNAL_P (TREE_OPERAND (gnu_expr, 1))
! 			    || compg))))
  	       /* The field of a padding record is always addressable.  */
  	       || TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (gnu_expr, 0))))
! 	      && addressable_p (TREE_OPERAND (gnu_expr, 0), NULL_TREE, compg));
  
      case ARRAY_REF:  case ARRAY_RANGE_REF:
      case REALPART_EXPR:  case IMAGPART_EXPR:
      case NOP_EXPR:
!       return addressable_p (TREE_OPERAND (gnu_expr, 0), NULL_TREE, compg);
  
      case CONVERT_EXPR:
        return (AGGREGATE_TYPE_P (TREE_TYPE (gnu_expr))
! 	      && addressable_p (TREE_OPERAND (gnu_expr, 0), NULL_TREE, compg));
  
      case VIEW_CONVERT_EXPR:
        {
*************** addressable_p (tree gnu_expr, tree gnu_t
*** 10525,10531 ****
  			 || TYPE_ALIGN (inner_type) >= BIGGEST_ALIGNMENT
  			 || TYPE_ALIGN_OK (type)
  			 || TYPE_ALIGN_OK (inner_type))))
! 		&& addressable_p (TREE_OPERAND (gnu_expr, 0), NULL_TREE));
        }
  
      default:
--- 10555,10562 ----
  			 || TYPE_ALIGN (inner_type) >= BIGGEST_ALIGNMENT
  			 || TYPE_ALIGN_OK (type)
  			 || TYPE_ALIGN_OK (inner_type))))
! 		&& addressable_p (TREE_OPERAND (gnu_expr, 0), NULL_TREE,
! 				  compg));
        }
  
      default:
diff -Nrcpad gcc-15-20250628/gcc/ada/gcc-interface/utils.cc gcc-15-20250705/gcc/ada/gcc-interface/utils.cc
*** gcc-15-20250628/gcc/ada/gcc-interface/utils.cc	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/gcc-interface/utils.cc	Sat Jul  5 22:32:06 2025
*************** make_packable_type (tree type, bool in_r
*** 1225,1231 ****
       Note that we rely on the pointer equality created here for
       TYPE_NAME to look through conversions in various places.  */
    TYPE_NAME (new_type) = TYPE_NAME (type);
-   TYPE_PACKED (new_type) = 1;
    TYPE_JUSTIFIED_MODULAR_P (new_type) = TYPE_JUSTIFIED_MODULAR_P (type);
    TYPE_CONTAINS_TEMPLATE_P (new_type) = TYPE_CONTAINS_TEMPLATE_P (type);
    TYPE_REVERSE_STORAGE_ORDER (new_type) = TYPE_REVERSE_STORAGE_ORDER (type);
--- 1225,1230 ----
*************** make_packable_type (tree type, bool in_r
*** 1240,1245 ****
--- 1239,1246 ----
        new_size = ceil_pow2 (size);
        new_align = MIN (new_size, BIGGEST_ALIGNMENT);
        SET_TYPE_ALIGN (new_type, new_align);
+       /* build_aligned_type needs to be able to adjust back the alignment.  */
+       TYPE_PACKED (new_type) = 0;
      }
    else
      {
*************** make_packable_type (tree type, bool in_r
*** 1261,1266 ****
--- 1262,1268 ----
        if (max_align > 0 && new_align > max_align)
  	new_align = max_align;
        SET_TYPE_ALIGN (new_type, MIN (align, new_align));
+       TYPE_PACKED (new_type) = 1;
      }
  
    TYPE_USER_ALIGN (new_type) = 1;
diff -Nrcpad gcc-15-20250628/gcc/ada/libgnat/system-linux-loongarch.ads gcc-15-20250705/gcc/ada/libgnat/system-linux-loongarch.ads
*** gcc-15-20250628/gcc/ada/libgnat/system-linux-loongarch.ads	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/libgnat/system-linux-loongarch.ads	Sat Jul  5 22:32:06 2025
*************** private
*** 139,145 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 139,144 ----
diff -Nrcpad gcc-15-20250628/gcc/ada/mutably_tagged.adb gcc-15-20250705/gcc/ada/mutably_tagged.adb
*** gcc-15-20250628/gcc/ada/mutably_tagged.adb	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/mutably_tagged.adb	Sat Jul  5 22:32:06 2025
*************** with Sinfo.Nodes;    use Sinfo.Nodes;
*** 40,45 ****
--- 40,46 ----
  with Sinfo.Utils;    use Sinfo.Utils;
  with Stringt;        use Stringt;
  with Tbuild;         use Tbuild;
+ with Uintp;          use Uintp;
  
  package body Mutably_Tagged is
  
*************** package body Mutably_Tagged is
*** 205,225 ****
        Mut_Tag_Typ : Entity_Id) return Node_Id
     is
        Loc : constant Source_Ptr := Sloc (New_Typ);
     begin
!       --  Generate a string literal for New_Typ's name which is needed for
!       --  printing within the Compile_Time_Error.
  
        Get_Decoded_Name_String (Chars (New_Typ));
        Set_Casing (Mixed_Case);
  
-       --  Build a pragma Compile_Time_Error to force the backend to
-       --  preform appropriate sizing checks.
- 
-       --  Generate:
-       --    pragma Compile_Time_Error
-       --             (New_Typ'Size < Mut_Tag_Typ'Size,
-       --              "class size for by-reference type ""New_Typ"" too small")
- 
        return
          Make_Pragma (Loc,
            Chars                        => Name_Compile_Time_Error,
--- 206,246 ----
        Mut_Tag_Typ : Entity_Id) return Node_Id
     is
        Loc : constant Source_Ptr := Sloc (New_Typ);
+ 
+       CW_Size : constant Uint := RM_Size (Mut_Tag_Typ);
+ 
+       function To_Mixed_Case (S : String) return String;
+       --  convert string to mixed case
+ 
+       -------------------
+       -- To_Mixed_Case --
+       -------------------
+ 
+       function To_Mixed_Case (S : String) return String is
+          Buf : Bounded_String;
+       begin
+          Append (Buf, S);
+          Set_Casing (Buf, Mixed_Case);
+          return +Buf;
+       end To_Mixed_Case;
+ 
+    --  Start of processing for Make_CW_Size_Compile_Check
+ 
     begin
!       --  Build a Compile_Time_Error pragma in order to defer the
!       --  (compile-time) size check until after the back end has
!       --  determined sizes.
!       --
!       --  It would be nice if we could somehow include the value of
!       --  New_Type'Size in the error message, but it is not clear how to
!       --  accomplish that with the current FE/BE interfaces.
! 
!       --  Get New_Typ's name (in mixed case) into the name buffer;
!       --  this is used immediately afterwards in the Make_Pragma call.
  
        Get_Decoded_Name_String (Chars (New_Typ));
        Set_Casing (Mixed_Case);
  
        return
          Make_Pragma (Loc,
            Chars                        => Name_Compile_Time_Error,
*************** package body Mutably_Tagged is
*** 233,251 ****
                        Prefix         =>
                          New_Occurrence_Of (New_Typ, Loc)),
                    Right_Opnd =>
!                     Make_Integer_Literal (Loc,
!                       RM_Size (Mut_Tag_Typ))))),
               Make_Pragma_Argument_Association (Loc,
                 Expression =>
- 
-                  --  Is it possible to print the size of New_Typ via
-                  --  Validate_Compile_Time_Warning_Or_Error after the back-end
-                  --  has run to generate the error message manually ???
- 
                   Make_String_Literal (Loc,
!                    "class size for by-reference type """
!                    & To_String (String_From_Name_Buffer)
!                    & """ too small"))));
     end Make_CW_Size_Compile_Check;
  
     ------------------------------------
--- 254,271 ----
                        Prefix         =>
                          New_Occurrence_Of (New_Typ, Loc)),
                    Right_Opnd =>
!                     Make_Integer_Literal (Loc, CW_Size)))),
               Make_Pragma_Argument_Association (Loc,
                 Expression =>
                   Make_String_Literal (Loc,
!                    To_String (String_From_Name_Buffer)
!                      & "'Size exceeds "
!                      & To_Mixed_Case (
!                          To_String (Fully_Qualified_Name_String
!                                      (Find_Specific_Type (Mut_Tag_Typ),
!                                       Append_NUL => False)))
!                      & "'Size'Class limit of "
!                      & UI_Image (CW_Size)))));
     end Make_CW_Size_Compile_Check;
  
     ------------------------------------
diff -Nrcpad gcc-15-20250628/gcc/ada/sem_ch13.adb gcc-15-20250705/gcc/ada/sem_ch13.adb
*** gcc-15-20250628/gcc/ada/sem_ch13.adb	Sat Jun 28 22:32:16 2025
--- gcc-15-20250705/gcc/ada/sem_ch13.adb	Sat Jul  5 22:32:06 2025
*************** package body Sem_Ch13 is
*** 4279,4284 ****
--- 4279,4285 ----
  
                 when Aspect_Designated_Storage_Model =>
                    if not All_Extensions_Allowed then
+                      Error_Msg_Name_1 := Nam;
                       Error_Msg_GNAT_Extension ("aspect %", Loc);
                       goto Continue;
  
diff -Nrcpad gcc-15-20250628/gcc/ada/sem_ch3.adb gcc-15-20250705/gcc/ada/sem_ch3.adb
*** gcc-15-20250628/gcc/ada/sem_ch3.adb	Sat Jun 28 22:32:17 2025
--- gcc-15-20250705/gcc/ada/sem_ch3.adb	Sat Jul  5 22:32:06 2025
*************** package body Sem_Ch3 is
*** 5326,5342 ****
           else
              Validate_Controlled_Object (Id);
           end if;
  
!          --  If the type of a constrained array has an unconstrained first
!          --  subtype, its Finalize_Address primitive expects the address of
!          --  an object with a dope vector (see Make_Finalize_Address_Stmts).
  
!          if Is_Array_Type (Etype (Id))
!            and then Is_Constrained (Etype (Id))
!            and then not Is_Constrained (First_Subtype (Etype (Id)))
!          then
!             Set_Is_Constr_Array_Subt_With_Bounds (Etype (Id));
!          end if;
        end if;
  
        if Has_Task (Etype (Id)) then
--- 5326,5339 ----
           else
              Validate_Controlled_Object (Id);
           end if;
+       end if;
  
!       --  If the type of a constrained array has an unconstrained first
!       --  subtype, its Finalize_Address primitive expects the address of
!       --  an object with a dope vector (see Make_Finalize_Address_Stmts).
  
!       if Is_Constr_Array_Subt_Of_Unc_With_Controlled (Etype (Id)) then
!          Set_Is_Constr_Array_Subt_With_Bounds (Etype (Id));
        end if;
  
        if Has_Task (Etype (Id)) then
*************** package body Sem_Ch3 is
*** 14604,14609 ****
--- 14601,14607 ----
        Set_Etype             (T_Sub, Corr_Rec);
        Set_Has_Discriminants (T_Sub, Has_Discriminants (Prot_Subt));
        Set_Is_Tagged_Type    (T_Sub, Is_Tagged_Type (Corr_Rec));
+       Set_Class_Wide_Type   (T_Sub, Class_Wide_Type (Corr_Rec));
        Set_Is_Constrained    (T_Sub, True);
        Set_First_Entity      (T_Sub, First_Entity (Corr_Rec));
        Set_Last_Entity       (T_Sub, Last_Entity  (Corr_Rec));
diff -Nrcpad gcc-15-20250628/gcc/ada/sem_ch4.adb gcc-15-20250705/gcc/ada/sem_ch4.adb
*** gcc-15-20250628/gcc/ada/sem_ch4.adb	Sat Jun 28 22:32:17 2025
--- gcc-15-20250705/gcc/ada/sem_ch4.adb	Sat Jul  5 22:32:06 2025
*************** package body Sem_Ch4 is
*** 835,840 ****
--- 835,848 ----
           Error_Msg_N ("cannot allocate abstract object", E);
        end if;
  
+       --  If the type of a constrained array has an unconstrained first
+       --  subtype, its Finalize_Address primitive expects the address of
+       --  an object with a dope vector (see Make_Finalize_Address_Stmts).
+ 
+       if Is_Constr_Array_Subt_Of_Unc_With_Controlled (Type_Id) then
+          Set_Is_Constr_Array_Subt_With_Bounds (Type_Id);
+       end if;
+ 
        Set_Etype (N, Acc_Type);
  
        --  If this is an allocator for the return stack, then no restriction may
*************** package body Sem_Ch4 is
*** 10907,10912 ****
--- 10915,10924 ----
     --  Start of processing for Try_Object_Operation
  
     begin
+       if Is_Class_Wide_Equivalent_Type (Obj_Type) then
+          Obj_Type := Corresponding_Mutably_Tagged_Type (Obj_Type);
+       end if;
+ 
        Analyze_Expression (Obj);
  
        --  Analyze the actuals if node is known to be a subprogram call
diff -Nrcpad gcc-15-20250628/gcc/ada/sem_ch6.adb gcc-15-20250705/gcc/ada/sem_ch6.adb
*** gcc-15-20250628/gcc/ada/sem_ch6.adb	Sat Jun 28 22:32:17 2025
--- gcc-15-20250705/gcc/ada/sem_ch6.adb	Sat Jul  5 22:32:06 2025
*************** package body Sem_Ch6 is
*** 6319,6330 ****
  
           elsif Has_Delayed_Freeze (T) and then not Is_Frozen (T) then
              Set_Has_Delayed_Freeze (Designator);
- 
-          elsif Is_Access_Type (T)
-            and then Has_Delayed_Freeze (Designated_Type (T))
-            and then not Is_Frozen (Designated_Type (T))
-          then
-             Set_Has_Delayed_Freeze (Designator);
           end if;
        end Possible_Freeze;
  
--- 6319,6324 ----
*************** package body Sem_Ch6 is
*** 6351,6356 ****
--- 6345,6357 ----
           Next_Formal (F);
        end loop;
  
+       --  RM 13.14 (15.1/6): the primitive subprograms of a tagged type are
+       --  frozen at the place where the type is frozen.
+ 
+       if Is_Dispatching_Operation (Designator) then
+          Set_Has_Delayed_Freeze (Designator);
+       end if;
+ 
        --  Mark functions that return by reference. Note that it cannot be done
        --  for delayed_freeze subprograms because the underlying returned type
        --  may not be known yet (for private types).
diff -Nrcpad gcc-15-20250628/gcc/ada/sem_ch6.ads gcc-15-20250705/gcc/ada/sem_ch6.ads
*** gcc-15-20250628/gcc/ada/sem_ch6.ads	Sat Jun 28 22:32:17 2025
--- gcc-15-20250705/gcc/ada/sem_ch6.ads	Sat Jul  5 22:32:06 2025
*************** package Sem_Ch6 is
*** 64,72 ****
     --  respective counterparts.
  
     procedure Check_Delayed_Subprogram (Designator : Entity_Id);
!    --  Designator can be a E_Subprogram_Type, E_Procedure or E_Function. If a
!    --  type in its profile depends on a private type without a full
!    --  declaration, indicate that the subprogram or type is delayed.
  
     procedure Check_Discriminant_Conformance
       (N        : Node_Id;
--- 64,71 ----
     --  respective counterparts.
  
     procedure Check_Delayed_Subprogram (Designator : Entity_Id);
!    --  Designator can be a E_Subprogram_Type, E_Procedure or E_Function. Set
!    --  Has_Delayed_Freeze on Designator if its freezing needs to be delayed.
  
     procedure Check_Discriminant_Conformance
       (N        : Node_Id;
diff -Nrcpad gcc-15-20250628/gcc/ada/sem_prag.adb gcc-15-20250705/gcc/ada/sem_prag.adb
*** gcc-15-20250628/gcc/ada/sem_prag.adb	Sat Jun 28 22:32:17 2025
--- gcc-15-20250705/gcc/ada/sem_prag.adb	Sat Jul  5 22:32:06 2025
*************** package body Sem_Prag is
*** 21373,21380 ****
           --  pragma No_Component_Reordering [([Entity =>] type_LOCAL_NAME)];
  
           when Pragma_No_Component_Reordering => No_Comp_Reordering : declare
!             E    : Entity_Id;
!             E_Id : Node_Id;
  
           begin
              GNAT_Pragma;
--- 21373,21380 ----
           --  pragma No_Component_Reordering [([Entity =>] type_LOCAL_NAME)];
  
           when Pragma_No_Component_Reordering => No_Comp_Reordering : declare
!             Typ     : Entity_Id;
!             Type_Id : Node_Id;
  
           begin
              GNAT_Pragma;
*************** package body Sem_Prag is
*** 21387,21405 ****
              else
                 Check_Optional_Identifier (Arg2, Name_Entity);
                 Check_Arg_Is_Local_Name (Arg1);
!                E_Id := Get_Pragma_Arg (Arg1);
  
!                if Etype (E_Id) = Any_Type then
                    return;
                 end if;
  
!                E := Entity (E_Id);
! 
!                if not Is_Record_Type (E) then
                    Error_Pragma_Arg ("pragma% requires record type", Arg1);
                 end if;
  
!                Set_No_Reordering (Base_Type (E));
              end if;
           end No_Comp_Reordering;
  
--- 21387,21406 ----
              else
                 Check_Optional_Identifier (Arg2, Name_Entity);
                 Check_Arg_Is_Local_Name (Arg1);
!                Type_Id := Get_Pragma_Arg (Arg1);
  
!                Find_Type (Type_Id);
!                Typ := Entity (Type_Id);
! 
!                if Typ = Any_Type then
                    return;
                 end if;
  
!                if not Is_Record_Type (Typ) then
                    Error_Pragma_Arg ("pragma% requires record type", Arg1);
                 end if;
  
!                Set_No_Reordering (Base_Type (Typ));
              end if;
           end No_Comp_Reordering;
  
diff -Nrcpad gcc-15-20250628/gcc/ada/sprint.adb gcc-15-20250705/gcc/ada/sprint.adb
*** gcc-15-20250628/gcc/ada/sprint.adb	Sat Jun 28 22:32:17 2025
--- gcc-15-20250705/gcc/ada/sprint.adb	Sat Jul  5 22:32:06 2025
*************** package body Sprint is
*** 4634,4640 ****
                             Param : Entity_Id;
  
                          begin
!                            Param := First_Entity (Typ);
                             loop
                                Write_Id (Param);
                                Write_Str (" : ");
--- 4634,4640 ----
                             Param : Entity_Id;
  
                          begin
!                            Param := First_Formal (Typ);
                             loop
                                Write_Id (Param);
                                Write_Str (" : ");
*************** package body Sprint is
*** 4646,4652 ****
                                end if;
  
                                Write_Id (Etype (Param));
!                               Next_Entity (Param);
                                exit when No (Param);
                                Write_Str (", ");
                             end loop;
--- 4646,4652 ----
                                end if;
  
                                Write_Id (Etype (Param));
!                               Next_Formal (Param);
                                exit when No (Param);
                                Write_Str (", ");
                             end loop;
diff -Nrcpad gcc-15-20250628/gcc/config/i386/driver-i386.cc gcc-15-20250705/gcc/config/i386/driver-i386.cc
*** gcc-15-20250628/gcc/config/i386/driver-i386.cc	Sat Jun 28 22:32:17 2025
--- gcc-15-20250705/gcc/config/i386/driver-i386.cc	Sat Jul  5 22:32:06 2025
*************** const char *host_detect_local_cpu (int a
*** 627,633 ****
  	      if (has_feature (FEATURE_AVX512F))
  		{
  		  /* Assume Diamond Rapids.  */
! 		  if (has_feature (FEATURE_AMX_TRANSPOSE))
  		    cpu = "diamondrapids";
  		  /* Assume Granite Rapids D.  */
  		  else if (has_feature (FEATURE_AMX_COMPLEX))
--- 627,633 ----
  	      if (has_feature (FEATURE_AVX512F))
  		{
  		  /* Assume Diamond Rapids.  */
! 		  if (has_feature (FEATURE_AMX_FP8))
  		    cpu = "diamondrapids";
  		  /* Assume Granite Rapids D.  */
  		  else if (has_feature (FEATURE_AMX_COMPLEX))
diff -Nrcpad gcc-15-20250628/gcc/cp/ChangeLog gcc-15-20250705/gcc/cp/ChangeLog
*** gcc-15-20250628/gcc/cp/ChangeLog	Sat Jun 28 22:32:17 2025
--- gcc-15-20250705/gcc/cp/ChangeLog	Sat Jul  5 22:32:07 2025
***************
*** 1,3 ****
--- 1,41 ----
+ 2025-07-04  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-04  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120575
+ 	PR c++/116064
+ 	* parser.cc (cp_parser_abort_tentative_parse): Check seen_error
+ 	instead of errorcount.
+ 
+ 2025-07-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120940
+ 	* typeck.cc (cp_build_array_ref): Fix a pasto.
+ 
+ 2025-07-03  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120684
+ 	PR c++/118856
+ 	* constexpr.cc (cxx_eval_constant_expression) [TARGET_EXPR]: Clear
+ 	the value first if is_complex.
+ 
+ 2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120471
+ 	* typeck.cc (cp_build_array_ref) <case COND_EXPR>: If idx is not
+ 	INTEGER_CST, don't optimize the case (but cp_default_conversion on
+ 	array early if it has ARRAY_TYPE) or use
+ 	SAVE_EXPR <op0>, SAVE_EXPR <idx>, SAVE_EXPR <op0> as new op0 depending
+ 	on flag_strong_eval_order and whether op1 and op2 are arrays with
+ 	invariant address or tree invariant pointers.  Formatting fixes.
+ 
  2025-06-09  Jason Merrill  <jason@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250628/gcc/cp/constexpr.cc gcc-15-20250705/gcc/cp/constexpr.cc
*** gcc-15-20250628/gcc/cp/constexpr.cc	Sat Jun 28 22:32:17 2025
--- gcc-15-20250705/gcc/cp/constexpr.cc	Sat Jul  5 22:32:07 2025
*************** cxx_eval_constant_expression (const cons
*** 8021,8034 ****
  	    ctx->global->put_value (new_ctx.object, new_ctx.ctor);
  	    ctx = &new_ctx;
  	  }
  	/* Pass vc_prvalue because this indicates
  	   initialization of a temporary.  */
  	r = cxx_eval_constant_expression (ctx, TREE_OPERAND (t, 1), vc_prvalue,
  					  non_constant_p, overflow_p);
  	if (*non_constant_p)
  	  break;
- 	/* If the initializer is complex, evaluate it to initialize slot.  */
- 	bool is_complex = target_expr_needs_replace (t);
  	if (!is_complex)
  	  {
  	    r = unshare_constructor (r);
--- 8021,8040 ----
  	    ctx->global->put_value (new_ctx.object, new_ctx.ctor);
  	    ctx = &new_ctx;
  	  }
+ 
+ 	/* If the initializer is complex, evaluate it to initialize slot.  */
+ 	bool is_complex = target_expr_needs_replace (t);
+ 	if (is_complex)
+ 	  /* In case no initialization actually happens, clear out any
+ 	     void_node from a previous evaluation.  */
+ 	  ctx->global->put_value (slot, NULL_TREE);
+ 
  	/* Pass vc_prvalue because this indicates
  	   initialization of a temporary.  */
  	r = cxx_eval_constant_expression (ctx, TREE_OPERAND (t, 1), vc_prvalue,
  					  non_constant_p, overflow_p);
  	if (*non_constant_p)
  	  break;
  	if (!is_complex)
  	  {
  	    r = unshare_constructor (r);
diff -Nrcpad gcc-15-20250628/gcc/cp/parser.cc gcc-15-20250705/gcc/cp/parser.cc
*** gcc-15-20250628/gcc/cp/parser.cc	Sat Jun 28 22:32:17 2025
--- gcc-15-20250705/gcc/cp/parser.cc	Sat Jul  5 22:32:07 2025
*************** static void
*** 36601,36607 ****
  cp_parser_abort_tentative_parse (cp_parser* parser)
  {
    gcc_assert (parser->context->status != CP_PARSER_STATUS_KIND_COMMITTED
! 	      || errorcount > 0);
    cp_parser_simulate_error (parser);
    /* Now, pretend that we want to see if the construct was
       successfully parsed.  */
--- 36601,36607 ----
  cp_parser_abort_tentative_parse (cp_parser* parser)
  {
    gcc_assert (parser->context->status != CP_PARSER_STATUS_KIND_COMMITTED
! 	      || seen_error ());
    cp_parser_simulate_error (parser);
    /* Now, pretend that we want to see if the construct was
       successfully parsed.  */
diff -Nrcpad gcc-15-20250628/gcc/cp/typeck.cc gcc-15-20250705/gcc/cp/typeck.cc
*** gcc-15-20250628/gcc/cp/typeck.cc	Sat Jun 28 22:32:17 2025
--- gcc-15-20250705/gcc/cp/typeck.cc	Sat Jul  5 22:32:07 2025
*************** cp_build_array_ref (location_t loc, tree
*** 3999,4011 ****
        }
  
      case COND_EXPR:
!       ret = build_conditional_expr
! 	       (loc, TREE_OPERAND (array, 0),
! 	       cp_build_array_ref (loc, TREE_OPERAND (array, 1), idx,
! 				   complain),
! 	       cp_build_array_ref (loc, TREE_OPERAND (array, 2), idx,
! 				   complain),
! 	       complain);
        protected_set_expr_location (ret, loc);
        return ret;
  
--- 3999,4127 ----
        }
  
      case COND_EXPR:
!       tree op0, op1, op2;
!       op0 = TREE_OPERAND (array, 0);
!       op1 = TREE_OPERAND (array, 1);
!       op2 = TREE_OPERAND (array, 2);
!       if (TREE_SIDE_EFFECTS (idx) || !tree_invariant_p (idx))
! 	{
! 	  /* If idx could possibly have some SAVE_EXPRs, turning
! 	     (op0 ? op1 : op2)[idx] into
! 	     op0 ? op1[idx] : op2[idx] can lead into temporaries
! 	     initialized in one conditional path and uninitialized
! 	     uses of them in the other path.
! 	     And if idx is a really large expression, evaluating it
! 	     twice is also not optimal.
! 	     On the other side, op0 must be sequenced before evaluation
! 	     of op1 and op2 and for C++17 op0, op1 and op2 must be
! 	     sequenced before idx.
! 	     If idx is INTEGER_CST, we can just do the optimization
! 	     without any SAVE_EXPRs, if op1 and op2 are both ARRAY_TYPE
! 	     VAR_DECLs or COMPONENT_REFs thereof (so their address
! 	     is constant or relative to frame), optimize into
! 	     (SAVE_EXPR <op0>, SAVE_EXPR <idx>, SAVE_EXPR <op0>)
! 	     ? op1[SAVE_EXPR <idx>] : op2[SAVE_EXPR <idx>]
! 	     Otherwise avoid this optimization.  */
! 	  if (flag_strong_eval_order == 2)
! 	    {
! 	      if (TREE_CODE (TREE_TYPE (array)) == ARRAY_TYPE)
! 		{
! 		  tree xop1 = op1;
! 		  tree xop2 = op2;
! 		  while (xop1 && handled_component_p (xop1))
! 		    {
! 		      switch (TREE_CODE (xop1))
! 			{
! 			case ARRAY_REF:
! 			case ARRAY_RANGE_REF:
! 			  if (!tree_invariant_p (TREE_OPERAND (xop1, 1))
! 			      || TREE_OPERAND (xop1, 2) != NULL_TREE
! 			      || TREE_OPERAND (xop1, 3) != NULL_TREE)
! 			    {
! 			      xop1 = NULL_TREE;
! 			      continue;
! 			    }
! 			  break;
! 
! 			case COMPONENT_REF:
! 			  if (TREE_OPERAND (xop1, 2) != NULL_TREE)
! 			    {
! 			      xop1 = NULL_TREE;
! 			      continue;
! 			    }
! 			  break;
! 
! 			default:
! 			  break;
! 			}
! 		      xop1 = TREE_OPERAND (xop1, 0);
! 		    }
! 		  if (xop1)
! 		    STRIP_ANY_LOCATION_WRAPPER (xop1);
! 		  while (xop2 && handled_component_p (xop2))
! 		    {
! 		      switch (TREE_CODE (xop2))
! 			{
! 			case ARRAY_REF:
! 			case ARRAY_RANGE_REF:
! 			  if (!tree_invariant_p (TREE_OPERAND (xop2, 1))
! 			      || TREE_OPERAND (xop2, 2) != NULL_TREE
! 			      || TREE_OPERAND (xop2, 3) != NULL_TREE)
! 			    {
! 			      xop2 = NULL_TREE;
! 			      continue;
! 			    }
! 			  break;
! 
! 			case COMPONENT_REF:
! 			  if (TREE_OPERAND (xop2, 2) != NULL_TREE)
! 			    {
! 			      xop2 = NULL_TREE;
! 			      continue;
! 			    }
! 			  break;
! 
! 			default:
! 			  break;
! 			}
! 		      xop2 = TREE_OPERAND (xop2, 0);
! 		    }
! 		  if (xop2)
! 		    STRIP_ANY_LOCATION_WRAPPER (xop2);
! 
! 		  if (!xop1
! 		      || !xop2
! 		      || !(CONSTANT_CLASS_P (xop1)
! 			   || decl_address_invariant_p (xop1))
! 		      || !(CONSTANT_CLASS_P (xop2)
! 			   || decl_address_invariant_p (xop2)))
! 		    {
! 		      /* Force default conversion on array if
! 			 we can't optimize this and array is ARRAY_TYPE
! 			 COND_EXPR, we can't leave COND_EXPRs with
! 			 ARRAY_TYPE in the IL.  */
! 		      array = cp_default_conversion (array, complain);
! 		      if (error_operand_p (array))
! 			return error_mark_node;
! 		      break;
! 		    }
! 		}
! 	      else if (!POINTER_TYPE_P (TREE_TYPE (array))
! 		       || !tree_invariant_p (op1)
! 		       || !tree_invariant_p (op2))
! 		break;
! 	    }
! 	  if (TREE_SIDE_EFFECTS (idx))
! 	    {
! 	      idx = save_expr (idx);
! 	      op0 = save_expr (op0);
! 	      tree tem = build_compound_expr (loc, op0, idx);
! 	      op0 = build_compound_expr (loc, tem, op0);
! 	    }
! 	}
!       op1 = cp_build_array_ref (loc, op1, idx, complain);
!       op2 = cp_build_array_ref (loc, op2, idx, complain);
!       ret = build_conditional_expr (loc, op0, op1, op2, complain);
        protected_set_expr_location (ret, loc);
        return ret;
  
diff -Nrcpad gcc-15-20250628/gcc/ext-dce.cc gcc-15-20250705/gcc/ext-dce.cc
*** gcc-15-20250628/gcc/ext-dce.cc	Sat Jun 28 22:32:17 2025
--- gcc-15-20250705/gcc/ext-dce.cc	Sat Jul  5 22:32:07 2025
*************** ext_dce_try_optimize_insn (rtx_insn *ins
*** 442,447 ****
--- 442,452 ----
  	  print_rtl_single (dump_file, new_pattern);
  	  fprintf (dump_file, "\n");
  	}
+ 
+       /* INSN may have a REG_EQUAL note indicating that the value was
+ 	 sign or zero extended.  That note is no longer valid since we've
+ 	 just removed the extension.  Just wipe the notes.  */
+       remove_reg_equal_equiv_notes (insn, false);
      }
    else
      {
diff -Nrcpad gcc-15-20250628/gcc/fortran/ChangeLog gcc-15-20250705/gcc/fortran/ChangeLog
*** gcc-15-20250628/gcc/fortran/ChangeLog	Sat Jun 28 22:32:17 2025
--- gcc-15-20250705/gcc/fortran/ChangeLog	Sat Jul  5 22:32:07 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-07-03  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-06-26  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/120711
+ 	* trans-array.cc (gfc_trans_array_ctor_element): Store the value
+ 	of the offset for reuse.
+ 
  2025-06-27  Harald Anlauf  <anlauf@gmx.de>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250628/gcc/fortran/trans-array.cc gcc-15-20250705/gcc/fortran/trans-array.cc
*** gcc-15-20250628/gcc/fortran/trans-array.cc	Sat Jun 28 22:32:18 2025
--- gcc-15-20250705/gcc/fortran/trans-array.cc	Sat Jul  5 22:32:07 2025
*************** static void
*** 1991,2004 ****
  gfc_trans_array_ctor_element (stmtblock_t * pblock, tree desc,
  			      tree offset, gfc_se * se, gfc_expr * expr)
  {
!   tree tmp;
  
    gfc_conv_expr (se, expr);
  
    /* Store the value.  */
    tmp = build_fold_indirect_ref_loc (input_location,
  				 gfc_conv_descriptor_data_get (desc));
!   tmp = gfc_build_array_ref (tmp, offset, NULL);
  
    if (expr->expr_type == EXPR_FUNCTION && expr->ts.type == BT_DERIVED
        && expr->ts.u.derived->attr.alloc_comp)
--- 1991,2007 ----
  gfc_trans_array_ctor_element (stmtblock_t * pblock, tree desc,
  			      tree offset, gfc_se * se, gfc_expr * expr)
  {
!   tree tmp, offset_eval;
  
    gfc_conv_expr (se, expr);
  
    /* Store the value.  */
    tmp = build_fold_indirect_ref_loc (input_location,
  				 gfc_conv_descriptor_data_get (desc));
!   /* The offset may change, so get its value now and use that to free memory.
!    */
!   offset_eval = gfc_evaluate_now (offset, &se->pre);
!   tmp = gfc_build_array_ref (tmp, offset_eval, NULL);
  
    if (expr->expr_type == EXPR_FUNCTION && expr->ts.type == BT_DERIVED
        && expr->ts.u.derived->attr.alloc_comp)
*************** finish:
*** 3150,3157 ****
       the reference.  */
    if ((expr->ts.type == BT_DERIVED || expr->ts.type == BT_CLASS)
         && finalblock.head != NULL_TREE)
!     gfc_add_block_to_block (&loop->post, &finalblock);
! 
  }
  
  
--- 3153,3159 ----
       the reference.  */
    if ((expr->ts.type == BT_DERIVED || expr->ts.type == BT_CLASS)
         && finalblock.head != NULL_TREE)
!     gfc_prepend_expr_to_block (&loop->post, finalblock.head);
  }
  
  
diff -Nrcpad gcc-15-20250628/gcc/passes.def gcc-15-20250705/gcc/passes.def
*** gcc-15-20250628/gcc/passes.def	Sat Jun 28 22:32:18 2025
--- gcc-15-20250705/gcc/passes.def	Sat Jul  5 22:32:07 2025
*************** along with GCC; see the file COPYING3.
*** 438,446 ****
    NEXT_PASS (pass_lower_switch_O0);
    NEXT_PASS (pass_asan_O0);
    NEXT_PASS (pass_tsan_O0);
    NEXT_PASS (pass_sanopt);
    NEXT_PASS (pass_cleanup_eh);
-   NEXT_PASS (pass_musttail);
    NEXT_PASS (pass_lower_resx);
    NEXT_PASS (pass_nrv);
    NEXT_PASS (pass_gimple_isel);
--- 438,446 ----
    NEXT_PASS (pass_lower_switch_O0);
    NEXT_PASS (pass_asan_O0);
    NEXT_PASS (pass_tsan_O0);
+   NEXT_PASS (pass_musttail);
    NEXT_PASS (pass_sanopt);
    NEXT_PASS (pass_cleanup_eh);
    NEXT_PASS (pass_lower_resx);
    NEXT_PASS (pass_nrv);
    NEXT_PASS (pass_gimple_isel);
diff -Nrcpad gcc-15-20250628/gcc/testsuite/ChangeLog gcc-15-20250705/gcc/testsuite/ChangeLog
*** gcc-15-20250628/gcc/testsuite/ChangeLog	Sat Jun 28 22:32:18 2025
--- gcc-15-20250705/gcc/testsuite/ChangeLog	Sat Jul  5 22:32:08 2025
***************
*** 1,3 ****
--- 1,106 ----
+ 2025-07-04  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-04  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120575
+ 	PR c++/116064
+ 	* g++.dg/template/permissive-error3.C: New test.
+ 
+ 2025-07-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120940
+ 	* g++.dg/parse/pr120940.C: New test.
+ 	* g++.dg/warn/Wduplicated-branches9.C: New test.
+ 
+ 2025-07-03  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	Backported from master:
+ 	2025-05-21  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR middle-end/120369
+ 	* gcc.dg/torture/pr120369-1.c: New test.
+ 
+ 2025-07-03  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/120684
+ 	PR c++/118856
+ 	* g++.dg/cpp23/range-for10.C: New test.
+ 
+ 2025-07-03  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2025-06-26  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/120711
+ 	* gfortran.dg/asan/array_constructor_1.f90: New test.
+ 
+ 2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR testsuite/120919
+ 	* gcc.target/powerpc/builtin_altivec_tr_stxvr_runnable.c (main): Change
+ 	sc, ss, si and sll vars from scalars to arrays of 2 elements,
+ 	initialize and test just the first one though.
+ 
+ 2025-07-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/specs/finalizable2.ads: New test.
+ 
+ 2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120471
+ 	* g++.dg/ubsan/pr120471.C: New test.
+ 	* g++.dg/parse/pr120471.C: New test.
+ 
+ 2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc.target/s390/vector/vec-abs-emu.c: Add -fno-stack-protector
+ 	to dg-options.
+ 	* gcc.target/s390/vector/vec-max-emu.c: Likewise.
+ 	* gcc.target/s390/vector/vec-min-emu.c: Likewise.
+ 
+ 2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120608
+ 	* c-c++-common/asan/pr120608-3.c: New test.
+ 	* c-c++-common/asan/pr120608-4.c: New test.
+ 	* g++.dg/asan/pr120608-3.C: New test.
+ 	* g++.dg/asan/pr120608-4.C: New test.
+ 
+ 2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/119318
+ 	PR testsuite/120082
+ 	* gcc.dg/ipa/pr119318.c (main): Expect different result on big endian
+ 	from little endian, on unexpected endianness or int/int128 sizes don't
+ 	test anything.  Formatting fixes.
+ 
+ 2025-06-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/concat6.adb: New test.
+ 
+ 2025-06-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/specs/aggr8.ads: New test.
+ 
  2025-06-27  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* gnat.dg/sso20.adb: New test.
diff -Nrcpad gcc-15-20250628/gcc/testsuite/c-c++-common/asan/pr120608-3.c gcc-15-20250705/gcc/testsuite/c-c++-common/asan/pr120608-3.c
*** gcc-15-20250628/gcc/testsuite/c-c++-common/asan/pr120608-3.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/gcc/testsuite/c-c++-common/asan/pr120608-3.c	Sat Jul  5 22:32:08 2025
***************
*** 0 ****
--- 1,36 ----
+ /* PR middle-end/120608 */
+ /* { dg-do compile { target musttail } } */
+ /* { dg-options "-fsanitize=address -fno-exceptions" } */
+ 
+ [[gnu::noipa]] int
+ foo (int x)
+ {
+   return x;
+ }
+ 
+ [[gnu::noipa]] void
+ bar (int *x, int *y, int *z)
+ {
+   (void) x;
+   (void) y;
+   (void) z;
+ }
+ 
+ [[gnu::noipa]] int
+ baz (int x)
+ {
+   int a = 4;
+   {
+     int b = 8;
+     {
+       int c = 10;
+       bar (&a, &b, &c);
+       if (a + b + c == 22)
+ 	[[gnu::musttail]] return foo (x);
+       bar (&a, &b, &c);
+     }
+     bar (&a, &b, &a);
+   }
+   bar (&a, &a, &a);
+   return 42;
+ }
diff -Nrcpad gcc-15-20250628/gcc/testsuite/c-c++-common/asan/pr120608-4.c gcc-15-20250705/gcc/testsuite/c-c++-common/asan/pr120608-4.c
*** gcc-15-20250628/gcc/testsuite/c-c++-common/asan/pr120608-4.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/gcc/testsuite/c-c++-common/asan/pr120608-4.c	Sat Jul  5 22:32:08 2025
***************
*** 0 ****
--- 1,30 ----
+ /* PR middle-end/120608 */
+ /* { dg-do compile { target musttail } } */
+ /* { dg-options "-fsanitize=address -fno-exceptions" } */
+ 
+ [[gnu::noipa]] void
+ bar (int *x, int *y, int *z)
+ {
+   (void) x;
+   (void) y;
+   (void) z;
+ }
+ 
+ [[gnu::noipa]] int
+ baz (int x)
+ {
+   int a = 4;
+   {
+     int b = 8;
+     {
+       int c = 10;
+       bar (&a, &b, &c);
+       if (a + b + c + x == 22)
+ 	[[gnu::musttail]] return baz (x - 1);
+       bar (&a, &b, &c);
+     }
+     bar (&a, &b, &a);
+   }
+   bar (&a, &a, &a);
+   return 42;
+ }
diff -Nrcpad gcc-15-20250628/gcc/testsuite/g++.dg/asan/pr120608-3.C gcc-15-20250705/gcc/testsuite/g++.dg/asan/pr120608-3.C
*** gcc-15-20250628/gcc/testsuite/g++.dg/asan/pr120608-3.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/gcc/testsuite/g++.dg/asan/pr120608-3.C	Sat Jul  5 22:32:10 2025
***************
*** 0 ****
--- 1,5 ----
+ // PR middle-end/120608
+ // { dg-do compile { target musttail } }
+ // { dg-options "-fsanitize=address" }
+ 
+ #include "../../c-c++-common/asan/pr120608-3.c"
diff -Nrcpad gcc-15-20250628/gcc/testsuite/g++.dg/asan/pr120608-4.C gcc-15-20250705/gcc/testsuite/g++.dg/asan/pr120608-4.C
*** gcc-15-20250628/gcc/testsuite/g++.dg/asan/pr120608-4.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/gcc/testsuite/g++.dg/asan/pr120608-4.C	Sat Jul  5 22:32:10 2025
***************
*** 0 ****
--- 1,5 ----
+ // PR middle-end/120608
+ // { dg-do compile { target musttail } }
+ // { dg-options "-fsanitize=address" }
+ 
+ #include "../../c-c++-common/asan/pr120608-4.c"
diff -Nrcpad gcc-15-20250628/gcc/testsuite/g++.dg/cpp23/range-for10.C gcc-15-20250705/gcc/testsuite/g++.dg/cpp23/range-for10.C
*** gcc-15-20250628/gcc/testsuite/g++.dg/cpp23/range-for10.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/gcc/testsuite/g++.dg/cpp23/range-for10.C	Sat Jul  5 22:32:10 2025
***************
*** 0 ****
--- 1,23 ----
+ // PR c++/120684
+ // { dg-do compile { target c++20 } }
+ 
+ struct basic_string {
+   constexpr ~basic_string() {}
+ };
+ template <typename _Vp> struct lazy_split_view {
+   _Vp _M_base;
+   constexpr int* begin() { return nullptr; }
+   constexpr int* end() { return nullptr; }
+ };
+ constexpr void test_with_piping() {
+   basic_string input;
+   for (auto e : lazy_split_view(input))
+     ;
+ }
+ constexpr bool main_test() {
+   test_with_piping();
+   test_with_piping();
+   return true;
+ }
+ //int main() { main_test(); }
+ static_assert(main_test());
diff -Nrcpad gcc-15-20250628/gcc/testsuite/g++.dg/parse/pr120471.C gcc-15-20250705/gcc/testsuite/g++.dg/parse/pr120471.C
*** gcc-15-20250628/gcc/testsuite/g++.dg/parse/pr120471.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/gcc/testsuite/g++.dg/parse/pr120471.C	Sat Jul  5 22:32:11 2025
***************
*** 0 ****
--- 1,42 ----
+ // PR c++/120471
+ // { dg-do compile }
+ 
+ extern int a1[], a2[], a3[], a4[];
+ 
+ int corge (int);
+ 
+ int
+ foo (int p)
+ {
+   return (p ? a1 : a2)[1];
+ }
+ 
+ int
+ bar (int p, int q)
+ {
+   return (p ? a1 : a2)[q];
+ }
+ 
+ int
+ garply (int p, int q)
+ {
+   return (p ? a1 : a2)[corge (q)];
+ }
+ 
+ int
+ baz (int p, int q)
+ {
+   return (p ? q ? a1 : a2 : q ? a3 : a4)[1];
+ }
+ 
+ int
+ qux (int p, int q, int r)
+ {
+   return (p ? q ? a1 : a2 : q ? a3 : a4)[r];
+ }
+ 
+ int
+ fred (int p, int q, int r)
+ {
+   return (p ? q ? a1 : a2 : q ? a3 : a4)[corge (r)];
+ }
diff -Nrcpad gcc-15-20250628/gcc/testsuite/g++.dg/parse/pr120940.C gcc-15-20250705/gcc/testsuite/g++.dg/parse/pr120940.C
*** gcc-15-20250628/gcc/testsuite/g++.dg/parse/pr120940.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/gcc/testsuite/g++.dg/parse/pr120940.C	Sat Jul  5 22:32:11 2025
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/120940
+ // { dg-do run }
+ 
+ int a[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
+ int b[8] = { 9, 10, 11, 12, 13, 14, 15, 16 };
+ 
+ __attribute__((noipa)) int
+ foo (int x, int y)
+ {
+   return (x ? a : b)[y];
+ }
+ 
+ int
+ main ()
+ {
+   if (foo (1, 4) != 5 || foo (0, 6) != 15)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-15-20250628/gcc/testsuite/g++.dg/template/permissive-error3.C gcc-15-20250705/gcc/testsuite/g++.dg/template/permissive-error3.C
*** gcc-15-20250628/gcc/testsuite/g++.dg/template/permissive-error3.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/gcc/testsuite/g++.dg/template/permissive-error3.C	Sat Jul  5 22:32:11 2025
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/120575
+ // { dg-additional-options -Wno-template-body }
+ 
+ template< int >
+ struct T {};
+ 
+ template< int >
+ struct S {
+ 
+   operator typename T< oops >::anything () {};
+ 
+ };
diff -Nrcpad gcc-15-20250628/gcc/testsuite/g++.dg/ubsan/pr120471.C gcc-15-20250705/gcc/testsuite/g++.dg/ubsan/pr120471.C
*** gcc-15-20250628/gcc/testsuite/g++.dg/ubsan/pr120471.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/gcc/testsuite/g++.dg/ubsan/pr120471.C	Sat Jul  5 22:32:11 2025
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/120471
+ // { dg-do run }
+ // { dg-options "-fsanitize=undefined" }
+ 
+ volatile int b[1], a[1];
+ 
+ void
+ foo (int x)
+ {
+   volatile int c = 21;
+   volatile int v = (x % 2 ? b : a)[c % 3];
+   if (v != 0)
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   foo (1);
+   foo (2);
+ }
diff -Nrcpad gcc-15-20250628/gcc/testsuite/g++.dg/warn/Wduplicated-branches9.C gcc-15-20250705/gcc/testsuite/g++.dg/warn/Wduplicated-branches9.C
*** gcc-15-20250628/gcc/testsuite/g++.dg/warn/Wduplicated-branches9.C	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/gcc/testsuite/g++.dg/warn/Wduplicated-branches9.C	Sat Jul  5 22:32:11 2025
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/120940
+ // { dg-do compile }
+ // { dg-options "-Wduplicated-branches" }
+ 
+ static char a[16][8], b[16][8];
+ 
+ char *
+ foo (int x, int y)
+ {
+   return (x ? a : b)[y];
+ }
diff -Nrcpad gcc-15-20250628/gcc/testsuite/gcc.dg/ipa/pr119318.c gcc-15-20250705/gcc/testsuite/gcc.dg/ipa/pr119318.c
*** gcc-15-20250628/gcc/testsuite/gcc.dg/ipa/pr119318.c	Sat Jun 28 22:32:23 2025
--- gcc-15-20250705/gcc/testsuite/gcc.dg/ipa/pr119318.c	Sat Jul  5 22:32:13 2025
*************** int
*** 30,37 ****
  main ()
  {
    W x = foo (0, (V) { 0, 5 });
!   for (unsigned i = 0; i < sizeof(x)/sizeof(x[0]); i++)
      if (x[i] != (i ? 0 : 0x1900000000))
!       __builtin_abort();
    return 0;
  }
--- 30,43 ----
  main ()
  {
    W x = foo (0, (V) { 0, 5 });
!   for (unsigned i = 0; i < sizeof (x) / sizeof (x[0]); i++)
! #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && __SIZEOF_INT__ == 4 && __SIZEOF_INT128__ == 16
      if (x[i] != (i ? 0 : 0x1900000000))
! #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ && __SIZEOF_INT__ == 4 && __SIZEOF_INT128__ == 16
!     if (x[i] != (i ? 0 : ((__int128) 0x19) << 64))
! #else
!     if (0)
! #endif
!       __builtin_abort ();
    return 0;
  }
diff -Nrcpad gcc-15-20250628/gcc/testsuite/gcc.dg/torture/pr120369-1.c gcc-15-20250705/gcc/testsuite/gcc.dg/torture/pr120369-1.c
*** gcc-15-20250628/gcc/testsuite/gcc.dg/torture/pr120369-1.c	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/gcc/testsuite/gcc.dg/torture/pr120369-1.c	Sat Jul  5 22:32:14 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* PR middle-end/120369 */
+ 
+ /* Make sure cabs without a lhs does not cause an ICE. */
+ void f()
+ {
+   double _Complex z = 1.0;
+   __builtin_cabs(z);
+ }
diff -Nrcpad gcc-15-20250628/gcc/testsuite/gcc.target/powerpc/builtin_altivec_tr_stxvr_runnable.c gcc-15-20250705/gcc/testsuite/gcc.target/powerpc/builtin_altivec_tr_stxvr_runnable.c
*** gcc-15-20250628/gcc/testsuite/gcc.target/powerpc/builtin_altivec_tr_stxvr_runnable.c	Sat Jun 28 22:32:26 2025
--- gcc-15-20250705/gcc/testsuite/gcc.target/powerpc/builtin_altivec_tr_stxvr_runnable.c	Sat Jul  5 22:32:20 2025
*************** int
*** 27,36 ****
  main () {
    int i;
    signed long sl;
!   signed char sc, expected_sc;
!   signed short ss, expected_ss;
!   signed int si, expected_si;
!   signed long long int sll, expected_sll;
    signed char *psc;
    signed short *pss;
    signed int *psi;
--- 27,36 ----
  main () {
    int i;
    signed long sl;
!   signed char sc[2], expected_sc;
!   signed short ss[2], expected_ss;
!   signed int si[2], expected_si;
!   signed long long int sll[2], expected_sll;
    signed char *psc;
    signed short *pss;
    signed int *psi;
*************** main () {
*** 41,96 ****
    printf("Data to store [%d] = 0x%llx %llx\n", i, val.ull[1], val.ull[0]);
  #endif
  
!   psc = &sc;
!   pss = &ss;
!   psi = &si;
!   psll = &sll;
  
    sl = 1;
!   sc = 0xA1;
    expected_sc = 0xA1;
    __builtin_altivec_tr_stxvrbx (store_data, sl, psc);
  
!   if (expected_sc != sc & 0xFF)
  #if DEBUG
      printf(" ERROR: Signed char = 0x%x doesn't match expected value 0x%x\n",
! 	   sc & 0xFF, expected_sc);
  #else
      abort();
  #endif
  
!   ss = 0x52;
    expected_ss = 0x1752;
    __builtin_altivec_tr_stxvrhx (store_data, sl, pss);
  
!   if (expected_ss != ss & 0xFFFF)
  #if DEBUG
      printf(" ERROR: Signed short = 0x%x doesn't match expected value 0x%x\n",
! 	   ss, expected_ss) & 0xFFFF;
  #else
      abort();
  #endif
  
!   si = 0x21;
    expected_si = 0x54321721;
    __builtin_altivec_tr_stxvrwx (store_data, sl, psi);
  
!   if (expected_si != si)
  #if DEBUG
      printf(" ERROR: Signed int = 0x%x doesn't match expected value 0x%x\n",
! 	   si, expected_si);
  #else
      abort();
  #endif
  
!   sll = 0x12FFULL;
    expected_sll = 0xdcba9876543217FF;
    __builtin_altivec_tr_stxvrdx (store_data, sl, psll);
  
!   if (expected_sll != sll)
  #if DEBUG
      printf(" ERROR: Signed long long int = 0x%llx doesn't match expected value 0x%llx\n",
! 	   sll, expected_sll);
  #else
      abort();
  #endif
--- 41,96 ----
    printf("Data to store [%d] = 0x%llx %llx\n", i, val.ull[1], val.ull[0]);
  #endif
  
!   psc = &sc[0];
!   pss = &ss[0];
!   psi = &si[0];
!   psll = &sll[0];
  
    sl = 1;
!   sc[0] = 0xA1;
    expected_sc = 0xA1;
    __builtin_altivec_tr_stxvrbx (store_data, sl, psc);
  
!   if (expected_sc != sc[0] & 0xFF)
  #if DEBUG
      printf(" ERROR: Signed char = 0x%x doesn't match expected value 0x%x\n",
! 	   sc[0] & 0xFF, expected_sc);
  #else
      abort();
  #endif
  
!   ss[0] = 0x52;
    expected_ss = 0x1752;
    __builtin_altivec_tr_stxvrhx (store_data, sl, pss);
  
!   if (expected_ss != ss[0] & 0xFFFF)
  #if DEBUG
      printf(" ERROR: Signed short = 0x%x doesn't match expected value 0x%x\n",
! 	   ss[0], expected_ss) & 0xFFFF;
  #else
      abort();
  #endif
  
!   si[0] = 0x21;
    expected_si = 0x54321721;
    __builtin_altivec_tr_stxvrwx (store_data, sl, psi);
  
!   if (expected_si != si[0])
  #if DEBUG
      printf(" ERROR: Signed int = 0x%x doesn't match expected value 0x%x\n",
! 	   si[0], expected_si);
  #else
      abort();
  #endif
  
!   sll[0] = 0x12FFULL;
    expected_sll = 0xdcba9876543217FF;
    __builtin_altivec_tr_stxvrdx (store_data, sl, psll);
  
!   if (expected_sll != sll[0])
  #if DEBUG
      printf(" ERROR: Signed long long int = 0x%llx doesn't match expected value 0x%llx\n",
! 	   sll[0], expected_sll);
  #else
      abort();
  #endif
diff -Nrcpad gcc-15-20250628/gcc/testsuite/gcc.target/s390/vector/vec-abs-emu.c gcc-15-20250705/gcc/testsuite/gcc.target/s390/vector/vec-abs-emu.c
*** gcc-15-20250628/gcc/testsuite/gcc.target/s390/vector/vec-abs-emu.c	Sat Jun 28 22:32:28 2025
--- gcc-15-20250705/gcc/testsuite/gcc.target/s390/vector/vec-abs-emu.c	Sat Jul  5 22:32:23 2025
***************
*** 1,5 ****
  /* { dg-do run } */
! /* { dg-options "-O3 -mzarch -march=z13 -save-temps" } */
  /* { dg-require-effective-target int128 } */
  /* { dg-final { check-function-bodies "**" "" "" } } */
  /* { dg-final { scan-assembler-not {\tvlpq\t} } } */
--- 1,5 ----
  /* { dg-do run } */
! /* { dg-options "-O3 -mzarch -march=z13 -save-temps -fno-stack-protector" } */
  /* { dg-require-effective-target int128 } */
  /* { dg-final { check-function-bodies "**" "" "" } } */
  /* { dg-final { scan-assembler-not {\tvlpq\t} } } */
diff -Nrcpad gcc-15-20250628/gcc/testsuite/gcc.target/s390/vector/vec-max-emu.c gcc-15-20250705/gcc/testsuite/gcc.target/s390/vector/vec-max-emu.c
*** gcc-15-20250628/gcc/testsuite/gcc.target/s390/vector/vec-max-emu.c	Sat Jun 28 22:32:28 2025
--- gcc-15-20250705/gcc/testsuite/gcc.target/s390/vector/vec-max-emu.c	Sat Jul  5 22:32:23 2025
***************
*** 1,5 ****
  /* { dg-do run } */
! /* { dg-options "-O3 -mzarch -march=z13 -save-temps" } */
  /* { dg-require-effective-target int128 } */
  /* { dg-final { check-function-bodies "**" "" "" } } */
  /* { dg-final { scan-assembler-not {\tvmxq\t} } } */
--- 1,5 ----
  /* { dg-do run } */
! /* { dg-options "-O3 -mzarch -march=z13 -save-temps -fno-stack-protector" } */
  /* { dg-require-effective-target int128 } */
  /* { dg-final { check-function-bodies "**" "" "" } } */
  /* { dg-final { scan-assembler-not {\tvmxq\t} } } */
diff -Nrcpad gcc-15-20250628/gcc/testsuite/gcc.target/s390/vector/vec-min-emu.c gcc-15-20250705/gcc/testsuite/gcc.target/s390/vector/vec-min-emu.c
*** gcc-15-20250628/gcc/testsuite/gcc.target/s390/vector/vec-min-emu.c	Sat Jun 28 22:32:28 2025
--- gcc-15-20250705/gcc/testsuite/gcc.target/s390/vector/vec-min-emu.c	Sat Jul  5 22:32:23 2025
***************
*** 1,5 ****
  /* { dg-do run } */
! /* { dg-options "-O3 -mzarch -march=z13 -save-temps" } */
  /* { dg-require-effective-target int128 } */
  /* { dg-final { check-function-bodies "**" "" "" } } */
  /* { dg-final { scan-assembler-not {\tvmnq\t} } } */
--- 1,5 ----
  /* { dg-do run } */
! /* { dg-options "-O3 -mzarch -march=z13 -save-temps -fno-stack-protector" } */
  /* { dg-require-effective-target int128 } */
  /* { dg-final { check-function-bodies "**" "" "" } } */
  /* { dg-final { scan-assembler-not {\tvmnq\t} } } */
diff -Nrcpad gcc-15-20250628/gcc/testsuite/gfortran.dg/asan/array_constructor_1.f90 gcc-15-20250705/gcc/testsuite/gfortran.dg/asan/array_constructor_1.f90
*** gcc-15-20250628/gcc/testsuite/gfortran.dg/asan/array_constructor_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/gcc/testsuite/gfortran.dg/asan/array_constructor_1.f90	Sat Jul  5 22:32:25 2025
***************
*** 0 ****
--- 1,23 ----
+ !{ dg-do run }
+ 
+ ! Contributed by Christopher Albert  <albert@tugraz.at>
+ 
+ program grow_type_array
+     type :: container
+         integer, allocatable :: arr(:)
+     end type container
+     
+     type(container), allocatable :: list(:)
+ 
+     list = [list, new_elem(5)]
+ 
+     deallocate(list)
+ 
+ contains
+ 
+     type(container) function new_elem(s) result(out)
+         integer :: s
+         allocate(out%arr(s))
+     end function new_elem
+       
+ end program grow_type_array
diff -Nrcpad gcc-15-20250628/gcc/testsuite/gnat.dg/specs/finalizable2.ads gcc-15-20250705/gcc/testsuite/gnat.dg/specs/finalizable2.ads
*** gcc-15-20250628/gcc/testsuite/gnat.dg/specs/finalizable2.ads	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/gcc/testsuite/gnat.dg/specs/finalizable2.ads	Sat Jul  5 22:32:27 2025
***************
*** 0 ****
--- 1,21 ----
+ -- { dg-do compile }
+ -- { dg-options "-gnatX0" }
+ 
+ package Finalizable2 is
+ 
+    type Root is abstract tagged limited null record
+       with Finalizable => (Initialize => Initialize);
+ 
+    procedure Initialize (this : in out Root) is abstract;
+ 
+    type Ext (L : Natural) is new Root with record
+       A : String (1 .. L);
+    end record;
+ 
+    overriding procedure Initialize (this : in out Ext) is null;
+ 
+    function Make return Ext is (L => 3, A => "asd");
+ 
+    Obj : Ext := Make;
+ 
+ end Finalizable2;
diff -Nrcpad gcc-15-20250628/gcc/tree-complex.cc gcc-15-20250705/gcc/tree-complex.cc
*** gcc-15-20250628/gcc/tree-complex.cc	Sat Jun 28 22:32:31 2025
--- gcc-15-20250705/gcc/tree-complex.cc	Sat Jul  5 22:32:28 2025
*************** gimple_expand_builtin_cabs (gimple_stmt_
*** 1715,1720 ****
--- 1715,1724 ----
  
    tree lhs = gimple_call_lhs (old_stmt);
  
+   /* If there is not a LHS, then just keep the statement around.  */
+   if (!lhs)
+     return;
+ 
    real_part = extract_component (gsi, arg, false, true);
    imag_part = extract_component (gsi, arg, true, true);
    location_t loc = gimple_location (old_stmt);
diff -Nrcpad gcc-15-20250628/gcc/tree-tailcall.cc gcc-15-20250705/gcc/tree-tailcall.cc
*** gcc-15-20250628/gcc/tree-tailcall.cc	Sat Jun 28 22:32:31 2025
--- gcc-15-20250705/gcc/tree-tailcall.cc	Sat Jul  5 22:32:28 2025
*************** empty_eh_cleanup (basic_block bb, int *e
*** 532,539 ****
  	  && sanitize_flags_p (SANITIZE_ADDRESS)
  	  && asan_mark_p (g, ASAN_MARK_POISON))
  	continue;
!       if (is_gimple_resx (g) && stmt_can_throw_external (cfun, g))
! 	return true;
        return false;
      }
    if (!single_succ_p (bb))
--- 532,547 ----
  	  && sanitize_flags_p (SANITIZE_ADDRESS)
  	  && asan_mark_p (g, ASAN_MARK_POISON))
  	continue;
!       if (is_gimple_resx (g))
! 	{
! 	  if (stmt_can_throw_external (cfun, g))
! 	    return true;
! 	  if (single_succ_p (bb)
! 	      && (single_succ_edge (bb)->flags & EDGE_EH)
! 	      && cnt > 1)
! 	    return empty_eh_cleanup (single_succ (bb), eh_has_tsan_func_exit,
! 				     cnt - 1);
! 	}
        return false;
      }
    if (!single_succ_p (bb))
*************** empty_eh_cleanup (basic_block bb, int *e
*** 548,555 ****
  static live_vars_map *live_vars;
  static vec<bitmap_head> live_vars_vec;
  
! /* Finds tailcalls falling into basic block BB.  The list of found tailcalls is
!    added to the start of RET.  When ONLY_MUSTTAIL is set only handle musttail.
     Update OPT_TAILCALLS as output parameter.  If DIAG_MUSTTAIL, diagnose
     failures for musttail calls.  RETRY_TSAN_FUNC_EXIT is initially 0 and
     in that case the last call is attempted to be tail called, including
--- 556,564 ----
  static live_vars_map *live_vars;
  static vec<bitmap_head> live_vars_vec;
  
! /* Finds tailcalls falling into basic block BB when coming from edge ESUCC (or
!    NULL).  The list of found tailcalls is added to the start of RET.
!    When ONLY_MUSTTAIL is set only handle musttail.
     Update OPT_TAILCALLS as output parameter.  If DIAG_MUSTTAIL, diagnose
     failures for musttail calls.  RETRY_TSAN_FUNC_EXIT is initially 0 and
     in that case the last call is attempted to be tail called, including
*************** static vec<bitmap_head> live_vars_vec;
*** 558,569 ****
     will retry with it set to 1 (regardless of whether turning the
     __tsan_func_exit was successfully detected as tail call or not) and that
     will allow turning musttail calls before that call into tail calls as well
!    by adding __tsan_func_exit call before the call.  */
  
  static void
! find_tail_calls (basic_block bb, struct tailcall **ret, bool only_musttail,
! 		 bool &opt_tailcalls, bool diag_musttail,
! 		 int &retry_tsan_func_exit)
  {
    tree ass_var = NULL_TREE, ret_var, func, param;
    gimple *stmt;
--- 567,581 ----
     will retry with it set to 1 (regardless of whether turning the
     __tsan_func_exit was successfully detected as tail call or not) and that
     will allow turning musttail calls before that call into tail calls as well
!    by adding __tsan_func_exit call before the call.
!    IGNORED_EDGES and MUST_SEE_BBS are used in recursive calls when handling
!    GIMPLE_CONDs for cleanups.  */
  
  static void
! find_tail_calls (basic_block bb, edge esucc, struct tailcall **ret,
! 		 bool only_musttail, bool &opt_tailcalls, bool diag_musttail,
! 		 int &retry_tsan_func_exit, hash_set<edge> *ignored_edges,
! 		 hash_set<basic_block> *must_see_bbs)
  {
    tree ass_var = NULL_TREE, ret_var, func, param;
    gimple *stmt;
*************** find_tail_calls (basic_block bb, struct
*** 579,592 ****
    bool only_tailr = false;
    bool has_tsan_func_exit = false;
    int eh_has_tsan_func_exit = -1;
  
    if (!single_succ_p (bb)
        && (EDGE_COUNT (bb->succs) || !cfun->has_musttail || !diag_musttail))
      {
        /* If there is an abnormal edge assume it's the only extra one.
  	 Tolerate that case so that we can give better error messages
  	 for musttail later.  */
!       if (!has_abnormal_or_eh_outgoing_edge_p (bb))
  	{
  	  if (dump_file)
  	    fprintf (dump_file, "Basic block %d has extra exit edges\n",
--- 591,614 ----
    bool only_tailr = false;
    bool has_tsan_func_exit = false;
    int eh_has_tsan_func_exit = -1;
+   bool delete_ignored_edges = false;
  
    if (!single_succ_p (bb)
        && (EDGE_COUNT (bb->succs) || !cfun->has_musttail || !diag_musttail))
      {
+       if (EDGE_COUNT (bb->succs) == 2
+ 	  && esucc
+ 	  && cfun->has_musttail
+ 	  && diag_musttail
+ 	  && (EDGE_SUCC (bb, 0)->flags & (EDGE_TRUE_VALUE | EDGE_FALSE_VALUE))
+ 	  && (EDGE_SUCC (bb, 1)->flags & (EDGE_TRUE_VALUE | EDGE_FALSE_VALUE))
+ 	  && (stmt = last_nondebug_stmt (bb))
+ 	  && gimple_code (stmt) == GIMPLE_COND)
+ 	;
        /* If there is an abnormal edge assume it's the only extra one.
  	 Tolerate that case so that we can give better error messages
  	 for musttail later.  */
!       else if (!has_abnormal_or_eh_outgoing_edge_p (bb))
  	{
  	  if (dump_file)
  	    fprintf (dump_file, "Basic block %d has extra exit edges\n",
*************** find_tail_calls (basic_block bb, struct
*** 629,634 ****
--- 651,729 ----
  	  && diag_musttail)
  	continue;
  
+       /* Especially at -O0 with -fsanitize=address we can end up with
+ 	 code like
+ 	   _26 = foo (x_24(D)); [must tail call]
+ 	   finally_tmp.3_27 = 0;
+ 	   goto <bb 5>; [INV]
+ 
+ 	   ...
+ 
+ 	   <bb 5> :
+ 	   # _6 = PHI <_26(3), _23(D)(4)>
+ 	   # finally_tmp.3_8 = PHI <finally_tmp.3_27(3), finally_tmp.3_22(4)>
+ 	   .ASAN_MARK (POISON, &c, 4);
+ 	   if (finally_tmp.3_8 == 1)
+ 	     goto <bb 7>; [INV]
+ 	   else
+ 	     goto <bb 6>; [INV]
+ 	 When walking backwards, ESUCC is the edge we are coming from,
+ 	 depending on its EDGE_TRUE_FLAG, == vs. != for the comparison
+ 	 and value compared against try to find out through which edge
+ 	 we need to go and which edge should be ignored.  The code handles
+ 	 both INTEGER_CST PHI arguments and SSA_NAMEs set to constants
+ 	 (for -O0 where those aren't propagated).  */
+       if (cfun->has_musttail
+ 	  && diag_musttail
+ 	  && esucc
+ 	  && gimple_code (stmt) == GIMPLE_COND
+ 	  && (gimple_cond_code (stmt) == EQ_EXPR
+ 	      || gimple_cond_code (stmt) == NE_EXPR)
+ 	  && TREE_CODE (gimple_cond_lhs (stmt)) == SSA_NAME
+ 	  && TREE_CODE (gimple_cond_rhs (stmt)) == INTEGER_CST
+ 	  && INTEGRAL_TYPE_P (TREE_TYPE (gimple_cond_lhs (stmt)))
+ 	  && (integer_zerop (gimple_cond_rhs (stmt))
+ 	      || integer_onep (gimple_cond_rhs (stmt))))
+ 	{
+ 	  tree lhs = gimple_cond_lhs (stmt);
+ 	  bool rhsv = integer_onep (gimple_cond_rhs (stmt));
+ 	  if (((esucc->flags & EDGE_TRUE_VALUE) != 0)
+ 	      ^ (gimple_cond_code (stmt) == EQ_EXPR))
+ 	    rhsv = !rhsv;
+ 	  if (!ignored_edges)
+ 	    {
+ 	      ignored_edges = new hash_set<edge>;
+ 	      must_see_bbs = new hash_set<basic_block>;
+ 	      delete_ignored_edges = true;
+ 	    }
+ 	  if (is_gimple_assign (SSA_NAME_DEF_STMT (lhs))
+ 	      && (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (lhs))
+ 		  == INTEGER_CST))
+ 	    {
+ 	      tree rhs = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (lhs));
+ 	      if (rhsv ? integer_onep (rhs) : integer_zerop (rhs))
+ 		continue;
+ 	    }
+ 	  else if (gimple_code (SSA_NAME_DEF_STMT (lhs)) == GIMPLE_PHI)
+ 	    {
+ 	      gimple *phi = SSA_NAME_DEF_STMT (lhs);
+ 	      basic_block pbb = gimple_bb (phi);
+ 	      must_see_bbs->add (pbb);
+ 	      edge_iterator ei;
+ 	      FOR_EACH_EDGE (e, ei, pbb->preds)
+ 		{
+ 		  tree rhs = gimple_phi_arg_def_from_edge (phi, e);
+ 		  if (TREE_CODE (rhs) == SSA_NAME
+ 		      && is_gimple_assign (SSA_NAME_DEF_STMT (rhs))
+ 		      && (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (rhs))
+ 			  == INTEGER_CST))
+ 		    rhs = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (rhs));
+ 		  if (!(rhsv ? integer_onep (rhs) : integer_zerop (rhs)))
+ 		    ignored_edges->add (e);
+ 		}
+ 	    }
+ 	}
+ 
        if (!last_stmt)
  	last_stmt = stmt;
        /* Check for a call.  */
*************** find_tail_calls (basic_block bb, struct
*** 637,648 ****
  	  call = as_a <gcall *> (stmt);
  	  /* Handle only musttail calls when not optimizing.  */
  	  if (only_musttail && !gimple_call_must_tail_p (call))
! 	    return;
  	  if (bad_stmt)
  	    {
  	      maybe_error_musttail (call, _("memory reference or volatile "
  					    "after call"), diag_musttail);
! 	      return;
  	    }
  	  ass_var = gimple_call_lhs (call);
  	  break;
--- 732,751 ----
  	  call = as_a <gcall *> (stmt);
  	  /* Handle only musttail calls when not optimizing.  */
  	  if (only_musttail && !gimple_call_must_tail_p (call))
! 	    {
! 	    maybe_delete_ignored_edges:
! 	      if (delete_ignored_edges)
! 		{
! 		  delete ignored_edges;
! 		  delete must_see_bbs;
! 		}
! 	      return;
! 	    }
  	  if (bad_stmt)
  	    {
  	      maybe_error_musttail (call, _("memory reference or volatile "
  					    "after call"), diag_musttail);
! 	      goto maybe_delete_ignored_edges;
  	    }
  	  ass_var = gimple_call_lhs (call);
  	  break;
*************** find_tail_calls (basic_block bb, struct
*** 671,687 ****
      }
  
    if (bad_stmt)
!     return;
  
    if (gsi_end_p (gsi))
      {
        edge_iterator ei;
        /* Recurse to the predecessors.  */
        FOR_EACH_EDGE (e, ei, bb->preds)
! 	find_tail_calls (e->src, ret, only_musttail, opt_tailcalls,
! 			 diag_musttail, retry_tsan_func_exit);
  
!       return;
      }
  
    if (!suitable_for_tail_opt_p (call, diag_musttail))
--- 774,807 ----
      }
  
    if (bad_stmt)
!     goto maybe_delete_ignored_edges;
  
    if (gsi_end_p (gsi))
      {
+       if (must_see_bbs)
+ 	must_see_bbs->remove (bb);
+ 
        edge_iterator ei;
        /* Recurse to the predecessors.  */
        FOR_EACH_EDGE (e, ei, bb->preds)
! 	{
! 	  if (ignored_edges && ignored_edges->contains (e))
! 	    continue;
! 	  find_tail_calls (e->src, e, ret, only_musttail, opt_tailcalls,
! 			   diag_musttail, retry_tsan_func_exit, ignored_edges,
! 			   must_see_bbs);
! 	}
  
!       goto maybe_delete_ignored_edges;
!     }
! 
!   if (must_see_bbs && !must_see_bbs->is_empty ())
!     goto maybe_delete_ignored_edges;
! 
!   if (delete_ignored_edges)
!     {
!       delete ignored_edges;
!       delete must_see_bbs;
      }
  
    if (!suitable_for_tail_opt_p (call, diag_musttail))
*************** find_tail_calls (basic_block bb, struct
*** 974,984 ****
        tree tmp_m = NULL_TREE;
        gsi_next (&agsi);
  
        while (gsi_end_p (agsi))
  	{
  	  edge e = single_non_eh_succ_edge (abb);
  	  ass_var = propagate_through_phis (ass_var, e);
! 	  if (!ass_var)
  	    edges.safe_push (e);
  	  abb = e->dest;
  	  agsi = gsi_start_bb (abb);
--- 1094,1105 ----
        tree tmp_m = NULL_TREE;
        gsi_next (&agsi);
  
+     new_bb:
        while (gsi_end_p (agsi))
  	{
  	  edge e = single_non_eh_succ_edge (abb);
  	  ass_var = propagate_through_phis (ass_var, e);
! 	  if (!ass_var || ignored_edges)
  	    edges.safe_push (e);
  	  abb = e->dest;
  	  agsi = gsi_start_bb (abb);
*************** find_tail_calls (basic_block bb, struct
*** 1012,1017 ****
--- 1133,1220 ----
  	  && diag_musttail)
  	continue;
  
+       /* See earlier comment on GIMPLE_CONDs.  Here we need to propagate
+ 	 through on the forward walk, so based on the edges vector we've
+ 	 walked through determine which edge to follow.  */ 
+       if (ignored_edges)
+ 	{
+ 	  if (is_gimple_assign (stmt)
+ 	      && gimple_assign_rhs_code (stmt) == INTEGER_CST)
+ 	    {
+ 	      use_operand_p use_p;
+ 	      gimple *use_stmt;
+ 	      if ((integer_zerop (gimple_assign_rhs1 (stmt))
+ 		   || integer_onep (gimple_assign_rhs1 (stmt)))
+ 		  && single_imm_use (gimple_assign_lhs (stmt), &use_p,
+ 				     &use_stmt))
+ 		{
+ 		  if (gimple_code (use_stmt) == GIMPLE_COND)
+ 		    continue;
+ 		  if (gimple_code (use_stmt) == GIMPLE_PHI
+ 		      && single_imm_use (gimple_phi_result (use_stmt),
+ 					 &use_p, &use_stmt)
+ 		      && gimple_code (use_stmt) == GIMPLE_COND)
+ 		    continue;
+ 		}
+ 	    }
+ 	  if (gimple_code (stmt) == GIMPLE_COND
+ 	      && (gimple_cond_code (stmt) == EQ_EXPR
+ 		  || gimple_cond_code (stmt) == NE_EXPR)
+ 	      && TREE_CODE (gimple_cond_lhs (stmt)) == SSA_NAME
+ 	      && TREE_CODE (gimple_cond_rhs (stmt)) == INTEGER_CST
+ 	      && INTEGRAL_TYPE_P (TREE_TYPE (gimple_cond_lhs (stmt)))
+ 	      && (integer_zerop (gimple_cond_rhs (stmt))
+ 		  || integer_onep (gimple_cond_rhs (stmt))))
+ 	    {
+ 	      edge e = NULL, et, ef;
+ 	      tree lhs = gimple_cond_lhs (stmt);
+ 	      bool rhsv = integer_onep (gimple_cond_rhs (stmt));
+ 	      if (gimple_cond_code (stmt) == NE_EXPR)
+ 		rhsv = !rhsv;
+ 	      extract_true_false_edges_from_block (gimple_bb (stmt), &et, &ef);
+ 	      if (is_gimple_assign (SSA_NAME_DEF_STMT (lhs))
+ 		  && (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (lhs))
+ 		      == INTEGER_CST))
+ 		{
+ 		  tree rhs = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (lhs));
+ 		  if (rhsv ? integer_onep (rhs) : integer_zerop (rhs))
+ 		    e = et;
+ 		  else if (rhsv ? integer_zerop (rhs) : integer_onep (rhs))
+ 		    e = ef;
+ 		}
+ 	      else if (gimple_code (SSA_NAME_DEF_STMT (lhs)) == GIMPLE_PHI)
+ 		{
+ 		  gimple *phi = SSA_NAME_DEF_STMT (lhs);
+ 		  basic_block pbb = gimple_bb (phi);
+ 		  for (edge e2 : edges)
+ 		    if (e2->dest == pbb)
+ 		      {
+ 			tree rhs = gimple_phi_arg_def_from_edge (phi, e2);
+ 			if (TREE_CODE (rhs) == SSA_NAME)
+ 			  if (gimple *g = SSA_NAME_DEF_STMT (rhs))
+ 			    if (is_gimple_assign (g)
+ 				&& gimple_assign_rhs_code (g) == INTEGER_CST)
+ 			      rhs = gimple_assign_rhs1 (g);
+ 			if (rhsv ? integer_onep (rhs) : integer_zerop (rhs))
+ 			  e = et;
+ 			else if (rhsv ? integer_zerop (rhs)
+ 				 : integer_onep (rhs))
+ 			  e = ef;
+ 			break;
+ 		      }
+ 		}
+ 	      if (e)
+ 		{
+ 		  ass_var = propagate_through_phis (ass_var, e);
+ 		  if (!ass_var || ignored_edges)
+ 		    edges.safe_push (e);
+ 		  abb = e->dest;
+ 		  agsi = gsi_start_bb (abb);
+ 		  goto new_bb;
+ 		}
+ 	    }
+ 	}
+ 
        if (gimple_code (stmt) != GIMPLE_ASSIGN)
  	{
  	  maybe_error_musttail (call, _("unhandled code after call"),
*************** tree_optimize_tail_calls_1 (bool opt_tai
*** 1629,1642 ****
        if (safe_is_a <greturn *> (*gsi_last_bb (e->src)))
  	{
  	  int retry_tsan_func_exit = 0;
! 	  find_tail_calls (e->src, &tailcalls, only_musttail, opt_tailcalls,
! 			   diag_musttail, retry_tsan_func_exit);
  	  if (retry_tsan_func_exit == -1)
  	    {
  	      retry_tsan_func_exit = 1;
! 	      find_tail_calls (e->src, &tailcalls, only_musttail,
  			       opt_tailcalls, diag_musttail,
! 			       retry_tsan_func_exit);
  	    }
  	}
      }
--- 1832,1845 ----
        if (safe_is_a <greturn *> (*gsi_last_bb (e->src)))
  	{
  	  int retry_tsan_func_exit = 0;
! 	  find_tail_calls (e->src, e, &tailcalls, only_musttail, opt_tailcalls,
! 			   diag_musttail, retry_tsan_func_exit, NULL, NULL);
  	  if (retry_tsan_func_exit == -1)
  	    {
  	      retry_tsan_func_exit = 1;
! 	      find_tail_calls (e->src, e, &tailcalls, only_musttail,
  			       opt_tailcalls, diag_musttail,
! 			       retry_tsan_func_exit, NULL, NULL);
  	    }
  	}
      }
*************** tree_optimize_tail_calls_1 (bool opt_tai
*** 1652,1659 ****
  	    if (is_gimple_call (c)
  		&& gimple_call_must_tail_p (as_a <gcall *> (c))
  		&& gimple_call_noreturn_p (as_a <gcall *> (c)))
! 	      find_tail_calls (bb, &tailcalls, only_musttail, opt_tailcalls,
! 			       diag_musttail, retry_tsan_func_exit);
      }
  
    if (live_vars)
--- 1855,1863 ----
  	    if (is_gimple_call (c)
  		&& gimple_call_must_tail_p (as_a <gcall *> (c))
  		&& gimple_call_noreturn_p (as_a <gcall *> (c)))
! 	      find_tail_calls (bb, NULL, &tailcalls, only_musttail,
! 			       opt_tailcalls, diag_musttail,
! 			       retry_tsan_func_exit, NULL, NULL);
      }
  
    if (live_vars)
diff -Nrcpad gcc-15-20250628/gcc/tree-vect-loop.cc gcc-15-20250705/gcc/tree-vect-loop.cc
*** gcc-15-20250628/gcc/tree-vect-loop.cc	Sat Jun 28 22:32:31 2025
--- gcc-15-20250705/gcc/tree-vect-loop.cc	Sat Jul  5 22:32:28 2025
*************** vect_analyze_loop (class loop *loop, gim
*** 3815,3820 ****
--- 3815,3821 ----
        /* When we selected a first vectorized epilogue, see if the target
  	 suggests to have another one.  */
        if (!unlimited_cost_model (loop)
+ 	  && !LOOP_VINFO_USING_PARTIAL_VECTORS_P (orig_loop_vinfo)
  	  && (orig_loop_vinfo->vector_costs->suggested_epilogue_mode ()
  	      != VOIDmode))
  	{
diff -Nrcpad gcc-15-20250628/libstdc++-v3/ChangeLog gcc-15-20250705/libstdc++-v3/ChangeLog
*** gcc-15-20250628/libstdc++-v3/ChangeLog	Sat Jun 28 22:32:34 2025
--- gcc-15-20250705/libstdc++-v3/ChangeLog	Sat Jul  5 22:32:33 2025
***************
*** 1,3 ****
--- 1,51 ----
+ 2025-07-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/120934
+ 	* include/std/ranges (concat_view::end): Refine condition
+ 	for returning an iterator instead of default_sentinel as
+ 	per the updated P/R for LWG 4166.
+ 	* testsuite/std/ranges/concat/1.cc (test05): New test.
+ 
+ 2025-07-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-07-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/120931
+ 	* include/bits/stl_uninitialized.h (__uninitialized_fill<true>):
+ 	Fix typo resulting in call to __do_uninit_copy instead of
+ 	__do_uninit_fill.
+ 	* testsuite/20_util/specialized_algorithms/uninitialized_fill/120931.cc:
+ 	New test.
+ 
+ 2025-07-01  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-13  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/120648
+ 	* include/bits/chrono_io.h (__formatter_chrono::_M_format_to):
+ 	Handle %c, %r, %x and %X by passing them to _M_c_r_x_X.
+ 	(__formatter_chrono::_M_c_r_x_X): Reworked from _M_c.
+ 	(__formatter_chrono::_M_c): Renamed into above.
+ 	(__formatter_chrono::_M_r, __formatter_chrono::_M_x)
+ 	(__formatter_chrono::_M_X): Removed.
+ 	* testsuite/std/time/format/pr117214.cc: New tests for %r, %x,
+ 	%X with date, time and durations.
+ 
+ 2025-06-30  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-25  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/120650
+ 	* include/bits/chrono_io.h
+ 	(formatter<chrono::month_day_last,_CharT>::parse): Call _M_parse with
+ 	only Month being available.
+ 
  2025-06-12  Jonathan Wakely  <jwakely@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-15-20250628/libstdc++-v3/include/bits/chrono_io.h gcc-15-20250705/libstdc++-v3/include/bits/chrono_io.h
*** gcc-15-20250628/libstdc++-v3/include/bits/chrono_io.h	Sat Jun 28 22:32:34 2025
--- gcc-15-20250705/libstdc++-v3/include/bits/chrono_io.h	Sat Jul  5 22:32:33 2025
*************** namespace __format
*** 580,586 ****
  		  __out = _M_b_B(__t, std::move(__out), __fc, __c == 'B');
  		  break;
  		case 'c':
! 		  __out = _M_c(__t, std::move(__out), __fc, __mod == 'E');
  		  break;
  		case 'C':
  		case 'y':
--- 580,589 ----
  		  __out = _M_b_B(__t, std::move(__out), __fc, __c == 'B');
  		  break;
  		case 'c':
! 		case 'r':
! 		case 'x':
! 		case 'X':
! 		  __out = _M_c_r_x_X(__t, std::move(__out), __fc, __c, __mod);
  		  break;
  		case 'C':
  		case 'y':
*************** namespace __format
*** 631,639 ****
  		    __throw_format_error("chrono format error: argument is "
  					 "not a duration");
  		  break;
- 		case 'r':
- 		  __out = _M_r(__t, __print_sign(), __fc);
- 		  break;
  		case 'R':
  		case 'T':
  		  __out = _M_R_T(__t, __print_sign(), __fc, __c == 'T');
--- 634,639 ----
*************** namespace __format
*** 651,662 ****
  		  __out = _M_U_V_W(__t, std::move(__out), __fc, __c,
  				   __mod == 'O');
  		  break;
- 		case 'x':
- 		  __out = _M_x(__t, std::move(__out), __fc, __mod == 'E');
- 		  break;
- 		case 'X':
- 		  __out = _M_X(__t, __print_sign(), __fc, __mod == 'E');
- 		  break;
  		case 'z':
  		  __out = _M_z(__t, std::move(__out), __fc, (bool)__mod);
  		  break;
--- 651,656 ----
*************** namespace __format
*** 882,892 ****
  
        template<typename _Tp, typename _FormatContext>
  	typename _FormatContext::iterator
! 	_M_c(const _Tp& __t, typename _FormatContext::iterator __out,
! 	     _FormatContext& __ctx, bool __mod = false) const
  	{
  	  // %c  Locale's date and time representation.
  	  // %Ec Locale's alternate date and time representation.
  
  	  using namespace chrono;
  	  using ::std::chrono::__detail::__utc_leap_second;
--- 876,891 ----
  
        template<typename _Tp, typename _FormatContext>
  	typename _FormatContext::iterator
! 	_M_c_r_x_X(const _Tp& __t, typename _FormatContext::iterator __out,
! 		   _FormatContext& __ctx, _CharT __conv, _CharT __mod) const
  	{
  	  // %c  Locale's date and time representation.
  	  // %Ec Locale's alternate date and time representation.
+ 	  // %r  Locale's 12-hour clock time.
+ 	  // %x  Locale's date rep
+ 	  // %Ex Locale's alternative date representation.
+ 	  // %X  Locale's time rep
+ 	  // %EX Locale's alternative time representation.
  
  	  using namespace chrono;
  	  using ::std::chrono::__detail::__utc_leap_second;
*************** namespace __format
*** 920,942 ****
  	    __tm.tm_zone = const_cast<char*>("UTC");
  #endif
  
! 	  auto __d = _S_days(__t); // Either sys_days or local_days.
! 	  using _TDays = decltype(__d);
! 	  const year_month_day __ymd(__d);
! 	  const auto __y = __ymd.year();
! 	  const auto __hms = _S_hms(__t);
  
! 	  __tm.tm_year = (int)__y - 1900;
! 	  __tm.tm_yday = (__d - _TDays(__y/January/1)).count();
! 	  __tm.tm_mon = (unsigned)__ymd.month() - 1;
! 	  __tm.tm_mday = (unsigned)__ymd.day();
! 	  __tm.tm_wday = weekday(__d).c_encoding();
! 	  __tm.tm_hour = __hms.hours().count();
! 	  __tm.tm_min = __hms.minutes().count();
! 	  __tm.tm_sec = __hms.seconds().count();
  
! 	  return _M_locale_fmt(std::move(__out), _M_locale(__ctx), __tm, 'c',
! 			       __mod ? 'E' : '\0');
  	}
  
        template<typename _Tp, typename _FormatContext>
--- 919,948 ----
  	    __tm.tm_zone = const_cast<char*>("UTC");
  #endif
  
! 	  if (__conv == 'c' || __conv == 'x')
! 	  {
! 	    auto __d = _S_days(__t); // Either sys_days or local_days.
! 	    using _TDays = decltype(__d);
! 	    const year_month_day __ymd(__d);
! 	    const auto __y = __ymd.year();
  
! 	    __tm.tm_year = (int)__y - 1900;
! 	    __tm.tm_yday = (__d - _TDays(__y/January/1)).count();
! 	    __tm.tm_mon = (unsigned)__ymd.month() - 1;
! 	    __tm.tm_mday = (unsigned)__ymd.day();
! 	    __tm.tm_wday = weekday(__d).c_encoding();
! 	  }
  
! 	  if (__conv != 'x')
! 	  {
! 	    const auto __hms = _S_hms(__t);
! 	    __tm.tm_hour = __hms.hours().count();
! 	    __tm.tm_min = __hms.minutes().count();
! 	    __tm.tm_sec = __hms.seconds().count();
! 	  }
! 
! 	  return _M_locale_fmt(std::move(__out), _M_locale(__ctx), __tm,
! 			       __conv, __mod);
  	}
  
        template<typename _Tp, typename _FormatContext>
*************** namespace __format
*** 1219,1243 ****
  
        template<typename _Tp, typename _FormatContext>
  	typename _FormatContext::iterator
- 	_M_r(const _Tp& __tt, typename _FormatContext::iterator __out,
- 	     _FormatContext& __ctx) const
- 	{
- 	  // %r locale's 12-hour clock time.
- 	  auto __t = _S_floor_seconds(__tt);
- 	  locale __loc = _M_locale(__ctx);
- 	  const auto& __tp = use_facet<__timepunct<_CharT>>(__loc);
- 	  const _CharT* __ampm_fmt;
- 	  __tp._M_am_pm_format(&__ampm_fmt);
- 	  basic_string<_CharT> __fmt(_S_empty_spec);
- 	  __fmt.insert(1u, 1u, _S_colon);
- 	  __fmt.insert(2u, __ampm_fmt);
- 	  using _FmtStr = _Runtime_format_string<_CharT>;
- 	  return _M_write(std::move(__out), __loc,
- 			  std::format(__loc, _FmtStr(__fmt), __t));
- 	}
- 
-       template<typename _Tp, typename _FormatContext>
- 	typename _FormatContext::iterator
  	_M_R_T(const _Tp& __t, typename _FormatContext::iterator __out,
  	       _FormatContext& __ctx, bool __secs) const
  	{
--- 1225,1230 ----
*************** namespace __format
*** 1411,1463 ****
  
        template<typename _Tp, typename _FormatContext>
  	typename _FormatContext::iterator
- 	_M_x(const _Tp& __t, typename _FormatContext::iterator __out,
- 	     _FormatContext& __ctx, bool __mod = false) const
- 	{
- 	  // %x  Locale's date rep
- 	  // %Ex Locale's alternative date representation.
- 	  locale __loc = _M_locale(__ctx);
- 	  const auto& __tp = use_facet<__timepunct<_CharT>>(__loc);
- 	  const _CharT* __date_reps[2];
- 	  __tp._M_date_formats(__date_reps);
- 	  const _CharT* __rep = __date_reps[__mod];
- 	  if (!*__rep)
- 	    return _M_D(__t, std::move(__out), __ctx);
- 
- 	  basic_string<_CharT> __fmt(_S_empty_spec);
- 	  __fmt.insert(1u, 1u, _S_colon);
- 	  __fmt.insert(2u, __rep);
- 	  using _FmtStr = _Runtime_format_string<_CharT>;
- 	  return _M_write(std::move(__out), __loc,
- 			  std::format(__loc, _FmtStr(__fmt), __t));
- 	}
- 
-       template<typename _Tp, typename _FormatContext>
- 	typename _FormatContext::iterator
- 	_M_X(const _Tp& __tt, typename _FormatContext::iterator __out,
- 	     _FormatContext& __ctx, bool __mod = false) const
- 	{
- 	  // %X  Locale's time rep
- 	  // %EX Locale's alternative time representation.
- 	  auto __t = _S_floor_seconds(__tt);
- 	  locale __loc = _M_locale(__ctx);
- 	  const auto& __tp = use_facet<__timepunct<_CharT>>(__loc);
- 	  const _CharT* __time_reps[2];
- 	  __tp._M_time_formats(__time_reps);
- 	  const _CharT* __rep = __time_reps[__mod];
- 	  if (!*__rep)
- 	    return _M_R_T(__t, std::move(__out), __ctx, true);
- 
- 	  basic_string<_CharT> __fmt(_S_empty_spec);
- 	  __fmt.insert(1u, 1u, _S_colon);
- 	  __fmt.insert(2u, __rep);
- 	  using _FmtStr = _Runtime_format_string<_CharT>;
- 	  return _M_write(std::move(__out), __loc,
- 			  std::format(__loc, _FmtStr(__fmt), __t));
- 	}
- 
-       template<typename _Tp, typename _FormatContext>
- 	typename _FormatContext::iterator
  	_M_z(const _Tp& __t, typename _FormatContext::iterator __out,
  	     _FormatContext&, bool __mod = false) const
  	{
--- 1398,1403 ----
*************** namespace __format
*** 1905,1911 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Month|__format::_Day); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 1845,1851 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Month); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
diff -Nrcpad gcc-15-20250628/libstdc++-v3/include/bits/stl_uninitialized.h gcc-15-20250705/libstdc++-v3/include/bits/stl_uninitialized.h
*** gcc-15-20250628/libstdc++-v3/include/bits/stl_uninitialized.h	Sat Jun 28 22:32:34 2025
--- gcc-15-20250705/libstdc++-v3/include/bits/stl_uninitialized.h	Sat Jul  5 22:32:33 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 357,363 ****
  			  std::__niter_base(__last),
  			  __x);
  	  else
! 	    std::__do_uninit_copy(__first, __last, __x);
  	}
  
        // Overload for pointers.
--- 357,363 ----
  			  std::__niter_base(__last),
  			  __x);
  	  else
! 	    std::__do_uninit_fill(__first, __last, __x);
  	}
  
        // Overload for pointers.
diff -Nrcpad gcc-15-20250628/libstdc++-v3/include/std/ranges gcc-15-20250705/libstdc++-v3/include/std/ranges
*** gcc-15-20250628/libstdc++-v3/include/std/ranges	Sat Jun 28 22:32:34 2025
--- gcc-15-20250705/libstdc++-v3/include/std/ranges	Sat Jul  5 22:32:33 2025
*************** namespace ranges
*** 9735,9741 ****
      end() requires (!(__detail::__simple_view<_Vs> && ...))
      {
        constexpr auto __n = sizeof...(_Vs);
!       if constexpr ((semiregular<iterator_t<_Vs>> && ...)
  		    && common_range<_Vs...[__n - 1]>)
  	return _Iterator<false>(this, in_place_index<__n - 1>,
  				ranges::end(std::get<__n - 1>(_M_views)));
--- 9735,9741 ----
      end() requires (!(__detail::__simple_view<_Vs> && ...))
      {
        constexpr auto __n = sizeof...(_Vs);
!       if constexpr (__detail::__all_forward<false, _Vs...>
  		    && common_range<_Vs...[__n - 1]>)
  	return _Iterator<false>(this, in_place_index<__n - 1>,
  				ranges::end(std::get<__n - 1>(_M_views)));
*************** namespace ranges
*** 9747,9753 ****
      end() const requires (range<const _Vs> && ...) && __detail::__concatable<const _Vs...>
      {
        constexpr auto __n = sizeof...(_Vs);
!       if constexpr ((semiregular<iterator_t<const _Vs>> && ...)
  		    && common_range<const _Vs...[__n - 1]>)
  	return _Iterator<true>(this, in_place_index<__n - 1>,
  			       ranges::end(std::get<__n - 1>(_M_views)));
--- 9747,9753 ----
      end() const requires (range<const _Vs> && ...) && __detail::__concatable<const _Vs...>
      {
        constexpr auto __n = sizeof...(_Vs);
!       if constexpr (__detail::__all_forward<true, _Vs...>
  		    && common_range<const _Vs...[__n - 1]>)
  	return _Iterator<true>(this, in_place_index<__n - 1>,
  			       ranges::end(std::get<__n - 1>(_M_views)));
diff -Nrcpad gcc-15-20250628/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/120931.cc gcc-15-20250705/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/120931.cc
*** gcc-15-20250628/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/120931.cc	Thu Jan  1 00:00:00 1970
--- gcc-15-20250705/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/120931.cc	Sat Jul  5 22:32:34 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-options "-std=gnu++98" }
+ // { dg-do compile { target c++98_only } }
+ // std::deque<character types>::resize() method fails with -std=c++98
+ 
+ #include <memory>
+ #include <testsuite_iterators.h>
+ 
+ void
+ test_pr120931()
+ {
+   using __gnu_test::test_container;
+   using __gnu_test::forward_iterator_wrapper;
+   unsigned char c[1];
+   test_container<unsigned char, forward_iterator_wrapper> f(c);
+   std::uninitialized_fill(f.begin(), f.end(), 0);
+ }
diff -Nrcpad gcc-15-20250628/libstdc++-v3/testsuite/std/ranges/concat/1.cc gcc-15-20250705/libstdc++-v3/testsuite/std/ranges/concat/1.cc
*** gcc-15-20250628/libstdc++-v3/testsuite/std/ranges/concat/1.cc	Sat Jun 28 22:32:36 2025
--- gcc-15-20250705/libstdc++-v3/testsuite/std/ranges/concat/1.cc	Sat Jul  5 22:32:38 2025
*************** test04()
*** 99,104 ****
--- 99,116 ----
    using type = decltype(v);
  }
  
+ void
+ test05()
+ {
+   // PR libstdc++/120934 - views::concat is ill-formed depending on argument order
+   auto v1 = views::single(1);
+   std::vector<int> vec = {2, 3};
+   auto v2 = views::join(views::transform(vec, views::single));
+ 
+   static_assert( ranges::range<decltype(views::concat(v1, v2))> );
+   static_assert( ranges::range<decltype(views::concat(v2, v1))> );
+ }
+ 
  int
  main()
  {
*************** main()
*** 107,110 ****
--- 119,123 ----
    test02();
    test03();
    test04();
+   test05();
  }
diff -Nrcpad gcc-15-20250628/libstdc++-v3/testsuite/std/time/format/pr117214.cc gcc-15-20250705/libstdc++-v3/testsuite/std/time/format/pr117214.cc
*** gcc-15-20250628/libstdc++-v3/testsuite/std/time/format/pr117214.cc	Sat Jun 28 22:32:36 2025
--- gcc-15-20250705/libstdc++-v3/testsuite/std/time/format/pr117214.cc	Sat Jul  5 22:32:38 2025
***************
*** 7,16 ****
  
  #include <chrono>
  #include <locale>
  #include <testsuite_hooks.h>
  
  void
! test_c()
  {
    const char *test_locales[] = {
      "aa_DJ.UTF-8",
--- 7,20 ----
  
  #include <chrono>
  #include <locale>
+ #include <span>
  #include <testsuite_hooks.h>
  
+ 
+ template<typename ChronoType>
  void
! test_locale_formats(const ChronoType& t,
! 		    std::span<const char* const> test_specifiers)
  {
    const char *test_locales[] = {
      "aa_DJ.UTF-8",
*************** test_c()
*** 19,33 ****
      "az_IR.UTF-8",
      "my_MM.UTF-8",
    };
-   std::chrono::sys_seconds t{std::chrono::seconds{1}};
  
    for (auto locale_name : test_locales)
    {
!     auto s = std::format(std::locale(locale_name), "{:L%c}", t);
!     VERIFY( !s.empty() );
    }
  }
  
  #include <stdlib.h>
  #include <time.h>
  
--- 23,66 ----
      "az_IR.UTF-8",
      "my_MM.UTF-8",
    };
  
+   auto format_args = std::make_format_args(t);
    for (auto locale_name : test_locales)
    {
!     std::locale loc(locale_name);
!     for (auto specifier : test_specifiers)
!     {
!       auto s = std::vformat(loc, specifier, format_args);
!       VERIFY( !s.empty() );
!     }
    }
  }
  
+ void
+ test_locale_formats()
+ {
+   using namespace std::chrono;
+ 
+   const char* test_specifiers[] = {
+     "{:L%x}", "{:L%Ex}",
+     "{:L%c}", "{:L%Ec}",
+     "{:L%X}", "{:L%EX}",
+     "{:L%r}",
+   };
+   auto date_time_specifiers = std::span(test_specifiers);
+   auto date_specifiers = date_time_specifiers.subspan(0, 2);
+   auto time_specifiers = date_time_specifiers.subspan(4);
+ 
+   auto ymd = 2020y/November/12d;
+   test_locale_formats(ymd, date_specifiers);
+ 
+   auto tod = 25h + 10min + 12s;
+   test_locale_formats(tod, time_specifiers);
+ 
+   auto tp = sys_days(ymd) + tod;
+   test_locale_formats(tp, date_time_specifiers);
+ }
+ 
  #include <stdlib.h>
  #include <time.h>
  
*************** test_c_local()
*** 93,99 ****
  
  int main()
  {
!   test_c();
    test_c_zoned();
    test_c_local();
  }
--- 126,132 ----
  
  int main()
  {
!   test_locale_formats();
    test_c_zoned();
    test_c_local();
  }
