diff -Nrcpad gcc-12-20250618/LAST_UPDATED gcc-12-20250625/LAST_UPDATED
*** gcc-12-20250618/LAST_UPDATED	Wed Jun 18 22:33:27 2025
--- gcc-12-20250625/LAST_UPDATED	Wed Jun 25 22:33:35 2025
***************
*** 1 ****
! Obtained from git: releases/gcc-12 revision 0a20ad9351c64c6dc6b65c0ff2c465adb941b6a0
--- 1 ----
! Obtained from git: releases/gcc-12 revision ee04d1554aa87d6155bd96e38c91351871273b51
diff -Nrcpad gcc-12-20250618/MD5SUMS gcc-12-20250625/MD5SUMS
*** gcc-12-20250618/MD5SUMS	Wed Jun 18 22:33:32 2025
--- gcc-12-20250625/MD5SUMS	Wed Jun 25 22:33:45 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-12-20250618.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-12-20250625.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 21,27 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 184369c06ce0a760792d6cca21b85d31  LAST_UPDATED
  e854cb1e639422e089031eba0c689e15  MAINTAINERS
  5b26d0dff99e7a528342ab4d77a284df  Makefile.def
  e2f1751d40a9663c173f048c1179539e  Makefile.in
--- 21,27 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 2cc0915acfee20dc1e93d762d1285e96  LAST_UPDATED
  e854cb1e639422e089031eba0c689e15  MAINTAINERS
  5b26d0dff99e7a528342ab4d77a284df  Makefile.def
  e2f1751d40a9663c173f048c1179539e  Makefile.in
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 471,477 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! eecddfb7063b056ab4ac4046d9da4f04  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 471,477 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! b5152831e23ce253dba8701332cfd0ec  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 505,511 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 9923e96702e14739479f35f431ca14d1  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 505,511 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! c2b049aafeb16d45271039b11ba0213e  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** af85d0ff6d4cd15b14460985c816bbb3  gcc/co
*** 3904,3910 ****
  bc068488ad4d00d93e15004aec10c28f  gcc/config/i386/i386-passes.def
  ec6047eefecd3fcbd1f5f5e73eedfe2f  gcc/config/i386/i386-protos.h
  a7b8c6f1f22d4528f0b70d53a2cd8673  gcc/config/i386/i386.cc
! e45edc262f1ecd626dce96c4cf42c177  gcc/config/i386/i386.h
  50c085de5bff2f31e14c488e9e916548  gcc/config/i386/i386.md
  7abb49886360a7038bbe29d74fa68b6f  gcc/config/i386/i386.opt
  916e372af07c88992a4dde741f963eac  gcc/config/i386/i386elf.h
--- 3904,3910 ----
  bc068488ad4d00d93e15004aec10c28f  gcc/config/i386/i386-passes.def
  ec6047eefecd3fcbd1f5f5e73eedfe2f  gcc/config/i386/i386-protos.h
  a7b8c6f1f22d4528f0b70d53a2cd8673  gcc/config/i386/i386.cc
! 24dcc86a446ed2e253e4f6b319d3a46d  gcc/config/i386/i386.h
  50c085de5bff2f31e14c488e9e916548  gcc/config/i386/i386.md
  7abb49886360a7038bbe29d74fa68b6f  gcc/config/i386/i386.opt
  916e372af07c88992a4dde741f963eac  gcc/config/i386/i386elf.h
*************** b81f031d36161f2b75151b5503458623  gcc/co
*** 5072,5078 ****
  5f947cfa4f11adffe84f558e88a17922  gcc/coroutine-passes.cc
  0fa89640cf054df390ce1a7cc7f2a797  gcc/coverage.cc
  b0252895005c33390b86f406799d9e70  gcc/coverage.h
! 235a29cd317e5435cde0f8dc430468a2  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
--- 5072,5078 ----
  5f947cfa4f11adffe84f558e88a17922  gcc/coroutine-passes.cc
  0fa89640cf054df390ce1a7cc7f2a797  gcc/coverage.cc
  b0252895005c33390b86f406799d9e70  gcc/coverage.h
! 5c5606567d4fe706b1099e28c718e467  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
*************** ac087fd972ce85a0d0bf281183e87a5f  gcc/cp
*** 5152,5158 ****
  dee781c4e5da6a9ed8a8ed1119c12dbb  gcc/cp/parser.h
  aec4c4c5b751a43f7fc4066809b0ab7e  gcc/cp/pt.cc
  39ea1e495d971ae62d15c580b9b26531  gcc/cp/ptree.cc
! a69253bf5f41f60f5be44abcb3134ee0  gcc/cp/rtti.cc
  763aed8f1a637266774e6466b1b98345  gcc/cp/search.cc
  66d1f1061ecd73d3cd36fc7fa1272b69  gcc/cp/semantics.cc
  9b6bbdbb821569ceb50a5032790ae90b  gcc/cp/tree.cc
--- 5152,5158 ----
  dee781c4e5da6a9ed8a8ed1119c12dbb  gcc/cp/parser.h
  aec4c4c5b751a43f7fc4066809b0ab7e  gcc/cp/pt.cc
  39ea1e495d971ae62d15c580b9b26531  gcc/cp/ptree.cc
! 731b5588c718f95bb18be9d8bc5f387b  gcc/cp/rtti.cc
  763aed8f1a637266774e6466b1b98345  gcc/cp/search.cc
  66d1f1061ecd73d3cd36fc7fa1272b69  gcc/cp/semantics.cc
  9b6bbdbb821569ceb50a5032790ae90b  gcc/cp/tree.cc
*************** a2fcc43c6167952462815a241fa20c2d  gcc/do
*** 5479,5485 ****
  607216c84fb912edd028f62a1869d856  gcc/doc/install.texi
  83bdbd3efd0ffdf2178c97f60413b453  gcc/doc/install.texi2html
  8e0aeb138252c5b0cc976f5c554be2d0  gcc/doc/interface.texi
! 318e72406d2ec56985cb538928528893  gcc/doc/invoke.texi
  93a82af201aef19ff405acd00915277e  gcc/doc/languages.texi
  0f02293e0eb313d57f6242dda564ff0d  gcc/doc/libgcc.texi
  de63c5bbc556a96d33ce1ee36e44532b  gcc/doc/loop.texi
--- 5479,5485 ----
  607216c84fb912edd028f62a1869d856  gcc/doc/install.texi
  83bdbd3efd0ffdf2178c97f60413b453  gcc/doc/install.texi2html
  8e0aeb138252c5b0cc976f5c554be2d0  gcc/doc/interface.texi
! 9e15152190ddd9d3c3b3abc2c67bc3e5  gcc/doc/invoke.texi
  93a82af201aef19ff405acd00915277e  gcc/doc/languages.texi
  0f02293e0eb313d57f6242dda564ff0d  gcc/doc/libgcc.texi
  de63c5bbc556a96d33ce1ee36e44532b  gcc/doc/loop.texi
*************** bbca916c48235ccd181eeac0628a881d  gcc/gg
*** 5734,5740 ****
  9e34b6c0ac98f04d76ac1c5ac6498112  gcc/gimple-array-bounds.h
  c09c9c82904f715ce24dbb5f5e7ae143  gcc/gimple-builder.cc
  71288f9828f96bb6d528314ca5d455fd  gcc/gimple-builder.h
! f50e26d784233d2ffe55ee17bc3ac46a  gcc/gimple-expr.cc
  d1de4fb8ce13938f7c3dd22dd3afe622  gcc/gimple-expr.h
  25a27a65de48e4e7a122c73966e97a75  gcc/gimple-fold.cc
  759408e1e968762ac2845df7ae6efa73  gcc/gimple-fold.h
--- 5734,5740 ----
  9e34b6c0ac98f04d76ac1c5ac6498112  gcc/gimple-array-bounds.h
  c09c9c82904f715ce24dbb5f5e7ae143  gcc/gimple-builder.cc
  71288f9828f96bb6d528314ca5d455fd  gcc/gimple-builder.h
! b0ddb2208f015fb8e455aae7c60c9f72  gcc/gimple-expr.cc
  d1de4fb8ce13938f7c3dd22dd3afe622  gcc/gimple-expr.h
  25a27a65de48e4e7a122c73966e97a75  gcc/gimple-fold.cc
  759408e1e968762ac2845df7ae6efa73  gcc/gimple-fold.h
*************** f9d354fe0de883a8e04540c764cf1128  gcc/gi
*** 5745,5751 ****
  6800bca49ee3d1f5c964f5ff789b91ec  gcc/gimple-iterator.h
  273c34c7e5f11b3c27736f861ff39dd1  gcc/gimple-laddress.cc
  ea6739e1baae6fef631091cd341aeb7a  gcc/gimple-loop-interchange.cc
! 278049a0befd1100b7907765baf0b1a2  gcc/gimple-loop-jam.cc
  f5fb978108285be3c589c1080dbbad96  gcc/gimple-loop-versioning.cc
  14024b204b227ade2750e2161a5c3082  gcc/gimple-low.cc
  e5fb54e1c9ffbbb7c5e6cff5991f2104  gcc/gimple-low.h
--- 5745,5751 ----
  6800bca49ee3d1f5c964f5ff789b91ec  gcc/gimple-iterator.h
  273c34c7e5f11b3c27736f861ff39dd1  gcc/gimple-laddress.cc
  ea6739e1baae6fef631091cd341aeb7a  gcc/gimple-loop-interchange.cc
! f1ff1431a140157a282a2d1b0a78b39d  gcc/gimple-loop-jam.cc
  f5fb978108285be3c589c1080dbbad96  gcc/gimple-loop-versioning.cc
  14024b204b227ade2750e2161a5c3082  gcc/gimple-low.cc
  e5fb54e1c9ffbbb7c5e6cff5991f2104  gcc/gimple-low.h
*************** cedfeeeb6a89b08187da0a55778ff05c  gcc/gi
*** 5798,5804 ****
  b1f2597055332f7a009df2374360eee2  gcc/gimple.h
  1a79444af2bcf0c019b20c37cb346635  gcc/gimplify-me.cc
  489260dcd67a90caca7adf7b361f9078  gcc/gimplify-me.h
! 003f1a25a262592c94fdebaa6d746138  gcc/gimplify.cc
  acbd4cf19da012507fa6f90cc988cc15  gcc/gimplify.h
  4b707ba8acc84c0c2c69cd7d11b0b878  gcc/ginclude/float.h
  5e92ed0886d68a4cce339044cf03cd57  gcc/ginclude/iso646.h
--- 5798,5804 ----
  b1f2597055332f7a009df2374360eee2  gcc/gimple.h
  1a79444af2bcf0c019b20c37cb346635  gcc/gimplify-me.cc
  489260dcd67a90caca7adf7b361f9078  gcc/gimplify-me.h
! adc06b7bc4e15aaf432bdf822037fa7f  gcc/gimplify.cc
  acbd4cf19da012507fa6f90cc988cc15  gcc/gimplify.h
  4b707ba8acc84c0c2c69cd7d11b0b878  gcc/ginclude/float.h
  5e92ed0886d68a4cce339044cf03cd57  gcc/ginclude/iso646.h
*************** af937d6371bfc6dae1126fa3b845a40d  gcc/ip
*** 5941,5947 ****
  c902d1e07ec7e9d3fc10e9ad37aa9a67  gcc/ipa-devirt.cc
  e53488d9d3ac74d139bab421e0486e33  gcc/ipa-fnsummary.cc
  634795391b1718599123e8f6f5dd1068  gcc/ipa-fnsummary.h
! b34559e01a3cf2fa5b4a65c745283e25  gcc/ipa-free-lang-data.cc
  cec97b36e5b622b3af7c95f2d53e3a73  gcc/ipa-icf-gimple.cc
  ac03bc194f37ee5eb93086c446e09d46  gcc/ipa-icf-gimple.h
  0ce567e80b74cab5db05bbd7c890c3b8  gcc/ipa-icf.cc
--- 5941,5947 ----
  c902d1e07ec7e9d3fc10e9ad37aa9a67  gcc/ipa-devirt.cc
  e53488d9d3ac74d139bab421e0486e33  gcc/ipa-fnsummary.cc
  634795391b1718599123e8f6f5dd1068  gcc/ipa-fnsummary.h
! e4ac2034c1b934240fac069ac8fe8cdb  gcc/ipa-free-lang-data.cc
  cec97b36e5b622b3af7c95f2d53e3a73  gcc/ipa-icf-gimple.cc
  ac03bc194f37ee5eb93086c446e09d46  gcc/ipa-icf-gimple.h
  0ce567e80b74cab5db05bbd7c890c3b8  gcc/ipa-icf.cc
*************** e3a631a3659e24702ef403fc44290218  gcc/ip
*** 5952,5958 ****
  1fa2c0c59dc4da56860cc6f2a97f7f83  gcc/ipa-inline.h
  df25330f62b3dfe116e3d208d97382c0  gcc/ipa-modref-tree.cc
  e232a9fa53a9e55ca7d904fd6d08cfd3  gcc/ipa-modref-tree.h
! 438e6b0e3e56b400e9d473dc6dd54b25  gcc/ipa-modref.cc
  a1998332fb371fefb1d136e55f251318  gcc/ipa-modref.h
  a3ac337da07de091ab3c184819c1c37e  gcc/ipa-param-manipulation.cc
  1642ce52f56ac97998826713b05f7f8e  gcc/ipa-param-manipulation.h
--- 5952,5958 ----
  1fa2c0c59dc4da56860cc6f2a97f7f83  gcc/ipa-inline.h
  df25330f62b3dfe116e3d208d97382c0  gcc/ipa-modref-tree.cc
  e232a9fa53a9e55ca7d904fd6d08cfd3  gcc/ipa-modref-tree.h
! 126441c3cc34afc6a7879bc1532876bb  gcc/ipa-modref.cc
  a1998332fb371fefb1d136e55f251318  gcc/ipa-modref.h
  a3ac337da07de091ab3c184819c1c37e  gcc/ipa-param-manipulation.cc
  1642ce52f56ac97998826713b05f7f8e  gcc/ipa-param-manipulation.h
*************** daebc1236d16034267b252a3005afafe  gcc/lt
*** 6115,6121 ****
  f8113169f67aa54af90435250435dd6c  gcc/lto-streamer.cc
  2936f9135f911160faf0cb4b721086ea  gcc/lto-streamer.h
  c6b404aebb74d7a1c0ea56a649ed875f  gcc/lto-wrapper.cc
! 1552594aca4c68b158c4e26253ed94a5  gcc/lto/ChangeLog
  3abc3928a490a07a555d38d6e8879173  gcc/lto/Make-lang.in
  26c76b7cd7c3c43bd918e8cf35d2e1c8  gcc/lto/common.cc
  f4c6748bc258cf396c8c26902b79122c  gcc/lto/common.h
--- 6115,6121 ----
  f8113169f67aa54af90435250435dd6c  gcc/lto-streamer.cc
  2936f9135f911160faf0cb4b721086ea  gcc/lto-streamer.h
  c6b404aebb74d7a1c0ea56a649ed875f  gcc/lto-wrapper.cc
! 14c6efeb1482c831e2e667309695dceb  gcc/lto/ChangeLog
  3abc3928a490a07a555d38d6e8879173  gcc/lto/Make-lang.in
  26c76b7cd7c3c43bd918e8cf35d2e1c8  gcc/lto/common.cc
  f4c6748bc258cf396c8c26902b79122c  gcc/lto/common.h
*************** f31532497458ba97547513ece031819c  gcc/lt
*** 6129,6135 ****
  e719d993ca5644498c09e65a9997d4a8  gcc/lto/lto-object.cc
  4fd3b5c29ead1d413aff659921336d56  gcc/lto/lto-partition.cc
  b3aeaab4af3bbe880adc32eab519bbd0  gcc/lto/lto-partition.h
! 5856df4a1de591e39896c5c3bfb1e56f  gcc/lto/lto-symtab.cc
  7f60a7cb3744a70b89288720475121b0  gcc/lto/lto-symtab.h
  961812bc8fc7de0dd27cdc381f40e3ef  gcc/lto/lto-tree.h
  bf5e6aa2269343ff80fdecaeae86c158  gcc/lto/lto.cc
--- 6129,6135 ----
  e719d993ca5644498c09e65a9997d4a8  gcc/lto/lto-object.cc
  4fd3b5c29ead1d413aff659921336d56  gcc/lto/lto-partition.cc
  b3aeaab4af3bbe880adc32eab519bbd0  gcc/lto/lto-partition.h
! 282f584d095d289b6f3970b0873aea87  gcc/lto/lto-symtab.cc
  7f60a7cb3744a70b89288720475121b0  gcc/lto/lto-symtab.h
  961812bc8fc7de0dd27cdc381f40e3ef  gcc/lto/lto-tree.h
  bf5e6aa2269343ff80fdecaeae86c158  gcc/lto/lto.cc
*************** bdb7861240a719686c5923e70bd8347a  gcc/ta
*** 6419,6425 ****
  6149228cab283a1f92d51b26eb37646e  gcc/targhooks.cc
  008304bca4d8ea66f0c9bc8749e23bb5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 06bea2678ac07119d0553e31d1ceb84a  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 6419,6425 ----
  6149228cab283a1f92d51b26eb37646e  gcc/targhooks.cc
  008304bca4d8ea66f0c9bc8749e23bb5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! abad37d2e7d0fcb191494ab75133ffa3  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** cac1beb5973f2ae7f413286aea273726  gcc/te
*** 20668,20673 ****
--- 20668,20674 ----
  8b0aae3760bbbdbb56a12a24c02e7d7e  gcc/testsuite/g++.dg/lto/pr101396_0.C
  ac5555b4df88275d04e41aa95b0aca9a  gcc/testsuite/g++.dg/lto/pr101396_1.C
  57e4a1572912531a0ef7ae5e66a36910  gcc/testsuite/g++.dg/lto/pr105399_0.C
+ 6e7e7fc204b3df6d8de9823aac948376  gcc/testsuite/g++.dg/lto/pr107467_0.C
  ba9b686c163762488051ec4094a838b2  gcc/testsuite/g++.dg/lto/pr40818_0.C
  08a786b250f802e56e458c7d60a358fc  gcc/testsuite/g++.dg/lto/pr42987_0.C
  1b56fef803fe85ec97121919ad3ba2b9  gcc/testsuite/g++.dg/lto/pr42987_1.C
*************** cb3b0d87ebb06649d90f205f72680272  gcc/te
*** 23462,23467 ****
--- 23463,23469 ----
  18b9174889675eec328ca8173a24e49a  gcc/testsuite/g++.dg/pr104869.C
  152c50eb40e9677388868b9fc74192a1  gcc/testsuite/g++.dg/pr105276.C
  2fed98e7e2272502be0cfa68e9b4dca8  gcc/testsuite/g++.dg/pr105871.C
+ 6431e5522e8138d482199836afdeb823  gcc/testsuite/g++.dg/pr114501_0.C
  2ac64817a39fe1a5c2dc328f4233cda1  gcc/testsuite/g++.dg/pr37742.C
  32b2fbda29ffd2ac2181c43c971f3a7d  gcc/testsuite/g++.dg/pr44328.C
  e43b4ea2d038b181b57782d5d56d22ba  gcc/testsuite/g++.dg/pr44486.C
*************** e0f2cfb1a1f922a19280efa88e1e5f1c  gcc/te
*** 25484,25491 ****
--- 25486,25495 ----
  fa23934e49741783f674026ff5030aff  gcc/testsuite/g++.dg/torture/pr108166.C
  695916482bd1d276cc3c727b90232254  gcc/testsuite/g++.dg/torture/pr109724.C
  4b7c75dc51b97d5dc81c7e936ff3b460  gcc/testsuite/g++.dg/torture/pr111019.C
+ 6766aa21b009a63d71d22aa6baba228d  gcc/testsuite/g++.dg/torture/pr111245.C
  f5cb8caa482838045861d5ee18445814  gcc/testsuite/g++.dg/torture/pr113896.C
  6c3c5585841ff28b7c4ab8a61978f689  gcc/testsuite/g++.dg/torture/pr113994.C
+ f298eddbaaad3dfdc15f6cf9683ff08a  gcc/testsuite/g++.dg/torture/pr11911.C
  9df51f0b5a7e716286f2e97dfd28d477  gcc/testsuite/g++.dg/torture/pr119610.C
  161154ed9f6193a2a7da119e068c3f3f  gcc/testsuite/g++.dg/torture/pr27218.C
  a84e9fff95df4801f8e582fbc33303b8  gcc/testsuite/g++.dg/torture/pr30252.C
*************** f67a44e9e2f963084509149bec7655af  gcc/te
*** 40877,40882 ****
--- 40881,40888 ----
  833668f47a5741405cf53fc58d31d1bc  gcc/testsuite/gcc.dg/lto/pr88077_1.c
  c51c424cae679b65a2dc52ea3ddc96d9  gcc/testsuite/gcc.dg/lto/pr88297_0.c
  14664c531ea727ce3e6cd733560c6895  gcc/testsuite/gcc.dg/lto/pr88297_1.c
+ 0e4761398a1a807133de9d1dbb23f8dc  gcc/testsuite/gcc.dg/lto/pr91299_0.c
+ 2fa66cdf16d22012d4837a0c72b33169  gcc/testsuite/gcc.dg/lto/pr91299_1.c
  8333794e711e91fcca018cc86d41ea1e  gcc/testsuite/gcc.dg/lto/pr91393_0.c
  792aee8f66fa8c921ace23ab0bacbfa0  gcc/testsuite/gcc.dg/lto/pr93015_0.c
  452562151ef3b606235a43b661fb5f32  gcc/testsuite/gcc.dg/lto/pr93384_0.c
*************** cbe7e390158f186ae3fd0f808bea7563  gcc/te
*** 41458,41463 ****
--- 41464,41470 ----
  70303171ed7f5b2cba05e6b98daad2ab  gcc/testsuite/gcc.dg/pr101384.c
  566100ed369cb8ddbb77ca59ac7f4416  gcc/testsuite/gcc.dg/pr101403.c
  cf17d565e22770879e54b6d0b5f98c72  gcc/testsuite/gcc.dg/pr101419.c
+ 2d3f29a2cab8840cb09367ff4d489fae  gcc/testsuite/gcc.dg/pr101478.c
  51fa849c28379b9795b20cbcf5bd8067  gcc/testsuite/gcc.dg/pr101496.c
  82ba8f6dfa7a7a8e6eb6d73d5c8df572  gcc/testsuite/gcc.dg/pr101497.c
  fea990856f92887377e1bb43b4bd09e3  gcc/testsuite/gcc.dg/pr101741.c
*************** f97f1cf6ac420452092fc3fba4203574  gcc/te
*** 41618,41623 ****
--- 41625,41631 ----
  e5517dc2a2e07c9b2472bb545cd5a722  gcc/testsuite/gcc.dg/pr112837.c
  6b73a8d375ddff23d86f9f1c9377f381  gcc/testsuite/gcc.dg/pr112845.c
  68812a8a18bdcb8c9b56b83823f8a853  gcc/testsuite/gcc.dg/pr113013.c
+ 1eee6a6a3094137236b099c0bc7604f7  gcc/testsuite/gcc.dg/pr113207.c
  da36c4c045a6839485d1209b636f2fa6  gcc/testsuite/gcc.dg/pr113262.c
  e68a7c7f2d1db31e0e0e0a23960975a7  gcc/testsuite/gcc.dg/pr113907-1.c
  12ecf3bc0aab66a39903f50c4a6dfc66  gcc/testsuite/gcc.dg/pr114115.c
*************** e289e3514153e0ffe8b5b086904f40c4  gcc/te
*** 44764,44777 ****
--- 44772,44788 ----
  5a3dd17b41272920e3804d1b42cba87e  gcc/testsuite/gcc.dg/torture/pr111917.c
  1e5a5be4efef1ee222e142fcbc25978e  gcc/testsuite/gcc.dg/torture/pr112281-1.c
  3acf5c04c64ba9b942f88c4d8bde666c  gcc/testsuite/gcc.dg/torture/pr112281-2.c
+ 956dc9b1dc1c726c549e9e69ca1db5ec  gcc/testsuite/gcc.dg/torture/pr112859.c
  edb26d624826c2089120476194daef30  gcc/testsuite/gcc.dg/torture/pr114246.c
  8ebd93b45204d340baa4a9798f5bcd62  gcc/testsuite/gcc.dg/torture/pr114672.c
+ b9fe62163204f0f9de8d47547473ce6c  gcc/testsuite/gcc.dg/torture/pr115347.c
  55696235dc27ddb3d877bca135cf0b3e  gcc/testsuite/gcc.dg/torture/pr115641.c
  b9f75d112b5891dd319ae19e3779967f  gcc/testsuite/gcc.dg/torture/pr116057.c
  78733925c03c093a5b9fb429087338ac  gcc/testsuite/gcc.dg/torture/pr116412-1.c
  26feb828f8efabc996ee22e90cd17fc1  gcc/testsuite/gcc.dg/torture/pr116585.c
  59484ae831cab97471a148691d17d840  gcc/testsuite/gcc.dg/torture/pr116768.c
  7ff97033e93d5c0fd815ba8a91fcd00e  gcc/testsuite/gcc.dg/torture/pr116922.c
+ d6608e03b8048545410e7c67f9a30d4a  gcc/testsuite/gcc.dg/torture/pr117113.c
  eed87995921a41d6f215168315f20d67  gcc/testsuite/gcc.dg/torture/pr117119.c
  6e7f6e2e418f4fdf187f07ac4ce3bafa  gcc/testsuite/gcc.dg/torture/pr117243-1.c
  42c403cdb88958c3d40395d6ca302c82  gcc/testsuite/gcc.dg/torture/pr117243-2.c
*************** e3f1a326d63f28f3be9a8544a60505aa  gcc/te
*** 46548,46554 ****
  9c82573f2711f01761f4bb230b3191e5  gcc/testsuite/gcc.dg/tree-ssa/ldist-33.c
  d5c8c7bee8816f98aede8ab1448f6689  gcc/testsuite/gcc.dg/tree-ssa/ldist-34.c
  ffd9d902fd127eef04e8bc7818f04da7  gcc/testsuite/gcc.dg/tree-ssa/ldist-35.c
! e5c7ff63681748294f115b0cd63bfb05  gcc/testsuite/gcc.dg/tree-ssa/ldist-36.c
  39ce1d1e6f9138f3e7496314be545457  gcc/testsuite/gcc.dg/tree-ssa/ldist-37.c
  ffb4adebfee1a469b5b970ceca2b62d1  gcc/testsuite/gcc.dg/tree-ssa/ldist-38.c
  7bdc0c7833fb91fb8d9e59f13d759a73  gcc/testsuite/gcc.dg/tree-ssa/ldist-4.c
--- 46559,46565 ----
  9c82573f2711f01761f4bb230b3191e5  gcc/testsuite/gcc.dg/tree-ssa/ldist-33.c
  d5c8c7bee8816f98aede8ab1448f6689  gcc/testsuite/gcc.dg/tree-ssa/ldist-34.c
  ffd9d902fd127eef04e8bc7818f04da7  gcc/testsuite/gcc.dg/tree-ssa/ldist-35.c
! 426393b2d6b717d0b46325d18eefaea1  gcc/testsuite/gcc.dg/tree-ssa/ldist-36.c
  39ce1d1e6f9138f3e7496314be545457  gcc/testsuite/gcc.dg/tree-ssa/ldist-37.c
  ffb4adebfee1a469b5b970ceca2b62d1  gcc/testsuite/gcc.dg/tree-ssa/ldist-38.c
  7bdc0c7833fb91fb8d9e59f13d759a73  gcc/testsuite/gcc.dg/tree-ssa/ldist-4.c
*************** e8ad1077cbbf867b677d6dbe00524406  gcc/te
*** 47780,47785 ****
--- 47791,47797 ----
  3fada5964c97d348ed7e7e1eb62f0512  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-22.c
  6a109e21502e5353e985b8e9180f3c79  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-23.c
  99cacb357948a00b34aa1d255c66558b  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-24.c
+ a3fc09fc73db236301044a5b2f7e7fea  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-25.c
  c0ab69fe1a4b916817bbafe5e5048c34  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-3.c
  d00d2a078458d4fc876af7d2a29c241a  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-5.c
  769aa5eb478537be389d55c410c46887  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-6.c
*************** a652091690348408aec894da3d82b15d  gcc/te
*** 48788,48794 ****
--- 48800,48808 ----
  d4499294f9334e38163cb0286c7b2483  gcc/testsuite/gcc.dg/vect/pr115669.c
  3617874dc8f0f764b079db5c7e0fa79b  gcc/testsuite/gcc.dg/vect/pr116125.c
  663c319abe6475a06b3f4517706d0d00  gcc/testsuite/gcc.dg/vect/pr117307.c
+ 6fd30961e11a3501d3b6aacf53957805  gcc/testsuite/gcc.dg/vect/pr119057.c
  8312a9b4f3649f0390632c660109eb1d  gcc/testsuite/gcc.dg/vect/pr119399.c
+ f5749a6330ea4377b859350a23760b4a  gcc/testsuite/gcc.dg/vect/pr119534.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  3aed50f38aa86c4915d6e4b3cef91287  gcc/testsuite/gcc.dg/vect/pr18400.c
*************** b91162801f7d0d6af855bd692e22ab63  gcc/te
*** 67800,67805 ****
--- 67814,67820 ----
  c7fbb8c42391916088505cea2847ff00  gcc/testsuite/gcc.target/i386/pr87918.c
  4b54801016bc4b3cc228ac7dd70de407  gcc/testsuite/gcc.target/i386/pr87928.c
  4fc2942c48d13b19282e746bb6deb0f5  gcc/testsuite/gcc.target/i386/pr87955.c
+ 888e51b46121c41e1f289e80df7c57ce  gcc/testsuite/gcc.target/i386/pr87984.c
  ec61cb2764cd0d05b8fd416bac2b290b  gcc/testsuite/gcc.target/i386/pr88033.c
  a720bfe0104feb1cfa40b8ab91dc5f05  gcc/testsuite/gcc.target/i386/pr88070.c
  b14b816d91744aa96c9da5bad9de427b  gcc/testsuite/gcc.target/i386/pr88178.c
*************** a949c26e25237c08b9ccd6fe9b8b9bc5  gcc/tr
*** 92336,92342 ****
  2ff390cffec4ce4eef19e05125c9946f  gcc/tree-diagnostic.h
  2e70e020a97c25728029c911e1919869  gcc/tree-dump.cc
  25db3aa3376f8948cba551f5b4567cc1  gcc/tree-dump.h
! 4fc09aef4aa51facfbd37f9900c841c1  gcc/tree-eh.cc
  e35c2d4712dafbb07acf21e1b9026b1f  gcc/tree-eh.h
  34e742d0ff51ce5aad7049bb9eb7e26e  gcc/tree-emutls.cc
  7c2944ef15a9a1f9fb4edc1838e43cd4  gcc/tree-hash-traits.h
--- 92351,92357 ----
  2ff390cffec4ce4eef19e05125c9946f  gcc/tree-diagnostic.h
  2e70e020a97c25728029c911e1919869  gcc/tree-dump.cc
  25db3aa3376f8948cba551f5b4567cc1  gcc/tree-dump.h
! e216dfe1bd737f8b5d1ec962aadf0157  gcc/tree-eh.cc
  e35c2d4712dafbb07acf21e1b9026b1f  gcc/tree-eh.h
  34e742d0ff51ce5aad7049bb9eb7e26e  gcc/tree-emutls.cc
  7c2944ef15a9a1f9fb4edc1838e43cd4  gcc/tree-hash-traits.h
*************** f755ad1bab755167011c5bfecdd6769a  gcc/tr
*** 92349,92355 ****
  322b9d77ac824db5c790f3c3b67ace47  gcc/tree-into-ssa.h
  d9f8288dc44be70602329547ca0e049b  gcc/tree-iterator.cc
  2b518733b893d8a6df3880d3907c179c  gcc/tree-iterator.h
! 9b379517f1a3ef9badd945522f931833  gcc/tree-loop-distribution.cc
  688e3e148ea8903672d38101ae6fe6b8  gcc/tree-nested.cc
  69c73b03308d3ca47af9e15c750ba7e8  gcc/tree-nested.h
  242fbbf3b18e8eecaca863253b01cb78  gcc/tree-nrv.cc
--- 92364,92370 ----
  322b9d77ac824db5c790f3c3b67ace47  gcc/tree-into-ssa.h
  d9f8288dc44be70602329547ca0e049b  gcc/tree-iterator.cc
  2b518733b893d8a6df3880d3907c179c  gcc/tree-iterator.h
! fd168da8d3ccba8c6646cfc533acafa5  gcc/tree-loop-distribution.cc
  688e3e148ea8903672d38101ae6fe6b8  gcc/tree-nested.cc
  69c73b03308d3ca47af9e15c750ba7e8  gcc/tree-nested.h
  242fbbf3b18e8eecaca863253b01cb78  gcc/tree-nrv.cc
*************** e9fae9939f9a5d14b26478a649025c7f  gcc/tr
*** 92373,92379 ****
  a4f99ae3557e1161cd896d23217b56a4  gcc/tree-ssa-address.cc
  4233bdbcb0d4183c9631eebafa6f4820  gcc/tree-ssa-address.h
  5daf63c693503c3da59da196d885d1e6  gcc/tree-ssa-alias-compare.h
! 00863b99be56c3e8bd536dc74bdb5411  gcc/tree-ssa-alias.cc
  9693c083b57172a5de1c03311467b54f  gcc/tree-ssa-alias.h
  23fb697a5ea55d90dd0c107ea0e9fda7  gcc/tree-ssa-ccp.cc
  038e40c57d9c925b2f2ab27ce65aec68  gcc/tree-ssa-ccp.h
--- 92388,92394 ----
  a4f99ae3557e1161cd896d23217b56a4  gcc/tree-ssa-address.cc
  4233bdbcb0d4183c9631eebafa6f4820  gcc/tree-ssa-address.h
  5daf63c693503c3da59da196d885d1e6  gcc/tree-ssa-alias-compare.h
! ed4dd5acb48903e43ccc6a0ec8a84ee9  gcc/tree-ssa-alias.cc
  9693c083b57172a5de1c03311467b54f  gcc/tree-ssa-alias.h
  23fb697a5ea55d90dd0c107ea0e9fda7  gcc/tree-ssa-ccp.cc
  038e40c57d9c925b2f2ab27ce65aec68  gcc/tree-ssa-ccp.h
*************** d0589077e360719205f673fa28e27473  gcc/tr
*** 92382,92388 ****
  b5611be2889ac60f8358352f44be0eac  gcc/tree-ssa-copy.cc
  600ccda4f9fe22cfd78b024002a018a7  gcc/tree-ssa-dce.cc
  d9087990e3ccbe29be4cb2d6fbcd0d6b  gcc/tree-ssa-dce.h
! 38e1cf32b4e25aa2758552af48728c9f  gcc/tree-ssa-dom.cc
  f163bc3e9903da9f8045d8369ae0a861  gcc/tree-ssa-dom.h
  f9cc18973c8771a0395d574e80490210  gcc/tree-ssa-dse.cc
  195877f983e0a31af6302aed94fa678f  gcc/tree-ssa-dse.h
--- 92397,92403 ----
  b5611be2889ac60f8358352f44be0eac  gcc/tree-ssa-copy.cc
  600ccda4f9fe22cfd78b024002a018a7  gcc/tree-ssa-dce.cc
  d9087990e3ccbe29be4cb2d6fbcd0d6b  gcc/tree-ssa-dce.h
! 6a2887a077e63977df87a57c0d8ad12b  gcc/tree-ssa-dom.cc
  f163bc3e9903da9f8045d8369ae0a861  gcc/tree-ssa-dom.h
  f9cc18973c8771a0395d574e80490210  gcc/tree-ssa-dse.cc
  195877f983e0a31af6302aed94fa678f  gcc/tree-ssa-dse.h
*************** f9e799527e96fb43c96edcf03ebb6a85  gcc/tr
*** 92415,92421 ****
  7e14602488f8f1e7e754422dd9731b01  gcc/tree-ssa-propagate.h
  30c8e120738cd1323f3346540e6c0152  gcc/tree-ssa-reassoc.cc
  a2d407f6fd4aa95d7eb7ad8a17b81af4  gcc/tree-ssa-reassoc.h
! ea7cd890e91cdb3b96a60e5dd10d422b  gcc/tree-ssa-sccvn.cc
  9b971767e8b1b24cc98c426f1f399ed8  gcc/tree-ssa-sccvn.h
  648524d5c619edb0acece29c53601b89  gcc/tree-ssa-scopedtables.cc
  9da7a798aaf58ceb04c796be96a5bdc8  gcc/tree-ssa-scopedtables.h
--- 92430,92436 ----
  7e14602488f8f1e7e754422dd9731b01  gcc/tree-ssa-propagate.h
  30c8e120738cd1323f3346540e6c0152  gcc/tree-ssa-reassoc.cc
  a2d407f6fd4aa95d7eb7ad8a17b81af4  gcc/tree-ssa-reassoc.h
! 94d480a90769ae06baaf9c814ab5ec48  gcc/tree-ssa-sccvn.cc
  9b971767e8b1b24cc98c426f1f399ed8  gcc/tree-ssa-sccvn.h
  648524d5c619edb0acece29c53601b89  gcc/tree-ssa-scopedtables.cc
  9da7a798aaf58ceb04c796be96a5bdc8  gcc/tree-ssa-scopedtables.h
*************** f9949ff32a719d47d731381154dd534c  gcc/tr
*** 92449,92459 ****
  ada2479c712ee086a44bac5c0bb3a852  gcc/tree-vect-data-refs.cc
  15f9b3fd42e4f233ab0ddea8719251f3  gcc/tree-vect-generic.cc
  d77cf2655cb870786e919f02d9b07f1e  gcc/tree-vect-loop-manip.cc
! 7f5964b7413afc7d27c4bfb9eefe326c  gcc/tree-vect-loop.cc
  afdadaa3e7ffae199ce4c4aecbbd98ff  gcc/tree-vect-patterns.cc
  db19be1249cd94d158a20e2be7032249  gcc/tree-vect-slp-patterns.cc
! 65df980eff64de3f7638ef85bde1a911  gcc/tree-vect-slp.cc
! c2e7775bf7fd48f0f6b753bb6888f305  gcc/tree-vect-stmts.cc
  17da0c4ee2c405d67d63509bd85f801c  gcc/tree-vector-builder.cc
  81e7b3c9a18c29b53f3f017109c91f6f  gcc/tree-vector-builder.h
  541c768983210e5d6b69b9ceeaf40e4b  gcc/tree-vectorizer.cc
--- 92464,92474 ----
  ada2479c712ee086a44bac5c0bb3a852  gcc/tree-vect-data-refs.cc
  15f9b3fd42e4f233ab0ddea8719251f3  gcc/tree-vect-generic.cc
  d77cf2655cb870786e919f02d9b07f1e  gcc/tree-vect-loop-manip.cc
! 4ab34dd9315ac11dede17962910ae94c  gcc/tree-vect-loop.cc
  afdadaa3e7ffae199ce4c4aecbbd98ff  gcc/tree-vect-patterns.cc
  db19be1249cd94d158a20e2be7032249  gcc/tree-vect-slp-patterns.cc
! 302e5e573ace17cf911460468236ea24  gcc/tree-vect-slp.cc
! aa7cf3967c4e6eb4291da65a014706b1  gcc/tree-vect-stmts.cc
  17da0c4ee2c405d67d63509bd85f801c  gcc/tree-vector-builder.cc
  81e7b3c9a18c29b53f3f017109c91f6f  gcc/tree-vector-builder.h
  541c768983210e5d6b69b9ceeaf40e4b  gcc/tree-vectorizer.cc
diff -Nrcpad gcc-12-20250618/gcc/ChangeLog gcc-12-20250625/gcc/ChangeLog
*** gcc-12-20250618/gcc/ChangeLog	Wed Jun 18 22:32:12 2025
--- gcc-12-20250625/gcc/ChangeLog	Wed Jun 25 22:32:16 2025
***************
*** 1,3 ****
--- 1,149 ----
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-04-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/119706
+ 	* gimple-expr.cc (is_gimple_mem_ref_addr): Also allow
+ 	POLY_INT_CST.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-04-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/119534
+ 	* tree-vect-stmts.cc (get_load_store_type): Reject
+ 	VECTOR_BOOLEAN_TYPE_P offset vector type for emulated gathers.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-03-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/119119
+ 	* gimplify.cc (is_gimple_mem_rhs_or_call): All empty CTORs
+ 	are OK when not a register type.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-03-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/119057
+ 	* tree-vect-loop.cc (check_reduction_path): Add argument
+ 	specifying whether we're analyzing the inner loop of a
+ 	double reduction.  Do not allow extra uses outside of the
+ 	double reduction cycle in this case.
+ 	(vect_is_simple_reduction): Adjust.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/117424
+ 	* tree-eh.cc (tree_could_trap_p): Verify the base is
+ 	fully contained within a decl.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-02-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/117113
+ 	* gimple-loop-jam.cc (unroll_jam_possible_p): Detect when
+ 	we cannot handle virtual SSA update.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-03-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/114501
+ 	* ipa-free-lang-data.cc (find_decls_types_r): Explicitly
+ 	handle CONSTRUCTORs as walk_tree handling of those is
+ 	incomplete.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-02-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/113207
+ 	* ipa-free-lang-data.cc (free_lang_data_in_type): First drop
+ 	const/volatile qualifiers from function argument types,
+ 	then build a simplified type.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/112859
+ 	* tree-loop-distribution.cc
+ 	(loop_distribution::pg_add_dependence_edges): Add comment.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-01-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/112859
+ 	PR tree-optimization/115347
+ 	* tree-loop-distribution.cc
+ 	(loop_distribution::pg_add_dependence_edges): For a zero
+ 	distance vector still make sure to not have an inner
+ 	loop with zero distance.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/111245
+ 	* ipa-modref.cc (modref_access_analysis::analyze_store): Do
+ 	not guard the check of whether the stmt could throw by
+ 	cfun->can_throw_non_call_exceptions.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2024-05-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/115110
+ 	* tree-ssa-alias.cc (view_converted_memref_p): Fix.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2024-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/101478
+ 	* gimplify.cc (gimplify_addr_expr): Check we still have an
+ 	ADDR_EXPR before calling recompute_tree_invariant_for_addr_expr.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/87984
+ 	* tree-ssa-dom.cc (dom_opt_dom_walker::optimize_stmt): Do
+ 	not perform redundant store elimination to hard register
+ 	variables.
+ 	* tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
+ 	Likewise.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2023-08-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/111125
+ 	* tree-vect-slp.cc (vect_slp_function): Split at novector
+ 	loop entry, do not push blocks in novector loops.
+ 
  2025-06-17  Richard Earnshaw  <rearnsha@arm.com>
  
  	Backported from master:
diff -Nrcpad gcc-12-20250618/gcc/DATESTAMP gcc-12-20250625/gcc/DATESTAMP
*** gcc-12-20250618/gcc/DATESTAMP	Wed Jun 18 22:32:12 2025
--- gcc-12-20250625/gcc/DATESTAMP	Wed Jun 25 22:32:17 2025
***************
*** 1 ****
! 20250618
--- 1 ----
! 20250625
diff -Nrcpad gcc-12-20250618/gcc/config/i386/i386.h gcc-12-20250625/gcc/config/i386/i386.h
*** gcc-12-20250618/gcc/config/i386/i386.h	Wed Jun 18 22:32:15 2025
--- gcc-12-20250625/gcc/config/i386/i386.h	Wed Jun 25 22:32:18 2025
*************** constexpr wide_int_bitmask PTA_GOLDMONT_
*** 2350,2356 ****
    | PTA_SGX | PTA_PTWRITE;
  constexpr wide_int_bitmask PTA_TREMONT = PTA_GOLDMONT_PLUS | PTA_CLWB
    | PTA_GFNI | PTA_MOVDIRI | PTA_MOVDIR64B | PTA_CLDEMOTE | PTA_WAITPKG;
! constexpr wide_int_bitmask PTA_ALDERLAKE = PTA_TREMONT | PTA_ADX | PTA_AVX
    | PTA_AVX2 | PTA_BMI | PTA_BMI2 | PTA_F16C | PTA_FMA | PTA_LZCNT
    | PTA_PCONFIG | PTA_PKU | PTA_VAES | PTA_VPCLMULQDQ | PTA_SERIALIZE
    | PTA_HRESET | PTA_KL | PTA_WIDEKL | PTA_AVXVNNI;
--- 2350,2357 ----
    | PTA_SGX | PTA_PTWRITE;
  constexpr wide_int_bitmask PTA_TREMONT = PTA_GOLDMONT_PLUS | PTA_CLWB
    | PTA_GFNI | PTA_MOVDIRI | PTA_MOVDIR64B | PTA_CLDEMOTE | PTA_WAITPKG;
! constexpr wide_int_bitmask PTA_ALDERLAKE = PTA_GOLDMONT_PLUS | PTA_CLWB
!   | PTA_GFNI | PTA_MOVDIRI | PTA_MOVDIR64B | PTA_WAITPKG | PTA_ADX | PTA_AVX
    | PTA_AVX2 | PTA_BMI | PTA_BMI2 | PTA_F16C | PTA_FMA | PTA_LZCNT
    | PTA_PCONFIG | PTA_PKU | PTA_VAES | PTA_VPCLMULQDQ | PTA_SERIALIZE
    | PTA_HRESET | PTA_KL | PTA_WIDEKL | PTA_AVXVNNI;
diff -Nrcpad gcc-12-20250618/gcc/cp/ChangeLog gcc-12-20250625/gcc/cp/ChangeLog
*** gcc-12-20250618/gcc/cp/ChangeLog	Wed Jun 18 22:32:16 2025
--- gcc-12-20250625/gcc/cp/ChangeLog	Wed Jun 25 22:32:18 2025
***************
*** 1,3 ****
--- 1,45 ----
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-02-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c++/79786
+ 	* rtti.cc (emit_tinfo_decl): Fix DATA_ABI_ALIGNMENT invocation.
+ 
+ 2025-06-18  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-01-09  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/117792
+ 	* pt.cc (type_dependent_expression_p): Consider the dependence
+ 	of the address of each template argument of a function
+ 	template-id.
+ 
+ 2025-06-18  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2024-08-15  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/116320
+ 	* semantics.cc (check_accessibility_of_qualified_id): Try
+ 	currently_open_class when using the object type as the
+ 	effective qualifying type.
+ 
+ 2025-06-18  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2024-04-11  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/114303
+ 	* constraint.cc (tsubst_requires_expr): Clear
+ 	REQUIRES_EXPR_EXTRA_ARGS before calling build_extra_args.
+ 	* pt.cc (tree_extra_args): Define.
+ 	(extract_locals_r): Assert *_EXTRA_ARGS is empty.
+ 	(tsubst_stmt) <case IF_STMT>: Clear IF_SCOPE on the new
+ 	IF_STMT.  Call build_extra_args on the new IF_STMT instead
+ 	of t which might already have IF_STMT_EXTRA_ARGS.
+ 
  2025-06-17  Patrick Palka  <ppalka@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-12-20250618/gcc/cp/rtti.cc gcc-12-20250625/gcc/cp/rtti.cc
*** gcc-12-20250618/gcc/cp/rtti.cc	Wed Jun 18 22:32:16 2025
--- gcc-12-20250625/gcc/cp/rtti.cc	Wed Jun 25 22:32:18 2025
*************** emit_tinfo_decl (tree decl)
*** 1707,1713 ****
        /* Avoid targets optionally bumping up the alignment to improve
  	 vector instruction accesses, tinfo are never accessed this way.  */
  #ifdef DATA_ABI_ALIGNMENT
!       SET_DECL_ALIGN (decl, DATA_ABI_ALIGNMENT (decl, TYPE_ALIGN (TREE_TYPE (decl))));
        DECL_USER_ALIGN (decl) = true;
  #endif
        return true;
--- 1707,1714 ----
        /* Avoid targets optionally bumping up the alignment to improve
  	 vector instruction accesses, tinfo are never accessed this way.  */
  #ifdef DATA_ABI_ALIGNMENT
!       SET_DECL_ALIGN (decl, DATA_ABI_ALIGNMENT (TREE_TYPE (decl),
! 						TYPE_ALIGN (TREE_TYPE (decl))));
        DECL_USER_ALIGN (decl) = true;
  #endif
        return true;
diff -Nrcpad gcc-12-20250618/gcc/doc/invoke.texi gcc-12-20250625/gcc/doc/invoke.texi
*** gcc-12-20250618/gcc/doc/invoke.texi	Wed Jun 18 22:32:16 2025
--- gcc-12-20250625/gcc/doc/invoke.texi	Wed Jun 25 22:32:18 2025
*************** VPCLMULQDQ, AVX512BITALG, RDPID and AVX5
*** 31554,31562 ****
  Intel Alder Lake CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES,
  XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B,
! CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
! VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL and AVX-VNNI instruction set
! support.
  
  @item sapphirerapids
  Intel Sapphire Rapids CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
--- 31554,31561 ----
  Intel Alder Lake CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
  SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES,
  XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B,
! WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES,
! VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL and AVX-VNNI instruction set support.
  
  @item sapphirerapids
  Intel Sapphire Rapids CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
diff -Nrcpad gcc-12-20250618/gcc/gimple-expr.cc gcc-12-20250625/gcc/gimple-expr.cc
*** gcc-12-20250618/gcc/gimple-expr.cc	Wed Jun 18 22:32:19 2025
--- gcc-12-20250625/gcc/gimple-expr.cc	Wed Jun 25 22:32:18 2025
*************** bool
*** 843,849 ****
  is_gimple_mem_ref_addr (tree t)
  {
    return (is_gimple_reg (t)
! 	  || TREE_CODE (t) == INTEGER_CST
  	  || (TREE_CODE (t) == ADDR_EXPR
  	      && (CONSTANT_CLASS_P (TREE_OPERAND (t, 0))
  		  || decl_address_invariant_p (TREE_OPERAND (t, 0)))));
--- 843,849 ----
  is_gimple_mem_ref_addr (tree t)
  {
    return (is_gimple_reg (t)
! 	  || poly_int_tree_p (t)
  	  || (TREE_CODE (t) == ADDR_EXPR
  	      && (CONSTANT_CLASS_P (TREE_OPERAND (t, 0))
  		  || decl_address_invariant_p (TREE_OPERAND (t, 0)))));
diff -Nrcpad gcc-12-20250618/gcc/gimple-loop-jam.cc gcc-12-20250625/gcc/gimple-loop-jam.cc
*** gcc-12-20250618/gcc/gimple-loop-jam.cc	Wed Jun 18 22:32:19 2025
--- gcc-12-20250625/gcc/gimple-loop-jam.cc	Wed Jun 25 22:32:18 2025
*************** unroll_jam_possible_p (class loop *outer
*** 278,290 ****
       body would be the after-iter value of the first body) if it's over
       an associative and commutative operation.  We wouldn't
       be able to handle unknown cycles.  */
    for (psi = gsi_start_phis (loop->header); !gsi_end_p (psi); gsi_next (&psi))
      {
        affine_iv iv;
        tree op = gimple_phi_result (psi.phi ());
  
        if (virtual_operand_p (op))
! 	continue;
        if (!simple_iv (loop, loop, op, &iv, true))
  	return false;
        /* The inductions must be regular, loop invariant step and initial
--- 278,294 ----
       body would be the after-iter value of the first body) if it's over
       an associative and commutative operation.  We wouldn't
       be able to handle unknown cycles.  */
+   bool inner_vdef = false;
    for (psi = gsi_start_phis (loop->header); !gsi_end_p (psi); gsi_next (&psi))
      {
        affine_iv iv;
        tree op = gimple_phi_result (psi.phi ());
  
        if (virtual_operand_p (op))
! 	{
! 	  inner_vdef = true;
! 	  continue;
! 	}
        if (!simple_iv (loop, loop, op, &iv, true))
  	return false;
        /* The inductions must be regular, loop invariant step and initial
*************** unroll_jam_possible_p (class loop *outer
*** 300,305 ****
--- 304,315 ----
  	 copy, _not_ the next value of the second body.  */
      }
  
+   /* When there's no inner loop virtual PHI IV we cannot handle the update
+      required to the inner loop if that doesn't already have one.  See
+      PR117113.  */
+   if (!inner_vdef && get_virtual_phi (outer->header))
+     return false;
+ 
    return true;
  }
  
diff -Nrcpad gcc-12-20250618/gcc/gimplify.cc gcc-12-20250625/gcc/gimplify.cc
*** gcc-12-20250618/gcc/gimplify.cc	Wed Jun 18 22:32:19 2025
--- gcc-12-20250625/gcc/gimplify.cc	Wed Jun 25 22:32:18 2025
*************** is_gimple_mem_rhs_or_call (tree t)
*** 556,562 ****
    else
      return (is_gimple_val (t)
  	    || is_gimple_lvalue (t)
! 	    || TREE_CLOBBER_P (t)
  	    || TREE_CODE (t) == CALL_EXPR);
  }
  
--- 556,562 ----
    else
      return (is_gimple_val (t)
  	    || is_gimple_lvalue (t)
! 	    || (TREE_CODE (t) == CONSTRUCTOR && CONSTRUCTOR_NELTS (t) == 0)
  	    || TREE_CODE (t) == CALL_EXPR);
  }
  
*************** gimplify_addr_expr (tree *expr_p, gimple
*** 6518,6524 ****
  	*expr_p = build_fold_addr_expr (op0);
  
        /* Make sure TREE_CONSTANT and TREE_SIDE_EFFECTS are set properly.  */
!       recompute_tree_invariant_for_addr_expr (*expr_p);
  
        /* If we re-built the ADDR_EXPR add a conversion to the original type
           if required.  */
--- 6518,6525 ----
  	*expr_p = build_fold_addr_expr (op0);
  
        /* Make sure TREE_CONSTANT and TREE_SIDE_EFFECTS are set properly.  */
!       if (TREE_CODE (*expr_p) == ADDR_EXPR)
! 	recompute_tree_invariant_for_addr_expr (*expr_p);
  
        /* If we re-built the ADDR_EXPR add a conversion to the original type
           if required.  */
diff -Nrcpad gcc-12-20250618/gcc/ipa-free-lang-data.cc gcc-12-20250625/gcc/ipa-free-lang-data.cc
*** gcc-12-20250618/gcc/ipa-free-lang-data.cc	Wed Jun 18 22:32:19 2025
--- gcc-12-20250625/gcc/ipa-free-lang-data.cc	Wed Jun 25 22:32:18 2025
*************** free_lang_data_in_type (tree type, class
*** 436,444 ****
  	 different front ends.  */
        for (tree p = TYPE_ARG_TYPES (type); p; p = TREE_CHAIN (p))
  	{
- 	  TREE_VALUE (p) = fld_simplified_type (TREE_VALUE (p), fld);
  	  tree arg_type = TREE_VALUE (p);
- 
  	  if (TYPE_READONLY (arg_type) || TYPE_VOLATILE (arg_type))
  	    {
  	      int quals = TYPE_QUALS (arg_type)
--- 436,442 ----
*************** free_lang_data_in_type (tree type, class
*** 448,453 ****
--- 446,452 ----
  	      if (!fld->pset.add (TREE_VALUE (p)))
  		free_lang_data_in_type (TREE_VALUE (p), fld);
  	    }
+ 	  TREE_VALUE (p) = fld_simplified_type (TREE_VALUE (p), fld);
  	  /* C++ FE uses TREE_PURPOSE to store initial values.  */
  	  TREE_PURPOSE (p) = NULL;
  	}
*************** find_decls_types_r (tree *tp, int *ws, v
*** 842,847 ****
--- 841,860 ----
  	fld_worklist_push (tem, fld);
        fld_worklist_push (BLOCK_ABSTRACT_ORIGIN (t), fld);
      }
+   /* walk_tree does not visit ce->index which can be a FIELD_DECL, pulling
+      in otherwise unused structure fields so handle CTORs explicitly.  */
+   else if (TREE_CODE (t) == CONSTRUCTOR)
+     {
+       unsigned HOST_WIDE_INT idx;
+       constructor_elt *ce;
+       for (idx = 0; vec_safe_iterate (CONSTRUCTOR_ELTS (t), idx, &ce); idx++)
+ 	{
+ 	  if (ce->index)
+ 	    fld_worklist_push (ce->index, fld);
+ 	  fld_worklist_push (ce->value, fld);
+ 	}
+       *ws = 0;
+     }
  
    if (TREE_CODE (t) != IDENTIFIER_NODE
        && CODE_CONTAINS_STRUCT (TREE_CODE (t), TS_TYPED))
diff -Nrcpad gcc-12-20250618/gcc/ipa-modref.cc gcc-12-20250625/gcc/ipa-modref.cc
*** gcc-12-20250618/gcc/ipa-modref.cc	Wed Jun 18 22:32:19 2025
--- gcc-12-20250625/gcc/ipa-modref.cc	Wed Jun 25 22:32:18 2025
*************** modref_access_analysis::analyze_store (g
*** 1745,1752 ****
      t->record_access_lto (t->m_summary_lto->stores, &r, a);
    if (t->m_always_executed
        && a.useful_for_kill_p ()
!       && (!cfun->can_throw_non_call_exceptions
! 	  || !stmt_could_throw_p (cfun, stmt)))
      {
        if (dump_file)
  	fprintf (dump_file, "   - Recording kill\n");
--- 1745,1751 ----
      t->record_access_lto (t->m_summary_lto->stores, &r, a);
    if (t->m_always_executed
        && a.useful_for_kill_p ()
!       && !stmt_could_throw_p (cfun, stmt))
      {
        if (dump_file)
  	fprintf (dump_file, "   - Recording kill\n");
diff -Nrcpad gcc-12-20250618/gcc/lto/ChangeLog gcc-12-20250625/gcc/lto/ChangeLog
*** gcc-12-20250618/gcc/lto/ChangeLog	Wed Jun 18 22:32:19 2025
--- gcc-12-20250625/gcc/lto/ChangeLog	Wed Jun 25 22:32:18 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/91299
+ 	* lto-symtab.cc (lto_symtab_merge_symbols): Set DECL_EXTERNAL
+ 	only after calling get_availability.
+ 
  2024-06-20  Release Manager
  
  	* GCC 12.4.0 released.
diff -Nrcpad gcc-12-20250618/gcc/lto/lto-symtab.cc gcc-12-20250625/gcc/lto/lto-symtab.cc
*** gcc-12-20250618/gcc/lto/lto-symtab.cc	Wed Jun 18 22:32:19 2025
--- gcc-12-20250625/gcc/lto/lto-symtab.cc	Wed Jun 25 22:32:18 2025
*************** lto_symtab_merge_symbols (void)
*** 1016,1022 ****
  		  || node->resolution == LDPR_RESOLVED_EXEC
  		  || node->resolution == LDPR_RESOLVED_DYN))
  	    {
- 	      DECL_EXTERNAL (node->decl) = 1;
  	      /* If alias to local symbol was preempted by external definition,
  		 we know it is not pointing to the local symbol.  Remove it.  */
  	      if (node->alias
--- 1016,1021 ----
*************** lto_symtab_merge_symbols (void)
*** 1042,1047 ****
--- 1041,1047 ----
  		      node->remove_all_references ();
  		    }
  		}
+ 	      DECL_EXTERNAL (node->decl) = 1;
  	    }
  
  	  if (!(cnode = dyn_cast <cgraph_node *> (node))
diff -Nrcpad gcc-12-20250618/gcc/testsuite/ChangeLog gcc-12-20250625/gcc/testsuite/ChangeLog
*** gcc-12-20250618/gcc/testsuite/ChangeLog	Wed Jun 18 22:32:20 2025
--- gcc-12-20250625/gcc/testsuite/ChangeLog	Wed Jun 25 22:32:19 2025
***************
*** 1,3 ****
--- 1,136 ----
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-04-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/119534
+ 	* gcc.dg/vect/pr119534.c: New testcase.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-03-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/119119
+ 	* g++.dg/torture/pr11911.C: New testcase.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-03-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/119057
+ 	* gcc.dg/vect/pr119057.c: New testcase.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/117424
+ 	* gcc.dg/tree-ssa/ssa-lim-25.c: New testcase.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-02-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/117113
+ 	* gcc.dg/torture/pr117113.c: New testcase.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-03-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/114501
+ 	* g++.dg/pr114501_0.C: New testcase.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-02-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/113207
+ 	* gcc.dg/pr113207.c: New testcase.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-01-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/112859
+ 	PR tree-optimization/115347
+ 	* gcc.dg/torture/pr112859.c: New testcase.
+ 	* gcc.dg/torture/pr115347.c: Likewise.
+ 	* gcc.dg/tree-ssa/ldist-36.c: Adjust.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/111245
+ 	* g++.dg/torture/pr111245.C: New testcase.
+ 
+ 2025-06-24  Sam James  <sam@gentoo.org>
+ 
+ 	Backported from master:
+ 	2024-10-28  Sam James  <sam@gentoo.org>
+ 
+ 	PR tree-optimization/107467
+ 	PR middle-end/115110
+ 	* g++.dg/lto/pr107467_0.C: New test.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2024-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/101478
+ 	* gcc.dg/pr101478.c: New testcase.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/91299
+ 	* gcc.dg/lto/pr91299_0.c: New testcase.
+ 	* gcc.dg/lto/pr91299_1.c: Likewise.
+ 
+ 2025-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2025-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/87984
+ 	* gcc.target/i386/pr87984.c: New testcase.
+ 
+ 2025-06-18  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-01-09  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/117792
+ 	* g++.dg/cpp1z/nontype7.C: New test.
+ 
+ 2025-06-18  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2024-08-15  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/116320
+ 	* g++.dg/template/access42.C: New test.
+ 
+ 2025-06-18  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2024-04-11  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/114303
+ 	* g++.dg/cpp1z/constexpr-if-lambda6.C: New test.
+ 
  2025-06-17  Patrick Palka  <ppalka@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-12-20250618/gcc/testsuite/g++.dg/lto/pr107467_0.C gcc-12-20250625/gcc/testsuite/g++.dg/lto/pr107467_0.C
*** gcc-12-20250618/gcc/testsuite/g++.dg/lto/pr107467_0.C	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/g++.dg/lto/pr107467_0.C	Wed Jun 25 22:32:20 2025
***************
*** 0 ****
--- 1,52 ----
+ /* { dg-lto-do run } */
+ /* { dg-lto-options {{ -O2 -fno-strict-aliasing -flto }} } */
+ 
+ template <class T>
+ struct pair
+ {
+     int first;
+     T second;
+ };
+ 
+ template <typename C>
+ [[gnu::optimize("strict-aliasing")]]
+ bool __attribute__((noinline))
+ compare_pairs(const pair<C> &lhs, const pair<C> &rhs) {
+   return lhs.first == rhs.first && lhs.second == rhs.second;
+ }
+ 
+ template <typename B> struct Combined {
+   pair<B *> 
+ __attribute__((noinline)) get_const() {
+     return pair<B *>{123, nullptr};
+   }
+ [[gnu::optimize("strict-aliasing")]]
+   bool 
+ __attribute__((noinline)) clashy() {
+     return compare_pairs(get_const(), get_const());
+   }
+ };
+ 
+ class SomeClass {};
+ class OtherClass {};
+ 
+ [[gnu::optimize("strict-aliasing")]]
+ [[gnu::used]]
+ void some_func() {
+   Combined<SomeClass> myvar;
+   __builtin_printf("%i\n", myvar.clashy());
+ }
+ 
+ [[gnu::optimize("strict-aliasing")]]
+ void other_func() {
+   Combined<OtherClass> myvar;
+   int t = myvar.clashy();
+   if (!t)
+   __builtin_abort();
+ }
+ 
+ [[gnu::optimize("O0")]]
+ int main()
+ {
+   other_func();
+ }
diff -Nrcpad gcc-12-20250618/gcc/testsuite/g++.dg/pr114501_0.C gcc-12-20250625/gcc/testsuite/g++.dg/pr114501_0.C
*** gcc-12-20250618/gcc/testsuite/g++.dg/pr114501_0.C	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/g++.dg/pr114501_0.C	Wed Jun 25 22:32:20 2025
***************
*** 0 ****
--- 1,20 ----
+ // { dg-do compile }
+ // { dg-require-effective-target c++17 }
+ // { dg-require-effective-target lto }
+ // { dg-options "-flto" }
+ 
+ typedef long unsigned int size_t;
+ struct basic_string_view {
+   typedef long unsigned int size_type;
+   constexpr size_type size() const { return 0; }
+ };
+ struct array {
+   char _M_elems[1];
+ };
+ inline constexpr auto make_it() {
+   constexpr basic_string_view view;
+   array arr{};
+   arr._M_elems[view.size()] = 'a';
+   return arr;
+ }
+ auto bar = make_it();
diff -Nrcpad gcc-12-20250618/gcc/testsuite/g++.dg/torture/pr111245.C gcc-12-20250625/gcc/testsuite/g++.dg/torture/pr111245.C
*** gcc-12-20250618/gcc/testsuite/g++.dg/torture/pr111245.C	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/g++.dg/torture/pr111245.C	Wed Jun 25 22:32:20 2025
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do run } */
+ 
+ struct Int {
+   int value;
+ };
+ 
+ __attribute__((noipa)) Int always_throws() { throw 123; }
+ 
+ void foo(Int &x) {
+   try {
+     x = always_throws();
+   } catch (...) {
+   }
+ }
+ 
+ int main()
+ {
+   Int x;
+   x.value = 5;
+   foo(x);
+   if (x.value != 5)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-12-20250618/gcc/testsuite/g++.dg/torture/pr11911.C gcc-12-20250625/gcc/testsuite/g++.dg/torture/pr11911.C
*** gcc-12-20250618/gcc/testsuite/g++.dg/torture/pr11911.C	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/g++.dg/torture/pr11911.C	Wed Jun 25 22:32:20 2025
***************
*** 0 ****
--- 1,21 ----
+ // { dg-do compile }
+ // { dg-require-effective-target c++17 }
+ 
+ struct b {
+   int a;
+ };
+ struct c {
+   b d{};
+   c() = default;
+   c(c &) = delete;
+ };
+ struct e {
+   c a{};
+   e() {}
+ };
+ inline e f() { return {}; }
+ struct g {
+   e cx;
+   g() : cx{f()} {}
+ };
+ void h() { g i; }
diff -Nrcpad gcc-12-20250618/gcc/testsuite/gcc.dg/lto/pr91299_0.c gcc-12-20250625/gcc/testsuite/gcc.dg/lto/pr91299_0.c
*** gcc-12-20250618/gcc/testsuite/gcc.dg/lto/pr91299_0.c	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/gcc.dg/lto/pr91299_0.c	Wed Jun 25 22:32:22 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-lto-do run } */
+ /* { dg-lto-options { { -O2 -flto } } } */
+ 
+ __attribute__((weak)) int get_t(void)
+ {
+   return 0;
+ }
+ 
+ int a;
+ int main(void)
+ {
+   a = get_t();
+   if (a != 1)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-12-20250618/gcc/testsuite/gcc.dg/lto/pr91299_1.c gcc-12-20250625/gcc/testsuite/gcc.dg/lto/pr91299_1.c
*** gcc-12-20250618/gcc/testsuite/gcc.dg/lto/pr91299_1.c	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/gcc.dg/lto/pr91299_1.c	Wed Jun 25 22:32:22 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-options "-fno-lto" } */
+ 
+ int get_t(void)
+ {
+     return 1;
+ }
diff -Nrcpad gcc-12-20250618/gcc/testsuite/gcc.dg/pr101478.c gcc-12-20250625/gcc/testsuite/gcc.dg/pr101478.c
*** gcc-12-20250618/gcc/testsuite/gcc.dg/pr101478.c	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/gcc.dg/pr101478.c	Wed Jun 25 22:32:22 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ struct obj {
+   int n;
+   int l;
+ };
+ int main()
+ {
+   (struct obj *)((char *)(__SIZE_TYPE__)({ 0; }) - (char *)&((struct obj *)0)->l);
+ }
diff -Nrcpad gcc-12-20250618/gcc/testsuite/gcc.dg/pr113207.c gcc-12-20250625/gcc/testsuite/gcc.dg/pr113207.c
*** gcc-12-20250618/gcc/testsuite/gcc.dg/pr113207.c	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/gcc.dg/pr113207.c	Wed Jun 25 22:32:22 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-compile } */
+ /* { dg-require-effective-target lto } */
+ /* { dg-options "-flto -fchecking" }  */
+ 
+ typedef struct cl_lispunion *cl_object;
+ struct cl_lispunion {};
+ cl_object cl_error() __attribute__((noreturn));
+ volatile cl_object cl_coerce_value0;
+ void cl_coerce() { cl_error(); }
+ void L66safe_canonical_type(cl_object volatile);
diff -Nrcpad gcc-12-20250618/gcc/testsuite/gcc.dg/torture/pr112859.c gcc-12-20250625/gcc/testsuite/gcc.dg/torture/pr112859.c
*** gcc-12-20250618/gcc/testsuite/gcc.dg/torture/pr112859.c	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/gcc.dg/torture/pr112859.c	Wed Jun 25 22:32:22 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-ftree-loop-distribution" } */
+ 
+ struct a {
+   char b;
+   int c;
+ } f, *i = &f;
+ static struct a e[4];
+ int *d, **g = &d;
+ static int h, j;
+ int main()
+ {
+   for (; h < 1; h++) {
+     struct a k = {1, 1};
+     for (j = 0; j < 2; j++) {
+       *i = e[h];
+       e[h] = k;
+     }
+     *g = 0;
+   }
+   if (f.c != 1)
+     __builtin_abort();
+   return 0;
+ }
diff -Nrcpad gcc-12-20250618/gcc/testsuite/gcc.dg/torture/pr115347.c gcc-12-20250625/gcc/testsuite/gcc.dg/torture/pr115347.c
*** gcc-12-20250618/gcc/testsuite/gcc.dg/torture/pr115347.c	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/gcc.dg/torture/pr115347.c	Wed Jun 25 22:32:22 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-ftree-loop-distribution" } */
+ 
+ struct a {
+   int b;
+   int c;
+ } d, e[2];
+ int f, g, h;
+ int main()
+ {
+   for (; f < 1; f++) {
+     for (h = 0; h < 2; h++) {
+       d = e[f];
+       g = e[1].c;
+       e[f].c = 1;
+     }
+   }
+   if (d.c != 1)
+     __builtin_abort();
+   return 0;
+ }
diff -Nrcpad gcc-12-20250618/gcc/testsuite/gcc.dg/torture/pr117113.c gcc-12-20250625/gcc/testsuite/gcc.dg/torture/pr117113.c
*** gcc-12-20250618/gcc/testsuite/gcc.dg/torture/pr117113.c	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/gcc.dg/torture/pr117113.c	Wed Jun 25 22:32:22 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fno-tree-dce -fno-inline" } */
+ 
+ int a, b, c;
+ volatile int d[1];
+ void e() {}
+ void f(int g) {}
+ int main() {
+   int i;
+   for (; b; b--) {
+     for (i = 0; i < 3; i++) {
+       e();
+       f(d[0]);
+       d[0];
+     }
+     if (a)
+       c++;
+   }
+   return 0;
+ }
diff -Nrcpad gcc-12-20250618/gcc/testsuite/gcc.dg/tree-ssa/ldist-36.c gcc-12-20250625/gcc/testsuite/gcc.dg/tree-ssa/ldist-36.c
*** gcc-12-20250618/gcc/testsuite/gcc.dg/tree-ssa/ldist-36.c	Wed Jun 18 22:32:42 2025
--- gcc-12-20250625/gcc/testsuite/gcc.dg/tree-ssa/ldist-36.c	Wed Jun 25 22:32:22 2025
*************** foo (struct st * restrict p)
*** 25,28 ****
      }
  }
  
! /* { dg-final { scan-tree-dump-times "Loop nest . distributed: split to 0 loops and 3 library" 1 "ldist" } } */
--- 25,29 ----
      }
  }
  
! /* The cost modeling doesn't consider splitting a WAR re-use profitable.  */
! /* { dg-final { scan-tree-dump-times "Loop nest . distributed: split to 1 loops and 1 library" 1 "ldist" } } */
diff -Nrcpad gcc-12-20250618/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-25.c gcc-12-20250625/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-25.c
*** gcc-12-20250618/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-25.c	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-25.c	Wed Jun 25 22:32:22 2025
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-lim2-details" } */
+ 
+ char x;
+ 
+ long foo (int n)
+ {
+   long y = 0;
+   for (int j = 0; j < 1024; ++j)
+     for (int i = 0; i < n; ++i)
+       y += *(long *)&x;
+   return y;
+ }
+ 
+ /* Because *(long *)&x may trap we have to preserve execution and
+    only hoist it from the innermost loop (after the header check).  */
+ /* { dg-final { scan-tree-dump-not "out of loop 1" "lim2" } } */
+ /* { dg-final { scan-tree-dump "out of loop 2" "lim2" } } */
diff -Nrcpad gcc-12-20250618/gcc/testsuite/gcc.dg/vect/pr119057.c gcc-12-20250625/gcc/testsuite/gcc.dg/vect/pr119057.c
*** gcc-12-20250618/gcc/testsuite/gcc.dg/vect/pr119057.c	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/gcc.dg/vect/pr119057.c	Wed Jun 25 22:32:22 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fno-tree-vrp -fno-tree-forwprop" } */
+ 
+ int a, b, c, d;
+ unsigned e;
+ static void f(void)
+ {
+   unsigned h;
+   for (d = 0; d < 2; d++)
+     b |= e;
+   h = b;
+   c |= h;
+ }
+ int main()
+ {
+   for (; a; a++)
+     f();
+   return 0;
+ }
diff -Nrcpad gcc-12-20250618/gcc/testsuite/gcc.dg/vect/pr119534.c gcc-12-20250625/gcc/testsuite/gcc.dg/vect/pr119534.c
*** gcc-12-20250618/gcc/testsuite/gcc.dg/vect/pr119534.c	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/gcc.dg/vect/pr119534.c	Wed Jun 25 22:32:22 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-mavx512bw" { target { x86_64-*-* i?86-*-* } } } */
+ 
+ void f(int w, int *out, double *d)
+ {
+   for (int j = 0; j < w; j++)
+     {
+       const int i = (j >= w / 2);
+       out[j] += d[i];
+     }
+ }
diff -Nrcpad gcc-12-20250618/gcc/testsuite/gcc.target/i386/pr87984.c gcc-12-20250625/gcc/testsuite/gcc.target/i386/pr87984.c
*** gcc-12-20250618/gcc/testsuite/gcc.target/i386/pr87984.c	Thu Jan  1 00:00:00 1970
--- gcc-12-20250625/gcc/testsuite/gcc.target/i386/pr87984.c	Wed Jun 25 22:32:25 2025
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do run } */
+ /* { dg-options "-O" } */
+ 
+ __attribute__((noipa))
+ int f(void)
+ {
+   int o = 0;
+   for (int i = 0; i < 3; i++)
+     {
+       register int a asm("eax");
+       a = 1;
+       asm("add %1, %0" : "+r"(o) : "r"(a));
+       asm("xor %%eax, %%eax" ::: "eax");
+     }
+   return o;
+ }
+ 
+ int main()
+ {
+   if (f() != 3)
+     __builtin_abort();
+   return 0;
+ }
diff -Nrcpad gcc-12-20250618/gcc/tree-eh.cc gcc-12-20250625/gcc/tree-eh.cc
*** gcc-12-20250618/gcc/tree-eh.cc	Wed Jun 18 22:33:00 2025
--- gcc-12-20250625/gcc/tree-eh.cc	Wed Jun 25 22:32:47 2025
*************** tree_could_trap_p (tree expr)
*** 2729,2739 ****
  	  if (TREE_CODE (base) == STRING_CST)
  	    return maybe_le (TREE_STRING_LENGTH (base), off);
  	  tree size = DECL_SIZE_UNIT (base);
  	  if (size == NULL_TREE
  	      || !poly_int_tree_p (size)
! 	      || maybe_le (wi::to_poly_offset (size), off))
  	    return true;
! 	  /* Now we are sure the first byte of the access is inside
  	     the object.  */
  	  return false;
  	}
--- 2729,2744 ----
  	  if (TREE_CODE (base) == STRING_CST)
  	    return maybe_le (TREE_STRING_LENGTH (base), off);
  	  tree size = DECL_SIZE_UNIT (base);
+ 	  tree refsz = TYPE_SIZE_UNIT (TREE_TYPE (expr));
  	  if (size == NULL_TREE
+ 	      || refsz == NULL_TREE
  	      || !poly_int_tree_p (size)
! 	      || !poly_int_tree_p (refsz)
! 	      || maybe_le (wi::to_poly_offset (size), off)
! 	      || maybe_gt (off + wi::to_poly_offset (refsz),
! 			   wi::to_poly_offset (size)))
  	    return true;
! 	  /* Now we are sure the whole base of the access is inside
  	     the object.  */
  	  return false;
  	}
diff -Nrcpad gcc-12-20250618/gcc/tree-loop-distribution.cc gcc-12-20250625/gcc/tree-loop-distribution.cc
*** gcc-12-20250618/gcc/tree-loop-distribution.cc	Wed Jun 18 22:33:00 2025
--- gcc-12-20250625/gcc/tree-loop-distribution.cc	Wed Jun 25 22:32:47 2025
*************** loop_distribution::pg_add_dependence_edg
*** 2122,2146 ****
  		 gcc.dg/tree-ssa/pr94969.c.  */
  	      if (DDR_NUM_DIST_VECTS (ddr) != 1)
  		this_dir = 2;
- 	      /* If the overlap is exact preserve stmt order.  */
- 	      else if (lambda_vector_zerop (DDR_DIST_VECT (ddr, 0),
- 					    DDR_NB_LOOPS (ddr)))
- 		;
- 	      /* Else as the distance vector is lexicographic positive swap
- 		 the dependence direction.  */
  	      else
  		{
! 		  if (DDR_REVERSED_P (ddr))
! 		    this_dir = -this_dir;
! 		  this_dir = -this_dir;
! 
  		  /* When then dependence distance of the innermost common
! 		     loop of the DRs is zero we have a conflict.  */
  		  auto l1 = gimple_bb (DR_STMT (dr1))->loop_father;
  		  auto l2 = gimple_bb (DR_STMT (dr2))->loop_father;
  		  int idx = index_in_loop_nest (find_common_loop (l1, l2)->num,
  						DDR_LOOP_NEST (ddr));
! 		  if (DDR_DIST_VECT (ddr, 0)[idx] == 0)
  		    this_dir = 2;
  		}
  	    }
--- 2122,2153 ----
  		 gcc.dg/tree-ssa/pr94969.c.  */
  	      if (DDR_NUM_DIST_VECTS (ddr) != 1)
  		this_dir = 2;
  	      else
  		{
! 		  /* If the overlap is exact preserve stmt order.  */
! 		  if (lambda_vector_zerop (DDR_DIST_VECT (ddr, 0),
! 					   DDR_NB_LOOPS (ddr)))
! 		    ;
! 		  /* Else as the distance vector is lexicographic positive swap
! 		     the dependence direction.  */
! 		  else
! 		    {
! 		      if (DDR_REVERSED_P (ddr))
! 			this_dir = -this_dir;
! 		      this_dir = -this_dir;
! 		    }
  		  /* When then dependence distance of the innermost common
! 		     loop of the DRs is zero we have a conflict.  This is
! 		     due to wonky dependence analysis which sometimes
! 		     ends up using a zero distance in place of unknown.  */
  		  auto l1 = gimple_bb (DR_STMT (dr1))->loop_father;
  		  auto l2 = gimple_bb (DR_STMT (dr2))->loop_father;
  		  int idx = index_in_loop_nest (find_common_loop (l1, l2)->num,
  						DDR_LOOP_NEST (ddr));
! 		  if (DDR_DIST_VECT (ddr, 0)[idx] == 0
! 		      /* Unless it is the outermost loop which is the one
! 			 we eventually distribute.  */
! 		      && idx != 0)
  		    this_dir = 2;
  		}
  	    }
diff -Nrcpad gcc-12-20250618/gcc/tree-ssa-alias.cc gcc-12-20250625/gcc/tree-ssa-alias.cc
*** gcc-12-20250618/gcc/tree-ssa-alias.cc	Wed Jun 18 22:33:00 2025
--- gcc-12-20250625/gcc/tree-ssa-alias.cc	Wed Jun 25 22:32:47 2025
*************** view_converted_memref_p (tree base)
*** 2041,2048 ****
  {
    if (TREE_CODE (base) != MEM_REF && TREE_CODE (base) != TARGET_MEM_REF)
      return false;
!   return same_type_for_tbaa (TREE_TYPE (base),
! 			     TREE_TYPE (TREE_OPERAND (base, 1))) != 1;
  }
  
  /* Return true if an indirect reference based on *PTR1 constrained
--- 2041,2049 ----
  {
    if (TREE_CODE (base) != MEM_REF && TREE_CODE (base) != TARGET_MEM_REF)
      return false;
!   return (same_type_for_tbaa (TREE_TYPE (base),
! 			      TREE_TYPE (TREE_TYPE (TREE_OPERAND (base, 1))))
! 	  != 1);
  }
  
  /* Return true if an indirect reference based on *PTR1 constrained
diff -Nrcpad gcc-12-20250618/gcc/tree-ssa-dom.cc gcc-12-20250625/gcc/tree-ssa-dom.cc
*** gcc-12-20250618/gcc/tree-ssa-dom.cc	Wed Jun 18 22:33:00 2025
--- gcc-12-20250625/gcc/tree-ssa-dom.cc	Wed Jun 25 22:32:47 2025
*************** dom_opt_dom_walker::optimize_stmt (basic
*** 2245,2251 ****
  
        /* Perform simple redundant store elimination.  */
        if (gimple_assign_single_p (stmt)
! 	  && TREE_CODE (gimple_assign_lhs (stmt)) != SSA_NAME)
  	{
  	  tree lhs = gimple_assign_lhs (stmt);
  	  tree rhs = gimple_assign_rhs1 (stmt);
--- 2245,2253 ----
  
        /* Perform simple redundant store elimination.  */
        if (gimple_assign_single_p (stmt)
! 	  && TREE_CODE (gimple_assign_lhs (stmt)) != SSA_NAME
! 	  && (TREE_CODE (gimple_assign_lhs (stmt)) != VAR_DECL
! 	      || !DECL_HARD_REGISTER (gimple_assign_lhs (stmt))))
  	{
  	  tree lhs = gimple_assign_lhs (stmt);
  	  tree rhs = gimple_assign_rhs1 (stmt);
diff -Nrcpad gcc-12-20250618/gcc/tree-ssa-sccvn.cc gcc-12-20250625/gcc/tree-ssa-sccvn.cc
*** gcc-12-20250618/gcc/tree-ssa-sccvn.cc	Wed Jun 18 22:33:00 2025
--- gcc-12-20250625/gcc/tree-ssa-sccvn.cc	Wed Jun 25 22:32:47 2025
*************** eliminate_dom_walker::eliminate_stmt (ba
*** 6585,6590 ****
--- 6585,6592 ----
    if (gimple_assign_single_p (stmt)
        && !gimple_has_volatile_ops (stmt)
        && !is_gimple_reg (gimple_assign_lhs (stmt))
+       && (TREE_CODE (gimple_assign_lhs (stmt)) != VAR_DECL
+ 	  || !DECL_HARD_REGISTER (gimple_assign_lhs (stmt)))
        && (TREE_CODE (gimple_assign_rhs1 (stmt)) == SSA_NAME
  	  || is_gimple_min_invariant (gimple_assign_rhs1 (stmt))))
      {
diff -Nrcpad gcc-12-20250618/gcc/tree-vect-loop.cc gcc-12-20250625/gcc/tree-vect-loop.cc
*** gcc-12-20250618/gcc/tree-vect-loop.cc	Wed Jun 18 22:33:00 2025
--- gcc-12-20250625/gcc/tree-vect-loop.cc	Wed Jun 25 22:32:47 2025
*************** needs_fold_left_reduction_p (tree type,
*** 3379,3385 ****
  static bool
  check_reduction_path (dump_user_location_t loc, loop_p loop, gphi *phi,
  		      tree loop_arg, code_helper *code,
! 		      vec<std::pair<ssa_op_iter, use_operand_p> > &path)
  {
    auto_bitmap visited;
    tree lookfor = PHI_RESULT (phi);
--- 3379,3386 ----
  static bool
  check_reduction_path (dump_user_location_t loc, loop_p loop, gphi *phi,
  		      tree loop_arg, code_helper *code,
! 		      vec<std::pair<ssa_op_iter, use_operand_p> > &path,
! 		      bool inner_loop_of_double_reduc)
  {
    auto_bitmap visited;
    tree lookfor = PHI_RESULT (phi);
*************** pop:
*** 3509,3515 ****
  	  break;
  	}
        /* Check there's only a single stmt the op is used on.  For the
! 	 not value-changing tail and the last stmt allow out-of-loop uses.
  	 ???  We could relax this and handle arbitrary live stmts by
  	 forcing a scalar epilogue for example.  */
        imm_use_iterator imm_iter;
--- 3510,3517 ----
  	  break;
  	}
        /* Check there's only a single stmt the op is used on.  For the
! 	 not value-changing tail and the last stmt allow out-of-loop uses,
! 	 but not when this is the inner loop of a double reduction.
  	 ???  We could relax this and handle arbitrary live stmts by
  	 forcing a scalar epilogue for example.  */
        imm_use_iterator imm_iter;
*************** pop:
*** 3518,3524 ****
        unsigned cnt = 0;
        FOR_EACH_IMM_USE_STMT (op_use_stmt, imm_iter, op.ops[opi])
  	if (!is_gimple_debug (op_use_stmt)
! 	    && (*code != ERROR_MARK
  		|| flow_bb_inside_loop_p (loop, gimple_bb (op_use_stmt))))
  	  FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter)
  	    cnt++;
--- 3520,3526 ----
        unsigned cnt = 0;
        FOR_EACH_IMM_USE_STMT (op_use_stmt, imm_iter, op.ops[opi])
  	if (!is_gimple_debug (op_use_stmt)
! 	    && ((*code != ERROR_MARK || inner_loop_of_double_reduc)
  		|| flow_bb_inside_loop_p (loop, gimple_bb (op_use_stmt))))
  	  FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter)
  	    cnt++;
*************** check_reduction_path (dump_user_location
*** 3537,3543 ****
  {
    auto_vec<std::pair<ssa_op_iter, use_operand_p> > path;
    code_helper code_;
!   return (check_reduction_path (loc, loop, phi, loop_arg, &code_, path)
  	  && code_ == code);
  }
  
--- 3539,3545 ----
  {
    auto_vec<std::pair<ssa_op_iter, use_operand_p> > path;
    code_helper code_;
!   return (check_reduction_path (loc, loop, phi, loop_arg, &code_, path, false)
  	  && code_ == code);
  }
  
*************** vect_is_simple_reduction (loop_vec_info
*** 3737,3743 ****
    auto_vec<std::pair<ssa_op_iter, use_operand_p> > path;
    code_helper code;
    if (check_reduction_path (vect_location, loop, phi, latch_def, &code,
! 			    path))
      {
        STMT_VINFO_REDUC_CODE (phi_info) = code;
        if (code == COND_EXPR && !nested_in_vect_loop)
--- 3739,3745 ----
    auto_vec<std::pair<ssa_op_iter, use_operand_p> > path;
    code_helper code;
    if (check_reduction_path (vect_location, loop, phi, latch_def, &code,
! 			    path, inner_loop_of_double_reduc))
      {
        STMT_VINFO_REDUC_CODE (phi_info) = code;
        if (code == COND_EXPR && !nested_in_vect_loop)
diff -Nrcpad gcc-12-20250618/gcc/tree-vect-slp.cc gcc-12-20250625/gcc/tree-vect-slp.cc
*** gcc-12-20250618/gcc/tree-vect-slp.cc	Wed Jun 18 22:33:00 2025
--- gcc-12-20250625/gcc/tree-vect-slp.cc	Wed Jun 25 22:32:47 2025
*************** vect_slp_function (function *fun)
*** 6262,6267 ****
--- 6262,6278 ----
  			     bbs[0]->loop_father->num, bb->index);
  	  split = true;
  	}
+       else if (!bbs.is_empty ()
+ 	       && bb->loop_father->header == bb
+ 	       && bb->loop_father->dont_vectorize)
+ 	{
+ 	  if (dump_enabled_p ())
+ 	    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ 			     "splitting region at dont-vectorize loop %d "
+ 			     "entry at bb%d\n",
+ 			     bb->loop_father->num, bb->index);
+ 	  split = true;
+ 	}
  
        if (split && !bbs.is_empty ())
  	{
*************** vect_slp_function (function *fun)
*** 6269,6287 ****
  	  bbs.truncate (0);
  	}
  
-       /* We need to be able to insert at the head of the region which
- 	 we cannot for region starting with a returns-twice call.  */
        if (bbs.is_empty ())
! 	if (gcall *first = safe_dyn_cast <gcall *> (first_stmt (bb)))
! 	  if (gimple_call_flags (first) & ECF_RETURNS_TWICE)
! 	    {
! 	      if (dump_enabled_p ())
! 		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				 "skipping bb%d as start of region as it "
! 				 "starts with returns-twice call\n",
! 				 bb->index);
! 	      continue;
! 	    }
  
        bbs.safe_push (bb);
  
--- 6280,6304 ----
  	  bbs.truncate (0);
  	}
  
        if (bbs.is_empty ())
! 	{
! 	  /* We need to be able to insert at the head of the region which
! 	     we cannot for region starting with a returns-twice call.  */
! 	  if (gcall *first = safe_dyn_cast <gcall *> (first_stmt (bb)))
! 	    if (gimple_call_flags (first) & ECF_RETURNS_TWICE)
! 	      {
! 		if (dump_enabled_p ())
! 		  dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				   "skipping bb%d as start of region as it "
! 				   "starts with returns-twice call\n",
! 				   bb->index);
! 		continue;
! 	      }
! 	  /* If the loop this BB belongs to is marked as not to be vectorized
! 	     honor that also for BB vectorization.  */
! 	  if (bb->loop_father->dont_vectorize)
! 	    continue;
! 	}
  
        bbs.safe_push (bb);
  
diff -Nrcpad gcc-12-20250618/gcc/tree-vect-stmts.cc gcc-12-20250625/gcc/tree-vect-stmts.cc
*** gcc-12-20250618/gcc/tree-vect-stmts.cc	Wed Jun 18 22:33:00 2025
--- gcc-12-20250625/gcc/tree-vect-stmts.cc	Wed Jun 25 22:32:47 2025
*************** get_load_store_type (vec_info  *vinfo, s
*** 2493,2498 ****
--- 2493,2499 ----
  	  else if (!TYPE_VECTOR_SUBPARTS (vectype).is_constant ()
  		   || !TYPE_VECTOR_SUBPARTS
  			 (gs_info->offset_vectype).is_constant ()
+ 		   || VECTOR_BOOLEAN_TYPE_P (gs_info->offset_vectype)
  		   || !constant_multiple_p (TYPE_VECTOR_SUBPARTS
  					      (gs_info->offset_vectype),
  					    TYPE_VECTOR_SUBPARTS (vectype)))
