diff -Nrcpad gcc-16-20250824/ChangeLog gcc-16-20250831/ChangeLog
*** gcc-16-20250824/ChangeLog	Sun Aug 24 22:32:12 2025
--- gcc-16-20250831/ChangeLog	Sun Aug 31 22:32:10 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-28  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* MAINTAINERS: add myself to write after approval
+ 
  2025-08-21  Richard Sandiford  <rdsandiford@googlemail.com>
  
  	* MAINTAINERS: Update my email address and stand down as AArch64
diff -Nrcpad gcc-16-20250824/LAST_UPDATED gcc-16-20250831/LAST_UPDATED
*** gcc-16-20250824/LAST_UPDATED	Sun Aug 24 22:33:51 2025
--- gcc-16-20250831/LAST_UPDATED	Sun Aug 31 22:34:38 2025
***************
*** 1 ****
! Obtained from git: master revision abf51b388692c4b69d48a60bc7bbd579241d0b7f
--- 1 ----
! Obtained from git: master revision d21f10259f64723f8deae3bccc15128075de4851
diff -Nrcpad gcc-16-20250824/MAINTAINERS gcc-16-20250831/MAINTAINERS
*** gcc-16-20250824/MAINTAINERS	Sun Aug 24 22:32:12 2025
--- gcc-16-20250831/MAINTAINERS	Sun Aug 31 22:32:10 2025
*************** Bin Bin Lv                      shlb
*** 653,658 ****
--- 653,659 ----
  Christophe Lyon                 clyon           <christophe.lyon@arm.com>
  Jin Ma                          majin           <jinma@linux.alibaba.com>
  Jun Ma                          junma           <junma@linux.alibaba.com>
+ Yuao Ma                         -               <yuao@gcc.gnu.org>
  Andrew MacLeod                  -               <amacleod@redhat.com>
  Luis Machado                    luisgpm         <luis.machado.foss@gmail.com>
  Ziga Mahkovec                   ziga            <ziga.mahkovec@klika.si>
*************** Jeff Law
*** 955,960 ****
--- 956,962 ----
  Jeff Law                                        <jlaw@tachyum.com>
  Jeff Law                                        <jlaw@ventanamicro.com>
  H.J. Lu                                         <hjl.tools@gmail.com>
+ Yuao Ma                                         <yuao@gcc.gnu.org>
  Matthew Malcomson                               <mmalcomson@nvidia.com>
  Immad Mir                                       <mir@sourceware.org>
  Gaius Mulley                                    <gaiusmod2@gmail.com>
diff -Nrcpad gcc-16-20250824/MD5SUMS gcc-16-20250831/MD5SUMS
*** gcc-16-20250824/MD5SUMS	Sun Aug 24 22:34:15 2025
--- gcc-16-20250831/MD5SUMS	Sun Aug 31 22:34:42 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20250824.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-16-20250831.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
*************** ac5a8807f431d3dab46a7425b96379e4  .gitig
*** 21,32 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 46dc6479185e265ecce9c6930026372e  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! f0a48a77e51f25cb5e54bfbc3b957451  LAST_UPDATED
! 52f6e7a5988acf33ad534d89d625014b  MAINTAINERS
  95166ed050922b15d201d1fa647b5872  Makefile.def
  7dcc983bfbcda6838b504185562b60a3  Makefile.in
  2c81c9de7da119a00341d5e9529e629f  Makefile.tpl
--- 21,32 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 0f7e96c63876c32afbb11599e7333e0d  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! de192af130b9aa7c2bb898f56d3f5d3a  LAST_UPDATED
! 8f684b6cc76a6c4bf420b0e2167060ae  MAINTAINERS
  95166ed050922b15d201d1fa647b5872  Makefile.def
  7dcc983bfbcda6838b504185562b60a3  Makefile.in
  2c81c9de7da119a00341d5e9529e629f  Makefile.tpl
*************** f068aafb849bb6af444e7442e70106d7  contri
*** 367,373 ****
  9f709ddf34273ffe202ff79517103dbe  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! c3e0f3d475f9be18de27b8436e021cb0  fixincludes/ChangeLog
  4afe55f959b7cceb7055ff11a9ca0e32  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
--- 367,373 ----
  9f709ddf34273ffe202ff79517103dbe  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 7639b1db5f67606177f32027152e8d3e  fixincludes/ChangeLog
  4afe55f959b7cceb7055ff11a9ca0e32  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
*************** b6ffc204128adbd2c41ac0cb4ce98dc7  fixinc
*** 379,392 ****
  2002770d703d59245d89f941a21f783d  fixincludes/fixfixes.c
  77fbad4fc8ec7be3578d045d003446ec  fixincludes/fixinc.in
  8ca216a7024876b7eb9b8abc30a30775  fixincludes/fixincl.c
! adf245e3714f799eafba40af16be8eb5  fixincludes/fixincl.tpl
! 90aa23aeef920358dd8a1f4f49101daa  fixincludes/fixincl.x
  545875b4fe1c26bc3e1befc75b34e9f5  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  51e915676df084b64297d3c4fb0d9c18  fixincludes/genfixes
! 6ee037359f36cf4a7ce87e1c72aeaec7  fixincludes/inclhack.def
  d820d7184883bda7dd809406f0626d8e  fixincludes/mkfixinc.sh
  516608ac1550577d47f48809bb512629  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
--- 379,392 ----
  2002770d703d59245d89f941a21f783d  fixincludes/fixfixes.c
  77fbad4fc8ec7be3578d045d003446ec  fixincludes/fixinc.in
  8ca216a7024876b7eb9b8abc30a30775  fixincludes/fixincl.c
! 7f0fed08dfa61ea12896569a2a5375d1  fixincludes/fixincl.tpl
! da45493b447603dcba64713cdd006b68  fixincludes/fixincl.x
  545875b4fe1c26bc3e1befc75b34e9f5  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  51e915676df084b64297d3c4fb0d9c18  fixincludes/genfixes
! ac58e2675c66475b384456d53fcfa7f3  fixincludes/inclhack.def
  d820d7184883bda7dd809406f0626d8e  fixincludes/mkfixinc.sh
  516608ac1550577d47f48809bb512629  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 516,522 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! ece7461d3adb59a7314d65105a1892fb  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 516,522 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! acd823f50ee5bad202c524de76ab0e6a  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 553,568 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 4ff5081589aadd138d37c1bbcb97304f  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  4dc2573d948287a3722ce977490b026c  gcc/LANGUAGES
! b5c5f3b6b63dad26f918b19eaa26f5f9  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  15d6908b4409b0925d9f1c72b56b5cb7  gcc/README.Portability
! cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
  10e845a8aa8bae6f04a6cc58c449fca2  gcc/ada/ChangeLog
--- 553,568 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 575cacce9275bf81f7ce8db671428e80  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  4dc2573d948287a3722ce977490b026c  gcc/LANGUAGES
! 9b21f48b012de5ee024e7a2a6cbda368  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  15d6908b4409b0925d9f1c72b56b5cb7  gcc/README.Portability
! 23d99b5becf269aa690a91a6f95228b9  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
  10e845a8aa8bae6f04a6cc58c449fca2  gcc/ada/ChangeLog
*************** df3f6c6882fc8f715d4cc537af0f6442  gcc/ad
*** 3058,3064 ****
  a13250e9011949e791f210139f4c4323  gcc/align.h
  192d075c6984da6ef1e282fd63829079  gcc/alloc-pool.cc
  b2194a7136db5f26272ca6162d858997  gcc/alloc-pool.h
! e23274eaa578ff852752fed565ad2ef2  gcc/analyzer/ChangeLog
  51f6840360573e2c2c0b157723b94c0b  gcc/analyzer/access-diagram.cc
  58f352acafda673d24da4113c4f80b8d  gcc/analyzer/access-diagram.h
  9b9effe796cc5df0612c35031d57d8bb  gcc/analyzer/ana-state-to-diagnostic-state.cc
--- 3058,3064 ----
  a13250e9011949e791f210139f4c4323  gcc/align.h
  192d075c6984da6ef1e282fd63829079  gcc/alloc-pool.cc
  b2194a7136db5f26272ca6162d858997  gcc/alloc-pool.h
! 9fbc196c7ce62aa0dcccc0af5676688c  gcc/analyzer/ChangeLog
  51f6840360573e2c2c0b157723b94c0b  gcc/analyzer/access-diagram.cc
  58f352acafda673d24da4113c4f80b8d  gcc/analyzer/access-diagram.h
  9b9effe796cc5df0612c35031d57d8bb  gcc/analyzer/ana-state-to-diagnostic-state.cc
*************** f939ceabcab4e031bd8a0960eaa768dc  gcc/an
*** 3113,3119 ****
  f32274ec03562757a6e4486d10c7d720  gcc/analyzer/kf.cc
  87c0ace2795d7de6063a286af6c85d5b  gcc/analyzer/known-function-manager.cc
  03a32d089b911aa5389a2b9006795f83  gcc/analyzer/known-function-manager.h
! a3d0c02b50cbbcec43b3e11b7f924601  gcc/analyzer/pending-diagnostic.cc
  d5314202d047f9c9dadbafd255300e4a  gcc/analyzer/pending-diagnostic.h
  2b832b9c504b35df0b392144a6e972a2  gcc/analyzer/program-point.cc
  c1fbd7a3b6a1c66e2dbbc2e6725bab7b  gcc/analyzer/program-point.h
--- 3113,3119 ----
  f32274ec03562757a6e4486d10c7d720  gcc/analyzer/kf.cc
  87c0ace2795d7de6063a286af6c85d5b  gcc/analyzer/known-function-manager.cc
  03a32d089b911aa5389a2b9006795f83  gcc/analyzer/known-function-manager.h
! 8e66d6b2b230cab65bd41073d71a2e77  gcc/analyzer/pending-diagnostic.cc
  d5314202d047f9c9dadbafd255300e4a  gcc/analyzer/pending-diagnostic.h
  2b832b9c504b35df0b392144a6e972a2  gcc/analyzer/program-point.cc
  c1fbd7a3b6a1c66e2dbbc2e6725bab7b  gcc/analyzer/program-point.h
*************** c60f1ef3d02e040c88d9e217de84ee81  gcc/an
*** 3161,3167 ****
  cc81acb908eb9d6b13038a95c3a10a9c  gcc/analyzer/varargs.dot
  eeb42b412edc2884a4c60d6f38f7473b  gcc/array-traits.h
  6abcb9777280c69da14835a391a5c347  gcc/asan.cc
! 59feef6296bb7bb650068eebec73ba21  gcc/asan.h
  c77616ec7ed7ec81357de9544f955910  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
  7a214714d8af2c54f02789cfcb196d6c  gcc/attribs.cc
--- 3161,3167 ----
  cc81acb908eb9d6b13038a95c3a10a9c  gcc/analyzer/varargs.dot
  eeb42b412edc2884a4c60d6f38f7473b  gcc/array-traits.h
  6abcb9777280c69da14835a391a5c347  gcc/asan.cc
! 135df8f25422fc20afd9efad9dffdd54  gcc/asan.h
  c77616ec7ed7ec81357de9544f955910  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
  7a214714d8af2c54f02789cfcb196d6c  gcc/attribs.cc
*************** fe292df4b7f3e3ef7c0b8305084b6844  gcc/bi
*** 3185,3191 ****
  9519cf786b112194737e7d0c3534a854  gcc/builtins.cc
  4928906d86168cbc863e309bdb3ec391  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! a94a4f0d4a489463f35e5918a1ca78a7  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  823fe168bb0f63a39de62d9f0251a1b5  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
--- 3185,3191 ----
  9519cf786b112194737e7d0c3534a854  gcc/builtins.cc
  4928906d86168cbc863e309bdb3ec391  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 62601b22468f01322b88f4212b48d971  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  823fe168bb0f63a39de62d9f0251a1b5  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
*************** b0a3988bc562e15d99ab6207aee9a244  gcc/c-
*** 3193,3199 ****
  78c56cfdab4bb19086143ab771281aa3  gcc/c-family/c-common.cc
  c273c4ad95ccdbfe677146505900c62e  gcc/c-family/c-common.def
  5f94e80bb1dd7054acb7744c4b436011  gcc/c-family/c-common.h
! be2cb15cebd93d65ed4615b722375569  gcc/c-family/c-cppbuiltin.cc
  01db2d5cca29943c49bb372f2137d874  gcc/c-family/c-dump.cc
  19059a85545bb95b391e68da0cbc670c  gcc/c-family/c-format.cc
  c8d86c12bc259d3a335f338ce3a10304  gcc/c-family/c-format.h
--- 3193,3199 ----
  78c56cfdab4bb19086143ab771281aa3  gcc/c-family/c-common.cc
  c273c4ad95ccdbfe677146505900c62e  gcc/c-family/c-common.def
  5f94e80bb1dd7054acb7744c4b436011  gcc/c-family/c-common.h
! 5ce5bb7aedbac710588ce288b03d426e  gcc/c-family/c-cppbuiltin.cc
  01db2d5cca29943c49bb372f2137d874  gcc/c-family/c-dump.cc
  19059a85545bb95b391e68da0cbc670c  gcc/c-family/c-format.cc
  c8d86c12bc259d3a335f338ce3a10304  gcc/c-family/c-format.h
*************** a977ddda313933a15767f0f354618de3  gcc/c-
*** 3228,3234 ****
  ac5daa4f7d7788a3f68dde7fe7a25316  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 033f45627c9f61c9007a55926dedadec  gcc/c/ChangeLog
  b1fc09d2244c8e8a72b4df9bc9af30d7  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
--- 3228,3234 ----
  ac5daa4f7d7788a3f68dde7fe7a25316  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 3fe5eed8ce74d17cfc23fc443bc81c57  gcc/c/ChangeLog
  b1fc09d2244c8e8a72b4df9bc9af30d7  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
*************** d9c0725d061adffdf400457d91be3aed  gcc/c/
*** 3239,3245 ****
  4be9de2ca25340adb8f350478db6a3d8  gcc/c/c-lang.h
  e0b7650de772103a6ae330552c1960bc  gcc/c/c-objc-common.cc
  757f583d06a3ec98336adbfc92b4e6a8  gcc/c/c-objc-common.h
! b1b6bf41bce7c2525dad2e1f170e6e8f  gcc/c/c-parser.cc
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  ccab0ae5b18f7ad73f9768439cbc5c02  gcc/c/c-tree.h
--- 3239,3245 ----
  4be9de2ca25340adb8f350478db6a3d8  gcc/c/c-lang.h
  e0b7650de772103a6ae330552c1960bc  gcc/c/c-objc-common.cc
  757f583d06a3ec98336adbfc92b4e6a8  gcc/c/c-objc-common.h
! 2e95b53860451e6031015227d6f4161c  gcc/c/c-parser.cc
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  ccab0ae5b18f7ad73f9768439cbc5c02  gcc/c/c-tree.h
*************** ddf6a04395c39345a0781804ad22f83f  gcc/co
*** 3463,3471 ****
  b301dc231a69a28202d2b7d79ea75f5d  gcc/config/aarch64/aarch64-tune.md
  d10a350a80f8f12ee435c64d236e2767  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! cac665178d7ed4d25428594019b16640  gcc/config/aarch64/aarch64.cc
  bbedb9dbb43d897f509e3d0c2debbfdb  gcc/config/aarch64/aarch64.h
! f96b6183e52103560a66084fa4505d8f  gcc/config/aarch64/aarch64.md
  ae13780a8296e9c52f9e9b8cd95dc312  gcc/config/aarch64/aarch64.opt
  21fd50b19307096b8be37549ae0f6f77  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
--- 3463,3471 ----
  b301dc231a69a28202d2b7d79ea75f5d  gcc/config/aarch64/aarch64-tune.md
  d10a350a80f8f12ee435c64d236e2767  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! dac5ce83bf991b598308938d288cb19b  gcc/config/aarch64/aarch64.cc
  bbedb9dbb43d897f509e3d0c2debbfdb  gcc/config/aarch64/aarch64.h
! f3dce226cf5d0fd7e5f4d48e16f0178c  gcc/config/aarch64/aarch64.md
  ae13780a8296e9c52f9e9b8cd95dc312  gcc/config/aarch64/aarch64.opt
  21fd50b19307096b8be37549ae0f6f77  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
*************** f7165d62ef852e1929a8fc9a85c01ab2  gcc/co
*** 3490,3496 ****
  dfcdbda4a3bb64a86fdf64ce6fce0ae3  gcc/config/aarch64/geniterators.sh
  bc3b4ebfac8bfd42d3e9098f33585afd  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! b1a2c980f188cb0f7d34c945f3f30484  gcc/config/aarch64/iterators.md
  dccd7ab23543b643345fc7fb161eb98d  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
  92e464bd2841e049cf1b85debd6a39a4  gcc/config/aarch64/t-aarch64
--- 3490,3496 ----
  dfcdbda4a3bb64a86fdf64ce6fce0ae3  gcc/config/aarch64/geniterators.sh
  bc3b4ebfac8bfd42d3e9098f33585afd  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 2986bf2c2424d148656b6eb67a8e21db  gcc/config/aarch64/iterators.md
  dccd7ab23543b643345fc7fb161eb98d  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
  92e464bd2841e049cf1b85debd6a39a4  gcc/config/aarch64/t-aarch64
*************** d3fb594d11281112ff8d8f304a000c4e  gcc/co
*** 4162,4170 ****
  a4a1a27264871bfba9de0f4fbdb4f3ac  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! 79e270a5c2733b8bd3a9842ddb597340  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
! 8edb3cb63c7326d231d620741325441f  gcc/config/i386/i386-features.cc
  1ee34fa5f2ae92fd7d48419d8fc529f8  gcc/config/i386/i386-features.h
  66732512f01bad0bbb26cb3c09ec773e  gcc/config/i386/i386-isa.def
  09f791543c9ad5918bde13160f0de1df  gcc/config/i386/i386-modes.def
--- 4162,4170 ----
  a4a1a27264871bfba9de0f4fbdb4f3ac  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! e1035af0a912effd9cf416194308e727  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
! 7c6ed0dee4ccb56d115ae98caeba7a81  gcc/config/i386/i386-features.cc
  1ee34fa5f2ae92fd7d48419d8fc529f8  gcc/config/i386/i386-features.h
  66732512f01bad0bbb26cb3c09ec773e  gcc/config/i386/i386-isa.def
  09f791543c9ad5918bde13160f0de1df  gcc/config/i386/i386-modes.def
*************** af769e63b0f01ece7eccbbdb1687868a  gcc/co
*** 4172,4185 ****
  08c877d750ab52ddb4fe7c99c90d62de  gcc/config/i386/i386-options.h
  02c486451c524cfc143358e07b88cd70  gcc/config/i386/i386-opts.h
  3c7d0006f2f31d8607f2c9e74557fbee  gcc/config/i386/i386-passes.def
! 7b045e4891e8570752e90c0e81aecbf8  gcc/config/i386/i386-protos.h
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! 8180b9aa64031ade4c434e1e538a7395  gcc/config/i386/i386.cc
! 0e1f20497a1a1e49fbef2b65730a8cb9  gcc/config/i386/i386.h
  a09e6b5d7bccbe486409dda3aac21d1d  gcc/config/i386/i386.md
! 23985b411cb15228b631691265bfefe9  gcc/config/i386/i386.opt
  59cb9adff8fe9d24eed1cfac0c5bf62c  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
  12088706f0584b21b2bf165c3cde88e8  gcc/config/i386/ia32intrin.h
--- 4172,4185 ----
  08c877d750ab52ddb4fe7c99c90d62de  gcc/config/i386/i386-options.h
  02c486451c524cfc143358e07b88cd70  gcc/config/i386/i386-opts.h
  3c7d0006f2f31d8607f2c9e74557fbee  gcc/config/i386/i386-passes.def
! 8cebb1520a2af0d79c07912261577eae  gcc/config/i386/i386-protos.h
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! 73dc124c105c7abde7cdaf9f4bfae6c4  gcc/config/i386/i386.cc
! c3dad483122ca944d97d1d46a6beccf4  gcc/config/i386/i386.h
  a09e6b5d7bccbe486409dda3aac21d1d  gcc/config/i386/i386.md
! 38707ff756deaf312cfeca2c52f2954e  gcc/config/i386/i386.opt
  59cb9adff8fe9d24eed1cfac0c5bf62c  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
  12088706f0584b21b2bf165c3cde88e8  gcc/config/i386/ia32intrin.h
*************** de4e89bc042c6bc7eb093bda5d33a266  gcc/co
*** 4241,4247 ****
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  f98c4d94bf04187a2905e9f4ce7d589b  gcc/config/i386/sol2.h
! a05844463a1bb89377bd0238e38905f5  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
--- 4241,4247 ----
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  f98c4d94bf04187a2905e9f4ce7d589b  gcc/config/i386/sol2.h
! d763cb8a6cdf9d01890818020123fbd4  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
*************** b4cde95b709fc93c90bf4d6b3edc7fd0  gcc/co
*** 4289,4295 ****
  78c5d4aaa3e531354ff15f5de8bbe5f6  gcc/config/i386/x-mingw32
  1453972221e67e9b66910b97c6444e98  gcc/config/i386/x-mingw32-utf8
  458dd4e367214623fc01b5e796d65485  gcc/config/i386/x86-64.h
! 069db6446b18f4cc614043ed93c02e70  gcc/config/i386/x86-tune-costs.h
  17e3f95274600e3d41c671903847d8ec  gcc/config/i386/x86-tune-sched-atom.cc
  acfa3e6ce1f37bbad35e49e06b663ea9  gcc/config/i386/x86-tune-sched-bd.cc
  13fcb5234b2d8208c12932d96efef72b  gcc/config/i386/x86-tune-sched-core.cc
--- 4289,4295 ----
  78c5d4aaa3e531354ff15f5de8bbe5f6  gcc/config/i386/x-mingw32
  1453972221e67e9b66910b97c6444e98  gcc/config/i386/x-mingw32-utf8
  458dd4e367214623fc01b5e796d65485  gcc/config/i386/x86-64.h
! 0e9b3d12cc831ff7f1e1d1f8be2e6466  gcc/config/i386/x86-tune-costs.h
  17e3f95274600e3d41c671903847d8ec  gcc/config/i386/x86-tune-sched-atom.cc
  acfa3e6ce1f37bbad35e49e06b663ea9  gcc/config/i386/x86-tune-sched-bd.cc
  13fcb5234b2d8208c12932d96efef72b  gcc/config/i386/x86-tune-sched-core.cc
*************** a1ceaab52de5f1950f6c6b63c5a718ea  gcc/co
*** 4421,4427 ****
  429434e5f1e9f9afc839f4409102d5ea  gcc/config/loongarch/lsxintrin.h
  5a232a75001e3db7ee3e491afdfae629  gcc/config/loongarch/musl.h
  e357122938174e9f48e1036cb67c8a21  gcc/config/loongarch/predicates.md
! 3b0d6d8a96b8678da4cf1e596d893d76  gcc/config/loongarch/simd.md
  b7814df16af8921dc1260f5e28039fc3  gcc/config/loongarch/sync.md
  e2aad9f2fd1ee2a4668948f381da109c  gcc/config/loongarch/t-linux
  4143126e9ad08f12c1a4555c0f87948d  gcc/config/loongarch/t-loongarch
--- 4421,4427 ----
  429434e5f1e9f9afc839f4409102d5ea  gcc/config/loongarch/lsxintrin.h
  5a232a75001e3db7ee3e491afdfae629  gcc/config/loongarch/musl.h
  e357122938174e9f48e1036cb67c8a21  gcc/config/loongarch/predicates.md
! 3d93d4fcfba1009a5c6603db8dbef8a0  gcc/config/loongarch/simd.md
  b7814df16af8921dc1260f5e28039fc3  gcc/config/loongarch/sync.md
  e2aad9f2fd1ee2a4668948f381da109c  gcc/config/loongarch/t-linux
  4143126e9ad08f12c1a4555c0f87948d  gcc/config/loongarch/t-loongarch
*************** c02c28dcba5af34ad86e26f316044b17  gcc/co
*** 4874,4880 ****
  45c7ab42a352a571bdea3ba740be8f5d  gcc/config/pru/t-multilib
  540013c309ceb3efb2b16d728b1fc726  gcc/config/pru/t-pru
  a8fac3d48de6ff4ff0829ddd27890d3c  gcc/config/riscv/arch-canonicalize
! e3d41ab2a3b1cc1a50da243953eb9be7  gcc/config/riscv/autovec-opt.md
  0a8d3bb5c92b40519d869bae882cf263  gcc/config/riscv/autovec.md
  40e0e0684e3c3a934587129211c4674c  gcc/config/riscv/bitmanip.md
  8d9255d8ee3feb40f990a1b837d66525  gcc/config/riscv/constraints.md
--- 4874,4880 ----
  45c7ab42a352a571bdea3ba740be8f5d  gcc/config/pru/t-multilib
  540013c309ceb3efb2b16d728b1fc726  gcc/config/pru/t-pru
  a8fac3d48de6ff4ff0829ddd27890d3c  gcc/config/riscv/arch-canonicalize
! f2751eb27334f9a128bf38b3cd2b9603  gcc/config/riscv/autovec-opt.md
  0a8d3bb5c92b40519d869bae882cf263  gcc/config/riscv/autovec.md
  40e0e0684e3c3a934587129211c4674c  gcc/config/riscv/bitmanip.md
  8d9255d8ee3feb40f990a1b837d66525  gcc/config/riscv/constraints.md
*************** bffa0caedd7144aff55c80a16431d1a1  gcc/co
*** 4901,4911 ****
  a3d3fa9142d4e2ed34ead146941c574a  gcc/config/riscv/pic.md
  674baa66306b2b08e1b80995759f5381  gcc/config/riscv/pipeline-checker
  7efc3a5113a482d49732568dfe6e4c3c  gcc/config/riscv/predicates.md
! c10bfd4598b8e2176b92031831f3b341  gcc/config/riscv/riscv-avlprop.cc
  3b5651b95f6a076ccd28e73bae600e52  gcc/config/riscv/riscv-builtins.cc
  717dabcf24d5f1356542a7716b96af87  gcc/config/riscv/riscv-c.cc
  3b7012a7d47b9aaf163e890d3e29013e  gcc/config/riscv/riscv-cmo.def
! 144ef47d69d1b2dc7361150c48143f5a  gcc/config/riscv/riscv-cores.def
  173996678a5bf2b1b40e30fe260109b4  gcc/config/riscv/riscv-d.cc
  790bd2a5355776ab5ebf4c7814489760  gcc/config/riscv/riscv-d.h
  9848282285cd3a3e21f6181f220f6ba9  gcc/config/riscv/riscv-ext-corev.def
--- 4901,4911 ----
  a3d3fa9142d4e2ed34ead146941c574a  gcc/config/riscv/pic.md
  674baa66306b2b08e1b80995759f5381  gcc/config/riscv/pipeline-checker
  7efc3a5113a482d49732568dfe6e4c3c  gcc/config/riscv/predicates.md
! 33444caff1e16e1f451b7bcb146d58b7  gcc/config/riscv/riscv-avlprop.cc
  3b5651b95f6a076ccd28e73bae600e52  gcc/config/riscv/riscv-builtins.cc
  717dabcf24d5f1356542a7716b96af87  gcc/config/riscv/riscv-c.cc
  3b7012a7d47b9aaf163e890d3e29013e  gcc/config/riscv/riscv-cmo.def
! ecc787a8bbdd08bf9aa184b67ffe83e2  gcc/config/riscv/riscv-cores.def
  173996678a5bf2b1b40e30fe260109b4  gcc/config/riscv/riscv-d.cc
  790bd2a5355776ab5ebf4c7814489760  gcc/config/riscv/riscv-d.h
  9848282285cd3a3e21f6181f220f6ba9  gcc/config/riscv/riscv-ext-corev.def
*************** b467d35485b39b25863e918609a322d0  gcc/co
*** 4921,4927 ****
  b1bc6d82a24b7b0e658a43956a37419c  gcc/config/riscv/riscv-modes.def
  7631415b148bf332623531ebb3e0262b  gcc/config/riscv/riscv-opts.h
  2c59654f5f7fe2689efd370c0441b6bd  gcc/config/riscv/riscv-passes.def
! 3bff8bbad44a4df7cb4f89cd56d4051c  gcc/config/riscv/riscv-protos.h
  446f0f39c6f980e246ea56f1233e9271  gcc/config/riscv/riscv-scalar-crypto.def
  7a88fbbf6ce3f23037c77808a5e294f7  gcc/config/riscv/riscv-selftests.cc
  da4e034d23a8f2754b1dfce0122f286e  gcc/config/riscv/riscv-shorten-memrefs.cc
--- 4921,4927 ----
  b1bc6d82a24b7b0e658a43956a37419c  gcc/config/riscv/riscv-modes.def
  7631415b148bf332623531ebb3e0262b  gcc/config/riscv/riscv-opts.h
  2c59654f5f7fe2689efd370c0441b6bd  gcc/config/riscv/riscv-passes.def
! a74e7f8c5cb9995dff8a8d77c7bbd183  gcc/config/riscv/riscv-protos.h
  446f0f39c6f980e246ea56f1233e9271  gcc/config/riscv/riscv-scalar-crypto.def
  7a88fbbf6ce3f23037c77808a5e294f7  gcc/config/riscv/riscv-selftests.cc
  da4e034d23a8f2754b1dfce0122f286e  gcc/config/riscv/riscv-shorten-memrefs.cc
*************** f51037a9e437f8e9ce7215b2da5ad4e2  gcc/co
*** 4947,4955 ****
  5a1dc434073ed565843a91456f836a9a  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! a29c098d20a5e1c9c330702cbb98be05  gcc/config/riscv/riscv.cc
! fbf0fbcc5bcf93c71a6a0f2d30cf557d  gcc/config/riscv/riscv.h
! c8656bc501424a399d615a8e69a0364d  gcc/config/riscv/riscv.md
  fec1c87bba727131a45d4ec4a9ae5490  gcc/config/riscv/riscv.opt
  d1d34490d8b53ec20d70ed9e2e56e3ab  gcc/config/riscv/riscv.opt.urls
  374e3c204946cff8c4be2bcad6641830  gcc/config/riscv/riscv_bitmanip.h
--- 4947,4955 ----
  5a1dc434073ed565843a91456f836a9a  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 95690b6fd5c55dd1058d48f1b53468a2  gcc/config/riscv/riscv.cc
! 0766a701a8c90815575fae86f92cc4a6  gcc/config/riscv/riscv.h
! 2915aa6b6dcdddc293d88e517f76e069  gcc/config/riscv/riscv.md
  fec1c87bba727131a45d4ec4a9ae5490  gcc/config/riscv/riscv.opt
  d1d34490d8b53ec20d70ed9e2e56e3ab  gcc/config/riscv/riscv.opt.urls
  374e3c204946cff8c4be2bcad6641830  gcc/config/riscv/riscv_bitmanip.h
*************** fd8e9517de64ab23821ea1284ea6d7f6  gcc/co
*** 4984,4990 ****
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
  88f7597398d0c8b8b87baba5fd207996  gcc/config/riscv/vector-crypto.md
  ebed0032394077f4410660bcb8b59f15  gcc/config/riscv/vector-iterators.md
! 32f27efd1435474199683e4d52770ee8  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
  0f64aaa114ab62a1a46f7ac422d6a129  gcc/config/riscv/zc.md
  36cba2444ae9c8f107fee34492bd0ed6  gcc/config/riscv/zicond.md
--- 4984,4990 ----
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
  88f7597398d0c8b8b87baba5fd207996  gcc/config/riscv/vector-crypto.md
  ebed0032394077f4410660bcb8b59f15  gcc/config/riscv/vector-iterators.md
! 568a5bde8501a652239fa59f0e05a378  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
  0f64aaa114ab62a1a46f7ac422d6a129  gcc/config/riscv/zc.md
  36cba2444ae9c8f107fee34492bd0ed6  gcc/config/riscv/zicond.md
*************** d7112093049d4abbc421609d032b7358  gcc/co
*** 5212,5218 ****
  6fdfe66fdde3f81b83dc16c27ac7df3f  gcc/config/s390/s390-opts.h
  87bca0c72260bdf7b32cbe797e607999  gcc/config/s390/s390-passes.def
  b6426b7457d4617875547be76bb5112d  gcc/config/s390/s390-protos.h
! f50b15f050dbe1375d1faf2d9b0b2a4e  gcc/config/s390/s390.cc
  f162b44703353c72956061efcbe580d7  gcc/config/s390/s390.h
  efc539f007c17be06ea605fd605e88a5  gcc/config/s390/s390.md
  fa4475320c7a3767bf9accfa736efcc6  gcc/config/s390/s390.opt
--- 5212,5218 ----
  6fdfe66fdde3f81b83dc16c27ac7df3f  gcc/config/s390/s390-opts.h
  87bca0c72260bdf7b32cbe797e607999  gcc/config/s390/s390-passes.def
  b6426b7457d4617875547be76bb5112d  gcc/config/s390/s390-protos.h
! 6a43653c6812dd5cf0ea3353a8a6435b  gcc/config/s390/s390.cc
  f162b44703353c72956061efcbe580d7  gcc/config/s390/s390.h
  efc539f007c17be06ea605fd605e88a5  gcc/config/s390/s390.md
  fa4475320c7a3767bf9accfa736efcc6  gcc/config/s390/s390.opt
*************** f3a2992c8e85b13e50b261e26924d83f  gcc/co
*** 5475,5488 ****
  83fbfe1c588f31edbd8e4a77807087fb  gcc/config/xtensa/uclinux.opt.urls
  87fc5c87547999f715031b4ff99fb67b  gcc/config/xtensa/xtensa-dynconfig.cc
  c7be35a23fd70ac184dd9072319304c7  gcc/config/xtensa/xtensa-opts.h
! e59f31891252abdd41eedc784b25ed6b  gcc/config/xtensa/xtensa-protos.h
! 9b7477b33c77d72ea4f921d1b1ef7d8a  gcc/config/xtensa/xtensa.cc
  f378c965e5e289a389bbf48d20867d48  gcc/config/xtensa/xtensa.h
! 4b60b71e56dd2be082081b73752e9d5a  gcc/config/xtensa/xtensa.md
  f0452ea712955ce21c9c149136850780  gcc/config/xtensa/xtensa.opt
  db57d7603312357e8c0cfb21c32353d1  gcc/config/xtensa/xtensa.opt.urls
! 2c411f0a09fa3c940b54c826a0c63fef  gcc/configure
! 96f89f3dc1fb5323ca45ec9d3920f94e  gcc/configure.ac
  ec3aa966ca3fe9c6f84d4378160541b6  gcc/context.cc
  d1bde52b8dee0c0c5506d7e320b1bb61  gcc/context.h
  a9c3cddee4e237141062720b72fe38cd  gcc/convert.cc
--- 5475,5488 ----
  83fbfe1c588f31edbd8e4a77807087fb  gcc/config/xtensa/uclinux.opt.urls
  87fc5c87547999f715031b4ff99fb67b  gcc/config/xtensa/xtensa-dynconfig.cc
  c7be35a23fd70ac184dd9072319304c7  gcc/config/xtensa/xtensa-opts.h
! e20fad8bff9c459aaef3ea80a54e1973  gcc/config/xtensa/xtensa-protos.h
! 92950369828e7e9323c0543cd126af05  gcc/config/xtensa/xtensa.cc
  f378c965e5e289a389bbf48d20867d48  gcc/config/xtensa/xtensa.h
! 660a7be5da430bbb578b4366be66b7aa  gcc/config/xtensa/xtensa.md
  f0452ea712955ce21c9c149136850780  gcc/config/xtensa/xtensa.opt
  db57d7603312357e8c0cfb21c32353d1  gcc/config/xtensa/xtensa.opt.urls
! 6660846ea4502d09af4ef087d5400881  gcc/configure
! 80e2db79d0b50d84b8d24717e059fc6a  gcc/configure.ac
  ec3aa966ca3fe9c6f84d4378160541b6  gcc/context.cc
  d1bde52b8dee0c0c5506d7e320b1bb61  gcc/context.h
  a9c3cddee4e237141062720b72fe38cd  gcc/convert.cc
*************** fa062fdcbed6412a676fa477d87ba334  gcc/co
*** 5492,5498 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! afbe36c337703e1350b4a00ceebf9206  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5492,5498 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 318f7097ac13f094b11c84bcf38163c1  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** fce8de27014c109814b3f69be6a5d4f6  gcc/cp
*** 5533,5539 ****
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  0414c494620e2ace88b96b92413b56d0  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! 281695b15c2d638ddf698975e1048301  gcc/cp/constexpr.cc
  7cf0106de3accd773b289c02049d31ca  gcc/cp/constraint.cc
  613233facbf4b0f1cff770ed6c49c666  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
--- 5533,5539 ----
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  0414c494620e2ace88b96b92413b56d0  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! 8dc9372afc0092a39484ab78eb81a94f  gcc/cp/constexpr.cc
  7cf0106de3accd773b289c02049d31ca  gcc/cp/constraint.cc
  613233facbf4b0f1cff770ed6c49c666  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
*************** b7ae95468b0150bbe2b3cba351e96a2c  gcc/cp
*** 5552,5558 ****
  8e454e3f7746836df899a46698f5af3e  gcc/cp/cxx-pretty-print.cc
  955ecfa636599a39229757737e271819  gcc/cp/cxx-pretty-print.h
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
! 451a8241632a238066b706e1b81d55da  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
  f7b49cc43c94798c1322b400f10ee9d8  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
--- 5552,5558 ----
  8e454e3f7746836df899a46698f5af3e  gcc/cp/cxx-pretty-print.cc
  955ecfa636599a39229757737e271819  gcc/cp/cxx-pretty-print.h
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
! b5d9940b3021d0650a705141bdee0739  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
  f7b49cc43c94798c1322b400f10ee9d8  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
*************** ebeee9458a6197720ea96b508075e84e  gcc/cp
*** 5577,5595 ****
  5a9aeceb329cf9c3d8c374b77f39f2b4  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 354981cd1777f3de881acecf3ec01bfd  gcc/cp/parser.cc
  db6ae85b922989f89eda229cb29e4690  gcc/cp/parser.h
! 0f47097410cf79fe57a96054325ea19b  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
! 1cd3ad2b28843a27785d806041c11d87  gcc/cp/semantics.cc
  b58bf61fbfed45af179b7104e72a9486  gcc/cp/std-name-hint.gperf
  2425db76c32085977eff047c982cebab  gcc/cp/std-name-hint.h
  067caebca8597843f76a13fd5126a2df  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! dee4658e4127098ee71481440f92c68f  gcc/cp/typeck.cc
! 75ee85794a3c4856e3de8a2f45bfcc6f  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
  05a136afb0839d5238cd1390602e748e  gcc/cppbuiltin.h
--- 5577,5595 ----
  5a9aeceb329cf9c3d8c374b77f39f2b4  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 057ec7aef116c1058429f62ab725c421  gcc/cp/parser.cc
  db6ae85b922989f89eda229cb29e4690  gcc/cp/parser.h
! a91e78e9f3f8f00297d4c2def39c530b  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
! 944ebf047147a73d7c592da5dfa70e38  gcc/cp/semantics.cc
  b58bf61fbfed45af179b7104e72a9486  gcc/cp/std-name-hint.gperf
  2425db76c32085977eff047c982cebab  gcc/cp/std-name-hint.h
  067caebca8597843f76a13fd5126a2df  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! efd06edefdaa485e12b0d677c6d6d2e6  gcc/cp/typeck.cc
! d5322228a4b4ea22ae20c897e9baaf69  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
  05a136afb0839d5238cd1390602e748e  gcc/cppbuiltin.h
*************** b24ae235869e8ddfde6c45d41923f7ef  gcc/df
*** 5876,5882 ****
  db78b93a68a738fdb34ae6aa97fe35db  gcc/diagnostic-context-rich-location.cc
  6db42ec1ba85ac5c0d5ff77c52247653  gcc/diagnostic-context-rich-location.h
  93b73dbd9036edc5371e50289303ddde  gcc/diagnostic-core.h
! a94dd5f1cfd3551d976846dfd5627f4e  gcc/diagnostic-global-context.cc
  ddb5e19e6f3ff8224aedd1a60eaad23e  gcc/diagnostic-highlight-colors.h
  03317dcb68edc20739a39d6cdd14723d  gcc/diagnostic.h
  e5c0a507efdbc3f4b46838590abf4cfb  gcc/diagnostics/buffering.cc
--- 5876,5882 ----
  db78b93a68a738fdb34ae6aa97fe35db  gcc/diagnostic-context-rich-location.cc
  6db42ec1ba85ac5c0d5ff77c52247653  gcc/diagnostic-context-rich-location.h
  93b73dbd9036edc5371e50289303ddde  gcc/diagnostic-core.h
! 51b5b20d6930ca3bac2a5915b6cc4985  gcc/diagnostic-global-context.cc
  ddb5e19e6f3ff8224aedd1a60eaad23e  gcc/diagnostic-highlight-colors.h
  03317dcb68edc20739a39d6cdd14723d  gcc/diagnostic.h
  e5c0a507efdbc3f4b46838590abf4cfb  gcc/diagnostics/buffering.cc
*************** c9250b15349fce5a608b769043f111e5  gcc/di
*** 5888,5895 ****
  d29ddcb032cf35e525663d8b857fe46b  gcc/diagnostics/color.h
  3e3d9b398652afcc049d57d6ebcb4d1b  gcc/diagnostics/column-options.h
  feea31e8e6eec9c1403f01df95d221d4  gcc/diagnostics/context-options.h
! d4171bd3121ee5d3efde09e364b0e9b2  gcc/diagnostics/context.cc
! fb340621b50a922aa77126e66975cebf  gcc/diagnostics/context.h
  3f0f4bd88c2110afde540ec51f32ce6b  gcc/diagnostics/counters.h
  6eb2e40f405d950a9e9f3c089680a899  gcc/diagnostics/diagnostic-info.h
  fd87cae7d2e8cfdbfe401ce78e684593  gcc/diagnostics/diagnostics-selftests.cc
--- 5888,5895 ----
  d29ddcb032cf35e525663d8b857fe46b  gcc/diagnostics/color.h
  3e3d9b398652afcc049d57d6ebcb4d1b  gcc/diagnostics/column-options.h
  feea31e8e6eec9c1403f01df95d221d4  gcc/diagnostics/context-options.h
! 45e79d17cd811f8bb3f179862ad044f9  gcc/diagnostics/context.cc
! cbbbe0789e52cde3cf1f28f5b04c6d4f  gcc/diagnostics/context.h
  3f0f4bd88c2110afde540ec51f32ce6b  gcc/diagnostics/counters.h
  6eb2e40f405d950a9e9f3c089680a899  gcc/diagnostics/diagnostic-info.h
  fd87cae7d2e8cfdbfe401ce78e684593  gcc/diagnostics/diagnostics-selftests.cc
*************** d60716b4d04276f95205c6f8d2140f90  gcc/di
*** 5902,5913 ****
  cff4c3f5d806ef5fa9ea2a9776fcc922  gcc/diagnostics/event-id.h
  9ba917dd5ceec0dd361cd811174136d3  gcc/diagnostics/file-cache.cc
  4e3d1fe87ad0979f552310facbc2e534  gcc/diagnostics/file-cache.h
! 182ab4fc86062daf3c379fb001a34a90  gcc/diagnostics/html-sink.cc
  4b8362b8dc9d0407e250775c344c387a  gcc/diagnostics/html-sink.h
  e5801529f87f5812381a450d52efaebf  gcc/diagnostics/kinds.def
! 0e7b7ba2494e5650473c71225e47feb5  gcc/diagnostics/kinds.h
  9c9f1df85c4ab3a3e0b7d60a87966af2  gcc/diagnostics/lazy-paths.cc
  4ed6c990f3102512e3c60c6c5069dd21  gcc/diagnostics/lazy-paths.h
  c131a194acbb9d5e4682e19f1a759181  gcc/diagnostics/logical-locations.h
  ed9e23a6a190e966a47730d652613dd2  gcc/diagnostics/macro-unwinding.cc
  1a1b13e68ed47b8eb0342caa0caee17b  gcc/diagnostics/macro-unwinding.h
--- 5902,5915 ----
  cff4c3f5d806ef5fa9ea2a9776fcc922  gcc/diagnostics/event-id.h
  9ba917dd5ceec0dd361cd811174136d3  gcc/diagnostics/file-cache.cc
  4e3d1fe87ad0979f552310facbc2e534  gcc/diagnostics/file-cache.h
! f57fc7f90744b5b7f5afad3c5d68a718  gcc/diagnostics/html-sink.cc
  4b8362b8dc9d0407e250775c344c387a  gcc/diagnostics/html-sink.h
  e5801529f87f5812381a450d52efaebf  gcc/diagnostics/kinds.def
! 8c6a5304c40c7fa2b3f9a71b0144b010  gcc/diagnostics/kinds.h
  9c9f1df85c4ab3a3e0b7d60a87966af2  gcc/diagnostics/lazy-paths.cc
  4ed6c990f3102512e3c60c6c5069dd21  gcc/diagnostics/lazy-paths.h
+ 6f69e590053bf3418aca58e6ff240d75  gcc/diagnostics/logging.cc
+ 02b5e4060cc9e8fc0b76b1939e26e1d8  gcc/diagnostics/logging.h
  c131a194acbb9d5e4682e19f1a759181  gcc/diagnostics/logical-locations.h
  ed9e23a6a190e966a47730d652613dd2  gcc/diagnostics/macro-unwinding.cc
  1a1b13e68ed47b8eb0342caa0caee17b  gcc/diagnostics/macro-unwinding.h
*************** f6d38b3a59fedd8d4664f2f9da2dc780  gcc/di
*** 5916,5928 ****
  3df9c58d5592c4781758cda2f751adb8  gcc/diagnostics/option-classifier.h
  aa4ae9b850b3b556ebb4ac4ba4849e4b  gcc/diagnostics/option-id-manager.h
  ee46d9f24ee418300e1cb8af08ce0e7c  gcc/diagnostics/option-id.h
! f5d7b6b5a0da4617c6298991d76432f3  gcc/diagnostics/output-file.h
  6ef0de99941e4efdc7102081e6a20e2d  gcc/diagnostics/output-spec.cc
  3eec925c74669a3ab2099a0428b64b64  gcc/diagnostics/output-spec.h
  cefbba8b03685fbfd838e1f457bb843a  gcc/diagnostics/paths-output.cc
  e60ad2d99ee160a6acce95a85c4f5884  gcc/diagnostics/paths.cc
  ab20f8a7e64efd9ea6670e6447014d6f  gcc/diagnostics/paths.h
! 29d9044181100c95cc1ad444668db93b  gcc/diagnostics/sarif-sink.cc
  2e5b6abdac74dd6e43e3985e6a54b648  gcc/diagnostics/sarif-sink.h
  ee068b3f8fd2d449eee5a70ef6dad518  gcc/diagnostics/selftest-context.cc
  0c9931582348dcf2e668dad28878e073  gcc/diagnostics/selftest-context.h
--- 5918,5930 ----
  3df9c58d5592c4781758cda2f751adb8  gcc/diagnostics/option-classifier.h
  aa4ae9b850b3b556ebb4ac4ba4849e4b  gcc/diagnostics/option-id-manager.h
  ee46d9f24ee418300e1cb8af08ce0e7c  gcc/diagnostics/option-id.h
! cc65ae2ee101a218fd768c2fee83af6e  gcc/diagnostics/output-file.h
  6ef0de99941e4efdc7102081e6a20e2d  gcc/diagnostics/output-spec.cc
  3eec925c74669a3ab2099a0428b64b64  gcc/diagnostics/output-spec.h
  cefbba8b03685fbfd838e1f457bb843a  gcc/diagnostics/paths-output.cc
  e60ad2d99ee160a6acce95a85c4f5884  gcc/diagnostics/paths.cc
  ab20f8a7e64efd9ea6670e6447014d6f  gcc/diagnostics/paths.h
! ff40bea7bb4cf51870386a8c333cca40  gcc/diagnostics/sarif-sink.cc
  2e5b6abdac74dd6e43e3985e6a54b648  gcc/diagnostics/sarif-sink.h
  ee068b3f8fd2d449eee5a70ef6dad518  gcc/diagnostics/selftest-context.cc
  0c9931582348dcf2e668dad28878e073  gcc/diagnostics/selftest-context.h
*************** ee068b3f8fd2d449eee5a70ef6dad518  gcc/di
*** 5931,5944 ****
  112984df670b9db84c11f891b9d5b94b  gcc/diagnostics/selftest-paths.cc
  24e9e37ce7832be5c6807735b79cb487  gcc/diagnostics/selftest-paths.h
  7cdb74e1f66d5f344d0902bc7ca9c28d  gcc/diagnostics/selftest-source-printing.h
! 077dbad2afda8f7b579b4a8b27302000  gcc/diagnostics/sink.h
  83cfb383914a3b5f56ce7cf9222d2389  gcc/diagnostics/source-printing-effects.h
  32405413e6ea2511c6e8bd5f66689ac2  gcc/diagnostics/source-printing-options.h
  7ef5bdd49854458958c5c1ca32a221e8  gcc/diagnostics/source-printing.cc
  c7ddef71ac29eb2a389042f195e3b325  gcc/diagnostics/state-graphs-to-dot.cc
  725af6438f327bd6aa23464c8fc3653a  gcc/diagnostics/state-graphs.cc
  fd0a458b50e99299115a0f8f2f59dd9d  gcc/diagnostics/state-graphs.h
! e9db31a0632fe3094378dafb5242a6cd  gcc/diagnostics/text-sink.cc
  59de35a57a51077e80939e29ebfbc93a  gcc/diagnostics/text-sink.h
  b882c3ac372bd1a3c12cb702a5bdf197  gcc/diagnostics/url.h
  e2ff50cf5215e2299270f0da4d4d60d0  gcc/digraph.cc
--- 5933,5946 ----
  112984df670b9db84c11f891b9d5b94b  gcc/diagnostics/selftest-paths.cc
  24e9e37ce7832be5c6807735b79cb487  gcc/diagnostics/selftest-paths.h
  7cdb74e1f66d5f344d0902bc7ca9c28d  gcc/diagnostics/selftest-source-printing.h
! 642ae5ac3bdb29af1ce35f486bc47bfd  gcc/diagnostics/sink.h
  83cfb383914a3b5f56ce7cf9222d2389  gcc/diagnostics/source-printing-effects.h
  32405413e6ea2511c6e8bd5f66689ac2  gcc/diagnostics/source-printing-options.h
  7ef5bdd49854458958c5c1ca32a221e8  gcc/diagnostics/source-printing.cc
  c7ddef71ac29eb2a389042f195e3b325  gcc/diagnostics/state-graphs-to-dot.cc
  725af6438f327bd6aa23464c8fc3653a  gcc/diagnostics/state-graphs.cc
  fd0a458b50e99299115a0f8f2f59dd9d  gcc/diagnostics/state-graphs.h
! 4bfe541424ef1c4658f0a472e9623d34  gcc/diagnostics/text-sink.cc
  59de35a57a51077e80939e29ebfbc93a  gcc/diagnostics/text-sink.h
  b882c3ac372bd1a3c12cb702a5bdf197  gcc/diagnostics/url.h
  e2ff50cf5215e2299270f0da4d4d60d0  gcc/digraph.cc
*************** acdfc663791e4321372e79932070d05d  gcc/do
*** 5959,5965 ****
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! a5ec02e9671a9776c5102709c1068dc8  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
--- 5961,5967 ----
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! d032e4eccc4b3f6061fdc8c4d8a99db4  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
*************** a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/do
*** 5969,5975 ****
  8700253b7c491bd8902f580c7dcff6dc  gcc/doc/gcov.texi
  cc49c44389e2d6e1bc60b761b5602112  gcc/doc/generic.texi
  6dd13335166acce8e899b838ecbd04bd  gcc/doc/gimple.texi
! 9da760d0d109c3f78940f84365883d94  gcc/doc/gm2.texi
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
  e146722b4ab52551483390772327c93f  gcc/doc/gty.texi
  27e2895f33fff82c6e13b5b9e7b8df6b  gcc/doc/headerdirs.texi
--- 5971,5977 ----
  8700253b7c491bd8902f580c7dcff6dc  gcc/doc/gcov.texi
  cc49c44389e2d6e1bc60b761b5602112  gcc/doc/generic.texi
  6dd13335166acce8e899b838ecbd04bd  gcc/doc/gimple.texi
! 43808f9404edf4ea28b68479f495fa31  gcc/doc/gm2.texi
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
  e146722b4ab52551483390772327c93f  gcc/doc/gty.texi
  27e2895f33fff82c6e13b5b9e7b8df6b  gcc/doc/headerdirs.texi
*************** ee4c7654f733cefcb73d4fd24f3e1b82  gcc/do
*** 5981,5989 ****
  9512a9fe27682edff7dd2ed171bbb853  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 0085cbc48c4b81c4377ac47e29e12eec  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 0c4095e2968a16b175ce239076a99297  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 5983,5991 ----
  9512a9fe27682edff7dd2ed171bbb853  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 1741ef9429293689613ede70eef21c70  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! a562737afd14d9325c66ab7206d486a5  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** a1f65f3aec3cc5d5b6505fb976d4c216  gcc/do
*** 6021,6027 ****
  c98feb0a43876ed3ef2fca3c8448e8f8  gcc/doc/lto.texi
  26f08ad01720c082109915a4ec33c80f  gcc/doc/makefile.texi
  2f8484fc473d3a7141e34a260b920ea3  gcc/doc/match-and-simplify.texi
! ce20ce13aa52471e6b264e2fd332d5a2  gcc/doc/md.texi
  8836b7001f069e8dead6a4643108258b  gcc/doc/objc.texi
  9673b2a6dd62d5ac08afb00421e98cdb  gcc/doc/optinfo.texi
  0ae5c8ef7a8ce01c113543a03df7e0df  gcc/doc/options.texi
--- 6023,6029 ----
  c98feb0a43876ed3ef2fca3c8448e8f8  gcc/doc/lto.texi
  26f08ad01720c082109915a4ec33c80f  gcc/doc/makefile.texi
  2f8484fc473d3a7141e34a260b920ea3  gcc/doc/match-and-simplify.texi
! 4348f38c3f6cad1a3ac23828a6375ad1  gcc/doc/md.texi
  8836b7001f069e8dead6a4643108258b  gcc/doc/objc.texi
  9673b2a6dd62d5ac08afb00421e98cdb  gcc/doc/optinfo.texi
  0ae5c8ef7a8ce01c113543a03df7e0df  gcc/doc/options.texi
*************** bdb96c18785d30a60425d3610b81c04c  gcc/do
*** 6035,6043 ****
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
  7ace68f81059516a6c2c6cc8cd9fb830  gcc/doc/sourcebuild.texi
! 324bbfba4e1ce0b6019ce86e466edde0  gcc/doc/standards.texi
! 7a897a31baa6ad53c7006ebe54974a3a  gcc/doc/tm.texi
! 071dc35ed010659e96c88597c891fa6e  gcc/doc/tm.texi.in
  c4168f9f01adf4dd8adc647c04107142  gcc/doc/tree-ssa.texi
  5f62752970e47d350c8cbce47123d1cf  gcc/doc/trouble.texi
  7f44041407f24d2851135ae497914475  gcc/doc/ux.texi
--- 6037,6045 ----
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
  7ace68f81059516a6c2c6cc8cd9fb830  gcc/doc/sourcebuild.texi
! c6eb228a6da301194f3963b6d42729e7  gcc/doc/standards.texi
! f7af133d6d9c479fbc981feb4ce72a82  gcc/doc/tm.texi
! 4daf70f27425e03ecbb9f0fad3e8fb62  gcc/doc/tm.texi.in
  c4168f9f01adf4dd8adc647c04107142  gcc/doc/tree-ssa.texi
  5f62752970e47d350c8cbce47123d1cf  gcc/doc/trouble.texi
  7f44041407f24d2851135ae497914475  gcc/doc/ux.texi
*************** e518c37d94908385da07142b92ea8cdb  gcc/dw
*** 6058,6066 ****
  7efb4f91e749cd2ecf8f4c740fdb13b0  gcc/dwarf2cfi.cc
  0a3eda9dab4d6f189c8f1075bd4b269a  gcc/dwarf2codeview.cc
  186b01005d892edba3b03fc17bd0dc8f  gcc/dwarf2codeview.h
! baaae59ceda4df837a6f62ffb0f29ee7  gcc/dwarf2ctf.cc
  1d0191caafac1774f50a47175d915ea0  gcc/dwarf2ctf.h
! 47ff7f9e9ca081597e6dd9be5b4d091a  gcc/dwarf2out.cc
  7ff70632352b65c214e02360ed6d6aae  gcc/dwarf2out.h
  fdd976759ee89958c91a4010e53c0f02  gcc/early-remat.cc
  0fa3f12b9f441f701d99e167274a0961  gcc/emit-rtl.cc
--- 6060,6068 ----
  7efb4f91e749cd2ecf8f4c740fdb13b0  gcc/dwarf2cfi.cc
  0a3eda9dab4d6f189c8f1075bd4b269a  gcc/dwarf2codeview.cc
  186b01005d892edba3b03fc17bd0dc8f  gcc/dwarf2codeview.h
! 252df5bb1a7e04dd7c8f06aac160aa04  gcc/dwarf2ctf.cc
  1d0191caafac1774f50a47175d915ea0  gcc/dwarf2ctf.h
! a1e3cbcc23801b6e056d3e8ac4d3cc1d  gcc/dwarf2out.cc
  7ff70632352b65c214e02360ed6d6aae  gcc/dwarf2out.h
  fdd976759ee89958c91a4010e53c0f02  gcc/early-remat.cc
  0fa3f12b9f441f701d99e167274a0961  gcc/emit-rtl.cc
*************** ada0afb884a142f8214291990679be13  gcc/fo
*** 6096,6102 ****
  6dd1484a5224f1070c3b6065080cb93d  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 3182da685a0d25f5fed9c5ae4be8d1fe  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6098,6104 ----
  6dd1484a5224f1070c3b6065080cb93d  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! f955d3ce9c54802046b86180e24e1532  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** aed3aedb6378a970055dff9e11eedc2d  gcc/fo
*** 6137,6143 ****
  b7e224f665bb5044ce35ed09435bd4fb  gcc/fortran/cpp.h
  a232f4d280ad08511e2718281b3d1ab6  gcc/fortran/data.cc
  d85e2f2fc3ee4721563bd47719063fb6  gcc/fortran/data.h
! 05dfc44b11f4a9328f84fb49c30afb48  gcc/fortran/decl.cc
  c33e2c4c7527bec8a125dd093dc59f2a  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  b6cce6988f87edda182aec1b6c3cd291  gcc/fortran/dump-parse-tree.cc
--- 6139,6145 ----
  b7e224f665bb5044ce35ed09435bd4fb  gcc/fortran/cpp.h
  a232f4d280ad08511e2718281b3d1ab6  gcc/fortran/data.cc
  d85e2f2fc3ee4721563bd47719063fb6  gcc/fortran/data.h
! 9e184eccee8c7ce64fc2ef74672aafe0  gcc/fortran/decl.cc
  c33e2c4c7527bec8a125dd093dc59f2a  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  b6cce6988f87edda182aec1b6c3cd291  gcc/fortran/dump-parse-tree.cc
*************** bd08c55098f00394b9922e6163c27b92  gcc/fo
*** 6150,6161 ****
  90fb05648549b99a6f93f4aca073b377  gcc/fortran/gfortran.h
  d29bb6813221f46b4cde9df77292c412  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
! 9253f176e44c2708e2c503251b27d6b8  gcc/fortran/interface.cc
! 62f248d93819299e90d8dd83fde71647  gcc/fortran/intrinsic.cc
  47e0e62e0a6eaad27941f8e734cda2a2  gcc/fortran/intrinsic.h
  46f301a921ea10f48c66cde1ded41776  gcc/fortran/intrinsic.texi
  d9adb34dd5debb7dc5853dbd9c099b8e  gcc/fortran/invoke.texi
! f9df43a02329adef3021a27235c57aca  gcc/fortran/io.cc
  d2a28ef98f6f78d1608fb52204e013a5  gcc/fortran/ioparm.def
  fd79207ab6491c890f9be301a1b291ed  gcc/fortran/iresolve.cc
  40087b4e405f3e0f17ebd4f0e9b63f48  gcc/fortran/iso-c-binding.def
--- 6152,6163 ----
  90fb05648549b99a6f93f4aca073b377  gcc/fortran/gfortran.h
  d29bb6813221f46b4cde9df77292c412  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
! e4fe6ce0303cd182ebd328bdb0ae5743  gcc/fortran/interface.cc
! 74d5cc035a8e6ee1fb5826c965c90532  gcc/fortran/intrinsic.cc
  47e0e62e0a6eaad27941f8e734cda2a2  gcc/fortran/intrinsic.h
  46f301a921ea10f48c66cde1ded41776  gcc/fortran/intrinsic.texi
  d9adb34dd5debb7dc5853dbd9c099b8e  gcc/fortran/invoke.texi
! 4a91f323761835f16a1a9b3995485379  gcc/fortran/io.cc
  d2a28ef98f6f78d1608fb52204e013a5  gcc/fortran/ioparm.def
  fd79207ab6491c890f9be301a1b291ed  gcc/fortran/iresolve.cc
  40087b4e405f3e0f17ebd4f0e9b63f48  gcc/fortran/iso-c-binding.def
*************** fd79207ab6491c890f9be301a1b291ed  gcc/fo
*** 6170,6181 ****
  763c37f838e32f5ed8ad600157a0d951  gcc/fortran/mathbuiltins.def
  6e89e2e347d7f6e1576cbda0e958b5bd  gcc/fortran/misc.cc
  df87a47795cf1aceec24416d89f4dc6e  gcc/fortran/module.cc
! 055cdc9c702c67c02729328aedac6553  gcc/fortran/openmp.cc
  5b63ee69316bceb14ed8172adcfedf6b  gcc/fortran/options.cc
  44ee980cc04645c25872621b20fc36fa  gcc/fortran/parse.cc
  c1b40e866a8bbe611aa65278fe2508d3  gcc/fortran/parse.h
! 8282ea5f4e00d5c64da552ea2f31dcc6  gcc/fortran/primary.cc
! 9fbd94c4a385bc0348e4b52527c60d1a  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  71190056d6f36d3d43d4b6ed27f23032  gcc/fortran/simplify.cc
--- 6172,6183 ----
  763c37f838e32f5ed8ad600157a0d951  gcc/fortran/mathbuiltins.def
  6e89e2e347d7f6e1576cbda0e958b5bd  gcc/fortran/misc.cc
  df87a47795cf1aceec24416d89f4dc6e  gcc/fortran/module.cc
! 8da1b859b4dc259b551a9531ad3eaa9f  gcc/fortran/openmp.cc
  5b63ee69316bceb14ed8172adcfedf6b  gcc/fortran/options.cc
  44ee980cc04645c25872621b20fc36fa  gcc/fortran/parse.cc
  c1b40e866a8bbe611aa65278fe2508d3  gcc/fortran/parse.h
! 6af7a69df20b6ed8fae3858a2eb7f976  gcc/fortran/primary.cc
! ddea90d98e60c6eacfbfa24c8326c4a4  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  71190056d6f36d3d43d4b6ed27f23032  gcc/fortran/simplify.cc
*************** c1b40e866a8bbe611aa65278fe2508d3  gcc/fo
*** 6183,6198 ****
  7fc6fb7f159830fc0d98a9cd72e5cdf9  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! ef4fd0b8b9886de61174f6a5f9d54c14  gcc/fortran/trans-array.cc
  682d93b7e921d709d88b7e5219a69d53  gcc/fortran/trans-array.h
  dfe1e1950e068389ed73663e9a11ad88  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  674805c3ef440048785038bc04884bc4  gcc/fortran/trans-decl.cc
! ce8403d10aa544117adb37fc027dd076  gcc/fortran/trans-expr.cc
  ddb6285a5b8bbedf10437e704ef1a2c1  gcc/fortran/trans-intrinsic.cc
! 9cf7c294c06fdaea67dcd2b9ff2cf5ad  gcc/fortran/trans-io.cc
! ec953a4922656d79301eb36337b9d297  gcc/fortran/trans-openmp.cc
  ef3436c60285865c7e4a611b65ebca7d  gcc/fortran/trans-stmt.cc
  9caf8a2f93e6cf5e2a567a3aa18f957c  gcc/fortran/trans-stmt.h
  23c951c4924ba8a16582a8b9e5065a87  gcc/fortran/trans-types.cc
--- 6185,6200 ----
  7fc6fb7f159830fc0d98a9cd72e5cdf9  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! 0cc6777a5ed1b528d7f2d375ecde014e  gcc/fortran/trans-array.cc
  682d93b7e921d709d88b7e5219a69d53  gcc/fortran/trans-array.h
  dfe1e1950e068389ed73663e9a11ad88  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  674805c3ef440048785038bc04884bc4  gcc/fortran/trans-decl.cc
! 759fe6eedf9883abd689cd15ba82e8db  gcc/fortran/trans-expr.cc
  ddb6285a5b8bbedf10437e704ef1a2c1  gcc/fortran/trans-intrinsic.cc
! 4a091b0b546257101e406582ece724f7  gcc/fortran/trans-io.cc
! 27df041e4caff610df844e7a22e291e3  gcc/fortran/trans-openmp.cc
  ef3436c60285865c7e4a611b65ebca7d  gcc/fortran/trans-stmt.cc
  9caf8a2f93e6cf5e2a567a3aa18f957c  gcc/fortran/trans-stmt.h
  23c951c4924ba8a16582a8b9e5065a87  gcc/fortran/trans-types.cc
*************** da09d1e31d3994eb3d6958074d7b7ce5  gcc/gi
*** 6287,6293 ****
  fea7635818b5d7cefd4c7a0b268a254c  gcc/gimple-crc-optimization.cc
  1e3c7b3ded904be69c3703ac6d27fa44  gcc/gimple-expr.cc
  7b4f02095ce9b7a43bee8570917b9dc7  gcc/gimple-expr.h
! 4bb156b0c61094477f970e2d0dbf59fc  gcc/gimple-fold.cc
  86c6a1d00a802fd45372d34d131819e5  gcc/gimple-fold.h
  43ad47e8cd99d438040cf6937a3cbe5e  gcc/gimple-harden-conditionals.cc
  78586a1c0ce6834da91809b77f98c6d7  gcc/gimple-harden-control-flow.cc
--- 6289,6295 ----
  fea7635818b5d7cefd4c7a0b268a254c  gcc/gimple-crc-optimization.cc
  1e3c7b3ded904be69c3703ac6d27fa44  gcc/gimple-expr.cc
  7b4f02095ce9b7a43bee8570917b9dc7  gcc/gimple-expr.h
! 3e95abe4764be81478aae6852ee6a13f  gcc/gimple-fold.cc
  86c6a1d00a802fd45372d34d131819e5  gcc/gimple-fold.h
  43ad47e8cd99d438040cf6937a3cbe5e  gcc/gimple-harden-conditionals.cc
  78586a1c0ce6834da91809b77f98c6d7  gcc/gimple-harden-control-flow.cc
*************** bab40605909b2dfc01edcaa747fadd3e  gcc/ho
*** 6481,6487 ****
  260dd898f6b9809f71a292b793d67324  gcc/hw-doloop.h
  4769eb51982f8ccb12764424698b464f  gcc/hwint.cc
  8826410aae6a5efbb3d335e5e3dceed4  gcc/hwint.h
! 5dbb49fc33cd5351746515deaa6417ce  gcc/ifcvt.cc
  1d252ebba03aa858df6822a8b59e1d4e  gcc/ifcvt.h
  55413f67957a351f7ca1b0a8a2f69a7c  gcc/inchash.cc
  f380ce65b15eedb6d55a9848beb1ec3b  gcc/inchash.h
--- 6483,6489 ----
  260dd898f6b9809f71a292b793d67324  gcc/hw-doloop.h
  4769eb51982f8ccb12764424698b464f  gcc/hwint.cc
  8826410aae6a5efbb3d335e5e3dceed4  gcc/hwint.h
! e8e4cd46a35f3847ef63304c0831631b  gcc/ifcvt.cc
  1d252ebba03aa858df6822a8b59e1d4e  gcc/ifcvt.h
  55413f67957a351f7ca1b0a8a2f69a7c  gcc/inchash.cc
  f380ce65b15eedb6d55a9848beb1ec3b  gcc/inchash.h
*************** e44c0bf9cc0411d7bd57c6585eb6d0e4  gcc/lt
*** 6721,6727 ****
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! d4c592b2dfbb61572df1f85a00dc0c80  gcc/m2/ChangeLog
  33352ea845a8d2399793299f3e58a218  gcc/m2/Make-lang.in
  93fe99bf456561cd217f1c93d2ab7da7  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
--- 6723,6729 ----
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! a3d873f9c06aeff54adaead284c1ea4a  gcc/m2/ChangeLog
  33352ea845a8d2399793299f3e58a218  gcc/m2/Make-lang.in
  93fe99bf456561cd217f1c93d2ab7da7  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
*************** e00cf6ed8d0c099ab8f33394bfeb4dc3  gcc/m2
*** 6863,6869 ****
  08d1991abfb4f71b76010396a93251eb  gcc/m2/gm2-compiler/PHBuild.bnf
  08361e38dfa7f065be723afaa04d8986  gcc/m2/gm2-compiler/PHBuild.def
  b521bc37b844fd46fdfddcf3d2287f13  gcc/m2/gm2-compiler/PathName.def
! 96de7226734080944c4bdf83b7dbb0ca  gcc/m2/gm2-compiler/PathName.mod
  db0fe572d275f12368c3037e218c3bd6  gcc/m2/gm2-compiler/README
  25e8be2bf0259c769f97264249be9eea  gcc/m2/gm2-compiler/Sets.def
  6a3f8623f341588f21b4af58e021ac04  gcc/m2/gm2-compiler/Sets.mod
--- 6865,6871 ----
  08d1991abfb4f71b76010396a93251eb  gcc/m2/gm2-compiler/PHBuild.bnf
  08361e38dfa7f065be723afaa04d8986  gcc/m2/gm2-compiler/PHBuild.def
  b521bc37b844fd46fdfddcf3d2287f13  gcc/m2/gm2-compiler/PathName.def
! 42b1a8ddbcae6fe7dd1a0a999460907d  gcc/m2/gm2-compiler/PathName.mod
  db0fe572d275f12368c3037e218c3bd6  gcc/m2/gm2-compiler/README
  25e8be2bf0259c769f97264249be9eea  gcc/m2/gm2-compiler/Sets.def
  6a3f8623f341588f21b4af58e021ac04  gcc/m2/gm2-compiler/Sets.mod
*************** b014a5a5babb9953d9f203bf4fd10046  gcc/m2
*** 6950,6956 ****
  d5db4a0704741e24958241fe74fd007c  gcc/m2/gm2-ici/README
  1a509083f6bbab06c5aa4fdf0bcdc613  gcc/m2/gm2-ici/m2linemap.c
  ef5415e8ad71dffb5daf39428970d577  gcc/m2/gm2-internals.texi
! 40b61715b0303eb9e5585d065dc9f34e  gcc/m2/gm2-lang.cc
  9584a98fba37e1f4209b1a26ca795ec0  gcc/m2/gm2-lang.h
  2b1d730bdeb600463475d3bb94f17f12  gcc/m2/gm2-libiberty/README
  2293cd11c3bafff5a1517363d39a0273  gcc/m2/gm2-libiberty/choosetemp.def
--- 6952,6958 ----
  d5db4a0704741e24958241fe74fd007c  gcc/m2/gm2-ici/README
  1a509083f6bbab06c5aa4fdf0bcdc613  gcc/m2/gm2-ici/m2linemap.c
  ef5415e8ad71dffb5daf39428970d577  gcc/m2/gm2-internals.texi
! b7dafe37eb90089645fb1cf9e35a6bbf  gcc/m2/gm2-lang.cc
  9584a98fba37e1f4209b1a26ca795ec0  gcc/m2/gm2-lang.h
  2b1d730bdeb600463475d3bb94f17f12  gcc/m2/gm2-libiberty/README
  2293cd11c3bafff5a1517363d39a0273  gcc/m2/gm2-libiberty/choosetemp.def
*************** d95a9ac777689fbfc6147dacacf21606  gcc/m2
*** 7315,7321 ****
  831498bd2ff2c534dea98eb8eed25c85  gcc/m2/gm2-libs/termios.def
  01d0120c783135d32abe887d2c25a7d8  gcc/m2/gm2-libs/wrapc.def
  ccaa683ba714cdbeafc186000b6c8dd1  gcc/m2/gm2config.aci.in
! 0c7c8bc279f45fa7ccace62bef8ed40f  gcc/m2/gm2spec.cc
  a1692c9bc067d2f97328c8558f5c7eb9  gcc/m2/gm2version.h
  4ca73b6d6c8c5ec77b98814115959b79  gcc/m2/images/LICENSE.IMG
  28628f59c0ab73240ccd25e2be0bcb6a  gcc/m2/images/gnu.eps
--- 7317,7323 ----
  831498bd2ff2c534dea98eb8eed25c85  gcc/m2/gm2-libs/termios.def
  01d0120c783135d32abe887d2c25a7d8  gcc/m2/gm2-libs/wrapc.def
  ccaa683ba714cdbeafc186000b6c8dd1  gcc/m2/gm2config.aci.in
! 58dd3854ee403d747e4f9b118a9f0c59  gcc/m2/gm2spec.cc
  a1692c9bc067d2f97328c8558f5c7eb9  gcc/m2/gm2version.h
  4ca73b6d6c8c5ec77b98814115959b79  gcc/m2/images/LICENSE.IMG
  28628f59c0ab73240ccd25e2be0bcb6a  gcc/m2/images/gnu.eps
*************** d02bb7b852c2149c474702f929b72f2d  gcc/m2
*** 7324,7330 ****
  295651a10667b286ed55c3afdcb0e117  gcc/m2/init/mcinit
  1926300919acbdbf55ed47c4997a459b  gcc/m2/init/ppginit
  0a585a032e28317a1dc67efc96504e1f  gcc/m2/lang-specs.h
! dd05e0d11b332a529c7fc48a30234ecd  gcc/m2/lang.opt
  b78b0219cda3cd36f38421786dc862e7  gcc/m2/lang.opt.urls
  36221d63a7a556b1dbbd7b2aa1ddd8fa  gcc/m2/m2-tree.def
  a93d546f180b351bb03d87a0bb03ef2f  gcc/m2/m2-tree.h
--- 7326,7332 ----
  295651a10667b286ed55c3afdcb0e117  gcc/m2/init/mcinit
  1926300919acbdbf55ed47c4997a459b  gcc/m2/init/ppginit
  0a585a032e28317a1dc67efc96504e1f  gcc/m2/lang-specs.h
! 891e5bbc3495a24fbe5645b1df57f735  gcc/m2/lang.opt
  b78b0219cda3cd36f38421786dc862e7  gcc/m2/lang.opt.urls
  36221d63a7a556b1dbbd7b2aa1ddd8fa  gcc/m2/m2-tree.def
  a93d546f180b351bb03d87a0bb03ef2f  gcc/m2/m2-tree.h
*************** b6aaded8e85e2c15678b63196f1010b6  gcc/ob
*** 7719,7725 ****
  8d1f0d9303077458b28a80a9546ff2ba  gcc/obstack-utils.h
  c2186582925518f8871bcb0f066553f0  gcc/omp-api.h
  bb29d43e983c44c073509e49c0c554db  gcc/omp-builtins.def
! f441ac6601a5a1f6ba5ca39bef20c13a  gcc/omp-expand.cc
  286190bcce78c62804516df6cd0d1684  gcc/omp-expand.h
  9bd34ac7da102efa7529b0da01a4627e  gcc/omp-general.cc
  cb2a8c86939322e491658cba12c21c2f  gcc/omp-general.h
--- 7721,7727 ----
  8d1f0d9303077458b28a80a9546ff2ba  gcc/obstack-utils.h
  c2186582925518f8871bcb0f066553f0  gcc/omp-api.h
  bb29d43e983c44c073509e49c0c554db  gcc/omp-builtins.def
! 084ac62e183b76a6936f7fbb0fd9482e  gcc/omp-expand.cc
  286190bcce78c62804516df6cd0d1684  gcc/omp-expand.h
  9bd34ac7da102efa7529b0da01a4627e  gcc/omp-general.cc
  cb2a8c86939322e491658cba12c21c2f  gcc/omp-general.h
*************** fcb5b7227342c442bcddbcc06eaddcdc  gcc/op
*** 7758,7764 ****
  bdacbcb932eb0c2db8707e3727f574dd  gcc/optinfo.h
  1c30e8950551cbe97bda991d288b7bb7  gcc/options-urls-cc-gen.awk
  09395c50b5992609f34cd388cc3257c0  gcc/opts-common.cc
! 5ccf682ebfbb9afdfc7f972ea6ef51fe  gcc/opts-diagnostic.cc
  6d624f6fea144bbb8e71378935b84abd  gcc/opts-diagnostic.h
  dd6379e65503d93b6eb08844e8bf2d09  gcc/opts-global.cc
  079a115ae417106f3e7f42b0272b866d  gcc/opts-jobserver.h
--- 7760,7766 ----
  bdacbcb932eb0c2db8707e3727f574dd  gcc/optinfo.h
  1c30e8950551cbe97bda991d288b7bb7  gcc/options-urls-cc-gen.awk
  09395c50b5992609f34cd388cc3257c0  gcc/opts-common.cc
! 5b59934f9a29aabd40f46b9492f1d72b  gcc/opts-diagnostic.cc
  6d624f6fea144bbb8e71378935b84abd  gcc/opts-diagnostic.h
  dd6379e65503d93b6eb08844e8bf2d09  gcc/opts-global.cc
  079a115ae417106f3e7f42b0272b866d  gcc/opts-jobserver.h
*************** b2f692287d25760afcef126c010f7078  gcc/pa
*** 7773,7786 ****
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  818628b1b793b8f87f62d0c18fd1219a  gcc/pass_manager.h
  38b9f60b5fd192ab2d5c201b4aff3f29  gcc/passes.cc
! d70aba7cd8bd8387ac288815c6ea5956  gcc/passes.def
  e3f908061f2b051f55381b513a49022b  gcc/path-coverage.cc
  9077bd1d4c611da16e24019cc5f1cdcd  gcc/pex.cc
  5f3fc8b9c6ba6a91676e512a41e3de7e  gcc/pex.h
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
  79cd4ea374ded38e9f3ef38c1624db9e  gcc/plugin.h
! b4aff81d08de5e739231c4919da96597  gcc/po/ChangeLog
  fcae8297fb0c1be8e1502d7ca12c249f  gcc/po/EXCLUDES
  276b0e994306e3cdb1f62b8de38fa0e9  gcc/po/be.po
  4ce8480a8ed1c6ea96dcee25f16b5030  gcc/po/da.po
--- 7775,7788 ----
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  818628b1b793b8f87f62d0c18fd1219a  gcc/pass_manager.h
  38b9f60b5fd192ab2d5c201b4aff3f29  gcc/passes.cc
! e77429f92e3fbd7f4cc2d7b21d878441  gcc/passes.def
  e3f908061f2b051f55381b513a49022b  gcc/path-coverage.cc
  9077bd1d4c611da16e24019cc5f1cdcd  gcc/pex.cc
  5f3fc8b9c6ba6a91676e512a41e3de7e  gcc/pex.h
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
  79cd4ea374ded38e9f3ef38c1624db9e  gcc/plugin.h
! 3bcdf6222ec934641efd457a266e2d8f  gcc/po/ChangeLog
  fcae8297fb0c1be8e1502d7ca12c249f  gcc/po/EXCLUDES
  276b0e994306e3cdb1f62b8de38fa0e9  gcc/po/be.po
  4ce8480a8ed1c6ea96dcee25f16b5030  gcc/po/da.po
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8496,8507 ****
  32c99c974fd34089d47160168688da1d  gcc/target-globals.h
  84051f22ca8c9ee213931106395ac151  gcc/target-hooks-macros.h
  354306a484432bca2f94887455f25599  gcc/target-insns.def
! c880657161e4078ba5e385691b6c5328  gcc/target.def
  5e326cfe9b9871c8077b30f9a44e6663  gcc/target.h
! 143ba02938f6a6df9b9495eb6bce4be1  gcc/targhooks.cc
! 7b362870a640a56a8b05ca807b02f07d  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 7312557fb499050da8b5e425c57eab4c  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8498,8509 ----
  32c99c974fd34089d47160168688da1d  gcc/target-globals.h
  84051f22ca8c9ee213931106395ac151  gcc/target-hooks-macros.h
  354306a484432bca2f94887455f25599  gcc/target-insns.def
! 2c18131ce2acc9e62b0e93cf4bc41c5b  gcc/target.def
  5e326cfe9b9871c8077b30f9a44e6663  gcc/target.h
! 36518341b4945aa5d165121235c9e14f  gcc/targhooks.cc
! f0958b8c3fce1fd760a502da6e954283  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! aa8ec7ba8b879815fc0c10a186ef4e46  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** c3809265d6de98b36dec2fb830b674d2  gcc/te
*** 18537,18543 ****
  97a0a45a85b1c1938d08e940a662893f  gcc/testsuite/c-c++-common/gomp/allocate-7.c
  bf250503034f83812c610e628563cbe4  gcc/testsuite/c-c++-common/gomp/allocate-8.c
  125151998b6889fb0dfc50c1f14358f0  gcc/testsuite/c-c++-common/gomp/allocate-9.c
! e291bee8b82341e1a06d332295e2d5e9  gcc/testsuite/c-c++-common/gomp/append-args-1.c
  e16bf197f6a930becbbbe1bce63de40f  gcc/testsuite/c-c++-common/gomp/append-args-2.c
  c1dbdb5751cadbe8956356600fd42d66  gcc/testsuite/c-c++-common/gomp/append-args-3.c
  e39808d0669d6d4fed5b49529c91444a  gcc/testsuite/c-c++-common/gomp/append-args-4.c
--- 18539,18545 ----
  97a0a45a85b1c1938d08e940a662893f  gcc/testsuite/c-c++-common/gomp/allocate-7.c
  bf250503034f83812c610e628563cbe4  gcc/testsuite/c-c++-common/gomp/allocate-8.c
  125151998b6889fb0dfc50c1f14358f0  gcc/testsuite/c-c++-common/gomp/allocate-9.c
! 5993d9f71f226f39e46297d435cee65b  gcc/testsuite/c-c++-common/gomp/append-args-1.c
  e16bf197f6a930becbbbe1bce63de40f  gcc/testsuite/c-c++-common/gomp/append-args-2.c
  c1dbdb5751cadbe8956356600fd42d66  gcc/testsuite/c-c++-common/gomp/append-args-3.c
  e39808d0669d6d4fed5b49529c91444a  gcc/testsuite/c-c++-common/gomp/append-args-4.c
*************** a8b3fb1dfe0aa7409a4df00a9542f7d1  gcc/te
*** 19116,19122 ****
  e4d5eb20b188e55ac6a64e3c0c9e8df6  gcc/testsuite/c-c++-common/hwasan/stack-tagging-basic-0.c
  928a71af15ece19316f60b8b76f62be0  gcc/testsuite/c-c++-common/hwasan/stack-tagging-basic-1.c
  6147638e8e5113273815f41efd4e4931  gcc/testsuite/c-c++-common/hwasan/stack-tagging-disable.c
! c805f0e50b68c0f1a9a99f61e7123fb6  gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-0.c
  f007ef6d3bbb6f88e9353821e2968665  gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-1.c
  1fbd8299c2c3ee5f64745cb409cdd269  gcc/testsuite/c-c++-common/hwasan/use-after-free.c
  bba3e5f76d60be2248ea21348a139c98  gcc/testsuite/c-c++-common/hwasan/vararray-outside-caught.c
--- 19118,19124 ----
  e4d5eb20b188e55ac6a64e3c0c9e8df6  gcc/testsuite/c-c++-common/hwasan/stack-tagging-basic-0.c
  928a71af15ece19316f60b8b76f62be0  gcc/testsuite/c-c++-common/hwasan/stack-tagging-basic-1.c
  6147638e8e5113273815f41efd4e4931  gcc/testsuite/c-c++-common/hwasan/stack-tagging-disable.c
! 5aaa9693bcdb6b04ec029292423b5b6d  gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-0.c
  f007ef6d3bbb6f88e9353821e2968665  gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-1.c
  1fbd8299c2c3ee5f64745cb409cdd269  gcc/testsuite/c-c++-common/hwasan/use-after-free.c
  bba3e5f76d60be2248ea21348a139c98  gcc/testsuite/c-c++-common/hwasan/vararray-outside-caught.c
*************** ca10f046e47ea09ba5b87084372f1ce2  gcc/te
*** 26055,26060 ****
--- 26057,26063 ----
  c5e8ac858eac19a1f1f10709e9b49389  gcc/testsuite/g++.dg/cpp1z/aligned-new7.C
  1c005f415746635350d5fd1bf3068b93  gcc/testsuite/g++.dg/cpp1z/aligned-new8.C
  2de56761d47d1535eda1147861643dd3  gcc/testsuite/g++.dg/cpp1z/aligned-new9.C
+ c2bd53f98287680412dbfb48b329826d  gcc/testsuite/g++.dg/cpp1z/array-condition-expr.C
  754a7e408d065704f738891ba703e281  gcc/testsuite/g++.dg/cpp1z/array-prvalue1.C
  dea62fa85e86450c80389ea639cb2473  gcc/testsuite/g++.dg/cpp1z/array-prvalue2.C
  6e5d2ff992223e00df24638490856670  gcc/testsuite/g++.dg/cpp1z/array-prvalue3.C
*************** c544d34e1df7955e274df53b85725097  gcc/te
*** 26889,26894 ****
--- 26892,26898 ----
  1beffef766e699fcf63d5af5d85bbe8a  gcc/testsuite/g++.dg/cpp26/constexpr-eh13.C
  47178e4d95ee013f1999b74f8f9c69a4  gcc/testsuite/g++.dg/cpp26/constexpr-eh14.C
  e8e285d5f17f18710b7136f0f788f9c8  gcc/testsuite/g++.dg/cpp26/constexpr-eh15.C
+ 3b5f2464be3b6237317c355178b6abbf  gcc/testsuite/g++.dg/cpp26/constexpr-eh16.C
  5dd3cceecaa6ec4f3aba7e8c298dc74c  gcc/testsuite/g++.dg/cpp26/constexpr-eh2.C
  4c13defc41912f8fa4785f3953df88ed  gcc/testsuite/g++.dg/cpp26/constexpr-eh3.C
  6ef0a812fa0528be79afea3ada17a5eb  gcc/testsuite/g++.dg/cpp26/constexpr-eh4.C
*************** abac21de83ec6f3c8535a8e4fde29e90  gcc/te
*** 26928,26934 ****
  7ef0ff9bc2a7cfb1ea71f3e0248b6a66  gcc/testsuite/g++.dg/cpp26/decomp23.C
  f462246786df8652f2409939354d0c38  gcc/testsuite/g++.dg/cpp26/decomp24.C
  f03ab32088d0fea8cefc516352c939d2  gcc/testsuite/g++.dg/cpp26/decomp25.C
! 0bad1f40c5a0ce722c56ec2c40f45969  gcc/testsuite/g++.dg/cpp26/decomp26.C
  04625a49d6c21164c6f7e075e578b4d2  gcc/testsuite/g++.dg/cpp26/decomp3.C
  e0331653ca37862860617d90def1c2d9  gcc/testsuite/g++.dg/cpp26/decomp4.C
  2765a6ddd9be5099086c5f772077d8d1  gcc/testsuite/g++.dg/cpp26/decomp5.C
--- 26932,26938 ----
  7ef0ff9bc2a7cfb1ea71f3e0248b6a66  gcc/testsuite/g++.dg/cpp26/decomp23.C
  f462246786df8652f2409939354d0c38  gcc/testsuite/g++.dg/cpp26/decomp24.C
  f03ab32088d0fea8cefc516352c939d2  gcc/testsuite/g++.dg/cpp26/decomp25.C
! dd3131ab1dbc85f08ebd66eda08bd240  gcc/testsuite/g++.dg/cpp26/decomp26.C
  04625a49d6c21164c6f7e075e578b4d2  gcc/testsuite/g++.dg/cpp26/decomp3.C
  e0331653ca37862860617d90def1c2d9  gcc/testsuite/g++.dg/cpp26/decomp4.C
  2765a6ddd9be5099086c5f772077d8d1  gcc/testsuite/g++.dg/cpp26/decomp5.C
*************** d4331d8da306930f1d44ca3a2535e838  gcc/te
*** 26948,26959 ****
  d2f3d1d0903cd9aafbe5cfc699f5e974  gcc/testsuite/g++.dg/cpp26/expansion-stmt12.C
  1a8ea65a8bfe4f48807a4cb121d02f77  gcc/testsuite/g++.dg/cpp26/expansion-stmt13.C
  9a15f7dee81311d83ad9aea2e046e956  gcc/testsuite/g++.dg/cpp26/expansion-stmt14.C
! b8280f40d5555793eac33cba86e91724  gcc/testsuite/g++.dg/cpp26/expansion-stmt15.C
  14352b0cb38dc6eeb6188f47cd518b4a  gcc/testsuite/g++.dg/cpp26/expansion-stmt16.C
  40a9f0169438dcc0077a4b3f3a07e396  gcc/testsuite/g++.dg/cpp26/expansion-stmt17.C
  86eecfab49da65a501129dfaf2007e5c  gcc/testsuite/g++.dg/cpp26/expansion-stmt18.C
  a9c707a9b9460b695998400fa35fced5  gcc/testsuite/g++.dg/cpp26/expansion-stmt19.C
  2e358fbc45ce2ab793c6396aabaf7c00  gcc/testsuite/g++.dg/cpp26/expansion-stmt2.C
  c66852484325a654361305c49419f459  gcc/testsuite/g++.dg/cpp26/expansion-stmt3.C
  05972a123b20a66b9c7899c2bb0b5042  gcc/testsuite/g++.dg/cpp26/expansion-stmt4.C
  7cfc2afc603d55bfd66b320b3d190acd  gcc/testsuite/g++.dg/cpp26/expansion-stmt5.C
--- 26952,26968 ----
  d2f3d1d0903cd9aafbe5cfc699f5e974  gcc/testsuite/g++.dg/cpp26/expansion-stmt12.C
  1a8ea65a8bfe4f48807a4cb121d02f77  gcc/testsuite/g++.dg/cpp26/expansion-stmt13.C
  9a15f7dee81311d83ad9aea2e046e956  gcc/testsuite/g++.dg/cpp26/expansion-stmt14.C
! 8b57ea067d4cae17a4720a89345931b4  gcc/testsuite/g++.dg/cpp26/expansion-stmt15.C
  14352b0cb38dc6eeb6188f47cd518b4a  gcc/testsuite/g++.dg/cpp26/expansion-stmt16.C
  40a9f0169438dcc0077a4b3f3a07e396  gcc/testsuite/g++.dg/cpp26/expansion-stmt17.C
  86eecfab49da65a501129dfaf2007e5c  gcc/testsuite/g++.dg/cpp26/expansion-stmt18.C
  a9c707a9b9460b695998400fa35fced5  gcc/testsuite/g++.dg/cpp26/expansion-stmt19.C
  2e358fbc45ce2ab793c6396aabaf7c00  gcc/testsuite/g++.dg/cpp26/expansion-stmt2.C
+ a430b39e1be5d1fb74398b6e2ed2bc77  gcc/testsuite/g++.dg/cpp26/expansion-stmt20.C
+ 6d0dfe9eb3ad7d8109fbb3b138464ecc  gcc/testsuite/g++.dg/cpp26/expansion-stmt21.C
+ f8d8f977a2ce10a22535ceb90309b531  gcc/testsuite/g++.dg/cpp26/expansion-stmt22.C
+ acbce95791211ede09f67fcd376b48cb  gcc/testsuite/g++.dg/cpp26/expansion-stmt23.C
+ 4f56781af7d20030274d9a133126e14b  gcc/testsuite/g++.dg/cpp26/expansion-stmt24.C
  c66852484325a654361305c49419f459  gcc/testsuite/g++.dg/cpp26/expansion-stmt3.C
  05972a123b20a66b9c7899c2bb0b5042  gcc/testsuite/g++.dg/cpp26/expansion-stmt4.C
  7cfc2afc603d55bfd66b320b3d190acd  gcc/testsuite/g++.dg/cpp26/expansion-stmt5.C
*************** fc1805f7c9ae0e0d70715f21f1ab1323  gcc/te
*** 27942,27947 ****
--- 27951,27957 ----
  8c0cfd54130aa654e2e50e1925316cab  gcc/testsuite/g++.dg/cpp2a/lambda-targ15.C
  8d4a60f484f6af22e432afc4620ef9f8  gcc/testsuite/g++.dg/cpp2a/lambda-targ16.C
  8d23b1e036f428ec77a4920b68180ae3  gcc/testsuite/g++.dg/cpp2a/lambda-targ17.C
+ bef40735cb8990bf2be0e69a401f204b  gcc/testsuite/g++.dg/cpp2a/lambda-targ18.C
  d363d5590bc863dbb1f6bb96bad95b3c  gcc/testsuite/g++.dg/cpp2a/lambda-targ2.C
  d948ecca981f7c5de5ca48afc987ea36  gcc/testsuite/g++.dg/cpp2a/lambda-targ2a.C
  096118fef57f992a05319e3b6f8ba6a7  gcc/testsuite/g++.dg/cpp2a/lambda-targ3.C
*************** e2e937b81f60d45e6f0fbe6cdc7207e4  gcc/te
*** 30206,30214 ****
  9be1fd00ad32c627f4396d3b564fad56  gcc/testsuite/g++.dg/goacc/routine-2.C
  e4b426a9d04e362864d65e9a4b709654  gcc/testsuite/g++.dg/goacc/template.C
  63c7a5fb86ca9e170a766952f0dda797  gcc/testsuite/g++.dg/goacc/tile-1.C
! facf37a5278f79c198442762a7fad733  gcc/testsuite/g++.dg/gomp/adjust-args-1.C
  73c60a001ee959ddad8b531e6bcd2a41  gcc/testsuite/g++.dg/gomp/adjust-args-2.C
! 5555a7fe188cb01de67cbb2396fa0881  gcc/testsuite/g++.dg/gomp/adjust-args-3.C
  1f78fc170dcd2b7deca0c3271e02aa83  gcc/testsuite/g++.dg/gomp/adjust-args-4.C
  0ef19812fd033ce3e1a7b3f619639bc6  gcc/testsuite/g++.dg/gomp/all-memory-1.C
  95770641a336700c84cdc07f3cba2ea1  gcc/testsuite/g++.dg/gomp/all-memory-2.C
--- 30216,30224 ----
  9be1fd00ad32c627f4396d3b564fad56  gcc/testsuite/g++.dg/goacc/routine-2.C
  e4b426a9d04e362864d65e9a4b709654  gcc/testsuite/g++.dg/goacc/template.C
  63c7a5fb86ca9e170a766952f0dda797  gcc/testsuite/g++.dg/goacc/tile-1.C
! 1c37d4a793d76180c3c520042815426a  gcc/testsuite/g++.dg/gomp/adjust-args-1.C
  73c60a001ee959ddad8b531e6bcd2a41  gcc/testsuite/g++.dg/gomp/adjust-args-2.C
! f825374f14531b790e0c2fb5ab09676e  gcc/testsuite/g++.dg/gomp/adjust-args-3.C
  1f78fc170dcd2b7deca0c3271e02aa83  gcc/testsuite/g++.dg/gomp/adjust-args-4.C
  0ef19812fd033ce3e1a7b3f619639bc6  gcc/testsuite/g++.dg/gomp/all-memory-1.C
  95770641a336700c84cdc07f3cba2ea1  gcc/testsuite/g++.dg/gomp/all-memory-2.C
*************** d684f71f3f20bed75ccc9aecab05ecdb  gcc/te
*** 33216,33221 ****
--- 33226,33233 ----
  af1e9e3b0cc46e0d597048ea5dda7431  gcc/testsuite/g++.dg/modules/pr119102_b.C
  d1e2592670bcdeda87ffce22aa27ec30  gcc/testsuite/g++.dg/modules/pr119608_a.C
  42f7d0ad39e2bd3aa2ca1c1f2e1b0410  gcc/testsuite/g++.dg/modules/pr119608_b.C
+ 6ce43bd3660c441d33ba8366665bbd54  gcc/testsuite/g++.dg/modules/pr119844_a.C
+ 392ae29759fb872beb821c7a47f07a1c  gcc/testsuite/g++.dg/modules/pr119844_b.C
  c612aa7562a08eee08fd881b3b27fee6  gcc/testsuite/g++.dg/modules/pr120040_a.C
  680ac168b034a19e8070cf8c66cd3edc  gcc/testsuite/g++.dg/modules/pr120040_b.C
  56ba9e2a41b995724a511df79d8df541  gcc/testsuite/g++.dg/modules/pr98531-1.h
*************** bead5f49843ac4a923c8b06419fc1688  gcc/te
*** 36591,36596 ****
--- 36603,36609 ----
  6eb242700c6d66d2e369769157f668e1  gcc/testsuite/g++.dg/template/incomplete10.C
  013b3193d7f45f44f8c7e8a4b8e35e24  gcc/testsuite/g++.dg/template/incomplete11.C
  df3a53ea10f472305fa74419388585e8  gcc/testsuite/g++.dg/template/incomplete12.C
+ a0d453defe6300da06373d21bd6d2fc4  gcc/testsuite/g++.dg/template/incomplete13.C
  df42e6e9d79980210f8fc115b6f3ea26  gcc/testsuite/g++.dg/template/incomplete2.C
  0b05707ff39fe3ad9f22ea6ba6d5be2c  gcc/testsuite/g++.dg/template/incomplete3.C
  8b8acaf760a13971063951b263ef315c  gcc/testsuite/g++.dg/template/incomplete4.C
*************** cbba22e9568932c7e9798b4143e8babf  gcc/te
*** 38554,38559 ****
--- 38567,38573 ----
  0fb08fd6d187247ae5872931e884061c  gcc/testsuite/g++.dg/tree-ssa/tmmti.C
  d0016ead88409af28f506089528155ae  gcc/testsuite/g++.dg/tree-ssa/value-expr1.C
  ee5f35c1e0d0183f37f4bef5ff673e11  gcc/testsuite/g++.dg/tree-ssa/value-expr2.C
+ c64a104c72571033a8257c606ef88720  gcc/testsuite/g++.dg/tree-ssa/vector-compare-1.C
  67826d6c8638dba46a4b37835998f34a  gcc/testsuite/g++.dg/tree-ssa/volatile1.C
  927ac273b42ce90eecf5fb0ad135f1c0  gcc/testsuite/g++.dg/tree-ssa/volatile2.C
  2f2cb4fe0eb03e7d7bb6cb25c9e775b0  gcc/testsuite/g++.dg/tsan/aligned_vs_unaligned_race.C
*************** da5f00c608fbf4af0b9daad6f59e1bbe  gcc/te
*** 51817,51822 ****
--- 51831,51837 ----
  faf63500f0d33b2fccc7d8e5218dc6b7  gcc/testsuite/gcc.dg/debug/ctf/ctf-array-4.c
  01bbb3816496e458a1609f8ffd51cbd8  gcc/testsuite/gcc.dg/debug/ctf/ctf-array-5.c
  4f0da61c08c5e84caf0f9150cbdc9bec  gcc/testsuite/gcc.dg/debug/ctf/ctf-array-6.c
+ 601f379be5a4781c563b082bb1866937  gcc/testsuite/gcc.dg/debug/ctf/ctf-array-7.c
  cf111ef8df94d8890401a187eda44ecf  gcc/testsuite/gcc.dg/debug/ctf/ctf-attr-mode-1.c
  f564c6bf6e627218a15d1dca68379b72  gcc/testsuite/gcc.dg/debug/ctf/ctf-attr-used-1.c
  723beb2229407183028f21d19a7bc698  gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-1.c
*************** f0990e08177a1fbd146dd2412ed83858  gcc/te
*** 53033,53041 ****
  5a7e8af9edd68a5e923dd69b3eed3ae2  gcc/testsuite/gcc.dg/gomp/_Atomic-3.c
  c4edc2223e3a86496e0d53b60f25c434  gcc/testsuite/gcc.dg/gomp/_Atomic-4.c
  775ba1a68d341dd5efa49ab2c8290023  gcc/testsuite/gcc.dg/gomp/_Atomic-5.c
! 59eee8331c90801ca70e3bf10bcf4e0e  gcc/testsuite/gcc.dg/gomp/adjust-args-1.c
  dfc82995e2790a51a71b8e0c0dce494a  gcc/testsuite/gcc.dg/gomp/adjust-args-2.c
! 06ef83520d1f0afa52bbd989814b1bf1  gcc/testsuite/gcc.dg/gomp/append-args-1.c
  2f3333af08b8042445e79536694a34b4  gcc/testsuite/gcc.dg/gomp/appendix-a/a.1.1.c
  885f61f4895f1224def50fcf707b2f2e  gcc/testsuite/gcc.dg/gomp/appendix-a/a.10.1.c
  c8cf5f6a748356f3bcea8e2dbb2e4196  gcc/testsuite/gcc.dg/gomp/appendix-a/a.12.1.c
--- 53048,53056 ----
  5a7e8af9edd68a5e923dd69b3eed3ae2  gcc/testsuite/gcc.dg/gomp/_Atomic-3.c
  c4edc2223e3a86496e0d53b60f25c434  gcc/testsuite/gcc.dg/gomp/_Atomic-4.c
  775ba1a68d341dd5efa49ab2c8290023  gcc/testsuite/gcc.dg/gomp/_Atomic-5.c
! 5625bc692e46419de06b7a3ca5faa6b5  gcc/testsuite/gcc.dg/gomp/adjust-args-1.c
  dfc82995e2790a51a71b8e0c0dce494a  gcc/testsuite/gcc.dg/gomp/adjust-args-2.c
! fbd470b5c744eb8ede5a6dfbf5191602  gcc/testsuite/gcc.dg/gomp/append-args-1.c
  2f3333af08b8042445e79536694a34b4  gcc/testsuite/gcc.dg/gomp/appendix-a/a.1.1.c
  885f61f4895f1224def50fcf707b2f2e  gcc/testsuite/gcc.dg/gomp/appendix-a/a.10.1.c
  c8cf5f6a748356f3bcea8e2dbb2e4196  gcc/testsuite/gcc.dg/gomp/appendix-a/a.12.1.c
*************** eaf20ce005642d7f04c4f181f7d0e142  gcc/te
*** 53136,53141 ****
--- 53151,53157 ----
  c95154d0c0580392aee19257bfc2e9e4  gcc/testsuite/gcc.dg/gomp/declare-simd-5.c
  d9fdf9f47a3764723441a571868d9cba  gcc/testsuite/gcc.dg/gomp/declare-variant-1.c
  51d79415450b7870aadd4c879fb233d4  gcc/testsuite/gcc.dg/gomp/declare-variant-2.c
+ 152a743c8e1c85299fd27e5eb3a7af96  gcc/testsuite/gcc.dg/gomp/declare-variant-3.c
  40f2ea44239995df51ac3b38a7133338  gcc/testsuite/gcc.dg/gomp/dispatch-1.c
  8d3b27b739488aeb8d5cef6a8ede902f  gcc/testsuite/gcc.dg/gomp/dispatch-2.c
  daf23047f461270ab705201d4069235e  gcc/testsuite/gcc.dg/gomp/dispatch-3.c
*************** cd38ec3195ea21395e6d6950ff620410  gcc/te
*** 53209,53214 ****
--- 53225,53231 ----
  a633f425b4fdde0a7b6f0aa6aa2f2754  gcc/testsuite/gcc.dg/gomp/pr108435.c
  20a3ca0acce7dbf1520d374c9470fc34  gcc/testsuite/gcc.dg/gomp/pr110485.c
  7d1b62adb42c340855e993cf480a19ec  gcc/testsuite/gcc.dg/gomp/pr114075.c
+ ec1d4016ba60492b723014b99d2804e6  gcc/testsuite/gcc.dg/gomp/pr121453.c
  7a163e65fe52b23fc85f2daa18c442ee  gcc/testsuite/gcc.dg/gomp/pr25874.c
  597de3ed24e1bc1c650af918589d83c3  gcc/testsuite/gcc.dg/gomp/pr25989.c
  0bd3e8dc860de61dd8e09229c090e1f5  gcc/testsuite/gcc.dg/gomp/pr25990.c
*************** f0694a8a27ae0ef269767479c6b54201  gcc/te
*** 53358,53363 ****
--- 53375,53381 ----
  5aaa2dbf78fff9702e257e3058fc3441  gcc/testsuite/gcc.dg/gomp/udr-3.c
  79c19553e59dc76750e93a7bd9060361  gcc/testsuite/gcc.dg/gomp/udr-4.c
  cc2e57695051196863b0f1a101527357  gcc/testsuite/gcc.dg/gomp/uninit-1.c
+ e91b375d195d25c2b5c0c8d16a68e0bc  gcc/testsuite/gcc.dg/gomp/unprototyped-variant.c
  3900107f28986c0a648cdde2b189d84f  gcc/testsuite/gcc.dg/gomp/vla-1.c
  05cf7b9b216039921f9e5e7c3ff6bcd8  gcc/testsuite/gcc.dg/gomp/vla-2.c
  dffc13d32125301b7ec7446339386e09  gcc/testsuite/gcc.dg/gomp/vla-3.c
*************** dbee3538a18bef45f3a54729b574ae13  gcc/te
*** 57855,57865 ****
  fd36e17ce5abb4e77212836c4aa61205  gcc/testsuite/gcc.dg/pr94526.c
  d2666025ae58c20e36d06243ec17b107  gcc/testsuite/gcc.dg/pr94574.c
  ea3f6e969ab9dbd27c6e364f6cd1e41c  gcc/testsuite/gcc.dg/pr94589-1.c
! 19a2ac85758ac4bfc1b057ee521a0e94  gcc/testsuite/gcc.dg/pr94589-2.c
  27b4c51b7060236f318a98e7dfe635d6  gcc/testsuite/gcc.dg/pr94589-3.c
! 5b6c16adf775aa0ef335b96ef72b0a82  gcc/testsuite/gcc.dg/pr94589-4.c
! ed8b01d7f609743dbbb09ec751e42df8  gcc/testsuite/gcc.dg/pr94589-5.c
! 252593244f3fd19ac0007b0ad8868ce1  gcc/testsuite/gcc.dg/pr94589-6.c
  9d934bfa6d016390e51f5246cf15a083  gcc/testsuite/gcc.dg/pr94600-1.c
  515ded7ae44445fdd45ad77c875a9139  gcc/testsuite/gcc.dg/pr94600-2.c
  eaf63adfe02395ba887103318bf0daac  gcc/testsuite/gcc.dg/pr94600-3.c
--- 57873,57883 ----
  fd36e17ce5abb4e77212836c4aa61205  gcc/testsuite/gcc.dg/pr94526.c
  d2666025ae58c20e36d06243ec17b107  gcc/testsuite/gcc.dg/pr94574.c
  ea3f6e969ab9dbd27c6e364f6cd1e41c  gcc/testsuite/gcc.dg/pr94589-1.c
! 5efa39dda2a7362c4a77e20cff834bae  gcc/testsuite/gcc.dg/pr94589-2.c
  27b4c51b7060236f318a98e7dfe635d6  gcc/testsuite/gcc.dg/pr94589-3.c
! ff1ea6723ba5f97b174e3719ef7092da  gcc/testsuite/gcc.dg/pr94589-4.c
! 7735aed032e40772cf70078c92544254  gcc/testsuite/gcc.dg/pr94589-5.c
! 3f415487cf7489c02d6cb504e8979a05  gcc/testsuite/gcc.dg/pr94589-6.c
  9d934bfa6d016390e51f5246cf15a083  gcc/testsuite/gcc.dg/pr94600-1.c
  515ded7ae44445fdd45ad77c875a9139  gcc/testsuite/gcc.dg/pr94600-2.c
  eaf63adfe02395ba887103318bf0daac  gcc/testsuite/gcc.dg/pr94600-3.c
*************** e23df6b1422011499b9a500d2bf25add  gcc/te
*** 59748,59753 ****
--- 59766,59772 ----
  e0878b10bf90cdd28ee181056e4566f9  gcc/testsuite/gcc.dg/torture/pr121116.c
  a0f8ab77c0d77ef71974e1bd49ecec66  gcc/testsuite/gcc.dg/torture/pr121194.c
  d2430d6556dc52a9bbbe49c5c2c11a91  gcc/testsuite/gcc.dg/torture/pr121236-1.c
+ f8a854c0c2ad5880ebf82f9849b5c566  gcc/testsuite/gcc.dg/torture/pr121279-1.c
  caef6a7d552fd1a8c6eb337dabda5f59  gcc/testsuite/gcc.dg/torture/pr121295-1.c
  d41266e6594db1994e416e7a7353751e  gcc/testsuite/gcc.dg/torture/pr121370.c
  95b4b751532b50f7c9ba478b05d5f9a3  gcc/testsuite/gcc.dg/torture/pr121382.c
*************** d41266e6594db1994e416e7a7353751e  gcc/te
*** 59755,59760 ****
--- 59774,59781 ----
  c06f548f435382c42c50e8e66b702266  gcc/testsuite/gcc.dg/torture/pr121422-2.c
  0646579839fceb4f511ae3c6f4122d62  gcc/testsuite/gcc.dg/torture/pr121478-1.c
  f42b1c4e861e4207759994e34bbd715d  gcc/testsuite/gcc.dg/torture/pr121514.c
+ 65afbddf71e988e03a780ba874f578fb  gcc/testsuite/gcc.dg/torture/pr121656.c
+ 3fb8c112d22482c23952dcb95a65043e  gcc/testsuite/gcc.dg/torture/pr121695-1.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
*************** ea5b3c05fffa7f697082308298dd7c5c  gcc/te
*** 64509,64514 ****
--- 64530,64538 ----
  3ccd618a730abdb13ec305c26f14ac22  gcc/testsuite/gcc.dg/vect/pr121059.c
  2820048815e23cc9b1e22c9d0eae0575  gcc/testsuite/gcc.dg/vect/pr121126.c
  35aee7fd79849fcf98591bd2e8513861  gcc/testsuite/gcc.dg/vect/pr121509.c
+ 4b9614c5618217293023b4e9183d7fcc  gcc/testsuite/gcc.dg/vect/pr121638.c
+ 60bff40ff6b8164be9848d671cc43701  gcc/testsuite/gcc.dg/vect/pr121659.c
+ 8ddb58cb5b5d906a26881a4ac7bb2382  gcc/testsuite/gcc.dg/vect/pr121686.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  915cf38408eaa7fee5013d90ec1c3251  gcc/testsuite/gcc.dg/vect/pr18400.c
*************** cf174bb4218a2ff6650d0ab674702881  gcc/te
*** 68193,68198 ****
--- 68217,68223 ----
  5afea9764e794ec9500d7840136687e8  gcc/testsuite/gcc.target/aarch64/pr119046.c
  4fb924f3ca58066d57cd648491945933  gcc/testsuite/gcc.target/aarch64/pr120986-1.c
  83ac293146b05a62ec4a19e52751ebd1  gcc/testsuite/gcc.target/aarch64/pr121253.c
+ a67b71d65cb6bd7b6c05a378464741e6  gcc/testsuite/gcc.target/aarch64/pr121290.c
  64cb9b1e14577523fd3ff2306b1eaa44  gcc/testsuite/gcc.target/aarch64/pr121300.c
  9adb42733d9f5e2b1f2dbb364b62100d  gcc/testsuite/gcc.target/aarch64/pr37780_1.c
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
*************** b1a43ba633267af53e035e52d824d83e  gcc/te
*** 68213,68218 ****
--- 68238,68244 ----
  c8f85510fcedfd5fda7fe58be4530841  gcc/testsuite/gcc.target/aarch64/pr65235_1.c
  5d760fe6744091dbc9b5e29939f63c7f  gcc/testsuite/gcc.target/aarch64/pr65491_1.c
  fe2dde4dc1496e201292c4be3d1995af  gcc/testsuite/gcc.target/aarch64/pr65624.c
+ 0e68939beaa5d66be6a2a0761d2d841d  gcc/testsuite/gcc.target/aarch64/pr66462.c
  4ae80103de3fb651878fcd8edf496474  gcc/testsuite/gcc.target/aarch64/pr66776.c
  6184e08332c62fb090c99cfd6d2518c4  gcc/testsuite/gcc.target/aarch64/pr66912.c
  a134a225066dc537fbe378e60de12e5e  gcc/testsuite/gcc.target/aarch64/pr68102_1.c
*************** cfcefa0eda1f9dc2b828001739a59b3c  gcc/te
*** 75240,75246 ****
  db4bc54a5e1d217544b1f34004b2b698  gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c
  fee0e93ef0f9f011f34cd4553e9b4687  gcc/testsuite/gcc.target/aarch64/vld1_lane-o0.c
  868cc2ead39bb6a9cf3f94c412d7b992  gcc/testsuite/gcc.target/aarch64/vld1_lane.c
! d6bbf1c588b6e57a466f1dc17cda6553  gcc/testsuite/gcc.target/aarch64/vld2-1.c
  ae3dcb9a10323462d2895ea14f4c6684  gcc/testsuite/gcc.target/aarch64/vldN_1.c
  0431b40be800f02cf76c818fe65d8d41  gcc/testsuite/gcc.target/aarch64/vldN_dup_1.c
  69fe1a151a14ceaba823dfa4f97fb2f4  gcc/testsuite/gcc.target/aarch64/vldN_lane_1.c
--- 75266,75272 ----
  db4bc54a5e1d217544b1f34004b2b698  gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c
  fee0e93ef0f9f011f34cd4553e9b4687  gcc/testsuite/gcc.target/aarch64/vld1_lane-o0.c
  868cc2ead39bb6a9cf3f94c412d7b992  gcc/testsuite/gcc.target/aarch64/vld1_lane.c
! b0ee78468bfd1829b9d1693f3a6ec160  gcc/testsuite/gcc.target/aarch64/vld2-1.c
  ae3dcb9a10323462d2895ea14f4c6684  gcc/testsuite/gcc.target/aarch64/vldN_1.c
  0431b40be800f02cf76c818fe65d8d41  gcc/testsuite/gcc.target/aarch64/vldN_dup_1.c
  69fe1a151a14ceaba823dfa4f97fb2f4  gcc/testsuite/gcc.target/aarch64/vldN_lane_1.c
*************** fd023d3635562de2ff5e0ed5260d21d5  gcc/te
*** 75821,75827 ****
  3a97f76c1b98b4d2244bb1a213d2e4b5  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_2.c
  6fd7f87aeac118d347a74f2afe95ddc0  gcc/testsuite/gcc.target/arm/bics_1.c
  6f5448d43fe1db047a8d790ae666a6c8  gcc/testsuite/gcc.target/arm/bics_2.c
! 8a87a44de79b9c816f5b48c40b96038e  gcc/testsuite/gcc.target/arm/bics_3.c
  8a63eeba730368096509797a3284dc46  gcc/testsuite/gcc.target/arm/bics_4.c
  0fd8a665cdc25d00e7cd297ae567a70f  gcc/testsuite/gcc.target/arm/bics_5.c
  8689ee742289887539d8fd99b8a4ae0b  gcc/testsuite/gcc.target/arm/big-endian-subreg.c
--- 75847,75853 ----
  3a97f76c1b98b4d2244bb1a213d2e4b5  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_2.c
  6fd7f87aeac118d347a74f2afe95ddc0  gcc/testsuite/gcc.target/arm/bics_1.c
  6f5448d43fe1db047a8d790ae666a6c8  gcc/testsuite/gcc.target/arm/bics_2.c
! bb8779ec6753d310940a4eb1fc908080  gcc/testsuite/gcc.target/arm/bics_3.c
  8a63eeba730368096509797a3284dc46  gcc/testsuite/gcc.target/arm/bics_4.c
  0fd8a665cdc25d00e7cd297ae567a70f  gcc/testsuite/gcc.target/arm/bics_5.c
  8689ee742289887539d8fd99b8a4ae0b  gcc/testsuite/gcc.target/arm/big-endian-subreg.c
*************** f0eb5e8a3b3eb97189a9cf149049fdb4  gcc/te
*** 79343,79349 ****
  1a434cdf201666683734ecb57116b1eb  gcc/testsuite/gcc.target/arm/unaligned-memcpy-3.c
  ff972a30747f3107d428fbd2b36c5388  gcc/testsuite/gcc.target/arm/unaligned-memcpy-4.c
  b2c4a07a3f14f80317075ad979b01692  gcc/testsuite/gcc.target/arm/unsigned-extend-1.c
! be69f464e7e08304be70f2fcf9985d4d  gcc/testsuite/gcc.target/arm/unsigned-extend-2.c
  6f28a91c6866a9c554b9e75346fc82ef  gcc/testsuite/gcc.target/arm/unsigned-float.c
  dafe3f438a1a1630e53458e22dbec6bc  gcc/testsuite/gcc.target/arm/usadv16qi.c
  dd7bfde900d68546e1d3dd468f37370b  gcc/testsuite/gcc.target/arm/va_list.c
--- 79369,79375 ----
  1a434cdf201666683734ecb57116b1eb  gcc/testsuite/gcc.target/arm/unaligned-memcpy-3.c
  ff972a30747f3107d428fbd2b36c5388  gcc/testsuite/gcc.target/arm/unaligned-memcpy-4.c
  b2c4a07a3f14f80317075ad979b01692  gcc/testsuite/gcc.target/arm/unsigned-extend-1.c
! f5dc21d31c426e6bafaa99ba81251950  gcc/testsuite/gcc.target/arm/unsigned-extend-2.c
  6f28a91c6866a9c554b9e75346fc82ef  gcc/testsuite/gcc.target/arm/unsigned-float.c
  dafe3f438a1a1630e53458e22dbec6bc  gcc/testsuite/gcc.target/arm/usadv16qi.c
  dd7bfde900d68546e1d3dd468f37370b  gcc/testsuite/gcc.target/arm/va_list.c
*************** b82d9188c52a269893b5ac6b25f9e515  gcc/te
*** 85585,85590 ****
--- 85611,85618 ----
  619cbc26dc85de4ded3f5a985d0a23a2  gcc/testsuite/gcc.target/i386/memcpy-strategy-11.c
  1737fa6332bc1bfe3cd7efd2661553a3  gcc/testsuite/gcc.target/i386/memcpy-strategy-12.c
  44dcb4858ee7dffcecaaa96814b9b8c2  gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c
+ a948cf11841f5be3746dbd9613e72c59  gcc/testsuite/gcc.target/i386/memcpy-strategy-14.c
+ 81a646881b73313339b3c5553f5de316  gcc/testsuite/gcc.target/i386/memcpy-strategy-15.c
  043547bc2d2818c5fb11e83082688790  gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c
  18088286a0546a409434dcbafef0a896  gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c
  6e857b4eb94b8707c380e73efcbc5a51  gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c
*************** d40214a38af3060ba1bba456c7399a32  gcc/te
*** 85624,85629 ****
--- 85652,85664 ----
  1c6c1cb0f0c05a6be0e6930ff67f854b  gcc/testsuite/gcc.target/i386/memset-pr70308-1a.c
  cd52405ed338b5168962d96848b32252  gcc/testsuite/gcc.target/i386/memset-pr70308-1b.c
  5d42d8053ea9c0f90ccef1a5662638be  gcc/testsuite/gcc.target/i386/memset-strategy-1.c
+ 9956d1a012c7129a5014827c867915fd  gcc/testsuite/gcc.target/i386/memset-strategy-10.c
+ 80f552aba0b3173b7903784b13ff17d9  gcc/testsuite/gcc.target/i386/memset-strategy-11.c
+ 02939d69e3c8cdd4b15b50bd83322ba8  gcc/testsuite/gcc.target/i386/memset-strategy-12.c
+ 59d79e63c425c50fb6e0f831622ecace  gcc/testsuite/gcc.target/i386/memset-strategy-13.c
+ 58bfce62a58f473b1dd0dc599a4a3aac  gcc/testsuite/gcc.target/i386/memset-strategy-14.c
+ 42dfcbe76f482f1cc458b2d38bec4d47  gcc/testsuite/gcc.target/i386/memset-strategy-15.c
+ 87a904e845122510f206442a6c10f24a  gcc/testsuite/gcc.target/i386/memset-strategy-16.c
  e34fc4954adf255e63dd959604f68e95  gcc/testsuite/gcc.target/i386/memset-strategy-2.c
  385563564c200baa4721a8a54f075d70  gcc/testsuite/gcc.target/i386/memset-strategy-25.c
  a94047349a1abfeda6fc4e2dcf8263fe  gcc/testsuite/gcc.target/i386/memset-strategy-26.c
*************** ab4d263df7abea222d27ba922a50fcf9  gcc/te
*** 86750,86755 ****
--- 86785,86797 ----
  8cc594ac59b59b7e05f0e4eabade820d  gcc/testsuite/gcc.target/i386/pr121607-1b.c
  ba2aa593bb49ad417a1529200ff3424c  gcc/testsuite/gcc.target/i386/pr121635-1a.c
  1e963869ee6652e4c62df7f542bcf115  gcc/testsuite/gcc.target/i386/pr121635-1b.c
+ 0d37ccf4ce47e7dcde6ab825c6bbaf52  gcc/testsuite/gcc.target/i386/pr121658.c
+ 5c1b31e5d120f3cb48033e31d21e3cd4  gcc/testsuite/gcc.target/i386/pr121668-1a.c
+ ebb5cc46535371def38195e7c3778750  gcc/testsuite/gcc.target/i386/pr121668-1b.c
+ 0dfb5c5486263ad7ae9f9ed8ddc6e436  gcc/testsuite/gcc.target/i386/pr121694-1a.c
+ b0e272e5b09d7d22e6b9a829085ecef5  gcc/testsuite/gcc.target/i386/pr121694-1b.c
+ e17710962215b2fb5e88ba71ef85c9a1  gcc/testsuite/gcc.target/i386/pr121725-1a.c
+ f9eebd6cace65460975a88f37b9e15eb  gcc/testsuite/gcc.target/i386/pr121725-1b.c
  f99f88a6e994ad6e55e065e41bc58f8f  gcc/testsuite/gcc.target/i386/pr12329.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
*************** eef17532c50df5a9a0ab9230ca0764a0  gcc/te
*** 87011,87017 ****
  b05f423e2e73dc286c577252283d529f  gcc/testsuite/gcc.target/i386/pr43799.c
  171a677c5298c0c69b83154415e55228  gcc/testsuite/gcc.target/i386/pr43869.c
  e5b6fcba4b57a5ffec09acc18c64fa8e  gcc/testsuite/gcc.target/i386/pr44071.c
! fe7b39654f9875009b006cea04a66b32  gcc/testsuite/gcc.target/i386/pr44130.c
  ee71afab95575089e9dde62fa2f3df3b  gcc/testsuite/gcc.target/i386/pr44144.c
  d0f7915dcdfe2b7a2b805eb41ed113f5  gcc/testsuite/gcc.target/i386/pr44180.c
  e9659dc1406a18f55a3b02a13536af51  gcc/testsuite/gcc.target/i386/pr44223.c
--- 87053,87059 ----
  b05f423e2e73dc286c577252283d529f  gcc/testsuite/gcc.target/i386/pr43799.c
  171a677c5298c0c69b83154415e55228  gcc/testsuite/gcc.target/i386/pr43869.c
  e5b6fcba4b57a5ffec09acc18c64fa8e  gcc/testsuite/gcc.target/i386/pr44071.c
! f4866d14647779953ac526fe1959e050  gcc/testsuite/gcc.target/i386/pr44130.c
  ee71afab95575089e9dde62fa2f3df3b  gcc/testsuite/gcc.target/i386/pr44144.c
  d0f7915dcdfe2b7a2b805eb41ed113f5  gcc/testsuite/gcc.target/i386/pr44180.c
  e9659dc1406a18f55a3b02a13536af51  gcc/testsuite/gcc.target/i386/pr44223.c
*************** c05d22a930ef3f74451ec3e9d4db1b74  gcc/te
*** 88844,88849 ****
--- 88886,88898 ----
  08b28bfac5203b2af9b0fb068727a87c  gcc/testsuite/gcc.target/i386/sha512msg1-2.c
  1d13c923e2137e0e9947a181060c5ef9  gcc/testsuite/gcc.target/i386/sha512msg2-2.c
  e0ace5d39e9cc7930c86ec3fac2a2562  gcc/testsuite/gcc.target/i386/sha512rnds2-2.c
+ f6bcdeb957bec992f95b03d606e5e47d  gcc/testsuite/gcc.target/i386/shift-gf2p8affine-1.c
+ 02aca2805a37242fd990e5585fea276c  gcc/testsuite/gcc.target/i386/shift-gf2p8affine-2.c
+ 39207cf323ce2b6572fa8a39d79dc9a5  gcc/testsuite/gcc.target/i386/shift-gf2p8affine-3.c
+ 03957d6ea6acbb92dd5b72e71698835e  gcc/testsuite/gcc.target/i386/shift-gf2p8affine-5.c
+ a6d2c5d92657f6de629477b96804765b  gcc/testsuite/gcc.target/i386/shift-gf2p8affine-6.c
+ 9cda4630c9d23082319b0932bbd43173  gcc/testsuite/gcc.target/i386/shift-gf2p8affine-7.c
+ 4c0d248ab3aafed2f2b94f6389657ab5  gcc/testsuite/gcc.target/i386/shift-v16qi-4.c
  11a4bd4138e7963e0cd81b6e0197cfe6  gcc/testsuite/gcc.target/i386/shift_mask.c
  b39a3b78ac05770ba2a7d8dbc79d20ff  gcc/testsuite/gcc.target/i386/shrink-wrap-separate-mingw.c
  f858aa5fd5dada286b5f5b92a2f85d77  gcc/testsuite/gcc.target/i386/shrink_wrap_1.c
*************** b24ba66b3104508ec7610b49a0fdd32f  gcc/te
*** 89721,89728 ****
  2d95d6fd458e66a2e6ff98ed01238327  gcc/testsuite/gcc.target/i386/vect-pr82426-2.c
  7677260c5e9615f8adc02d0d8774dfd6  gcc/testsuite/gcc.target/i386/vect-pr82426.c
  c94d34a8add7450a1085d0dbbfca7403  gcc/testsuite/gcc.target/i386/vect-pr97352.c
! d9f045b5fbe212b9521b7587a8323146  gcc/testsuite/gcc.target/i386/vect-pragma-target-1.c
! e28ced0a0e02af5ead87e8e207052bbd  gcc/testsuite/gcc.target/i386/vect-pragma-target-2.c
  721bbf9cfd81a48f5915680f4a425bad  gcc/testsuite/gcc.target/i386/vect-rebuild.c
  75207fad1f58c73a9ea0045ffa247e39  gcc/testsuite/gcc.target/i386/vect-reduc-1.c
  0f9fc194c0bd731306645fe06259feae  gcc/testsuite/gcc.target/i386/vect-reduc-2.c
--- 89770,89777 ----
  2d95d6fd458e66a2e6ff98ed01238327  gcc/testsuite/gcc.target/i386/vect-pr82426-2.c
  7677260c5e9615f8adc02d0d8774dfd6  gcc/testsuite/gcc.target/i386/vect-pr82426.c
  c94d34a8add7450a1085d0dbbfca7403  gcc/testsuite/gcc.target/i386/vect-pr97352.c
! 9bc8ccb91aec8a71c04a9fa162e725f8  gcc/testsuite/gcc.target/i386/vect-pragma-target-1.c
! a04043a4ea34632928d0e9f94e464533  gcc/testsuite/gcc.target/i386/vect-pragma-target-2.c
  721bbf9cfd81a48f5915680f4a425bad  gcc/testsuite/gcc.target/i386/vect-rebuild.c
  75207fad1f58c73a9ea0045ffa247e39  gcc/testsuite/gcc.target/i386/vect-reduc-1.c
  0f9fc194c0bd731306645fe06259feae  gcc/testsuite/gcc.target/i386/vect-reduc-2.c
*************** e050839388ed939e6ea93e65d85f8264  gcc/te
*** 89745,89750 ****
--- 89794,89805 ----
  6138f593bf5a8a54c6a2ecd9c082fa92  gcc/testsuite/gcc.target/i386/vect-vshiftv4qi.c
  aabfb464563bba6c95de882354b5de43  gcc/testsuite/gcc.target/i386/vect-vshiftv8qi.c
  14f97b9dcbd389e10dc5aa32f63f91f2  gcc/testsuite/gcc.target/i386/vect8-ret.c
+ 01c07dea688ead7e87f11cab974529f8  gcc/testsuite/gcc.target/i386/vect_unroll-1.c
+ f145e94613ff35758e6b8b1e46f85968  gcc/testsuite/gcc.target/i386/vect_unroll-2.c
+ 368143b2360daf14fa7aef450051941b  gcc/testsuite/gcc.target/i386/vect_unroll-3.c
+ 2c0dda4e1cb28f684b52e9f027f26ba9  gcc/testsuite/gcc.target/i386/vect_unroll-4.c
+ 9197d64fe201e07181f36859e3c75198  gcc/testsuite/gcc.target/i386/vect_unroll-5.c
+ 18eba7f0b960843d668e4106fa8febe0  gcc/testsuite/gcc.target/i386/vect_unroll-6.c
  149e13bbcc2a5494920185cb4c3283ba  gcc/testsuite/gcc.target/i386/vectorize-aocl1.c
  8392cd251159c612f1d39b348071c359  gcc/testsuite/gcc.target/i386/vectorize1.c
  a681ca062ac072c3cb40b105a2ea0266  gcc/testsuite/gcc.target/i386/vectorize10.c
*************** bfebec3a4dbfa9680a4285589498905c  gcc/te
*** 90137,90142 ****
--- 90192,90198 ----
  dde2cba27bc4292492e4c0dd492a70e0  gcc/testsuite/gcc.target/loongarch/pr119408.c
  359760e5160f4b52d2fa349806589a0d  gcc/testsuite/gcc.target/loongarch/pr121064.c
  acf1fac916847c2064b8d2bbb6535828  gcc/testsuite/gcc.target/loongarch/pr121542.c
+ 754f11f1533603a4d550b593afc0c673  gcc/testsuite/gcc.target/loongarch/pr121634.c
  1eac553341d725c6e59615b593aedb0d  gcc/testsuite/gcc.target/loongarch/pragma-push-pop.c
  3adba2a8ae6f671eb22ec8228777c1ac  gcc/testsuite/gcc.target/loongarch/prolog-opt.c
  1bfa30f99dc5f04f569fbff68640ab19  gcc/testsuite/gcc.target/loongarch/recip-divf.c
*************** cd709a10461254ddf2db66c3d68f0ea1  gcc/te
*** 94518,94523 ****
--- 94574,94580 ----
  3ff3e986a97f4269e8ce353c4d141360  gcc/testsuite/gcc.target/riscv/_Float16.c
  5728414c152ee60b1244ec815d886d4f  gcc/testsuite/gcc.target/riscv/__bf16-nanboxing.c
  8f640bd470ff16ce8acabc79ba9d4e96  gcc/testsuite/gcc.target/riscv/add-synthesis-1.c
+ 615a0e0c970edc01fb1779359e6d4069  gcc/testsuite/gcc.target/riscv/add-synthesis-2.c
  d93c3e1c3636a89154ff39eafab30b70  gcc/testsuite/gcc.target/riscv/adddibeq.c
  8d0f5170831bd2bdc95068f618255b3b  gcc/testsuite/gcc.target/riscv/adddibfeq.c
  249c79a0f1d2f8b4e8a4dd4af89afe8f  gcc/testsuite/gcc.target/riscv/adddibfge.c
*************** e576291427abca3f72d30a431447959b  gcc/te
*** 94697,94703 ****
  1a1b708bbda0ed6bf621da9fed1ab33d  gcc/testsuite/gcc.target/riscv/arch-22.cc
  62a149fb3cda7f5ee93bf5f7f6075888  gcc/testsuite/gcc.target/riscv/arch-23.c
  b75c106ec27cc7342a78fa97b18b9780  gcc/testsuite/gcc.target/riscv/arch-24.c
! 448a30d9100aa50ce60faf5b4e39410b  gcc/testsuite/gcc.target/riscv/arch-25.c
  47c92173c555b7e9676906e4937da88a  gcc/testsuite/gcc.target/riscv/arch-26.c
  6fb005412f8c5d07a35f36ea4f160eff  gcc/testsuite/gcc.target/riscv/arch-27.c
  904d29c140d0ab6500fe45798bf9bc06  gcc/testsuite/gcc.target/riscv/arch-28.c
--- 94754,94760 ----
  1a1b708bbda0ed6bf621da9fed1ab33d  gcc/testsuite/gcc.target/riscv/arch-22.cc
  62a149fb3cda7f5ee93bf5f7f6075888  gcc/testsuite/gcc.target/riscv/arch-23.c
  b75c106ec27cc7342a78fa97b18b9780  gcc/testsuite/gcc.target/riscv/arch-24.c
! a99ef868c83bd39fb6b29b64fc3669fa  gcc/testsuite/gcc.target/riscv/arch-25.c
  47c92173c555b7e9676906e4937da88a  gcc/testsuite/gcc.target/riscv/arch-26.c
  6fb005412f8c5d07a35f36ea4f160eff  gcc/testsuite/gcc.target/riscv/arch-27.c
  904d29c140d0ab6500fe45798bf9bc06  gcc/testsuite/gcc.target/riscv/arch-28.c
*************** cb0683e276e65e19eb1889ad89f776c0  gcc/te
*** 94746,94752 ****
  4cc6a17415a162ed3a1f16b10f116eb1  gcc/testsuite/gcc.target/riscv/arch-smcsrind.c
  b5b81669c4bd638c4b3b2a03da3402c7  gcc/testsuite/gcc.target/riscv/arch-smrnmi.c
  8f8880aaeaad3b06025ff64692da84bb  gcc/testsuite/gcc.target/riscv/arch-ss-1.c
! 7166d1530d97826c40e96444ee4cc67a  gcc/testsuite/gcc.target/riscv/arch-ss-2.c
  56b05692699a43b167fa1d917de183b6  gcc/testsuite/gcc.target/riscv/arch-ssccptr.c
  228b4b08ec87c3aab0b819d614940092  gcc/testsuite/gcc.target/riscv/arch-sscounterenw.c
  747803496e0db732a7ac3c8b93f70c1f  gcc/testsuite/gcc.target/riscv/arch-sstvala.c
--- 94803,94809 ----
  4cc6a17415a162ed3a1f16b10f116eb1  gcc/testsuite/gcc.target/riscv/arch-smcsrind.c
  b5b81669c4bd638c4b3b2a03da3402c7  gcc/testsuite/gcc.target/riscv/arch-smrnmi.c
  8f8880aaeaad3b06025ff64692da84bb  gcc/testsuite/gcc.target/riscv/arch-ss-1.c
! 9a1dbf0f19051d79f59b8e40f579d8d7  gcc/testsuite/gcc.target/riscv/arch-ss-2.c
  56b05692699a43b167fa1d917de183b6  gcc/testsuite/gcc.target/riscv/arch-ssccptr.c
  228b4b08ec87c3aab0b819d614940092  gcc/testsuite/gcc.target/riscv/arch-sscounterenw.c
  747803496e0db732a7ac3c8b93f70c1f  gcc/testsuite/gcc.target/riscv/arch-sstvala.c
*************** c7b45bc32e4a79b9e13b5b44d05d2e24  gcc/te
*** 94758,94765 ****
  85de41fcf6ff9844281db0ea95e87d0b  gcc/testsuite/gcc.target/riscv/arch-unset-4.c
  9268e7392f71c9469c8d277852e033f8  gcc/testsuite/gcc.target/riscv/arch-unset-5.c
  7e53fcd0c393d0469b2cf1b3dd12ede9  gcc/testsuite/gcc.target/riscv/arch-zilsd-1.c
! 558e0806ff5d2460170aa161b8130f20  gcc/testsuite/gcc.target/riscv/arch-zilsd-2.c
! 1ea95cf57e0971954e5c964450d8b009  gcc/testsuite/gcc.target/riscv/arch-zilsd-3.c
  6be92dc237b576e8f4ddb6f36b3e74d2  gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
  f7c93a7f1ac8c63ea33743634bd47e7d  gcc/testsuite/gcc.target/riscv/attribute-1.c
  84dfe009e450695f476bc4133d7a8351  gcc/testsuite/gcc.target/riscv/attribute-10.c
--- 94815,94822 ----
  85de41fcf6ff9844281db0ea95e87d0b  gcc/testsuite/gcc.target/riscv/arch-unset-4.c
  9268e7392f71c9469c8d277852e033f8  gcc/testsuite/gcc.target/riscv/arch-unset-5.c
  7e53fcd0c393d0469b2cf1b3dd12ede9  gcc/testsuite/gcc.target/riscv/arch-zilsd-1.c
! 83e721438e2c0dd15045ac3efa1ac2e5  gcc/testsuite/gcc.target/riscv/arch-zilsd-2.c
! 58222be4f3ce6587fb5478cdb70474e6  gcc/testsuite/gcc.target/riscv/arch-zilsd-3.c
  6be92dc237b576e8f4ddb6f36b3e74d2  gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
  f7c93a7f1ac8c63ea33743634bd47e7d  gcc/testsuite/gcc.target/riscv/attribute-1.c
  84dfe009e450695f476bc4133d7a8351  gcc/testsuite/gcc.target/riscv/attribute-10.c
*************** d66b77cd3223498c6e933305c7a7ca13  gcc/te
*** 95162,95172 ****
  dcced0272e68ebd6c311b4e558088af7  gcc/testsuite/gcc.target/riscv/mcpu-xiangshan-kunminghu.c
  65e147ffc7d34e1068d4e84bee668245  gcc/testsuite/gcc.target/riscv/mcpu-xiangshan-nanhu.c
  19de394d94684c3e89cb1d285acca034  gcc/testsuite/gcc.target/riscv/mcpu-xt-c908.c
! b90deaaee0e0ff0b92a31d7860a8a612  gcc/testsuite/gcc.target/riscv/mcpu-xt-c908v.c
  2dac1a57501dfbf980c64965da3faff3  gcc/testsuite/gcc.target/riscv/mcpu-xt-c910.c
  ff231335f542050ad4fec2d9fb0a1456  gcc/testsuite/gcc.target/riscv/mcpu-xt-c910v2.c
  f4d15f0f76038ce87073049d4d456ff6  gcc/testsuite/gcc.target/riscv/mcpu-xt-c920.c
! df1e6186129f1056cb9287da6e0a2c85  gcc/testsuite/gcc.target/riscv/mcpu-xt-c920v2.c
  3311f6659838594b5135f5297b263bd1  gcc/testsuite/gcc.target/riscv/mem-extend.c
  16126a8d4ef67d573cd4276fa7c8cb6f  gcc/testsuite/gcc.target/riscv/memcpy-nonoverlapping.c
  2dd2de1f802134107e9ed820836a3aa7  gcc/testsuite/gcc.target/riscv/memset-nonoverlapping.c
--- 95219,95229 ----
  dcced0272e68ebd6c311b4e558088af7  gcc/testsuite/gcc.target/riscv/mcpu-xiangshan-kunminghu.c
  65e147ffc7d34e1068d4e84bee668245  gcc/testsuite/gcc.target/riscv/mcpu-xiangshan-nanhu.c
  19de394d94684c3e89cb1d285acca034  gcc/testsuite/gcc.target/riscv/mcpu-xt-c908.c
! 5d2dc88e796367136b1b55f8a62f3937  gcc/testsuite/gcc.target/riscv/mcpu-xt-c908v.c
  2dac1a57501dfbf980c64965da3faff3  gcc/testsuite/gcc.target/riscv/mcpu-xt-c910.c
  ff231335f542050ad4fec2d9fb0a1456  gcc/testsuite/gcc.target/riscv/mcpu-xt-c910v2.c
  f4d15f0f76038ce87073049d4d456ff6  gcc/testsuite/gcc.target/riscv/mcpu-xt-c920.c
! 8499a3cd439fb6c9b5053ff1651105af  gcc/testsuite/gcc.target/riscv/mcpu-xt-c920v2.c
  3311f6659838594b5135f5297b263bd1  gcc/testsuite/gcc.target/riscv/mem-extend.c
  16126a8d4ef67d573cd4276fa7c8cb6f  gcc/testsuite/gcc.target/riscv/memcpy-nonoverlapping.c
  2dd2de1f802134107e9ed820836a3aa7  gcc/testsuite/gcc.target/riscv/memset-nonoverlapping.c
*************** fd1ad27c6f6aa8e73524a95358b4fff8  gcc/te
*** 95456,95462 ****
  529f76ee14377024369064d810c9dc2b  gcc/testsuite/gcc.target/riscv/movsine-zicond.c
  a253f6211e939c78d54f7413baa13d8c  gcc/testsuite/gcc.target/riscv/movsine.c
  b79b998aeb58db66bd0a67b99288020e  gcc/testsuite/gcc.target/riscv/nozicond-1.c
! 08c516bd9c1d80612cfb2580834ae43d  gcc/testsuite/gcc.target/riscv/nozicond-2.c
  4925e10a6ae58d941956f63cfa564202  gcc/testsuite/gcc.target/riscv/nozicond-3.c
  91df64335c75c89ed2e21716fe77a561  gcc/testsuite/gcc.target/riscv/omit-frame-pointer-1.c
  b31f65298e8fa9f53bbc717e292604ee  gcc/testsuite/gcc.target/riscv/omit-frame-pointer-2.c
--- 95513,95519 ----
  529f76ee14377024369064d810c9dc2b  gcc/testsuite/gcc.target/riscv/movsine-zicond.c
  a253f6211e939c78d54f7413baa13d8c  gcc/testsuite/gcc.target/riscv/movsine.c
  b79b998aeb58db66bd0a67b99288020e  gcc/testsuite/gcc.target/riscv/nozicond-1.c
! 2ac773c640cc233a0124069480b6f47d  gcc/testsuite/gcc.target/riscv/nozicond-2.c
  4925e10a6ae58d941956f63cfa564202  gcc/testsuite/gcc.target/riscv/nozicond-3.c
  91df64335c75c89ed2e21716fe77a561  gcc/testsuite/gcc.target/riscv/omit-frame-pointer-1.c
  b31f65298e8fa9f53bbc717e292604ee  gcc/testsuite/gcc.target/riscv/omit-frame-pointer-2.c
*************** c80c0e73d4a722ffbd131b5923b0fd4f  gcc/te
*** 97647,97659 ****
  d5b4cb0e9c27371faf4d923898285946  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-max-4.c
  66d599d0f18818b6ce81fc69d7dd339d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-max-5.c
  953f23db04f3533860c00f11b5138a22  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-1.c
! 0ec8b38055f6791877784297c3990a5f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-2.c
  3c95d542c38d48a74942a54dcfe5d1d1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-3.c
! 61572b7474ea759dd3f02eed4ce4e8fc  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-4.c
  0b12df402b882c7a78f3fbfb6061435a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-5.c
  8ab0ce2e3db3521d31c4f619d0736c55  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-1.c
! 53659cc4151769dfbf205087b7ac6849  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-2.c
! 9b77f21164063d92fa8cd90e6adf9df7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-3.c
  5f90d4fc9d91914db44c364d1d41faa6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sgnj-1.c
  ff5670e76438ca5c0014a46dd2388e8b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sgnj-2.c
  716cb9a267638ed0eb1a14cb65ff8021  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sgnjx-1.c
--- 97704,97716 ----
  d5b4cb0e9c27371faf4d923898285946  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-max-4.c
  66d599d0f18818b6ce81fc69d7dd339d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-max-5.c
  953f23db04f3533860c00f11b5138a22  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-1.c
! be514ccc458cbe3e2cdc1127f6590023  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-2.c
  3c95d542c38d48a74942a54dcfe5d1d1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-3.c
! 8d018af69c76842896ffde3f19269309  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-4.c
  0b12df402b882c7a78f3fbfb6061435a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-5.c
  8ab0ce2e3db3521d31c4f619d0736c55  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-1.c
! d4b2c0bf538a73b0edb6a1e9b8d69a6d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-2.c
! 6ed9d5d39703f6246291773ae3dc3a07  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-3.c
  5f90d4fc9d91914db44c364d1d41faa6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sgnj-1.c
  ff5670e76438ca5c0014a46dd2388e8b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sgnj-2.c
  716cb9a267638ed0eb1a14cb65ff8021  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sgnjx-1.c
*************** f95d4e0ecca41e722099be6b52b3efe7  gcc/te
*** 97904,97921 ****
  35044d6a949091b4c23addf451f035ed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vmv-imm-rv64.c
  0026b1e2310b7242895d290cff3f1e9e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vmv-imm-template.h
  2d052315288cbb1a315add9fb76abbc3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vreinterpet-fixed.c
! 8a9af5b9b6be10c20f56239fe068b3c1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c
! ecaec8c66f1a55ec41b320124b20cac1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c
! fea54bb5a266eff0820350de1af77b72  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c
! b71903d3401892805ff8563dcf4f6340  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c
! a9aef7f2b64ef61131265008345821f4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c
! 5daea474bc1bfdba230c7dac9ff7eef5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c
! cebb4bdb25576c6213f3f7b1e20a6243  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c
! bd96f289e0ad30ff772dc172cc6b434f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c
! 6ee57c9228503f22edac219520b34d26  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c
! 32eb343d9efbeb1d62134a7b91c40c5d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c
! 30056c447fc7da2899e948f7de4552f7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c
! 80f6cd8c4545ede87b8410857115bc89  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c
  5ac387603c0d24689924b3d78ba4bbf9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop.h
  1c4119935df2b0a9b4ab87cf47a3cdd7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_data.h
  2714f0d833a302283af9fa8d888862ad  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_run.h
--- 97961,97993 ----
  35044d6a949091b4c23addf451f035ed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vmv-imm-rv64.c
  0026b1e2310b7242895d290cff3f1e9e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vmv-imm-template.h
  2d052315288cbb1a315add9fb76abbc3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vreinterpet-fixed.c
! da8f31fffd4f54a96ec19cdbd8b66870  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c
! 50aa2f08d81e393919f9085686aa8620  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c
! 5117d09af0a824eab8c635083b7f44b0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c
! 38175f8c980affaf049c24107c92cdc9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c
! dd5e67d979f224a627cb7ffe3b4a7b7a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c
! 5d99a1b23f4b6bb96b30a6dd7845c738  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c
! a7ecad30cbc282fa16ceac3bbadf3756  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c
! acd79c0e4c768924593d541b5218fa84  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c
! e006905c5d3cad5d09a3471c900021c0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c
! 3102061f880638d61d8f41e22667f46a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c
! 3994b25c315a8e344b03589af51de2a9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c
! 474f8620abf41db2702b87315d783e6a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c
! 7e7251e89ffba617c929fc3b295c5f4b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f16.c
! 3b6d9ac21ddef3a0114850a5852bbaf0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f32.c
! a86632cd7e467ef4e5f15174d2d41472  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f64.c
! aa37ab3915741409f060642377966969  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f16.c
! 3ab00fef2658f5687fd535ebe4937ae9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f32.c
! 67286731c4a64c8fa44a7c698b8c48f7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f64.c
! 309737e17ca3dc9167d05064eeacf851  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f16.c
! 72cdbed23d19bd8a2a816ccba6f1779a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f32.c
! 669449a08b0fbab88f488dc86666d551  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f64.c
! 9b99b0478d4169cdc726bdccb4290fe8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f16.c
! 27f129e34959663dd79c465f132229dd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f32.c
! 832fe7fb57dcc0cda468291873aed7a0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f64.c
! ff23578a21c2c87c91242d82fbd09e20  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h
! f48ed2c237660e6017b63fe0531a5475  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h
! 8defdab5f95bd04f24f032b99346d64f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_run.h
  5ac387603c0d24689924b3d78ba4bbf9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop.h
  1c4119935df2b0a9b4ab87cf47a3cdd7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_data.h
  2714f0d833a302283af9fa8d888862ad  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_run.h
*************** db6c9fd046686fdd17cc7ffc5fbfe33a  gcc/te
*** 97926,97937 ****
--- 97998,98015 ----
  70e39ec96c65eb4b15338a6f01c31f35  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f16.c
  f111fb341a6ca7e95c2fa3bb7c758f27  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f32.c
  93a4d811d524303ed690e8cd8e527806  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f64.c
+ d27502785051afe00e32a706dbee68a7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f16.c
+ 0cc96fee340215857657e90f9a2accf5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f32.c
+ d49b5d2fbe0dd978b8551455e7a6d8e0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f64.c
  81c6429e35980a6f8f11053a8e4cd1db  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsac-run-1-f16.c
  007ec5abf9cca9e34ba75e11dd5d4f2e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsac-run-1-f32.c
  706fdab09ac27674ccdcb6d34688ccb8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsac-run-1-f64.c
  c1a16976849fd541d4886de3eb0b0626  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f16.c
  bdefbf3eeea1f08fffd42d2bde350dea  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f32.c
  5a1f7f5afdbbfcecd97cb5d7098ff707  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f64.c
+ f750025406a79da09992376ecfca4061  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f16.c
+ c47bb897700d0ee67dd0364d6a732177  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f32.c
+ d23a27c26210204a6e5dabaa5dd2794c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f64.c
  49db4d5a9f12b695bfda1ef3aa0fc334  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmacc-run-1-f16.c
  87786f9293eedd4f262ccf4e09d478f9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmacc-run-1-f32.c
  634b2fb5bed1d8ed41e55b271de9400c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmacc-run-1-f64.c
*************** fb70148e0cd734ac545ebc3dc0fb2d9e  gcc/te
*** 97944,97949 ****
--- 98022,98030 ----
  cccfcab51157cbdfe5b3ce1e69f86f86  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f16.c
  dfc52616a58f523908e41a5a4e0f72b2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f32.c
  813960aebe71c2622a67c2b2649a8973  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f64.c
+ c5a398684cc3097ee089765ed1c54ecc  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f16.c
+ b080bc38a76d40ca808fbf3333b77a9d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f32.c
+ 46be4b470e57e94da0aff80cfd40faf5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f64.c
  74c500447444b56fb97c54f48f041427  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmacc-run-1-f16.c
  3d2a7164ecf998191c3df62b3eb98cb0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmacc-run-1-f32.c
  9503a935992e9ecaecb773b7e5f8851c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmsac-run-1-f16.c
*************** c8ea40c4b9abb00be5f9636824cb84e2  gcc/te
*** 97952,97981 ****
  12dbee70f513595c141538484edde7ca  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwnmacc-run-1-f32.c
  19660cbbf3b61c67838e558f4b806c60  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwnmsac-run-1-f16.c
  99b2ebb0aea4ec8f59a77cce1a6130c5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwnmsac-run-1-f32.c
! 9215ad18018c4426df1e517a1ea9c882  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
! 69c254f90bb4aacc9a8a7a6a1e5a7b60  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
! 995fe2ac406eb8bd4965144f1060c925  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
! 7ec1eb24412e7aad8b6cfdc14a7acf91  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
! 55cf9b30ab51b503be7552d2b720d918  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
! 3b2766ec89d15e1050f60de15f055b3f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
! b73a7e7334a360dc2dd33ef05ebfcf82  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
! efa4a70add310079f01c7a9c194831d8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
! e92ffd71a53fb7e2085faf419ef186dd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
! 30e5d51fc80e38aaba9e79d139278f29  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
! 4e4b9bf963f4c01fef62f7a272624935  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
! 7df88ecebea7ce588dba1f41c640f0f0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
! 766ad833d9289d3b0a28c43fbe02c706  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
! 532e5cc1fc4f15ce5a3eabb97af9bdf6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
! 253f7e444ccae32f5cb2d5ab4e44b28c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
! 3cac786faf5c30aa9b5ccec1fc52f09d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
! 965cb322b597bbab68600a4417f07bed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
! 95ee8a639e10a131b93b48d8c5e09dfa  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
! 100924041be07de7193abc6fb47a0799  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
! 28acaf5002fc17931f0c8b6b049cd988  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
! 0e1369c56ba4d347aa8352cf3a050bca  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
! 2e706b14c94fac4e135536131304ac93  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
! 4f50687b92dbb6ee4b107cb6a5973d52  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
! d40872af06bc3802929626083516d50a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
  ddbdedd0bcd1b2f07c63e57ea3edd7f9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c
  ecb91086db90af95d3f46740e36b1ce2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c
  cee911916a71eee6997697cd65895e73  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c
--- 98033,98062 ----
  12dbee70f513595c141538484edde7ca  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwnmacc-run-1-f32.c
  19660cbbf3b61c67838e558f4b806c60  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwnmsac-run-1-f16.c
  99b2ebb0aea4ec8f59a77cce1a6130c5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwnmsac-run-1-f32.c
! 0ac56b18e78637de5046ca3031cf2a38  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
! 7e5ff99769eeee862017d7d314eee3db  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
! 9d39f586a1bc480e85a9c7c6db9e8953  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
! ecb8bba0f424c37c7ebcfb589a960304  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
! 38e73d344ef997c7988cb7e8e225c796  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
! 1fc12d3f99e1acffe174fe9a1959c57c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
! e4fb06c2bfe36ba9c438e98630e6d663  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
! 571f2218e5d680ba45d576019bacae30  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
! a63a7e7018bc05ae5a98ddc56ecb4bdd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
! 70158c4419e55d4343befe6c684077da  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
! 1620e233f81ac07b832f32302f5bc31c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
! 24393cc9a09584f3455af9b00b9088b6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
! e27b0ed1361522faad16ed4ee69470bb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
! 571f38e0d57e9b716820b174f9a95962  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
! 0f8ea320e639688440fbcb70324bcaf9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
! 32f76db74ea63ede546e6944ad3cdba8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
! 92844ff443bf85d61544655f1bb477cc  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
! f7feb249801758996e83110298c15d38  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
! 1d9067ad6e9e76d99826eb3bdb464612  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
! a41ff21938f3ba55d81f0063349b5adb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
! 3f2a6a97250d933d838f9bc6339ce780  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
! 1d07ef5cca38afedb409e33a6dec5b0a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
! 1c0ec51dde7c48ddaad47e01d212378c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
! a6c671acbdc051d770e4304ab1c15b73  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
  ddbdedd0bcd1b2f07c63e57ea3edd7f9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c
  ecb91086db90af95d3f46740e36b1ce2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c
  cee911916a71eee6997697cd65895e73  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c
*************** a668be35e3b0365efdcb1644b843f8f7  gcc/te
*** 98024,98029 ****
--- 98105,98113 ----
  738ceca6a0494f006bd23ec6517ff9b5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
  4640bcc49b379bad118720685e49bcdf  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
  ccb9cff4438796fd5c2c015df2204a55  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h
+ b358427297c9e89e6dee426cc23fe4ca  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary.h
+ 140d0c933e6d8490a59c964da37e36c9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_data.h
+ c85dc3b707dc1a4b1175687216f66132  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_run.h
  2f23b92e9170e127daeb5d9860d9767f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vaadd-run-1-i16.c
  aa5affb189e4fe4c4c6908a851c52957  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vaadd-run-1-i32.c
  032764f0d87dd7e09ee3369db366511e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vaadd-run-1-i64.c
*************** dc2b6bed194fc74b370b25a3dc744b75  gcc/te
*** 98064,98069 ****
--- 98148,98161 ----
  7ecbf5a0a0464699bf38031217fcf372  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vdiv-run-1-u32.c
  c6540253f4e8566becbeb0ec46e18999  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vdiv-run-1-u64.c
  fae1dd6ff530da227dc062a923a9e722  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vdiv-run-1-u8.c
+ b3ddd2fabd78494e6ae8426eaf553c58  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i16.c
+ f19b30a56162b2266661e15b7c9f54f2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i32.c
+ 746520e904286c61eb0373eed062a3cc  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i64.c
+ e77f9e1565d0b150acfb84d452a122fc  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i8.c
+ c8491bcba1b39370cea742eeded61ee8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u16.c
+ e67da9cf4c254eb008ce18f47aaac8d4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u32.c
+ 8f4b590f9ab86cd5293dc42854c49c8a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u64.c
+ c7c7d52fab2f6dd8f1e74befef0a7903  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u8.c
  2b79e264f1dc49a63af57d99ff396f1b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i16.c
  f30b3319aafd6ecd31ae1419cbf2ddc3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i32.c
  bb761d4e9d5897d36d3c611bd5ec2bef  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i64.c
*************** a1b9f8ae5b1f332e5b48755b28e40cdb  gcc/te
*** 98104,98109 ****
--- 98196,98209 ----
  f3610778d536959133cfda7115cd7ca8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmul-run-1-i32.c
  8b6a8f2a6c0bc3be747fd220041e321f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmul-run-1-i64.c
  7422ef85e90b4a00f37f77f709ef9219  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmul-run-1-i8.c
+ b832f6d37389d43e947365b3afa7e451  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i16.c
+ 0023c701fda95f8b19391542eb19766f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i32.c
+ d7f0c9531f0771e19f9eb4571fc4aaf3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i64.c
+ 8091679f354bf5245d5099a2132a44e3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i8.c
+ d38cc5eacf38ee8c46ddfc6741e55f49  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u16.c
+ 4b305da1750a150804f656236c4c6d88  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u32.c
+ 5c57d808cb14bf88e534144384ff9d84  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u64.c
+ 9e526ccbd489e17b36c4700d53b1ec1d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u8.c
  90a5b2f99307ef1d58eb01275ec12ab5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vor-run-1-i16.c
  73f8419d7d51dd6d9657973ca7153119  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vor-run-1-i32.c
  6559ebf5f269f0c83f81f6a5726fdaf8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vor-run-1-i64.c
*************** a8f53ad5180333afb72d569d125c3922  gcc/te
*** 99607,99613 ****
  fe865d9009af7551d830f6d4e3008ebe  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlwu-vsw.c
  10c2fe61483d221e6648e72c6ff9f6a0  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vsext.c
  23788d7500abf7340ab20ef598d9da5e  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vzext.c
! f33187a16fce936d7e2b519d5c8bfe99  gcc/testsuite/gcc.target/riscv/sat/sat_arith.h
  89d90b13c13c2658dcc8319771cd755f  gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h
  e52f03a6378cd78f7ea04149c2b8215a  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i16.c
  1de70dbaccb7e9fe73b8e90ec7430b4d  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i32.c
--- 99707,99713 ----
  fe865d9009af7551d830f6d4e3008ebe  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlwu-vsw.c
  10c2fe61483d221e6648e72c6ff9f6a0  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vsext.c
  23788d7500abf7340ab20ef598d9da5e  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vzext.c
! 70e982aa652bc6c91cf9fa013d8ab358  gcc/testsuite/gcc.target/riscv/sat/sat_arith.h
  89d90b13c13c2658dcc8319771cd755f  gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h
  e52f03a6378cd78f7ea04149c2b8215a  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i16.c
  1de70dbaccb7e9fe73b8e90ec7430b4d  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i32.c
*************** ba33ef8f801fa9b4136623078f1e83e6  gcc/te
*** 99989,99994 ****
--- 100089,100107 ----
  45b781334a1d553fd23aae9af4ebb630  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-4-u8-from-u32.c
  2bd5aa55e46cd6c14bde0bb9f30b3e4d  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-4-u8-from-u64.c
  30506ca71dfb8809f6d3f511330fd947  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-4-u8-from-u64.rv32.c
+ d496c8d4dc05c854274538f7fa986a6c  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u128.c
+ 8071c7d80a911d21764cc2ef7cf50133  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u32.c
+ daed606783ba715078c763063fb71494  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u64.rv32.c
+ a711d148641e918a923032686e7feb20  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u64.rv64.c
+ 07a35d81d55a51a7aebac3d7770ea1d5  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u128.c
+ 362cf62d1e446f2903a7b55bebb6dcaa  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u64.rv32.c
+ 93a494f44670cf10df41e01ec4352d48  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u64.rv64.c
+ 0c5fcd6a99b79df59c2708ae7aa20783  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u64-from-u128.c
+ f2a29f2daa827152046119e065d7e74c  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u128.c
+ 63ca9da7e17ebdde93dbb1517a3152b2  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u16.c
+ ae253cdb3b48e6898f25a6a884085caf  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u32.c
+ 46f39225e1d986ce206163d2f348ac1e  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u64.rv32.c
+ cbe5fc9dc5bb96c2c91e2afdfa0a7c81  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u64.rv64.c
  bf3cc27ddc2ea3d61c508c988cc37520  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-1-u16-from-u128.c
  e532a922f2b1c193ca39bdfa1e70bdba  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-1-u16-from-u32.c
  b343a3fe775fb03e665506a088734673  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-1-u16-from-u64.c
*************** ed0957c56643f0f3bef9aca9b0ee0cab  gcc/te
*** 100016,100021 ****
--- 100129,100144 ----
  669bf12578f4f22bf2931da570c60419  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-4-u8-from-u32.c
  f321bc1a9459f02c0d4951e7e09988c4  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-4-u8-from-u64.c
  ed0957c56643f0f3bef9aca9b0ee0cab  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-4-u8-from-u64.rv32.c
+ e06c27366478438cf5df8391e3dc236c  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u128.c
+ eab1eb352b821667b8b92563a937d6f8  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u32.c
+ ae9bb21fd86190394214c04215931509  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u64.c
+ 805a27a831075137fa55c7cd447cc83b  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u32-from-u128.c
+ 46f2f184bd9c1cf73825efe61a913d70  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u32-from-u64.c
+ c2ca006bc7edb3f2955e6195faa37d32  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u64-from-u128.c
+ 0930c67a6b16634171d7906257f5c04d  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u128.c
+ 535055b68ed73f2d7d5b863617b9c15f  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u16.c
+ 59365e028b7d97757228ecf92633684b  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u32.c
+ ef26294b4e42f4cda3877129c397e6b6  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u64.c
  fdd9d0d3a36236e0472d000f8833d982  gcc/testsuite/gcc.target/riscv/sat/sat_u_sub-1-u16.c
  e3e2bd9a544f75219a218a5520d41e4e  gcc/testsuite/gcc.target/riscv/sat/sat_u_sub-1-u32.c
  7239f33d03967abfe59724a5530c6c52  gcc/testsuite/gcc.target/riscv/sat/sat_u_sub-1-u64.c
*************** eacc096a7f94a630ed769a6bed50453d  gcc/te
*** 102482,102487 ****
--- 102605,102611 ----
  2c169e3ed7b7968f235d883ab0a5457a  gcc/testsuite/gcc.target/xtensa/bswap-O1.c
  1a07128767cc4b46376ceb321c59f191  gcc/testsuite/gcc.target/xtensa/bswap-O2.c
  a9416652aa64c95df384346392cbfe6e  gcc/testsuite/gcc.target/xtensa/bswap-Os.c
+ f625b520634625396ff614b2d30226c3  gcc/testsuite/gcc.target/xtensa/bswap-SSAI8.c
  838815dfe721339bb146bb1ed3ca5c93  gcc/testsuite/gcc.target/xtensa/check_zero_byte.c
  5a104f8eacc55b9d4292f91bb5b77563  gcc/testsuite/gcc.target/xtensa/constsynth_2insns.c
  d7d13a4de1bb8d4900eec10ef3010828  gcc/testsuite/gcc.target/xtensa/constsynth_3insns.c
*************** d4b4b4bcc6dcd02542142d705a240525  gcc/te
*** 106974,106980 ****
  5e6384aa45f8fdb9655ed3dd85ee19a0  gcc/testsuite/gfortran.dg/aint_anint_1.f90
  e0135cee32746e48b5ed9fa5d5d98377  gcc/testsuite/gfortran.dg/aliasing_array_result_1.f90
  0bcbedcb6c881fd7221bd94270fc01fd  gcc/testsuite/gfortran.dg/aliasing_complex_pointer.f90
! 6921911318cbc5dfff85a331d2abbfb7  gcc/testsuite/gfortran.dg/aliasing_dummy_1.f90
  8b4552e37a00ca309f85af9759908a94  gcc/testsuite/gfortran.dg/aliasing_dummy_2.f90
  a083a600a2313f038c16b43b7b4401b7  gcc/testsuite/gfortran.dg/aliasing_dummy_3.f90
  12cc66b2c60fce62b831cdd3a0975181  gcc/testsuite/gfortran.dg/aliasing_dummy_4.f90
--- 107098,107104 ----
  5e6384aa45f8fdb9655ed3dd85ee19a0  gcc/testsuite/gfortran.dg/aint_anint_1.f90
  e0135cee32746e48b5ed9fa5d5d98377  gcc/testsuite/gfortran.dg/aliasing_array_result_1.f90
  0bcbedcb6c881fd7221bd94270fc01fd  gcc/testsuite/gfortran.dg/aliasing_complex_pointer.f90
! 5a0af2c0b79726ebc046ac394bc09f57  gcc/testsuite/gfortran.dg/aliasing_dummy_1.f90
  8b4552e37a00ca309f85af9759908a94  gcc/testsuite/gfortran.dg/aliasing_dummy_2.f90
  a083a600a2313f038c16b43b7b4401b7  gcc/testsuite/gfortran.dg/aliasing_dummy_3.f90
  12cc66b2c60fce62b831cdd3a0975181  gcc/testsuite/gfortran.dg/aliasing_dummy_4.f90
*************** dbfad5e8b5cf874428e1b4374f3f75e1  gcc/te
*** 107223,107229 ****
  76ffaeb49d8f6b0d2645829fb196c220  gcc/testsuite/gfortran.dg/argument_checking_12.f90
  49809609a408d29129289719ace22e54  gcc/testsuite/gfortran.dg/argument_checking_13.f90
  75637f318d12921b9ae87cf37cdb9216  gcc/testsuite/gfortran.dg/argument_checking_14.f90
! 1902ff87d35e0bf5b994fc85e38c8e91  gcc/testsuite/gfortran.dg/argument_checking_15.f90
  2f5a10924c0b14d8e5917293d1055742  gcc/testsuite/gfortran.dg/argument_checking_16.f90
  6e283f775be3991e1a1dda6a0da414c3  gcc/testsuite/gfortran.dg/argument_checking_17.f90
  9b7ce5d3bab9b5892af4076e08ba2181  gcc/testsuite/gfortran.dg/argument_checking_18.f90
--- 107347,107353 ----
  76ffaeb49d8f6b0d2645829fb196c220  gcc/testsuite/gfortran.dg/argument_checking_12.f90
  49809609a408d29129289719ace22e54  gcc/testsuite/gfortran.dg/argument_checking_13.f90
  75637f318d12921b9ae87cf37cdb9216  gcc/testsuite/gfortran.dg/argument_checking_14.f90
! c046cae127630c618248d600fa3bff12  gcc/testsuite/gfortran.dg/argument_checking_15.f90
  2f5a10924c0b14d8e5917293d1055742  gcc/testsuite/gfortran.dg/argument_checking_16.f90
  6e283f775be3991e1a1dda6a0da414c3  gcc/testsuite/gfortran.dg/argument_checking_17.f90
  9b7ce5d3bab9b5892af4076e08ba2181  gcc/testsuite/gfortran.dg/argument_checking_18.f90
*************** cb8920b39d43f8d36d7c87cd6ce3188a  gcc/te
*** 107236,107241 ****
--- 107360,107366 ----
  4696d0b0990f3672f510ad45684ab381  gcc/testsuite/gfortran.dg/argument_checking_24.f90
  e96279b8586c27726b6d13e5aef5f5ce  gcc/testsuite/gfortran.dg/argument_checking_25.f90
  41fda9edc825e051657e0ef512854333  gcc/testsuite/gfortran.dg/argument_checking_26.f90
+ c14ff6618ca60358eed38607ccf6e442  gcc/testsuite/gfortran.dg/argument_checking_27.f90
  9420e2390509236501a51aceaffd8fec  gcc/testsuite/gfortran.dg/argument_checking_3.f90
  ca22fc708f8e1b6425943105c693f41e  gcc/testsuite/gfortran.dg/argument_checking_4.f90
  6ef91b131477d21bf8c75369daea1d04  gcc/testsuite/gfortran.dg/argument_checking_5.f90
*************** f145202f2e2e4fd5f13808086de4de58  gcc/te
*** 107896,107902 ****
  8d10f29783ca2636d630f6e16779efcd  gcc/testsuite/gfortran.dg/bounds_check_strlen_4.f90
  1aa5b9216e33e8838fd724d3e1bed124  gcc/testsuite/gfortran.dg/bounds_check_strlen_5.f90
  16f160adab405d2865524fb26248a5e9  gcc/testsuite/gfortran.dg/bounds_check_strlen_6.f90
! 7b8c22c7676300c564acfd64ee119862  gcc/testsuite/gfortran.dg/bounds_check_strlen_7.f90
  c30e78fbf3112b007eba97e774e774dc  gcc/testsuite/gfortran.dg/bounds_check_strlen_8.f90
  34236eab75fb8d629eaf4c8cc9b07287  gcc/testsuite/gfortran.dg/bounds_check_strlen_9.f90
  48a0a6419e6dd7d01cfee97271120f06  gcc/testsuite/gfortran.dg/bounds_temporaries_1.f90
--- 108021,108027 ----
  8d10f29783ca2636d630f6e16779efcd  gcc/testsuite/gfortran.dg/bounds_check_strlen_4.f90
  1aa5b9216e33e8838fd724d3e1bed124  gcc/testsuite/gfortran.dg/bounds_check_strlen_5.f90
  16f160adab405d2865524fb26248a5e9  gcc/testsuite/gfortran.dg/bounds_check_strlen_6.f90
! 64634c173d61ba7d45fc278d33ad6ea1  gcc/testsuite/gfortran.dg/bounds_check_strlen_7.f90
  c30e78fbf3112b007eba97e774e774dc  gcc/testsuite/gfortran.dg/bounds_check_strlen_8.f90
  34236eab75fb8d629eaf4c8cc9b07287  gcc/testsuite/gfortran.dg/bounds_check_strlen_9.f90
  48a0a6419e6dd7d01cfee97271120f06  gcc/testsuite/gfortran.dg/bounds_temporaries_1.f90
*************** e4d7ef475af82a5dc1b05dd73885bacd  gcc/te
*** 108293,108299 ****
  6a998347f3136efdc8133a58d643c28a  gcc/testsuite/gfortran.dg/char_length_21.f90
  48366607fb703befb92c636b2a39cf86  gcc/testsuite/gfortran.dg/char_length_22.f90
  42c9f80560aaea2dbcfb65dba526220a  gcc/testsuite/gfortran.dg/char_length_23.f90
! b2e1d2ed1aab51063eaf609837a841c8  gcc/testsuite/gfortran.dg/char_length_3.f90
  42288e3a6a5e65a93ff263a2699523f8  gcc/testsuite/gfortran.dg/char_length_4.f90
  aaac5efdc99114f02621a434cad13c72  gcc/testsuite/gfortran.dg/char_length_5.f90
  c7b02f7179910772238aef0d2a8c6a01  gcc/testsuite/gfortran.dg/char_length_6.f90
--- 108418,108424 ----
  6a998347f3136efdc8133a58d643c28a  gcc/testsuite/gfortran.dg/char_length_21.f90
  48366607fb703befb92c636b2a39cf86  gcc/testsuite/gfortran.dg/char_length_22.f90
  42c9f80560aaea2dbcfb65dba526220a  gcc/testsuite/gfortran.dg/char_length_23.f90
! 2d1d01b6e0f8c776d23c45abb89d9ea2  gcc/testsuite/gfortran.dg/char_length_3.f90
  42288e3a6a5e65a93ff263a2699523f8  gcc/testsuite/gfortran.dg/char_length_4.f90
  aaac5efdc99114f02621a434cad13c72  gcc/testsuite/gfortran.dg/char_length_5.f90
  c7b02f7179910772238aef0d2a8c6a01  gcc/testsuite/gfortran.dg/char_length_6.f90
*************** d81f48fb709cb415740904f8c05dbefd  gcc/te
*** 109639,109645 ****
  f9b7a86e792764d97f0b5939361c929d  gcc/testsuite/gfortran.dg/eoshift_5.f90
  01f5663dbbe448ffcae13215519a2976  gcc/testsuite/gfortran.dg/eoshift_6.f90
  adae9a19ec811bbf55918625d353631f  gcc/testsuite/gfortran.dg/eoshift_7.f90
! 66a20460746717880ff13c94688798f8  gcc/testsuite/gfortran.dg/eoshift_8.f90
  f68f16bc720811c1bd9729ac85be7f58  gcc/testsuite/gfortran.dg/eoshift_9.f90
  d23c3cf960da52cea7987d80d427ca33  gcc/testsuite/gfortran.dg/eoshift_bounds_1.f90
  498461068b03a38305d4fb9508177f88  gcc/testsuite/gfortran.dg/eoshift_large_1.f90
--- 109764,109770 ----
  f9b7a86e792764d97f0b5939361c929d  gcc/testsuite/gfortran.dg/eoshift_5.f90
  01f5663dbbe448ffcae13215519a2976  gcc/testsuite/gfortran.dg/eoshift_6.f90
  adae9a19ec811bbf55918625d353631f  gcc/testsuite/gfortran.dg/eoshift_7.f90
! cb4d33ab0ef6f8d96bec05a5a558d952  gcc/testsuite/gfortran.dg/eoshift_8.f90
  f68f16bc720811c1bd9729ac85be7f58  gcc/testsuite/gfortran.dg/eoshift_9.f90
  d23c3cf960da52cea7987d80d427ca33  gcc/testsuite/gfortran.dg/eoshift_bounds_1.f90
  498461068b03a38305d4fb9508177f88  gcc/testsuite/gfortran.dg/eoshift_large_1.f90
*************** f2d4fcb471aa8f0cf129964a1a121b8b  gcc/te
*** 110093,110099 ****
  6126cc749cf41955b761ed99cbbb94cb  gcc/testsuite/gfortran.dg/g77/erfc.f
  903343bf82f349e4b7516c4ea259d0ec  gcc/testsuite/gfortran.dg/g77/f77-edit-apostrophe-out.f
  da022bb5c0f5da33bb7bf90d63f48432  gcc/testsuite/gfortran.dg/g77/f77-edit-colon-out.f
! 849d82e6e0567c5951c54deecb3af6d1  gcc/testsuite/gfortran.dg/g77/f77-edit-h-out.f
  ef44a7fec70868f50311728cd2f1443e  gcc/testsuite/gfortran.dg/g77/f77-edit-i-in.f
  68f1690859fa33b60eca874423346325  gcc/testsuite/gfortran.dg/g77/f77-edit-i-out.f
  f1d77276e2ca62dd595339541550c132  gcc/testsuite/gfortran.dg/g77/f77-edit-s-out.f
--- 110218,110224 ----
  6126cc749cf41955b761ed99cbbb94cb  gcc/testsuite/gfortran.dg/g77/erfc.f
  903343bf82f349e4b7516c4ea259d0ec  gcc/testsuite/gfortran.dg/g77/f77-edit-apostrophe-out.f
  da022bb5c0f5da33bb7bf90d63f48432  gcc/testsuite/gfortran.dg/g77/f77-edit-colon-out.f
! 7a4f78a1a97dca4e391641debf969499  gcc/testsuite/gfortran.dg/g77/f77-edit-h-out.f
  ef44a7fec70868f50311728cd2f1443e  gcc/testsuite/gfortran.dg/g77/f77-edit-i-in.f
  68f1690859fa33b60eca874423346325  gcc/testsuite/gfortran.dg/g77/f77-edit-i-out.f
  f1d77276e2ca62dd595339541550c132  gcc/testsuite/gfortran.dg/g77/f77-edit-s-out.f
*************** e5de83f3c72df9c91e2516026a10fd5c  gcc/te
*** 110435,110441 ****
  e9972505e1a87fdeda00b94d99cf711b  gcc/testsuite/gfortran.dg/goacc/vector_length.f90
  d09b6d0bd3c55d3b99ebe64fe2ee3d04  gcc/testsuite/gfortran.dg/goacc/wait.f90
  4792d309290210831c4f3cd01453f237  gcc/testsuite/gfortran.dg/goacc/warn_truncated.f90
! 62f3f5987ab9e32b28be9913a46f0ea9  gcc/testsuite/gfortran.dg/gomp/adjust-args-1.f90
  27c53e9d9da4a677a470776faf701455  gcc/testsuite/gfortran.dg/gomp/adjust-args-10.f90
  0221e6598b37e7bceb19dc705f66e3a5  gcc/testsuite/gfortran.dg/gomp/adjust-args-11.f90
  71a8d09b919831f501b73b2f68ba89e6  gcc/testsuite/gfortran.dg/gomp/adjust-args-12.f90
--- 110560,110566 ----
  e9972505e1a87fdeda00b94d99cf711b  gcc/testsuite/gfortran.dg/goacc/vector_length.f90
  d09b6d0bd3c55d3b99ebe64fe2ee3d04  gcc/testsuite/gfortran.dg/goacc/wait.f90
  4792d309290210831c4f3cd01453f237  gcc/testsuite/gfortran.dg/goacc/warn_truncated.f90
! ca08846090699b11a20208a800d4cf04  gcc/testsuite/gfortran.dg/gomp/adjust-args-1.f90
  27c53e9d9da4a677a470776faf701455  gcc/testsuite/gfortran.dg/gomp/adjust-args-10.f90
  0221e6598b37e7bceb19dc705f66e3a5  gcc/testsuite/gfortran.dg/gomp/adjust-args-11.f90
  71a8d09b919831f501b73b2f68ba89e6  gcc/testsuite/gfortran.dg/gomp/adjust-args-12.f90
*************** de1aa465fd55a6b4c24514982405ff85  gcc/te
*** 110488,110494 ****
  dc598e53285474c71e357ec100b2489b  gcc/testsuite/gfortran.dg/gomp/allocators-3.f90
  ac6870964ba16f9c08fce6ee73023537  gcc/testsuite/gfortran.dg/gomp/allocators-4.f90
  2c46b1e169c6854da53c30fe0524733b  gcc/testsuite/gfortran.dg/gomp/append-args-interop.f90
! 5b65f31bccd9650fd44f966ac599fbc3  gcc/testsuite/gfortran.dg/gomp/append_args-1.f90
  4a314c759a6c6dd2208547e13761e900  gcc/testsuite/gfortran.dg/gomp/append_args-2.f90
  a8fbc0aad84d8709944c57ce59037cb7  gcc/testsuite/gfortran.dg/gomp/append_args-3.f90
  4dff400b9f255be995b405bdcfde3995  gcc/testsuite/gfortran.dg/gomp/append_args-4.f90
--- 110613,110619 ----
  dc598e53285474c71e357ec100b2489b  gcc/testsuite/gfortran.dg/gomp/allocators-3.f90
  ac6870964ba16f9c08fce6ee73023537  gcc/testsuite/gfortran.dg/gomp/allocators-4.f90
  2c46b1e169c6854da53c30fe0524733b  gcc/testsuite/gfortran.dg/gomp/append-args-interop.f90
! c46ee3001e6c3fe9109f03db804703a3  gcc/testsuite/gfortran.dg/gomp/append_args-1.f90
  4a314c759a6c6dd2208547e13761e900  gcc/testsuite/gfortran.dg/gomp/append_args-2.f90
  a8fbc0aad84d8709944c57ce59037cb7  gcc/testsuite/gfortran.dg/gomp/append_args-3.f90
  4dff400b9f255be995b405bdcfde3995  gcc/testsuite/gfortran.dg/gomp/append_args-4.f90
*************** bcff008fda796aaaa4aa0c808a1cf8da  gcc/te
*** 110623,110628 ****
--- 110748,110754 ----
  81a9d786c28a3ef62fb9b97631a45143  gcc/testsuite/gfortran.dg/gomp/declare-variant-2.f90
  df331bd4212e4a6cbc0e794b7eb5ac88  gcc/testsuite/gfortran.dg/gomp/declare-variant-20.f90
  1c8256ee6ef1a6a182d532c7902f031d  gcc/testsuite/gfortran.dg/gomp/declare-variant-21.f90
+ a00784a7c97219249c4d304acc76bce8  gcc/testsuite/gfortran.dg/gomp/declare-variant-22.f90
  0c8a0993785896857c3c01c9eb136c8e  gcc/testsuite/gfortran.dg/gomp/declare-variant-2a.f90
  348a3d3117435800dccbcaacee4f3b1e  gcc/testsuite/gfortran.dg/gomp/declare-variant-3.f90
  de62088b28e5d20862eda347ec06e79d  gcc/testsuite/gfortran.dg/gomp/declare-variant-4.f90
*************** fd1ab87dcb96b3b35e429092acdf62f6  gcc/te
*** 111277,111283 ****
  a805b53e8b625f6394676474b375610b  gcc/testsuite/gfortran.dg/hollerith6.f90
  3804a606661c44dcde42354efd909caf  gcc/testsuite/gfortran.dg/hollerith7.f90
  b3294424eef26299725174c763e3af18  gcc/testsuite/gfortran.dg/hollerith8.f90
! 28f596789f308540326b3fac6fbf8670  gcc/testsuite/gfortran.dg/hollerith_1.f90
  d2fa4aab758aef0119d4ea5d8a30eefa  gcc/testsuite/gfortran.dg/hollerith_9.f90
  f31f6526046c5b28c1e7c52a531c8cae  gcc/testsuite/gfortran.dg/hollerith_character_array_constructor.f90
  3bd31693d62de8131d8e4953932d1526  gcc/testsuite/gfortran.dg/hollerith_f95.f90
--- 111403,111409 ----
  a805b53e8b625f6394676474b375610b  gcc/testsuite/gfortran.dg/hollerith6.f90
  3804a606661c44dcde42354efd909caf  gcc/testsuite/gfortran.dg/hollerith7.f90
  b3294424eef26299725174c763e3af18  gcc/testsuite/gfortran.dg/hollerith8.f90
! f24901be030a69e70dca99f743cd8a16  gcc/testsuite/gfortran.dg/hollerith_1.f90
  d2fa4aab758aef0119d4ea5d8a30eefa  gcc/testsuite/gfortran.dg/hollerith_9.f90
  f31f6526046c5b28c1e7c52a531c8cae  gcc/testsuite/gfortran.dg/hollerith_character_array_constructor.f90
  3bd31693d62de8131d8e4953932d1526  gcc/testsuite/gfortran.dg/hollerith_f95.f90
*************** c00773edfc881b17f13e26aebff995c8  gcc/te
*** 111820,111826 ****
  9cf20b378a83e3ec18b3c34171141908  gcc/testsuite/gfortran.dg/invalid_interface_assignment.f90
  6e1095726bcbc85e84cf16b7a8c20978  gcc/testsuite/gfortran.dg/invalid_name.f90
  1a3e3b21266531966f2fcdb0ff566863  gcc/testsuite/gfortran.dg/invalid_procedure_name.f90
! 537443ae507e59e46fee44b874d75eb7  gcc/testsuite/gfortran.dg/io_constraints_1.f90
  e8802e8eb3b2f944cc72a425d0f1fafb  gcc/testsuite/gfortran.dg/io_constraints_10.f90
  9efd536c9404cdcc82d85987ffb83e7f  gcc/testsuite/gfortran.dg/io_constraints_11.f90
  b54c0bbc265e975c83078b5bf84ad306  gcc/testsuite/gfortran.dg/io_constraints_12.f90
--- 111946,111952 ----
  9cf20b378a83e3ec18b3c34171141908  gcc/testsuite/gfortran.dg/invalid_interface_assignment.f90
  6e1095726bcbc85e84cf16b7a8c20978  gcc/testsuite/gfortran.dg/invalid_name.f90
  1a3e3b21266531966f2fcdb0ff566863  gcc/testsuite/gfortran.dg/invalid_procedure_name.f90
! 0dc2969d7204416727e07391dfe077bc  gcc/testsuite/gfortran.dg/io_constraints_1.f90
  e8802e8eb3b2f944cc72a425d0f1fafb  gcc/testsuite/gfortran.dg/io_constraints_10.f90
  9efd536c9404cdcc82d85987ffb83e7f  gcc/testsuite/gfortran.dg/io_constraints_11.f90
  b54c0bbc265e975c83078b5bf84ad306  gcc/testsuite/gfortran.dg/io_constraints_12.f90
*************** b54c0bbc265e975c83078b5bf84ad306  gcc/te
*** 111830,111836 ****
  bd0a0b1f1b238022fb299e855b62d052  gcc/testsuite/gfortran.dg/io_constraints_16.f90
  1bc5976d401a2f4f9f3da730d64e1898  gcc/testsuite/gfortran.dg/io_constraints_17.f90
  d0d965566bc4d217be1c357a0e3e6f30  gcc/testsuite/gfortran.dg/io_constraints_18.f90
! 57148c32c9f17a73d6a95327e54e88fa  gcc/testsuite/gfortran.dg/io_constraints_2.f90
  c98833fbd70a07ed455392f1eee2388f  gcc/testsuite/gfortran.dg/io_constraints_3.f90
  3214be0ec292a992b7a113f1492101d3  gcc/testsuite/gfortran.dg/io_constraints_4.f90
  02e331fdf3845fb50165b48043754683  gcc/testsuite/gfortran.dg/io_constraints_5.f90
--- 111956,111962 ----
  bd0a0b1f1b238022fb299e855b62d052  gcc/testsuite/gfortran.dg/io_constraints_16.f90
  1bc5976d401a2f4f9f3da730d64e1898  gcc/testsuite/gfortran.dg/io_constraints_17.f90
  d0d965566bc4d217be1c357a0e3e6f30  gcc/testsuite/gfortran.dg/io_constraints_18.f90
! b26dcfd0b010ed8fb32314cdbc6583e3  gcc/testsuite/gfortran.dg/io_constraints_2.f90
  c98833fbd70a07ed455392f1eee2388f  gcc/testsuite/gfortran.dg/io_constraints_3.f90
  3214be0ec292a992b7a113f1492101d3  gcc/testsuite/gfortran.dg/io_constraints_4.f90
  02e331fdf3845fb50165b48043754683  gcc/testsuite/gfortran.dg/io_constraints_5.f90
*************** a6d9cfceb231c2cf1ded28bdcd94313b  gcc/te
*** 111985,111991 ****
  2cde76e6e4f3175cf21675c3a4e3dcc4  gcc/testsuite/gfortran.dg/logint_1.f
  e8369cf8500479fa8592d6ad221df22b  gcc/testsuite/gfortran.dg/logint_2.f
  cc537c18cadc7f751e2b61f5197b80e7  gcc/testsuite/gfortran.dg/logint_3.f
! bceaa8a4fe443dfa65fe359c0d6dc0fe  gcc/testsuite/gfortran.dg/longline.f
  0af1b4d38764adaf6e9835a621ee8cc6  gcc/testsuite/gfortran.dg/longnames.f90
  6c3c532ad4024941faec1e9a3d703f48  gcc/testsuite/gfortran.dg/loop_interchange_1.f90
  eddf2c0ffcc85c9aa70fb04bb2c9b0b0  gcc/testsuite/gfortran.dg/loop_interchange_2.f
--- 112111,112117 ----
  2cde76e6e4f3175cf21675c3a4e3dcc4  gcc/testsuite/gfortran.dg/logint_1.f
  e8369cf8500479fa8592d6ad221df22b  gcc/testsuite/gfortran.dg/logint_2.f
  cc537c18cadc7f751e2b61f5197b80e7  gcc/testsuite/gfortran.dg/logint_3.f
! 9a4cf31db6ca061ae294396741f12571  gcc/testsuite/gfortran.dg/longline.f
  0af1b4d38764adaf6e9835a621ee8cc6  gcc/testsuite/gfortran.dg/longnames.f90
  6c3c532ad4024941faec1e9a3d703f48  gcc/testsuite/gfortran.dg/loop_interchange_1.f90
  eddf2c0ffcc85c9aa70fb04bb2c9b0b0  gcc/testsuite/gfortran.dg/loop_interchange_2.f
*************** be693b3847d0256fa77c5e6d96396c97  gcc/te
*** 112652,112666 ****
  3d1ced13c0fde7696153e2188eee96b6  gcc/testsuite/gfortran.dg/pdt_2.f03
  9d88d900642baf2f0a480cf44ee666db  gcc/testsuite/gfortran.dg/pdt_20.f03
  28c0797012a570952b5f39fde15bd010  gcc/testsuite/gfortran.dg/pdt_21.f03
! 28a0c6d98df2dac988135f6fd894acea  gcc/testsuite/gfortran.dg/pdt_22.f03
! d17e376a8cc641dbedaeffcce81d5297  gcc/testsuite/gfortran.dg/pdt_23.f03
  74618f98f612c4722b0e366283ec8ca8  gcc/testsuite/gfortran.dg/pdt_24.f03
  7c4f6f585a57e25f1c6f31ac89e87d40  gcc/testsuite/gfortran.dg/pdt_25.f03
  0104b02a8045f96f71bb79804308cd3b  gcc/testsuite/gfortran.dg/pdt_26.f03
  f67cfd0ae4d38f1ca5dc8d7f6e954087  gcc/testsuite/gfortran.dg/pdt_27.f03
  7efa911fe665f45456e6943844302ac0  gcc/testsuite/gfortran.dg/pdt_28.f03
  68b10a194ff6797eee8ecb042129b08f  gcc/testsuite/gfortran.dg/pdt_29.f03
! 467e7b0f7ffea3a05b9ac591c2ac05ee  gcc/testsuite/gfortran.dg/pdt_3.f03
  1f42496cb72089bef450a6df6a13c299  gcc/testsuite/gfortran.dg/pdt_30.f90
  d586eb557b29a67b9fa981d71d443c8b  gcc/testsuite/gfortran.dg/pdt_31.f03
  e5bda49b00d9e9f9b204003142ebb089  gcc/testsuite/gfortran.dg/pdt_32.f03
--- 112778,112792 ----
  3d1ced13c0fde7696153e2188eee96b6  gcc/testsuite/gfortran.dg/pdt_2.f03
  9d88d900642baf2f0a480cf44ee666db  gcc/testsuite/gfortran.dg/pdt_20.f03
  28c0797012a570952b5f39fde15bd010  gcc/testsuite/gfortran.dg/pdt_21.f03
! 3210a766069bc40d129607cfcfa58040  gcc/testsuite/gfortran.dg/pdt_22.f03
! 9bad4f0659fba0b650738ccdfa7a815d  gcc/testsuite/gfortran.dg/pdt_23.f03
  74618f98f612c4722b0e366283ec8ca8  gcc/testsuite/gfortran.dg/pdt_24.f03
  7c4f6f585a57e25f1c6f31ac89e87d40  gcc/testsuite/gfortran.dg/pdt_25.f03
  0104b02a8045f96f71bb79804308cd3b  gcc/testsuite/gfortran.dg/pdt_26.f03
  f67cfd0ae4d38f1ca5dc8d7f6e954087  gcc/testsuite/gfortran.dg/pdt_27.f03
  7efa911fe665f45456e6943844302ac0  gcc/testsuite/gfortran.dg/pdt_28.f03
  68b10a194ff6797eee8ecb042129b08f  gcc/testsuite/gfortran.dg/pdt_29.f03
! 390bc98fe61b2aef657010d4702c0cd8  gcc/testsuite/gfortran.dg/pdt_3.f03
  1f42496cb72089bef450a6df6a13c299  gcc/testsuite/gfortran.dg/pdt_30.f90
  d586eb557b29a67b9fa981d71d443c8b  gcc/testsuite/gfortran.dg/pdt_31.f03
  e5bda49b00d9e9f9b204003142ebb089  gcc/testsuite/gfortran.dg/pdt_32.f03
*************** f5ecad1df1c3f9e7d4bf8d95be2b45a5  gcc/te
*** 112673,112678 ****
--- 112799,112806 ----
  bf9b6323f7816780db5e9b60fb1b8dee  gcc/testsuite/gfortran.dg/pdt_38.f03
  1287b32699b5bb0a9f59485bc0969042  gcc/testsuite/gfortran.dg/pdt_39.f03
  26c6f55cb76e1a76617fc3167f296a53  gcc/testsuite/gfortran.dg/pdt_4.f03
+ c8554a07d7f9f6deff3996dc8dd428e7  gcc/testsuite/gfortran.dg/pdt_40.f03
+ 5061f7ef70cf2d270a5ff3643419a520  gcc/testsuite/gfortran.dg/pdt_41.f03
  65d2ad728417ad3174fc1ce2b51a458d  gcc/testsuite/gfortran.dg/pdt_6.f03
  d2c9dae0c6e2385c5712aba8e12a70ba  gcc/testsuite/gfortran.dg/pdt_7.f03
  e21f38a2db39f95405441b61c12cf1e6  gcc/testsuite/gfortran.dg/pdt_8.f03
*************** f851b163e156a483d8a18c14113e9005  gcc/te
*** 113025,113031 ****
  3c1b21be918629039e10a6e59277c1bc  gcc/testsuite/gfortran.dg/pr19936_1.f90
  7fe5c318350a52400c5dbd328ca6b65f  gcc/testsuite/gfortran.dg/pr19936_2.f90
  a21cc4ab33b1cfd66732338936f2a4af  gcc/testsuite/gfortran.dg/pr19936_3.f90
! b1fe6db6bcd57e8bc562a71aa19e1572  gcc/testsuite/gfortran.dg/pr20086.f90
  01a68912089c2a49dcfdd51df5cbad6f  gcc/testsuite/gfortran.dg/pr20124.f90
  d91f06baabd88440484dcf05933f814b  gcc/testsuite/gfortran.dg/pr20163-2.f
  0ffb4d70b4fb6128277f164aae67ce50  gcc/testsuite/gfortran.dg/pr20257.f90
--- 113153,113159 ----
  3c1b21be918629039e10a6e59277c1bc  gcc/testsuite/gfortran.dg/pr19936_1.f90
  7fe5c318350a52400c5dbd328ca6b65f  gcc/testsuite/gfortran.dg/pr19936_2.f90
  a21cc4ab33b1cfd66732338936f2a4af  gcc/testsuite/gfortran.dg/pr19936_3.f90
! ab1112c434d8125c49613a81fd241391  gcc/testsuite/gfortran.dg/pr20086.f90
  01a68912089c2a49dcfdd51df5cbad6f  gcc/testsuite/gfortran.dg/pr20124.f90
  d91f06baabd88440484dcf05933f814b  gcc/testsuite/gfortran.dg/pr20163-2.f
  0ffb4d70b4fb6128277f164aae67ce50  gcc/testsuite/gfortran.dg/pr20257.f90
*************** bad45dd88b63d1ef062aa575fbe31791  gcc/te
*** 114980,114986 ****
  54e08cb654420ace2a88ed5a32639834  gcc/testsuite/gfortran.dg/unsigned_kiss.f90
  8fe02857baf9c2c341a9747d6e6e448e  gcc/testsuite/gfortran.dg/unsigned_write.f90
  2e038e4daa1f6f10e29598c3bde57fe4  gcc/testsuite/gfortran.dg/unsigned_write_2.f90
! de05d2a4b7edcd1154264118b11a9a77  gcc/testsuite/gfortran.dg/unused_artificial_dummies_1.f90
  af23489c25cf37ffd216eb038f4a82d8  gcc/testsuite/gfortran.dg/use_1.f90
  f6789d5bbf020938f286cfd7da2a68e2  gcc/testsuite/gfortran.dg/use_10.f90
  a5bacc6abd14312805d91c2c53d4d15e  gcc/testsuite/gfortran.dg/use_11.f90
--- 115108,115114 ----
  54e08cb654420ace2a88ed5a32639834  gcc/testsuite/gfortran.dg/unsigned_kiss.f90
  8fe02857baf9c2c341a9747d6e6e448e  gcc/testsuite/gfortran.dg/unsigned_write.f90
  2e038e4daa1f6f10e29598c3bde57fe4  gcc/testsuite/gfortran.dg/unsigned_write_2.f90
! 0977d95f89992559e07880e6ebdea338  gcc/testsuite/gfortran.dg/unused_artificial_dummies_1.f90
  af23489c25cf37ffd216eb038f4a82d8  gcc/testsuite/gfortran.dg/use_1.f90
  f6789d5bbf020938f286cfd7da2a68e2  gcc/testsuite/gfortran.dg/use_10.f90
  a5bacc6abd14312805d91c2c53d4d15e  gcc/testsuite/gfortran.dg/use_11.f90
*************** a18037d4cd40a9b71b1fccb366b8bb98  gcc/te
*** 115289,115300 ****
  6b4ee0836270382d2156cb123c8a81cc  gcc/testsuite/gfortran.dg/whole_file_21.f90
  95904efb0094351524b8a8c3e4d346b3  gcc/testsuite/gfortran.dg/whole_file_22.f90
  48d188b23d1934c7e0f9a9a4727befd9  gcc/testsuite/gfortran.dg/whole_file_23.f90
! f15f35dea5daf5072bc742d39a6ea8e2  gcc/testsuite/gfortran.dg/whole_file_24.f90
  fdc5c0f5bfa9d58cdbb7272feaecb4af  gcc/testsuite/gfortran.dg/whole_file_25.f90
  363d36f52afd89e304d4745277e8fd39  gcc/testsuite/gfortran.dg/whole_file_26.f90
  70c32c74c38503b11d76209ea975e9c6  gcc/testsuite/gfortran.dg/whole_file_27.f90
  ddf222fc2848fa957e7eafad525da8cf  gcc/testsuite/gfortran.dg/whole_file_28.f90
! 778a633219af44fd7b4bc705c65ec21d  gcc/testsuite/gfortran.dg/whole_file_29.f90
  aeaf773b672971d35e6d38565abcaf7d  gcc/testsuite/gfortran.dg/whole_file_3.f90
  b7d9cdec49b9afb853813b5a2ff7f5f1  gcc/testsuite/gfortran.dg/whole_file_30.f90
  432f4a4ea6314fb586cbe60e7e00b992  gcc/testsuite/gfortran.dg/whole_file_31.f90
--- 115417,115428 ----
  6b4ee0836270382d2156cb123c8a81cc  gcc/testsuite/gfortran.dg/whole_file_21.f90
  95904efb0094351524b8a8c3e4d346b3  gcc/testsuite/gfortran.dg/whole_file_22.f90
  48d188b23d1934c7e0f9a9a4727befd9  gcc/testsuite/gfortran.dg/whole_file_23.f90
! e9aa88fa4aa80a16e4a8997ccd9630eb  gcc/testsuite/gfortran.dg/whole_file_24.f90
  fdc5c0f5bfa9d58cdbb7272feaecb4af  gcc/testsuite/gfortran.dg/whole_file_25.f90
  363d36f52afd89e304d4745277e8fd39  gcc/testsuite/gfortran.dg/whole_file_26.f90
  70c32c74c38503b11d76209ea975e9c6  gcc/testsuite/gfortran.dg/whole_file_27.f90
  ddf222fc2848fa957e7eafad525da8cf  gcc/testsuite/gfortran.dg/whole_file_28.f90
! 94d68e04bcbb710ff6484d65fde7c64b  gcc/testsuite/gfortran.dg/whole_file_29.f90
  aeaf773b672971d35e6d38565abcaf7d  gcc/testsuite/gfortran.dg/whole_file_3.f90
  b7d9cdec49b9afb853813b5a2ff7f5f1  gcc/testsuite/gfortran.dg/whole_file_30.f90
  432f4a4ea6314fb586cbe60e7e00b992  gcc/testsuite/gfortran.dg/whole_file_31.f90
*************** c9823efc4e3d9bdf48de2ccdbac46410  gcc/te
*** 115358,115364 ****
  695f4821cfc3d581586e00ce3b00b6cc  gcc/testsuite/gfortran.dg/wtruncate_fix.f
  ba29d8e2c036ab7319a984089a922f73  gcc/testsuite/gfortran.dg/wunused-parameter.f90
  42a39b8e757a674c811e7d19a5c41a28  gcc/testsuite/gfortran.dg/wunused-parameter_2.f90
! 6241896c88fbdcb0db012a34e8b95e65  gcc/testsuite/gfortran.dg/x_slash_1.f
  ba8277e5e7a193bd234c3801e4e5e435  gcc/testsuite/gfortran.dg/x_slash_2.f
  118deed9d7384913bfa909eabcd7efae  gcc/testsuite/gfortran.dg/zero_array_components_1.f90
  f32f4f6650669a28c4176a48b729c5a7  gcc/testsuite/gfortran.dg/zero_length_1.f90
--- 115486,115492 ----
  695f4821cfc3d581586e00ce3b00b6cc  gcc/testsuite/gfortran.dg/wtruncate_fix.f
  ba29d8e2c036ab7319a984089a922f73  gcc/testsuite/gfortran.dg/wunused-parameter.f90
  42a39b8e757a674c811e7d19a5c41a28  gcc/testsuite/gfortran.dg/wunused-parameter_2.f90
! 431903bc29935ae03d87a2f7520b4524  gcc/testsuite/gfortran.dg/x_slash_1.f
  ba8277e5e7a193bd234c3801e4e5e435  gcc/testsuite/gfortran.dg/x_slash_2.f
  118deed9d7384913bfa909eabcd7efae  gcc/testsuite/gfortran.dg/zero_array_components_1.f90
  f32f4f6650669a28c4176a48b729c5a7  gcc/testsuite/gfortran.dg/zero_length_1.f90
*************** e64523b7502cc4a326c69a5fb2bb632b  gcc/te
*** 117713,117718 ****
--- 117841,117850 ----
  9e07fd151c648b57e14d2059c6e86911  gcc/testsuite/gm2/switches/none/run/pass/hello.mod
  7f4a9fd88d8c6bdacbe9bd3f609520c1  gcc/testsuite/gm2/switches/optimization/run/pass/fact.mod
  04893bced6e84ae01eff30822adc8c39  gcc/testsuite/gm2/switches/optimization/run/pass/switches-optimization-run-pass.exp
+ 514c8e3bfaffabcd120d17171c8463dd  gcc/testsuite/gm2/switches/pathnameroot/pass/switches-pathnameroot-pass.exp
+ 94499bba5bea19225a6636d8b2bf8fad  gcc/testsuite/gm2/switches/pathnameroot/pass/test.mod
+ 35b97574c0277e95c3e75ad775bae694  gcc/testsuite/gm2/switches/pathnameroot/pass/testlib/m2/foo.def
+ 168846a05b356ca89dbdb44fa89f8b31  gcc/testsuite/gm2/switches/pathnameroot/pass/testlib/m2/foo.mod
  57f079fe3fae85c31093c689467ddf5c  gcc/testsuite/gm2/switches/pedantic-params/fail/a.def
  d083f2149e966c7f4a3cf7a592213e6e  gcc/testsuite/gm2/switches/pedantic-params/fail/a.mod
  a6e8cb2a9ab54e9865ad3892aa0b5941  gcc/testsuite/gm2/switches/pedantic-params/fail/arrayofchar.def
*************** f9731b5179d6c364587220c2aea59a3e  gcc/tr
*** 125280,125286 ****
  f3e814f679f1b8d21b1c54ad5ee16856  gcc/tree-emutls.cc
  e046a9c4874579f81515c4b3d9106b63  gcc/tree-hash-traits.h
  7e063b1edd28723f3f432596c39cfbee  gcc/tree-hasher.h
! 226e8bf4e8d8dc35757b8d5265b125c3  gcc/tree-if-conv.cc
  002c9568898504ca2025dcacf5151fd6  gcc/tree-if-conv.h
  25f1988c73b1a2d6262ef7081ca2f2d4  gcc/tree-inline.cc
  326f91431bfd3c15d8ddd74699d666e6  gcc/tree-inline.h
--- 125412,125418 ----
  f3e814f679f1b8d21b1c54ad5ee16856  gcc/tree-emutls.cc
  e046a9c4874579f81515c4b3d9106b63  gcc/tree-hash-traits.h
  7e063b1edd28723f3f432596c39cfbee  gcc/tree-hasher.h
! 3326ca7ea2452d7368a6e78f0025d7f8  gcc/tree-if-conv.cc
  002c9568898504ca2025dcacf5151fd6  gcc/tree-if-conv.h
  25f1988c73b1a2d6262ef7081ca2f2d4  gcc/tree-inline.cc
  326f91431bfd3c15d8ddd74699d666e6  gcc/tree-inline.h
*************** adfc498b0c97a8123c02d418757df496  gcc/tr
*** 125328,125339 ****
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
  6ddd79e7a349847a539144d422bf5a49  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
! ccf6e6a373e09bdf2e4d45cc28a35c2e  gcc/tree-ssa-forwprop.cc
  0915c4bbeb42abdda8799c2b27e5db12  gcc/tree-ssa-ifcombine.cc
  edab16a20512b0146482bb2120696d6a  gcc/tree-ssa-live.cc
  cf4bde43ab3b843eff45bac243d4116d  gcc/tree-ssa-live.h
  02e9a1bf25d500979aa57640611d72bc  gcc/tree-ssa-loop-ch.cc
! 19ecf917f4744e78f79919216eef6388  gcc/tree-ssa-loop-im.cc
  21088fa37f899ccd0056bf3486157db9  gcc/tree-ssa-loop-ivcanon.cc
  9cce8a17ba6b687d346928cb6a482b63  gcc/tree-ssa-loop-ivopts.cc
  1f70c217ef5bd5f655512b9232754870  gcc/tree-ssa-loop-ivopts.h
--- 125460,125471 ----
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
  6ddd79e7a349847a539144d422bf5a49  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
! 018d5528243622386f6ee0b8d560bc00  gcc/tree-ssa-forwprop.cc
  0915c4bbeb42abdda8799c2b27e5db12  gcc/tree-ssa-ifcombine.cc
  edab16a20512b0146482bb2120696d6a  gcc/tree-ssa-live.cc
  cf4bde43ab3b843eff45bac243d4116d  gcc/tree-ssa-live.h
  02e9a1bf25d500979aa57640611d72bc  gcc/tree-ssa-loop-ch.cc
! 8caa648854a0f322f13d04563a559e87  gcc/tree-ssa-loop-im.cc
  21088fa37f899ccd0056bf3486157db9  gcc/tree-ssa-loop-ivcanon.cc
  9cce8a17ba6b687d346928cb6a482b63  gcc/tree-ssa-loop-ivopts.cc
  1f70c217ef5bd5f655512b9232754870  gcc/tree-ssa-loop-ivopts.h
*************** fbcc93539b376489c1256eb8cf2d4800  gcc/tr
*** 125346,125356 ****
  57dcd3919dadb6f23e2bcefe55f7cd14  gcc/tree-ssa-loop-unswitch.cc
  2f97e7f187f4f4cce48b71489ef542a0  gcc/tree-ssa-loop.cc
  538146c17730f67ffcc58afdfcc93712  gcc/tree-ssa-loop.h
! e7699710d4797ce5cafebf66e9e6d3f3  gcc/tree-ssa-math-opts.cc
  c0b0549adb2c1140cf285901abb5a78c  gcc/tree-ssa-math-opts.h
  8ccf736dffb311078aa79c9036502189  gcc/tree-ssa-operands.cc
  da72a60de8a6f51a635ead26120d3cc7  gcc/tree-ssa-operands.h
! 487192303141111110ed63175019cf4f  gcc/tree-ssa-phiopt.cc
  482f2356d81c3633ca476cd6628908b8  gcc/tree-ssa-phiprop.cc
  376705b97b4d04600605aebe5b8150ab  gcc/tree-ssa-pre.cc
  207e8eba5552b33b5aae2de6e7c1f35d  gcc/tree-ssa-propagate.cc
--- 125478,125488 ----
  57dcd3919dadb6f23e2bcefe55f7cd14  gcc/tree-ssa-loop-unswitch.cc
  2f97e7f187f4f4cce48b71489ef542a0  gcc/tree-ssa-loop.cc
  538146c17730f67ffcc58afdfcc93712  gcc/tree-ssa-loop.h
! b95e9f0aa9d4eb7a66303c94ffbdcbb5  gcc/tree-ssa-math-opts.cc
  c0b0549adb2c1140cf285901abb5a78c  gcc/tree-ssa-math-opts.h
  8ccf736dffb311078aa79c9036502189  gcc/tree-ssa-operands.cc
  da72a60de8a6f51a635ead26120d3cc7  gcc/tree-ssa-operands.h
! c4a4fb005a974fb53879c13aeab29081  gcc/tree-ssa-phiopt.cc
  482f2356d81c3633ca476cd6628908b8  gcc/tree-ssa-phiprop.cc
  376705b97b4d04600605aebe5b8150ab  gcc/tree-ssa-pre.cc
  207e8eba5552b33b5aae2de6e7c1f35d  gcc/tree-ssa-propagate.cc
*************** c98debbdc978c10e8934f3b4fb7e2504  gcc/tr
*** 125392,125406 ****
  e5124fb9978c7afb78dad6682475e87b  gcc/tree-vect-data-refs.cc
  5d8bb0df796ceea958fd65c5aedb5bce  gcc/tree-vect-generic.cc
  85da4c00e7d6a5189816a152d673da4f  gcc/tree-vect-loop-manip.cc
! bda3a0fc0c2e36c950cb15d5565b04ba  gcc/tree-vect-loop.cc
! ea6f2e555394e56509b4354907519988  gcc/tree-vect-patterns.cc
  f0e64752211e2caf975148f28e7b4caf  gcc/tree-vect-slp-patterns.cc
! 37d1c076819040f56c08915f97ac135d  gcc/tree-vect-slp.cc
! b1787155d746509227b047a9e9cbb231  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  2dff33ce3586bcf6de00f8938e321e58  gcc/tree-vectorizer.cc
! 5fd9df884cba1e0bc22229c6bcf6f826  gcc/tree-vectorizer.h
  1bed475667cbd8dee00c3b7da964ca5b  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
  26ee76264bd088fbd5554618377c1c97  gcc/tree.cc
--- 125524,125538 ----
  e5124fb9978c7afb78dad6682475e87b  gcc/tree-vect-data-refs.cc
  5d8bb0df796ceea958fd65c5aedb5bce  gcc/tree-vect-generic.cc
  85da4c00e7d6a5189816a152d673da4f  gcc/tree-vect-loop-manip.cc
! 559b18d598a11fc15552eed921f343ac  gcc/tree-vect-loop.cc
! a1d4bb20bfedd6e10ca8b1fe62ae2295  gcc/tree-vect-patterns.cc
  f0e64752211e2caf975148f28e7b4caf  gcc/tree-vect-slp-patterns.cc
! 187b815496d1cea44d9854a22fb056de  gcc/tree-vect-slp.cc
! 10437f8ad04fdd6e4646e1e8ab5609ed  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  2dff33ce3586bcf6de00f8938e321e58  gcc/tree-vectorizer.cc
! dcc45c9e93cea79483f8f3efc6cc377c  gcc/tree-vectorizer.h
  1bed475667cbd8dee00c3b7da964ca5b  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
  26ee76264bd088fbd5554618377c1c97  gcc/tree.cc
*************** bdd08773400d12af9ac3b370d255ccca  libgcc
*** 126703,126709 ****
  40eda5c7825bbaa25723845c3f9caabd  libgcc/config/ia64/vms-unwind.h
  82cf742d0711f5ea45c5d4ae1837083b  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! f6fa5f577711e3c91a2080fa9d0972d3  libgcc/config/libbid/ChangeLog
  c32cb18bbfd73dda967b708b16ce8e89  libgcc/config/libbid/_addsub_dd.c
  a0801827ba65b25ba20a91e765121b7f  libgcc/config/libbid/_addsub_sd.c
  1047ed1c06b6914a7df19b0739d305c3  libgcc/config/libbid/_addsub_td.c
--- 126835,126841 ----
  40eda5c7825bbaa25723845c3f9caabd  libgcc/config/ia64/vms-unwind.h
  82cf742d0711f5ea45c5d4ae1837083b  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! 2bd7225ff96860d9fbade40a1457ff73  libgcc/config/libbid/ChangeLog
  c32cb18bbfd73dda967b708b16ce8e89  libgcc/config/libbid/_addsub_dd.c
  a0801827ba65b25ba20a91e765121b7f  libgcc/config/libbid/_addsub_sd.c
  1047ed1c06b6914a7df19b0739d305c3  libgcc/config/libbid/_addsub_td.c
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 139483,139489 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! d408455cc6eed434fcb394cca8c43477  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 139615,139621 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! b4b2872c9400e5a7a8a1ac6de7abd835  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** a94321c8d0dbbc71741ebf0f1cc9828c  libstd
*** 139514,139522 ****
  b569b721263ae74c6a8e285903fb9906  libstdc++-v3/Makefile.am
  5ae0a394d413d225772c3b38a114cce2  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! fb3c5d1f99b6d5017a5eb3ab797c6652  libstdc++-v3/acinclude.m4
  13f29ef95664bfe876c83f7743ca504d  libstdc++-v3/aclocal.m4
! 42629a3961df47287a44fd149ab68b39  libstdc++-v3/config.h.in
  9e25b4e524e0d639f272a9e96bab0ce3  libstdc++-v3/config/abi/compatibility.h
  0be6fea010f86e442ad030f82858fb73  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
  730569c0ef38f6e6322b3c4ac65253ce  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
--- 139646,139654 ----
  b569b721263ae74c6a8e285903fb9906  libstdc++-v3/Makefile.am
  5ae0a394d413d225772c3b38a114cce2  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 7395b154864a034d7f9715c316bd253b  libstdc++-v3/acinclude.m4
  13f29ef95664bfe876c83f7743ca504d  libstdc++-v3/aclocal.m4
! 1be87330bd04ba01150372d6c11f1567  libstdc++-v3/config.h.in
  9e25b4e524e0d639f272a9e96bab0ce3  libstdc++-v3/config/abi/compatibility.h
  0be6fea010f86e442ad030f82858fb73  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
  730569c0ef38f6e6322b3c4ac65253ce  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
*************** abc6f4755fae8c6e8f45ce5fee798654  libstd
*** 139549,139555 ****
  6c165e7a2d80e986556ae6dc2bad3857  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
  2abf821a3eaae508ba83c8dfaa496ea4  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
! 8c4aa7f8c8448bdb7a566c0b61054a7f  libstdc++-v3/config/abi/pre/gnu.ver
  b01f8da8f4373070847fe317fe8a546e  libstdc++-v3/config/abi/pre/none.ver
  f48bfa11a1f6ebbba6b09b9618c997f2  libstdc++-v3/config/allocator/malloc_allocator_base.h
  229729de73da6f9ba6e1bf4c48f51f24  libstdc++-v3/config/allocator/new_allocator_base.h
--- 139681,139687 ----
  6c165e7a2d80e986556ae6dc2bad3857  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
  2abf821a3eaae508ba83c8dfaa496ea4  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
! 7d6bd28ad51821240a4927962ca6c055  libstdc++-v3/config/abi/pre/gnu.ver
  b01f8da8f4373070847fe317fe8a546e  libstdc++-v3/config/abi/pre/none.ver
  f48bfa11a1f6ebbba6b09b9618c997f2  libstdc++-v3/config/allocator/malloc_allocator_base.h
  229729de73da6f9ba6e1bf4c48f51f24  libstdc++-v3/config/allocator/new_allocator_base.h
*************** ed199f6700a016816d625b286bf25ead  libstd
*** 139708,139715 ****
  8913cf14e458f9cfae745a0d939c97e4  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  e29a526ec89ed09bf39b0aa4fd4c5d79  libstdc++-v3/config/os/vxworks/ctype_inline.h
  788b66dfe66c25c24ff60bf253c9c7ff  libstdc++-v3/config/os/vxworks/os_defines.h
! f95d972d270dbf735aad4a5b676787c7  libstdc++-v3/configure
! 315146bda822dcbf6f5677aac62442a6  libstdc++-v3/configure.ac
  22c2981483d92dbe80dc732e50bfdbcd  libstdc++-v3/configure.host
  450cc52f6f6f0abf59940662504c450e  libstdc++-v3/crossconfig.m4
  55ecb88d091a7c97abd35f475cf97c2b  libstdc++-v3/doc/Makefile.am
--- 139840,139847 ----
  8913cf14e458f9cfae745a0d939c97e4  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  e29a526ec89ed09bf39b0aa4fd4c5d79  libstdc++-v3/config/os/vxworks/ctype_inline.h
  788b66dfe66c25c24ff60bf253c9c7ff  libstdc++-v3/config/os/vxworks/os_defines.h
! a2693097931667cd5e0bbcf7bb645c53  libstdc++-v3/configure
! 92611cf11c10cbce1353597b2b88134e  libstdc++-v3/configure.ac
  22c2981483d92dbe80dc732e50bfdbcd  libstdc++-v3/configure.host
  450cc52f6f6f0abf59940662504c450e  libstdc++-v3/crossconfig.m4
  55ecb88d091a7c97abd35f475cf97c2b  libstdc++-v3/doc/Makefile.am
*************** c39b927efcec5ac84139c1490c8ef320  libstd
*** 139897,139903 ****
  78aa5833e13335bccb9f831528294eb7  libstdc++-v3/doc/html/manual/using_concurrency.html
  f8898e59cc7155a01a17f15a3b853c30  libstdc++-v3/doc/html/manual/using_dual_abi.html
  11dd55e39edb8313b5563e53067c431e  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
! 09eeb2fa79fb240e032461adcbe2cb4a  libstdc++-v3/doc/html/manual/using_exceptions.html
  91385600a9fbb5f8f29c666917403807  libstdc++-v3/doc/html/manual/using_headers.html
  3411d1e07939e0319750eceefff4b4c2  libstdc++-v3/doc/html/manual/using_macros.html
  e8b86abd99dc9893dfa1bb7533fdc23d  libstdc++-v3/doc/html/manual/using_namespaces.html
--- 140029,140035 ----
  78aa5833e13335bccb9f831528294eb7  libstdc++-v3/doc/html/manual/using_concurrency.html
  f8898e59cc7155a01a17f15a3b853c30  libstdc++-v3/doc/html/manual/using_dual_abi.html
  11dd55e39edb8313b5563e53067c431e  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
! 409ae6fe58c4a66ff5462e8ee0f62959  libstdc++-v3/doc/html/manual/using_exceptions.html
  91385600a9fbb5f8f29c666917403807  libstdc++-v3/doc/html/manual/using_headers.html
  3411d1e07939e0319750eceefff4b4c2  libstdc++-v3/doc/html/manual/using_macros.html
  e8b86abd99dc9893dfa1bb7533fdc23d  libstdc++-v3/doc/html/manual/using_namespaces.html
*************** bfd38fc5f1090656a5139c94c16ea163  libstd
*** 140139,140151 ****
  1fe272dd10b83071f56d2956f94736d5  libstdc++-v3/doc/xml/manual/test.xml
  e2e099be3dd6a4b7a940a7232635ee2c  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
  89a63a549c3438b3bee6bbf18f4c8b3e  libstdc++-v3/doc/xml/manual/using.xml
! 257e301935b13b4b045e571fa248a4d8  libstdc++-v3/doc/xml/manual/using_exceptions.xml
  b820e3490221bb85cbf6bcdde0aa8150  libstdc++-v3/doc/xml/manual/utilities.xml
  c587674e0c370a2d6ccc5213ab3e4e65  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
! e6433f7e2632c2cb662c0230eb158f72  libstdc++-v3/include/Makefile.am
! d672c7cfda151339dc8a96039a113ed4  libstdc++-v3/include/Makefile.in
  9909a8468983e231e92c9e286c9765fb  libstdc++-v3/include/backward/auto_ptr.h
  83254dbbadebf6a7aeb58f3cdbf117e9  libstdc++-v3/include/backward/backward_warning.h
  38985095b8ea422bf8bfa31ec65d803c  libstdc++-v3/include/backward/binders.h
--- 140271,140283 ----
  1fe272dd10b83071f56d2956f94736d5  libstdc++-v3/doc/xml/manual/test.xml
  e2e099be3dd6a4b7a940a7232635ee2c  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
  89a63a549c3438b3bee6bbf18f4c8b3e  libstdc++-v3/doc/xml/manual/using.xml
! fa91b214b510ff86a051cea040ae3c40  libstdc++-v3/doc/xml/manual/using_exceptions.xml
  b820e3490221bb85cbf6bcdde0aa8150  libstdc++-v3/doc/xml/manual/utilities.xml
  c587674e0c370a2d6ccc5213ab3e4e65  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
! 1d6a8dd37999005c0f0027f28e71f4f1  libstdc++-v3/include/Makefile.am
! 349d232d8fe08dca0de3ec03e466806b  libstdc++-v3/include/Makefile.in
  9909a8468983e231e92c9e286c9765fb  libstdc++-v3/include/backward/auto_ptr.h
  83254dbbadebf6a7aeb58f3cdbf117e9  libstdc++-v3/include/backward/backward_warning.h
  38985095b8ea422bf8bfa31ec65d803c  libstdc++-v3/include/backward/binders.h
*************** b3da24b61a3e8219dde982b2734707ec  libstd
*** 140194,140200 ****
  02a8c025eda02a35e6a87a42955684fc  libstdc++-v3/include/bits/funcref_impl.h
  bda3ca60f2214f1bd6656e6612aff428  libstdc++-v3/include/bits/functexcept.h
  68bc2b242e62bd27a00ee3f202c736de  libstdc++-v3/include/bits/functional_hash.h
! 758a9f4624b07b6cd50c98ff3e88a050  libstdc++-v3/include/bits/funcwrap.h
  f656180781457f5f36a26b5902da4b6f  libstdc++-v3/include/bits/gslice.h
  a94b98a38c3eb27aa6644a5fb468c9de  libstdc++-v3/include/bits/gslice_array.h
  df03a6e1a88ea69759bc32441b171cb9  libstdc++-v3/include/bits/hashtable.h
--- 140326,140332 ----
  02a8c025eda02a35e6a87a42955684fc  libstdc++-v3/include/bits/funcref_impl.h
  bda3ca60f2214f1bd6656e6612aff428  libstdc++-v3/include/bits/functexcept.h
  68bc2b242e62bd27a00ee3f202c736de  libstdc++-v3/include/bits/functional_hash.h
! b18e1c6bffd82f50b6389fe000077718  libstdc++-v3/include/bits/funcwrap.h
  f656180781457f5f36a26b5902da4b6f  libstdc++-v3/include/bits/gslice.h
  a94b98a38c3eb27aa6644a5fb468c9de  libstdc++-v3/include/bits/gslice_array.h
  df03a6e1a88ea69759bc32441b171cb9  libstdc++-v3/include/bits/hashtable.h
*************** ebe0e043997d2c8b674df27da18dc48c  libstd
*** 140220,140226 ****
  27bdede74800b12180665889a05cca6b  libstdc++-v3/include/bits/memoryfwd.h
  3cdf6345e89c49a55bd7c9be035d3729  libstdc++-v3/include/bits/mofunc_impl.h
  6ac85b21a9fb05014efe9345967c51b4  libstdc++-v3/include/bits/monostate.h
! 38c1c511a492249936888691a52f40e2  libstdc++-v3/include/bits/move.h
  46c2f3b679b1978ddb4dff0bf8b97610  libstdc++-v3/include/bits/new_allocator.h
  f0db6753fd67e8ef172c6851da248f62  libstdc++-v3/include/bits/node_handle.h
  3092071ce3fbded00e007d2833fcfcae  libstdc++-v3/include/bits/ostream.h
--- 140352,140358 ----
  27bdede74800b12180665889a05cca6b  libstdc++-v3/include/bits/memoryfwd.h
  3cdf6345e89c49a55bd7c9be035d3729  libstdc++-v3/include/bits/mofunc_impl.h
  6ac85b21a9fb05014efe9345967c51b4  libstdc++-v3/include/bits/monostate.h
! 9031e8dd93bc2fbebf995d9a7eb28647  libstdc++-v3/include/bits/move.h
  46c2f3b679b1978ddb4dff0bf8b97610  libstdc++-v3/include/bits/new_allocator.h
  f0db6753fd67e8ef172c6851da248f62  libstdc++-v3/include/bits/node_handle.h
  3092071ce3fbded00e007d2833fcfcae  libstdc++-v3/include/bits/ostream.h
*************** c48928d63732da42056105c33cf860ff  libstd
*** 140291,140297 ****
  e77200e337d1f4695ed04b8f6fd9991d  libstdc++-v3/include/bits/stl_tempbuf.h
  eaceb582a18a6a7ee11227f1fc82b069  libstdc++-v3/include/bits/stl_tree.h
  e02ea7b4b3b3315d6b233b69e71a35e9  libstdc++-v3/include/bits/stl_uninitialized.h
! a370f99cf5710c07aee43e033d2e6b9b  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
  69fecd7181ec71c850dba6e19cf9a58c  libstdc++-v3/include/bits/streambuf.tcc
  512415517592a497decfef44b9a855e2  libstdc++-v3/include/bits/streambuf_iterator.h
--- 140423,140429 ----
  e77200e337d1f4695ed04b8f6fd9991d  libstdc++-v3/include/bits/stl_tempbuf.h
  eaceb582a18a6a7ee11227f1fc82b069  libstdc++-v3/include/bits/stl_tree.h
  e02ea7b4b3b3315d6b233b69e71a35e9  libstdc++-v3/include/bits/stl_uninitialized.h
! a289051282846bf52bb1917bcbbf3673  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
  69fecd7181ec71c850dba6e19cf9a58c  libstdc++-v3/include/bits/streambuf.tcc
  512415517592a497decfef44b9a855e2  libstdc++-v3/include/bits/streambuf_iterator.h
*************** a462fb6c466b34fa25624b7fab6323e3  libstd
*** 140313,140321 ****
  a229b5c8ad2904a3b3173239225596c4  libstdc++-v3/include/bits/valarray_array.h
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
! 8ac9ff5d862e05ba3056d8440d55cf34  libstdc++-v3/include/bits/vector.tcc
! c2bc746602cb3458640cf6ee75b77bf8  libstdc++-v3/include/bits/version.def
! d062b20c15ea76785ded24b19250d913  libstdc++-v3/include/bits/version.h
  0db0dfc5d016435e64398e3bb70098d3  libstdc++-v3/include/bits/version.tpl
  6ccd70c0c36dd38ba559c1fc5a05fbd0  libstdc++-v3/include/c/cassert
  c31b54f25b2f8c7ca3ca3eec930d4e1d  libstdc++-v3/include/c/cctype
--- 140445,140453 ----
  a229b5c8ad2904a3b3173239225596c4  libstdc++-v3/include/bits/valarray_array.h
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
! 6adf2ccea897e9d5fc8e7650eceac96f  libstdc++-v3/include/bits/vector.tcc
! 43543c78d72116e73e7703fb7ab495db  libstdc++-v3/include/bits/version.def
! a8fe6ee5f5c37754e011add92917edbb  libstdc++-v3/include/bits/version.h
  0db0dfc5d016435e64398e3bb70098d3  libstdc++-v3/include/bits/version.tpl
  6ccd70c0c36dd38ba559c1fc5a05fbd0  libstdc++-v3/include/c/cassert
  c31b54f25b2f8c7ca3ca3eec930d4e1d  libstdc++-v3/include/c/cctype
*************** eb20df8190cb844a12f9fd68d043bcf0  libstd
*** 140835,140841 ****
  7997eb362a00f19f0f8e29fe72718fba  libstdc++-v3/include/parallel/unique_copy.h
  322d276913feb4b729019573db0593af  libstdc++-v3/include/parallel/workstealing.h
  37ac2dd1c7910a98bcbb9619d27add88  libstdc++-v3/include/precompiled/extc++.h
! 6e22915f9aae18a6f641e54019c5c8ca  libstdc++-v3/include/precompiled/stdc++.h
  a62eb60403f5499c2d4a096e6a68b92b  libstdc++-v3/include/precompiled/stdtr1c++.h
  75cfb36aeb3ed8672bb4e2957272203c  libstdc++-v3/include/pstl/LICENSE.txt
  6aa52d6b70bfb53073697375741dff45  libstdc++-v3/include/pstl/algorithm_fwd.h
--- 140967,140973 ----
  7997eb362a00f19f0f8e29fe72718fba  libstdc++-v3/include/parallel/unique_copy.h
  322d276913feb4b729019573db0593af  libstdc++-v3/include/parallel/workstealing.h
  37ac2dd1c7910a98bcbb9619d27add88  libstdc++-v3/include/precompiled/extc++.h
! 0828ac924be9bb5d3a1b7242ef3aaf85  libstdc++-v3/include/precompiled/stdc++.h
  a62eb60403f5499c2d4a096e6a68b92b  libstdc++-v3/include/precompiled/stdtr1c++.h
  75cfb36aeb3ed8672bb4e2957272203c  libstdc++-v3/include/pstl/LICENSE.txt
  6aa52d6b70bfb53073697375741dff45  libstdc++-v3/include/pstl/algorithm_fwd.h
*************** cfa40ce7bf7ca94a28186ab967acdd6f  libstd
*** 140867,140880 ****
  0629d22f554a52275f62402292b23e12  libstdc++-v3/include/std/atomic
  d1730a41b18e21cbac0f5328aad2d223  libstdc++-v3/include/std/barrier
  66a9c513e3e5b0698ace3297c819bdcf  libstdc++-v3/include/std/bit
! 8d011087c129a1487b227bd4aa56a3aa  libstdc++-v3/include/std/bitset
  285aa50d7e8cebdf5212f7f6e14a13fa  libstdc++-v3/include/std/charconv
! 3282d97cb840e6ff9b826fb1a3b5ab27  libstdc++-v3/include/std/chrono
  a90e2b9ed2c236c92f3f2387a39a0ac8  libstdc++-v3/include/std/codecvt
! eb6bb045c5ecb789ab3d713b400eaa07  libstdc++-v3/include/std/complex
  c3c1dced3bd41cb17dfb1d65d089f9d3  libstdc++-v3/include/std/concepts
  4d4392c4b49029819ced576ee163366b  libstdc++-v3/include/std/condition_variable
  264518c8a6bbba954d8dfbc74162a7e2  libstdc++-v3/include/std/coroutine
  55eed7b7857afaaeaf8138c0485a60fa  libstdc++-v3/include/std/deque
  ae96a272e65886b9386e26db37971da1  libstdc++-v3/include/std/execution
  13f5f9752c9229e8ce2f5a145ba63b2a  libstdc++-v3/include/std/expected
--- 140999,141013 ----
  0629d22f554a52275f62402292b23e12  libstdc++-v3/include/std/atomic
  d1730a41b18e21cbac0f5328aad2d223  libstdc++-v3/include/std/barrier
  66a9c513e3e5b0698ace3297c819bdcf  libstdc++-v3/include/std/bit
! 23fa0bcbc31cf3a11094188ad95f9953  libstdc++-v3/include/std/bitset
  285aa50d7e8cebdf5212f7f6e14a13fa  libstdc++-v3/include/std/charconv
! 824ea2b885c89a6f76c0695909cf3e3b  libstdc++-v3/include/std/chrono
  a90e2b9ed2c236c92f3f2387a39a0ac8  libstdc++-v3/include/std/codecvt
! 489f1fa388f56f93420713f979711c6b  libstdc++-v3/include/std/complex
  c3c1dced3bd41cb17dfb1d65d089f9d3  libstdc++-v3/include/std/concepts
  4d4392c4b49029819ced576ee163366b  libstdc++-v3/include/std/condition_variable
  264518c8a6bbba954d8dfbc74162a7e2  libstdc++-v3/include/std/coroutine
+ f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
  55eed7b7857afaaeaf8138c0485a60fa  libstdc++-v3/include/std/deque
  ae96a272e65886b9386e26db37971da1  libstdc++-v3/include/std/execution
  13f5f9752c9229e8ce2f5a145ba63b2a  libstdc++-v3/include/std/expected
*************** c2e511ae49957a9f02446e544d201582  libstd
*** 140884,140890 ****
  ab1fd410ae5cfd04391233377f847161  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
! 866d33497e4338e4e1a5289de701f9ba  libstdc++-v3/include/std/functional
  d472ad4b1b5c12e2f731980802d15b50  libstdc++-v3/include/std/future
  d91bc94f2a9c1ff7f642d23c27ec66ae  libstdc++-v3/include/std/generator
  26d2e4ff32739cdce0f87c94a551c38c  libstdc++-v3/include/std/inplace_vector
--- 141017,141023 ----
  ab1fd410ae5cfd04391233377f847161  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
! 1340a9395771adbe211799c0232a65ca  libstdc++-v3/include/std/functional
  d472ad4b1b5c12e2f731980802d15b50  libstdc++-v3/include/std/future
  d91bc94f2a9c1ff7f642d23c27ec66ae  libstdc++-v3/include/std/generator
  26d2e4ff32739cdce0f87c94a551c38c  libstdc++-v3/include/std/inplace_vector
*************** b944796362aa39fc1cba3747d2247464  libstd
*** 140910,140916 ****
  8883599080e145869428c2dc9e59e2d3  libstdc++-v3/include/std/print
  edcf23ae5a0a665fe8b4c0b76d8bfca1  libstdc++-v3/include/std/queue
  01746ff9db8573f15b943b0c36cce6a8  libstdc++-v3/include/std/random
! e57da2a2e732690259d52bc535066052  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
  400d95a1fd416911b5c47562d7a586cf  libstdc++-v3/include/std/regex
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
--- 141043,141049 ----
  8883599080e145869428c2dc9e59e2d3  libstdc++-v3/include/std/print
  edcf23ae5a0a665fe8b4c0b76d8bfca1  libstdc++-v3/include/std/queue
  01746ff9db8573f15b943b0c36cce6a8  libstdc++-v3/include/std/random
! 63b3efecc8d18edd4dd0dfd2caa1f535  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
  400d95a1fd416911b5c47562d7a586cf  libstdc++-v3/include/std/regex
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
*************** ee32950ba29d7cda3e788de0776d8c16  libstd
*** 140925,140938 ****
  ceee5b8e3956e8b0b5cf0c37821eb61a  libstdc++-v3/include/std/stacktrace
  03274bc404214a9a2c8235a5ae90f4fd  libstdc++-v3/include/std/stdexcept
  ece7d2fc2f03efd22a5d6ce6dc618b1b  libstdc++-v3/include/std/stdfloat
! f94da7d8b23732e753bad8cc986bedd1  libstdc++-v3/include/std/stop_token
  56f8a72abc9e7160f18f9a373325a008  libstdc++-v3/include/std/streambuf
  905475b4fea23e39df3f56c178517ade  libstdc++-v3/include/std/string
  c5a4df8fdbbe4b3d33d0b52db500e16d  libstdc++-v3/include/std/string_view
  362d06f047ef5267af7587a8d12e0c0d  libstdc++-v3/include/std/syncstream
  21988a8b4bf87b01fc566fe8659ab2cc  libstdc++-v3/include/std/system_error
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
! 7cdac9ea092e51e067047e2b3fb2060e  libstdc++-v3/include/std/thread
  6ec655e7fd49c6ce8c2ddd38a3b6b9dc  libstdc++-v3/include/std/tuple
  98e5e2857b36ea3c0637434b6ed01417  libstdc++-v3/include/std/type_traits
  237682577d22ec3f9f5046abf0acd8e7  libstdc++-v3/include/std/typeindex
--- 141058,141071 ----
  ceee5b8e3956e8b0b5cf0c37821eb61a  libstdc++-v3/include/std/stacktrace
  03274bc404214a9a2c8235a5ae90f4fd  libstdc++-v3/include/std/stdexcept
  ece7d2fc2f03efd22a5d6ce6dc618b1b  libstdc++-v3/include/std/stdfloat
! 23b5b63af5cceb0d44d8c2aab32c8e30  libstdc++-v3/include/std/stop_token
  56f8a72abc9e7160f18f9a373325a008  libstdc++-v3/include/std/streambuf
  905475b4fea23e39df3f56c178517ade  libstdc++-v3/include/std/string
  c5a4df8fdbbe4b3d33d0b52db500e16d  libstdc++-v3/include/std/string_view
  362d06f047ef5267af7587a8d12e0c0d  libstdc++-v3/include/std/syncstream
  21988a8b4bf87b01fc566fe8659ab2cc  libstdc++-v3/include/std/system_error
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
! 69cb1e47f224bd1b5ecfe3d36600ebfc  libstdc++-v3/include/std/thread
  6ec655e7fd49c6ce8c2ddd38a3b6b9dc  libstdc++-v3/include/std/tuple
  98e5e2857b36ea3c0637434b6ed01417  libstdc++-v3/include/std/type_traits
  237682577d22ec3f9f5046abf0acd8e7  libstdc++-v3/include/std/typeindex
*************** b60f1331eaf500ccce917653c90c02d1  libstd
*** 141023,141029 ****
  2c05bcb0a318121f8deb29df215a1a76  libstdc++-v3/libsupc++/bad_cast.cc
  ed96195b097b5c5644e754342e3159bc  libstdc++-v3/libsupc++/bad_typeid.cc
  d54dac42098e24364e0e8249016c78b8  libstdc++-v3/libsupc++/class_type_info.cc
! ab813a02be8d02420081178cc567cf7f  libstdc++-v3/libsupc++/compare
  ee57ed7a57d178fce16de2ec28a8340c  libstdc++-v3/libsupc++/cxxabi.h
  563de5baf2c41e9759583af359bb650e  libstdc++-v3/libsupc++/cxxabi_forced.h
  8aae4a67a18f5276de7831d7a44b7b2f  libstdc++-v3/libsupc++/cxxabi_init_exception.h
--- 141156,141162 ----
  2c05bcb0a318121f8deb29df215a1a76  libstdc++-v3/libsupc++/bad_cast.cc
  ed96195b097b5c5644e754342e3159bc  libstdc++-v3/libsupc++/bad_typeid.cc
  d54dac42098e24364e0e8249016c78b8  libstdc++-v3/libsupc++/class_type_info.cc
! c8845d9286975193cce98dc179126171  libstdc++-v3/libsupc++/compare
  ee57ed7a57d178fce16de2ec28a8340c  libstdc++-v3/libsupc++/cxxabi.h
  563de5baf2c41e9759583af359bb650e  libstdc++-v3/libsupc++/cxxabi_forced.h
  8aae4a67a18f5276de7831d7a44b7b2f  libstdc++-v3/libsupc++/cxxabi_init_exception.h
*************** c94ad903b4e7baf364cdc3ef5e9f58a8  libstd
*** 141108,141114 ****
  4cb74e4755d2e3e58503a243d7ae042b  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  f3661044e04e7499daef1e53bba37dc7  libstdc++-v3/python/libstdcxx/v6/__init__.py
! 6bfb86e6eb00a1b6bcaee948565dc0db  libstdc++-v3/python/libstdcxx/v6/printers.py
  c4a63edebdca46a9468f6ce9cde53449  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
--- 141241,141247 ----
  4cb74e4755d2e3e58503a243d7ae042b  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  f3661044e04e7499daef1e53bba37dc7  libstdc++-v3/python/libstdcxx/v6/__init__.py
! a56ceda78dcdee775ce403a1589d5605  libstdc++-v3/python/libstdcxx/v6/printers.py
  c4a63edebdca46a9468f6ce9cde53449  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
*************** fbb127f006c65ae37d591c627cc6235c  libstd
*** 141231,141239 ****
  85b9d2e407dc7113a97234b2c23e96dc  libstdc++-v3/src/c++17/ryu/ryu_generic_128.h
  e66e202fb59625eb933c316b0bf9ee34  libstdc++-v3/src/c++17/string-inst.cc
  6bbe101ec337afce54e0c8dee6fdd6d3  libstdc++-v3/src/c++17/uint128_t.h
! b077554d5097430340afb0af8789ea1a  libstdc++-v3/src/c++20/Makefile.am
! a70eb0f686f8378eddb86ac7513b4c9a  libstdc++-v3/src/c++20/Makefile.in
  44b19f393472c9494f63f59cbe9fe25f  libstdc++-v3/src/c++20/atomic.cc
  94b3ab191e8fe566a951ac2b4f081c40  libstdc++-v3/src/c++20/format.cc
  939eb3ac7ce3c32a8b2aac493f053893  libstdc++-v3/src/c++20/sstream-inst.cc
  e9e89f4578e59d252e4caaf0b63d6dfb  libstdc++-v3/src/c++20/tzdata.zi
--- 141364,141373 ----
  85b9d2e407dc7113a97234b2c23e96dc  libstdc++-v3/src/c++17/ryu/ryu_generic_128.h
  e66e202fb59625eb933c316b0bf9ee34  libstdc++-v3/src/c++17/string-inst.cc
  6bbe101ec337afce54e0c8dee6fdd6d3  libstdc++-v3/src/c++17/uint128_t.h
! 1365c94f6279f312448afb4f276ee66f  libstdc++-v3/src/c++20/Makefile.am
! 458fbfef5680c2db982e68e970f868e5  libstdc++-v3/src/c++20/Makefile.in
  44b19f393472c9494f63f59cbe9fe25f  libstdc++-v3/src/c++20/atomic.cc
+ 3cceb517827358deb4fcc4cf6e2be4a1  libstdc++-v3/src/c++20/clock.cc
  94b3ab191e8fe566a951ac2b4f081c40  libstdc++-v3/src/c++20/format.cc
  939eb3ac7ce3c32a8b2aac493f053893  libstdc++-v3/src/c++20/sstream-inst.cc
  e9e89f4578e59d252e4caaf0b63d6dfb  libstdc++-v3/src/c++20/tzdata.zi
*************** ea41b659ccf9f3e1850802e2fddaba52  libstd
*** 141247,141254 ****
  c319163994652e23066095eded5869f0  libstdc++-v3/src/c++23/std-clib.cc.in
  1c74e385d6f1143be24c00827ad9d44b  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
! 97527213996a1ca6a0910b1ab5f6c3a3  libstdc++-v3/src/c++26/Makefile.am
! 5dd6b2acd5d63f897ba1545bb9a07d25  libstdc++-v3/src/c++26/Makefile.in
  de7c20444382fa8365e95b0e048de9c6  libstdc++-v3/src/c++26/text_encoding.cc
  088c4c5331cd5466e7867079fcd0bad5  libstdc++-v3/src/c++98/Makefile.am
  f5066be47fd9da3a68e3be9740a6243c  libstdc++-v3/src/c++98/Makefile.in
--- 141381,141389 ----
  c319163994652e23066095eded5869f0  libstdc++-v3/src/c++23/std-clib.cc.in
  1c74e385d6f1143be24c00827ad9d44b  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
! 757f1e829f27dedf5e8d7d83b358ad27  libstdc++-v3/src/c++26/Makefile.am
! 3cdab153592c4a94c6607ed5cd536469  libstdc++-v3/src/c++26/Makefile.in
! 689d9236ef4fdcec6142e1423ae0e6bb  libstdc++-v3/src/c++26/debugging.cc
  de7c20444382fa8365e95b0e048de9c6  libstdc++-v3/src/c++26/text_encoding.cc
  088c4c5331cd5466e7867079fcd0bad5  libstdc++-v3/src/c++98/Makefile.am
  f5066be47fd9da3a68e3be9740a6243c  libstdc++-v3/src/c++98/Makefile.in
*************** db4e118358b8358b1d4d7dd7bdecdadf  libstd
*** 141375,141381 ****
  10e807bc0a985110191bafbf6bd1b7a7  libstdc++-v3/testsuite/18_support/comparisons/categories/partialord.cc
  337fd5f805f9c78aa2ecf52b8a980b78  libstdc++-v3/testsuite/18_support/comparisons/categories/strongord.cc
  d46160d7e7cf897d1ddba5a0bf907b91  libstdc++-v3/testsuite/18_support/comparisons/categories/weakord.cc
! e83ffae8f6a01f3ce6a4a13bceaa570b  libstdc++-v3/testsuite/18_support/comparisons/categories/zero_neg.cc
  bfc352e556dfd06b9df0befc286c91f5  libstdc++-v3/testsuite/18_support/comparisons/common/1.cc
  1d63003425ec9b778636a9348657cb73  libstdc++-v3/testsuite/18_support/comparisons/object/93479.cc
  eab9e55758287cff0a6db5f20c7e937c  libstdc++-v3/testsuite/18_support/comparisons/object/lwg3530.cc
--- 141510,141516 ----
  10e807bc0a985110191bafbf6bd1b7a7  libstdc++-v3/testsuite/18_support/comparisons/categories/partialord.cc
  337fd5f805f9c78aa2ecf52b8a980b78  libstdc++-v3/testsuite/18_support/comparisons/categories/strongord.cc
  d46160d7e7cf897d1ddba5a0bf907b91  libstdc++-v3/testsuite/18_support/comparisons/categories/weakord.cc
! e542aeb527d2d379daf0fa27b1e3531b  libstdc++-v3/testsuite/18_support/comparisons/categories/zero_neg.cc
  bfc352e556dfd06b9df0befc286c91f5  libstdc++-v3/testsuite/18_support/comparisons/common/1.cc
  1d63003425ec9b778636a9348657cb73  libstdc++-v3/testsuite/18_support/comparisons/object/93479.cc
  eab9e55758287cff0a6db5f20c7e937c  libstdc++-v3/testsuite/18_support/comparisons/object/lwg3530.cc
*************** d06826b7f4a21086751aa50f50f752fc  libstd
*** 141512,141517 ****
--- 141647,141656 ----
  2c5b0e45ce8deeaa03a7eb8f9050d092  libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
  c7f4c43fefac85be376c808d2575a369  libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
  3a79bc516257e1fbcfc1fbb2db5e1710  libstdc++-v3/testsuite/18_support/unexpected_handler.cc
+ 539a1e4b3f59b604b72e1f079fc8269e  libstdc++-v3/testsuite/19_diagnostics/debugging/breakpoint.cc
+ 5bbfc1e5c633a88da16cf1c3b38f1d87  libstdc++-v3/testsuite/19_diagnostics/debugging/breakpoint_if_debugging.cc
+ e1918fe2644da6c5b2132b19cee75eb5  libstdc++-v3/testsuite/19_diagnostics/debugging/is_debugger_present-2.cc
+ 914f3e23e53916a1b9f7bc27a0675154  libstdc++-v3/testsuite/19_diagnostics/debugging/is_debugger_present.cc
  e76078fa52225514dc89f9b1116c07ff  libstdc++-v3/testsuite/19_diagnostics/error_category/102425.cc
  403924320cc925812a916bb9e3d96fd7  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc
  2f8b6ee72a26d34adead548d02463c98  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/default.cc
*************** a3b9ca97435d798fd3f8c7bb4032ebd9  libstd
*** 141783,141789 ****
  414f2d4aa5542289673f653f70daf19e  libstdc++-v3/testsuite/20_util/conditional/requirements/alias_decl.cc
  7c993d1a79f9898222dd51d8ce772ec0  libstdc++-v3/testsuite/20_util/conditional/requirements/explicit_instantiation.cc
  d3dd0426932e9c536f4b38fbebb59b84  libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
! 5af7dbdaf6a9f788a46b6f6674d5bd9e  libstdc++-v3/testsuite/20_util/copyable_function/call.cc
  09520df3df90b586a3cb13556948faa3  libstdc++-v3/testsuite/20_util/copyable_function/cons.cc
  d08c6d7092cbc05d4491a4d25574eea5  libstdc++-v3/testsuite/20_util/copyable_function/conv.cc
  f2d2d2bd40840c1534687ec3fbd7dcfd  libstdc++-v3/testsuite/20_util/copyable_function/copy.cc
--- 141922,141928 ----
  414f2d4aa5542289673f653f70daf19e  libstdc++-v3/testsuite/20_util/conditional/requirements/alias_decl.cc
  7c993d1a79f9898222dd51d8ce772ec0  libstdc++-v3/testsuite/20_util/conditional/requirements/explicit_instantiation.cc
  d3dd0426932e9c536f4b38fbebb59b84  libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
! 404eb18749ec930755e24ae928ae99ee  libstdc++-v3/testsuite/20_util/copyable_function/call.cc
  09520df3df90b586a3cb13556948faa3  libstdc++-v3/testsuite/20_util/copyable_function/cons.cc
  d08c6d7092cbc05d4491a4d25574eea5  libstdc++-v3/testsuite/20_util/copyable_function/conv.cc
  f2d2d2bd40840c1534687ec3fbd7dcfd  libstdc++-v3/testsuite/20_util/copyable_function/copy.cc
*************** cf0e17bbd866d9cd26def3c1b550256c  libstd
*** 141948,141959 ****
  927fc7212da895d9c6ec8127e5916b36  libstdc++-v3/testsuite/20_util/function/requirements/explicit_instantiation.cc
  301115b4ac6059939af6a41b978b489a  libstdc++-v3/testsuite/20_util/function/target_no_rtti.cc
  8f5e17f706249e407588401c4f4da0c4  libstdc++-v3/testsuite/20_util/function_objects/83607.cc
! aa72d6da468d29b49666c63e589e7321  libstdc++-v3/testsuite/20_util/function_objects/bind_back/1.cc
! ee958473de98a12b182d429e35568836  libstdc++-v3/testsuite/20_util/function_objects/bind_back/111327.cc
  2f63cd2255fde6cd4f014efb1ad34b27  libstdc++-v3/testsuite/20_util/function_objects/bind_back/116038.cc
! f059d399ef4164f7ac6ea422fddd3df3  libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc
  b7e1e25aa8f6fddecd578ce1c23b63e2  libstdc++-v3/testsuite/20_util/function_objects/bind_front/107784.cc
! 93d1fc75e07731fda7dccf37968708d4  libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc
  586c9c5a05cff6578318e5d46789f1c9  libstdc++-v3/testsuite/20_util/function_objects/bind_front/116038.cc
  1a693160b90575d90d17b98c05d54334  libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
  ca6516aefe54fd40ebaa1dafa0a11255  libstdc++-v3/testsuite/20_util/function_objects/bind_front/97101.cc
--- 142087,142098 ----
  927fc7212da895d9c6ec8127e5916b36  libstdc++-v3/testsuite/20_util/function/requirements/explicit_instantiation.cc
  301115b4ac6059939af6a41b978b489a  libstdc++-v3/testsuite/20_util/function/target_no_rtti.cc
  8f5e17f706249e407588401c4f4da0c4  libstdc++-v3/testsuite/20_util/function_objects/83607.cc
! caf4405cb3d402b4c9f1c447afe23d51  libstdc++-v3/testsuite/20_util/function_objects/bind_back/1.cc
! e170250183cc1990447e11e192a53084  libstdc++-v3/testsuite/20_util/function_objects/bind_back/111327.cc
  2f63cd2255fde6cd4f014efb1ad34b27  libstdc++-v3/testsuite/20_util/function_objects/bind_back/116038.cc
! 9129577d16a42975472da4f7c0391362  libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc
  b7e1e25aa8f6fddecd578ce1c23b63e2  libstdc++-v3/testsuite/20_util/function_objects/bind_front/107784.cc
! 3e03cf7e2ce86f073d20e140c3e581be  libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc
  586c9c5a05cff6578318e5d46789f1c9  libstdc++-v3/testsuite/20_util/function_objects/bind_front/116038.cc
  1a693160b90575d90d17b98c05d54334  libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
  ca6516aefe54fd40ebaa1dafa0a11255  libstdc++-v3/testsuite/20_util/function_objects/bind_front/97101.cc
*************** fb519a4b4b950e75c7541408b2c1f711  libstd
*** 142397,142403 ****
  3a7fc4002948841398e165a8c78094b6  libstdc++-v3/testsuite/20_util/move_if_noexcept/1.cc
  4bdefefb0438a5b9e79b07a712ef66f1  libstdc++-v3/testsuite/20_util/move_if_noexcept/constexpr.cc
  1d1a8b8a8d0549a7606a768d5eeae646  libstdc++-v3/testsuite/20_util/move_if_noexcept/requirements/explicit_instantiation.cc
! 9da33f150a40ad4e22d4db6e67518139  libstdc++-v3/testsuite/20_util/move_only_function/call.cc
  a3d46eda1cd19ee59590b7e89ae8f69e  libstdc++-v3/testsuite/20_util/move_only_function/cons.cc
  481a7ae1c6272ea9f31ce6b72c951deb  libstdc++-v3/testsuite/20_util/move_only_function/conv.cc
  6d0ef91fda28c1d7c858259ba2222847  libstdc++-v3/testsuite/20_util/move_only_function/incomplete_neg.cc
--- 142536,142542 ----
  3a7fc4002948841398e165a8c78094b6  libstdc++-v3/testsuite/20_util/move_if_noexcept/1.cc
  4bdefefb0438a5b9e79b07a712ef66f1  libstdc++-v3/testsuite/20_util/move_if_noexcept/constexpr.cc
  1d1a8b8a8d0549a7606a768d5eeae646  libstdc++-v3/testsuite/20_util/move_if_noexcept/requirements/explicit_instantiation.cc
! 6fc33239d77a00db64ea7af7b940228a  libstdc++-v3/testsuite/20_util/move_only_function/call.cc
  a3d46eda1cd19ee59590b7e89ae8f69e  libstdc++-v3/testsuite/20_util/move_only_function/cons.cc
  481a7ae1c6272ea9f31ce6b72c951deb  libstdc++-v3/testsuite/20_util/move_only_function/conv.cc
  6d0ef91fda28c1d7c858259ba2222847  libstdc++-v3/testsuite/20_util/move_only_function/incomplete_neg.cc
*************** e5b9d428a771e75804704a3cd5fc6d0e  libstd
*** 144305,144310 ****
--- 144444,144450 ----
  f0143765eb42f5ac1f3cc10a8877e4fe  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_cpp14.cc
  221fcf16a916cb4860cf59422110ec47  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
  a35c7d026a144928d0fab4b21808ad49  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_size.cc
+ 28085e09cf944c3dc2bedc55e64eb03c  libstdc++-v3/testsuite/23_containers/bitset/lwg4294.cc
  2f8e551de300bee33bdef57bbf631b4d  libstdc++-v3/testsuite/23_containers/default_template_value.cc
  ddf767067d4b89b063a9cdaf9a38233c  libstdc++-v3/testsuite/23_containers/deque/100516.cc
  898345578704e39b9b4de6265ac378a5  libstdc++-v3/testsuite/23_containers/deque/14340.cc
*************** a5f7ae14b6844d43b1081a499624f525  libstd
*** 145860,145871 ****
  d62da1f1e000cf57a3797b218a6faf6f  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/insert_range.cc
  35e70ddc10ee243c7ae40dfd6fba7ce6  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
  8fb5c601f412e71f5977219b7d89f18d  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
! 2301f3312f26a25c0cecd650693c1ee6  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc
  071692d93dc4cd16ba56c3ef394403d9  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable2.cc
  7499329ab40a3f8d9ec96557afc9fdf5  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
  19a7aa23a562ce123f59840732f99484  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89130.cc
  39ea516b4e78257b10729b1294b8b0e1  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89416.cc
  d5a10e609929e6fcd8ef4875e82e9fab  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/strong_guarantee.cc
  129e06da1f884b42b2e5f2d423c2fb99  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/1.cc
  f7d7b18ce6d96f9d3f0358f60af4bff3  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/2.cc
  291b9ca09e8fdf6c34b88c801b0b8072  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/3.cc
--- 146000,146012 ----
  d62da1f1e000cf57a3797b218a6faf6f  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/insert_range.cc
  35e70ddc10ee243c7ae40dfd6fba7ce6  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
  8fb5c601f412e71f5977219b7d89f18d  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
! c2276095d903b4d83e50a2140f3ab830  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc
  071692d93dc4cd16ba56c3ef394403d9  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable2.cc
  7499329ab40a3f8d9ec96557afc9fdf5  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
  19a7aa23a562ce123f59840732f99484  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89130.cc
  39ea516b4e78257b10729b1294b8b0e1  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89416.cc
  d5a10e609929e6fcd8ef4875e82e9fab  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/strong_guarantee.cc
+ 4a2f9f9e84018ea58dae284a14d839cd  libstdc++-v3/testsuite/23_containers/vector/modifiers/resize.cc
  129e06da1f884b42b2e5f2d423c2fb99  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/1.cc
  f7d7b18ce6d96f9d3f0358f60af4bff3  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/2.cc
  291b9ca09e8fdf6c34b88c801b0b8072  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/3.cc
*************** f12da74b317d3e2a5a88c8d48f289674  libstd
*** 149347,149353 ****
  6fc43afff360ceef0b6d73943ee38f61  libstdc++-v3/testsuite/backward/hash_set/1.cc
  89a0e58a522391e68d2680afa635aeb2  libstdc++-v3/testsuite/backward/hash_set/25896.cc
  2c091597008357e678007f407f299a24  libstdc++-v3/testsuite/backward/hash_set/49060.cc
! 2698a443e19f71cbab30ef4754778267  libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
  9fad04735388a6a4650701a8a040e5e5  libstdc++-v3/testsuite/backward/hash_set/requirements/explicit_instantiation.cc
  9fe399a1fb42687787771b8cfef37157  libstdc++-v3/testsuite/backward/strstream_members.cc
  f7c72527b115ae77f289202a9e1439ac  libstdc++-v3/testsuite/backward/strstream_move.cc
--- 149488,149494 ----
  6fc43afff360ceef0b6d73943ee38f61  libstdc++-v3/testsuite/backward/hash_set/1.cc
  89a0e58a522391e68d2680afa635aeb2  libstdc++-v3/testsuite/backward/hash_set/25896.cc
  2c091597008357e678007f407f299a24  libstdc++-v3/testsuite/backward/hash_set/49060.cc
! 5f11513e4030ec3b98584d848c7c5490  libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
  9fad04735388a6a4650701a8a040e5e5  libstdc++-v3/testsuite/backward/hash_set/requirements/explicit_instantiation.cc
  9fe399a1fb42687787771b8cfef37157  libstdc++-v3/testsuite/backward/strstream_members.cc
  f7c72527b115ae77f289202a9e1439ac  libstdc++-v3/testsuite/backward/strstream_move.cc
diff -Nrcpad gcc-16-20250824/fixincludes/ChangeLog gcc-16-20250831/fixincludes/ChangeLog
*** gcc-16-20250824/fixincludes/ChangeLog	Sun Aug 24 22:32:12 2025
--- gcc-16-20250831/fixincludes/ChangeLog	Sun Aug 31 22:32:10 2025
***************
*** 1,3 ****
--- 1,11 ----
+ 2025-08-28  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR bootstrap/118009
+ 	PR bootstrap/119089
+ 	* inclhack.def (pthread_incomplete_struct_argument): Add bypass.
+ 	* fixincl.tpl: Remove reference to svn in comment.
+ 	* fixincl.x: Regenerate.
+ 
  2025-08-15  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
  
  	* fixincl.x: Regenerate.
diff -Nrcpad gcc-16-20250824/fixincludes/fixincl.tpl gcc-16-20250831/fixincludes/fixincl.tpl
*** gcc-16-20250824/fixincludes/fixincl.tpl	Sun Aug 24 22:32:12 2025
--- gcc-16-20250831/fixincludes/fixincl.tpl	Sun Aug 31 22:32:10 2025
*************** x=fixincl.x =]
*** 5,11 ****
       (dne "-D" " * " "/* ")
       (dne " * " "/* ") ) =]
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER [=
     (define re-ct 0) (define max-mach 0) (define ct 0)
     (define HACK "") (define Hack "")    (define tmp "") 
     (shell "date") =]
--- 5,11 ----
       (dne "-D" " * " "/* ")
       (dne " * " "/* ") ) =]
   */
! /* DO NOT MERGE THIS FILE, EITHER [=
     (define re-ct 0) (define max-mach 0) (define ct 0)
     (define HACK "") (define Hack "")    (define tmp "") 
     (shell "date") =]
diff -Nrcpad gcc-16-20250824/fixincludes/fixincl.x gcc-16-20250831/fixincludes/fixincl.x
*** gcc-16-20250824/fixincludes/fixincl.x	Sun Aug 24 22:33:49 2025
--- gcc-16-20250831/fixincludes/fixincl.x	Sun Aug 31 22:34:36 2025
***************
*** 2,12 ****
   *
   * DO NOT EDIT THIS FILE   (fixincl.x)
   *
!  * It has been AutoGen-ed  August 15, 2025 at 05:30:32 PM by AutoGen 5.18.16
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER Fri Aug 15 17:30:32 CEST 2025
   *
   * You must regenerate it.  Use the ./genfixes script.
   *
--- 2,12 ----
   *
   * DO NOT EDIT THIS FILE   (fixincl.x)
   *
!  * It has been AutoGen-ed  August 28, 2025 at 04:10:25 PM by AutoGen 5.18.16
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT MERGE THIS FILE, EITHER Thu Aug 28 16:10:25 BST 2025
   *
   * You must regenerate it.  Use the ./genfixes script.
   *
*************** tSCC zPthread_Incomplete_Struct_Argument
*** 7547,7554 ****
  tSCC zPthread_Incomplete_Struct_ArgumentSelect0[] =
         "struct __jmp_buf_tag";
  
! #define    PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_TEST_CT  1
  static tTestDesc aPthread_Incomplete_Struct_ArgumentTests[] = {
    { TT_EGREP,    zPthread_Incomplete_Struct_ArgumentSelect0, (regex_t*)NULL }, };
  
  /*
--- 7547,7561 ----
  tSCC zPthread_Incomplete_Struct_ArgumentSelect0[] =
         "struct __jmp_buf_tag";
  
! /*
!  *  content bypass pattern - skip fix if pattern found
!  */
! tSCC zPthread_Incomplete_Struct_ArgumentBypass0[] =
!        "bits/types/struct___jmp_buf_tag.h";
! 
! #define    PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_TEST_CT  2
  static tTestDesc aPthread_Incomplete_Struct_ArgumentTests[] = {
+   { TT_NEGREP,   zPthread_Incomplete_Struct_ArgumentBypass0, (regex_t*)NULL },
    { TT_EGREP,    zPthread_Incomplete_Struct_ArgumentSelect0, (regex_t*)NULL }, };
  
  /*
*************** static const char* apzX11_SprintfPatch[]
*** 11202,11208 ****
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          318
  #define MACH_LIST_SIZE_LIMIT 187
  #define FIX_COUNT            274
  
--- 11209,11215 ----
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          319
  #define MACH_LIST_SIZE_LIMIT 187
  #define FIX_COUNT            274
  
diff -Nrcpad gcc-16-20250824/fixincludes/inclhack.def gcc-16-20250831/fixincludes/inclhack.def
*** gcc-16-20250824/fixincludes/inclhack.def	Sun Aug 24 22:32:12 2025
--- gcc-16-20250831/fixincludes/inclhack.def	Sun Aug 31 22:32:10 2025
*************** fix = {
*** 3803,3808 ****
--- 3803,3809 ----
      hackname  = pthread_incomplete_struct_argument;
      files     = pthread.h;
      select    = "struct __jmp_buf_tag";
+     bypass    = "bits/types/struct___jmp_buf_tag.h";
      c_fix     = format;
      c_fix_arg = "%1 *%2%3";
      c_fix_arg = "^(extern int __sigsetjmp \\(struct __jmp_buf_tag) "
diff -Nrcpad gcc-16-20250824/gcc/ChangeLog gcc-16-20250831/gcc/ChangeLog
*** gcc-16-20250824/gcc/ChangeLog	Sun Aug 24 22:32:12 2025
--- gcc-16-20250831/gcc/ChangeLog	Sun Aug 31 22:32:10 2025
***************
*** 1,3 ****
--- 1,529 ----
+ 2025-08-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/121698
+ 	* tree-ssa-phiopt.cc (spaceship_replacement): Adjust
+ 	to handle spaceship unordered value -128 rather than 2 and
+ 	stmts from the new std::partial_order::_M_reverse() instead
+ 	of (_M_value & ~1) == _M_value etc.
+ 	* doc/md.texi (spaceship@var{m}4): Use -128 instead of 2.
+ 	* tree-ssa-math-opts.cc (optimize_spaceship): Adjust comments
+ 	that libstdc++ unordered value is -128 rather than 2 and use
+ 	that as the default unordered value.
+ 	* config/i386/i386-expand.cc (ix86_expand_fp_spaceship): Use
+ 	GEN_INT (-128) instead of const2_rtx and adjust comment accordingly.
+ 	* config/aarch64/aarch64.cc (aarch64_expand_fp_spaceship): Likewise.
+ 	* config/s390/s390.cc (s390_expand_fp_spaceship): Likewise.
+ 
+ 2025-08-30  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/extend.texi (Vector Extensions): Improve markup for list
+ 	of operators.
+ 
+ 2025-08-30  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/standards.texi (Standards): Update "Object-Oriented
+ 	Programming and the Objective-C Language" reference.
+ 
+ 2025-08-30  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/121725
+ 	* config/i386/i386-features.cc
+ 	(pass_x86_cse::candidate_gnu2_tls_p): Use the UNSPEC_DTPOFF
+ 	operand to check source operand in TLS64_COMBINE pattern.
+ 
+ 2025-08-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/116651
+ 	PR tree-optimization/93265
+ 	PR tree-optimization/103647
+ 	PR tree-optimization/52171
+ 	* tree-ssa-forwprop.cc (simplify_builtin_memcmp): New function.
+ 	(simplify_builtin_call): Call simplify_builtin_memcmp for memcmp
+ 	memcmp_eq builtins.
+ 
+ 2025-08-29  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/121709
+ 	* doc/gm2.texi (Module Search Path): Reflect the new
+ 	search order.
+ 
+ 2025-08-29  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (OBJS-libcommon): Add diagnostics/logging.o.
+ 	* diagnostic-global-context.cc: Include "diagnostics/logging.h".
+ 	(log_function_params, auto_inc_log_depth): New "using" decls.
+ 	(verbatim): Add logging.
+ 	(emit_diagnostic): Likewise.
+ 	(emit_diagnostic_valist): Likewise.
+ 	(emit_diagnostic_valist_meta): Likewise.
+ 	(inform): Likewise.
+ 	(inform_n): Likewise.
+ 	(warning): Likewise.
+ 	(warning_at): Likewise.
+ 	(warning_meta): Likewise.
+ 	(warning_n): Likewise.
+ 	(pedwarn): Likewise.
+ 	(permerror): Likewise.
+ 	(permerror_opt): Likewise.
+ 	* diagnostics/context.cc: Include "diagnostics/logging.h".
+ 	(context::initialize): Initialize m_logger.  Add logging.
+ 	(context::finish): Add logging.  Clean up m_logger.
+ 	(context::dump): Add indent param.
+ 	(context::set_sink): Add logging.
+ 	(context::add_sink): Add logging.
+ 	(diagnostic_kind_debug_text): New.
+ 	(get_debug_string_for_kind): New.
+ 	(context::report_diagnostic): Add logging.
+ 	(context::diagnostic_impl): Likewise.
+ 	(context::diagnostic_n_impl): Likewise.
+ 	(context::end_group): Likewise.
+ 	* diagnostics/context.h: Include "diagnostics/logging.h".
+ 	(context::dump): Add indent param.
+ 	(context::get_logger): New accessor.
+ 	(context::classify_diagnostics): Add logging.
+ 	(context::push_diagnostics): Likewise.
+ 	(context::pop_diagnostics): Likewise.
+ 	(context::m_logger): New field.
+ 	* diagnostics/html-sink.cc: Include "diagnostics/logging.h".
+ 	(html_builder::flush_to_file): Add logging.
+ 	(html_sink::on_report_diagnostic): Likewise.
+ 	* diagnostics/kinds.h (get_debug_string_for_kind): New decl.
+ 	* diagnostics/logging.cc: New file.
+ 	* diagnostics/logging.h: New file.
+ 	* diagnostics/output-file.h: Include "label-text.h".
+ 	* diagnostics/sarif-sink.cc: Include "diagnostics/logging.h".
+ 	(sarif_builder::flush_to_object): Add logging.
+ 	(sarif_builder::flush_to_file): Likewise.
+ 	(sarif_sink::on_report_diagnostic): Likewise.
+ 	* diagnostics/sink.h (sink::get_logger): New.
+ 	* diagnostics/text-sink.cc: Include "diagnostics/logging.h".
+ 	(text_sink::on_report_diagnostic): Add logging.
+ 	* doc/invoke.texi (Environment Variables): Document
+ 	GCC_DIAGNOSTICS_LOG.
+ 	* opts-diagnostic.cc: Include "diagnostics/logging.h".
+ 	(handle_OPT_fdiagnostics_add_output_): Add loggging.
+ 	(handle_OPT_fdiagnostics_set_output_): Likewise.
+ 
+ 2025-08-29  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa-protos.h (xtensa_bswapsi2_output):
+ 	New function prototype.
+ 	* config/xtensa/xtensa.cc
+ 	(xtensa_bswapsi2_output_1, xtensa_bswapsi2_output):
+ 	New functions.
+ 	* config/xtensa/xtensa.md (bswapsi2_internal):
+ 	Rewrite in compact syntax and use xtensa_bswapsi2_output() as asm
+ 	output.
+ 
+ 2025-08-29  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR target/121548
+ 	* config/riscv/riscv-avlprop.cc (get_insn_vtype_mode): Assert
+ 	MODE_IDX is smaller than the number of operands.
+ 	(simplify_replace_vlmax_avl): Similarly.
+ 	(pass_avlprop::get_vlmax_ta_preferred_avl): Similarly.
+ 	* config/riscv/vector.md: Override merge_op_idx computation
+ 	for simple moves, just like is done for avl_type_idx and mode_idx.
+ 
+ 2025-08-29  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/riscv/autovec-opt.md
+ 	(*vfmin_vf_ieee_<mode>): Add new patterns to combine vec_duplicate +
+ 	vfmin.vv (unspec) into vfmin.vf.
+ 	(*vfmul_vf_<mode>, *vfrdiv_vf_<mode>, *vfmin_vf_<mode>): Fix attribute
+ 	types.
+ 	* config/riscv/vector.md (@pred_<ieee_fmaxmin_op><mode>_scalar): Allow
+ 	VLS modes.
+ 
+ 2025-08-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/121096
+ 	* config/i386/i386-expand.cc (expand_cpymem_epilogue): Set and
+ 	clear by_pieces_in_use when using by_pieces op.
+ 	(expand_setmem_epilogue): Likewise.
+ 	* config/i386/i386.cc (ix86_use_by_pieces_infrastructure_p): New.
+ 	(TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Likewise.
+ 	* config/i386/i386.h (machine_function): Add by_pieces_in_use.
+ 
+ 2025-08-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/121108
+ 	* config/i386/i386-expand.cc (setmem_epilogue_gen_val): Don't
+ 	assert op_mode == word_mode and handle any integer modes.
+ 
+ 2025-08-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/121694
+ 	* config/i386/i386-features.cc (redundant_pattern): Add
+ 	tlsdesc_val.
+ 	(pass_x86_cse): Likewise.
+ 	(pass_x86_cse::tls_set_insn_from_symbol): New member function.
+ 	(pass_x86_cse::candidate_gnu2_tls_p): Set tlsdesc_val.  For
+ 	TLS64_COMBINE, match both UNSPEC_TLSDESC and UNSPEC_DTPOFF
+ 	symbols.  For TLS64_CALL, match the UNSPEC_TLSDESC sumbol.
+ 	(pass_x86_cse::x86_cse): Initialize the tlsdesc_val field in
+ 	load.  Pass the tlsdesc_val field to ix86_place_single_tls_call
+ 	for X86_CSE_TLSDESC.
+ 
+ 2025-08-29  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* doc/invoke.texi (AMD GCN Options: -march): Remove '(experimental)'
+ 	from gfx-{9,10-3,11}-generic.
+ 
+ 2025-08-29  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* doc/install.texi (amdgcn): Clarify which binaries must be the
+ 	LLVM version and which must be installed. Update version data for
+ 	ROCm for generic architectures.
+ 
+ 2025-08-29  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* doc/invoke.texi: Document -param=ix86-vect-unroll-limit.
+ 
+ 2025-08-29  Pan Li  <pan2.li@intel.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vnmsac_vx_<mode>): Add new
+ 	pattern to combine to vx.
+ 	* config/riscv/vector.md (@pred_vnmsac_vx_<mode>): Add new
+ 	pattern to generate rtl.
+ 	(*pred_nmsac_<mode>_scalar_undef): Ditto.
+ 
+ 2025-08-28  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/115201
+ 	* passes.def: Move cleanup_eh before first tail_recursion.
+ 
+ 2025-08-28  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vfmin_vf_<mode>): Add new pattern to
+ 	combine vec_duplicate + vfmin.vv into vfmin.vf.
+ 	* config/riscv/vector.md (@pred_<optab><mode>_scalar): Allow VLS modes.
+ 
+ 2025-08-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.cc (vect_analyze_loop_form): Dump
+ 	niter assumption used for versioning.
+ 
+ 2025-08-28  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	PR middle-end/66462
+ 	* config/aarch64/aarch64.md (isinf<mode>2): Add new expander.
+ 	* config/aarch64/iterators.md (mantissa_bits): Add new mode_attr.
+ 
+ 2025-08-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.cc (vectorize_fold_left_reduction): Do not get
+ 	reduc_var as argument, instead compute it here.
+ 	(vect_transform_reduction): Adjust.
+ 
+ 2025-08-28  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/121629
+ 	* doc/gm2.texi (Module Search Path): New section.
+ 	(Compiler options): New option -fm2-pathname-root=.
+ 	New option -fm2-pathname-rootI.
+ 
+ 2025-08-28  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR debug/119367
+ 	* acinclude.m4 (gcc_GAS_FLAGS): For gcn, use "--filetype=obj
+ 	-triple=amdgcn--amdhsa", if supported.
+ 	* configure: Regenerate.
+ 	* doc/install.texi (amdgcn-*-*): Also add llvm-objdump to the list of
+ 	to-be-copied files.
+ 
+ 2025-08-28  Richard Biener  <rguenther@suse.de>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-vect-patterns.cc (vect_synth_mult_by_constant): Avoid
+ 	in cases that introduce multiple uses of reduction operands.
+ 
+ 2025-08-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-patterns.cc (vect_recog_divmod_pattern): Avoid
+ 	for stmts participating in a reduction.
+ 
+ 2025-08-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/119367
+ 	* configure.ac (gcc_cv_as_leb128): Add fallback using readelf.
+ 	Grammar fix in comment.
+ 	* configure: Regenerate.
+ 
+ 2025-08-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/119367
+ 	* dwarf2out.cc (output_one_line_info_table) <case LI_adv_address>: If
+ 	HAVE_AS_LEB128, use DW_LNS_advance_pc with dw2_asm_output_delta_uleb128
+ 	instead of DW_LNS_fixed_advance_pc with dw2_asm_output_delta.
+ 
+ 2025-08-27  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/121695
+ 	* tree-if-conv.cc (factor_out_operators): Fix typo
+ 	in assignment of the phi.
+ 
+ 2025-08-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.cc (vect_transform_cycle_phi): Remove
+ 	unused reduc_stmt_info.
+ 
+ 2025-08-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121686
+ 	* tree-vect-slp.cc (vect_analyze_slp): Consider all only-live
+ 	non-reduction defs for discovery.
+ 
+ 2025-08-27  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/121668
+ 	* config/i386/i386-features.cc (ix86_emit_tls_call): Emit the
+ 	TLS call after debug marker.
+ 
+ 2025-08-27  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/riscv/riscv-cores.def (xt-c908v): Drop xtheadvdot.
+ 	(xt-c910v2): Remove extraenous whitespace.
+ 	(xt-c920v2): Drop xtheadvdot and remove extraeonous whitespace.
+ 
+ 2025-08-26  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386.cc (ix86_vector_costs::ix86_vector_costs):
+ 	Addd new memeber m_num_reduc, m_prefer_unroll.
+ 	(ix86_vector_costs::add_stmt_cost): Set m_prefer_unroll and
+ 	m_num_reduc
+ 	(ix86_vector_costs::finish_cost): Determine
+ 	m_suggested_unroll_vector with consideration of
+ 	reduc_lat_mult_thr, m_num_reduction and
+ 	ix86_vect_unroll_limit.
+ 	* config/i386/i386.h (enum ix86_reduc_unroll_factor): New
+ 	enum.
+ 	(processor_costs): Add reduc_lat_mult_thr and
+ 	vect_unroll_limit.
+ 	* config/i386/x86-tune-costs.h: Initialize
+ 	reduc_lat_mult_thr and vect_unroll_limit.
+ 	* config/i386/i386.opt: Add -param=ix86-vect-unroll-limit.
+ 
+ 2025-08-26  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vfrdiv_vf_<mode>): Add new pattern to
+ 	combine vec_duplicate + vfdiv.vv into vfrdiv.vf.
+ 	* config/riscv/vector.md (@pred_<optab><mode>_reverse_scalar): Allow VLS
+ 	modes.
+ 
+ 2025-08-26  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/121290
+ 	* config/aarch64/aarch64.cc
+ 	(class aarch64_vector_costs ): Add m_loop_fully_scalar_dup.
+ 	(aarch64_vector_costs::add_stmt_cost): Detect invariant inner loops.
+ 	(adjust_body_cost): Adjust final costing if m_loop_fully_scalar_dup.
+ 
+ 2025-08-26  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vfmul_vf_<mode>): Add new pattern to
+ 	combine vec_duplicate + vfmul.vv into vfmul.vf.
+ 	* config/riscv/vector.md (@pred_<optab><mode>_scalar): Allow VLS modes.
+ 
+ 2025-08-26  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_arg_partial_bytes): Remove name
+ 	from unused parameter.
+ 
+ 2025-08-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vect_reduc_type): Get SLP node as argument.
+ 	* config/aarch64/aarch64.cc (aarch64_sve_in_loop_reduction_latency):
+ 	Take SLO node as argument and adjust.
+ 	(aarch64_in_loop_reduction_latency): Likewise.
+ 	(aarch64_detect_vector_stmt_subtype): Adjust.
+ 	(aarch64_vector_costs::count_ops): Likewise.  Treat reductions
+ 	during scalar costing as single-cycle.
+ 
+ 2025-08-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121659
+ 	* tree-vect-slp.cc (vect_build_slp_tree_1): Do not allow
+ 	matching up comparison operators by swapping if that would
+ 	disturb STMT_VINFO_REDUC_IDX.  Make sure to only
+ 	actually mark operands for swapping when there was a
+ 	mismatch and we're not processing the first stmt.
+ 
+ 2025-08-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-stmts.cc (vectorizable_store): Access lanes_ifn
+ 	only when VMAT_LOAD_STORE_LANES.
+ 	(vectorizable_load): Likewise.
+ 
+ 2025-08-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (stmt_vec_info_::reduc_vectype_in): Remove.
+ 	(STMT_VINFO_REDUC_VECTYPE_IN): Likewise.
+ 	* tree-vect-loop.cc (vect_is_emulated_mixed_dot_prod): Get
+ 	at the input vectype via the SLP node child.
+ 	(vectorizable_lane_reducing): Likewise.
+ 	(vect_transform_reduction): Likewise.
+ 	(vectorizable_reduction): Do not set STMT_VINFO_REDUC_VECTYPE_IN.
+ 
+ 2025-08-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/121658
+ 	* config/i386/sse.md (<insn><mode>3 any_shift): Use const0_rtx
+ 	instead of GEN_INT (0).
+ 	(cond_<insn><mode> any_shift): Likewise.  Formatting fix.
+ 	(<insn><mode>3 any_rotate): Use register_operand predicate instead of
+ 	general_operand for match_operand 1.  Use const0_rtx instead of
+ 	GEN_INT (0).
+ 	(<insn>v16qi3 any_rotate): Use force_reg on operands[1].  Formatting
+ 	fix.
+ 	* config/i386/i386.cc (ix86_shift_rotate_cost): Comment formatting
+ 	fixes.
+ 
+ 2025-08-26  Pan Li  <pan2.li@intel.com>
+ 
+ 	* config/riscv/vector.md (@pred_mul_plus_vx_<mode>): Add new pattern to
+ 	generate vmacc rtl.
+ 	(*pred_macc_<mode>_scalar_undef): Ditto.
+ 	* config/riscv/autovec-opt.md (*vmacc_vx_<mode>): Add new
+ 	pattern to match the vmacc vx combine.
+ 
+ 2025-08-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121453
+ 	* omp-expand.cc (expand_omp_for_init_counts): Clear fd->loop.n2
+ 	before first zero count check if zero_iter1_bb is non-NULL upon
+ 	entry and fd->loop.n2 has not been written yet.
+ 
+ 2025-08-25  David Faust  <david.faust@oracle.com>
+ 
+ 	PR debug/121411
+ 	* dwarf2ctf.cc (gen_ctf_subrange_type): Use unsigned HWI for
+ 	array_num_elements.  Fallback to CTF_K_UNKNOWN if the array
+ 	type has too many elements for CTF to represent.
+ 
+ 2025-08-25  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-ssa-forwprop.cc (simplify_permutation): Boolify.
+ 	(pass_forwprop::execute): No longer handle 2 as the return
+ 	from simplify_permutation.
+ 
+ 2025-08-25  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-ssa-forwprop.cc (forward_propagate_into_comparison): Boolify.
+ 	(pass_forwprop::execute): Don't handle return of 2 from
+ 	forward_propagate_into_comparison.
+ 
+ 2025-08-25  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-ssa-forwprop.cc (remove_prop_source_from_use): Remove
+ 	return type.
+ 	(forward_propagate_into_comparison): Update dealing with
+ 	no return type of remove_prop_source_from_use.
+ 	(forward_propagate_into_gimple_cond): Likewise.
+ 	(simplify_permutation): Likewise.
+ 
+ 2025-08-25  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-ssa-forwprop.cc (simplify_gimple_switch): Add simple_dce_worklist
+ 	argument. Mark the old index when doing the replacement.
+ 	(pass_forwprop::execute): Update call to simplify_gimple_switch.
+ 
+ 2025-08-25  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/121279
+ 	* gimple-fold.cc (gimple_needing_rewrite_undefined): Return
+ 	true for non mode precision boolean loads.
+ 	(rewrite_to_defined_unconditional): Handle non mode precision loads.
+ 
+ 2025-08-25  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-ssa-loop-im.cc (execute_sm): Call
+ 	get_or_create_ssa_default_def for the new uninitialized
+ 	decl.
+ 
+ 2025-08-25  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (addsi3, <u>mulhisi3, andsi3,
+ 	zero_extend<mode>si2, extendhisi2_internal, movsi_internal,
+ 	movhi_internal, movqi_internal, movsf_internal, ashlsi3_internal,
+ 	ashrsi3, lshrsi3, rotlsi3, rotrsi3):
+ 	Rewrite in compact syntax.
+ 
+ 2025-08-25  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md
+ 	(The auxiliary define_split for *masktrue_const_bitcmpl):
+ 	Use a more concise function call, i.e.,
+ 	(1 << GET_MODE_BITSIZE (mode)) - 1 is equivalent to
+ 	GET_MODE_MASK (mode).
+ 
+ 2025-08-25  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (mode_bits):
+ 	New mode attribute.
+ 	(zero_extend<mode>si2): Use the appropriate mode iterator and
+ 	attribute to unify "zero_extend[hq]isi2" to this description.
+ 
+ 2025-08-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121638
+ 	* tree-vect-stmts.cc (process_use): Do not make induction
+ 	PHI backedge values relevant.
+ 
+ 2025-08-25  Indu Bhagat  <indu.bhagat@oracle.com>
+ 	    Claudiu Zissulescu  <claudiu.zissulescu-ianculescu@oracle.com>
+ 
+ 	* asan.h (HWASAN_TAG_SIZE): Use targetm.memtag.tag_bitsize.
+ 	* config/i386/i386.cc (ix86_memtag_tag_size): Rename to
+ 	ix86_memtag_tag_bitsize.
+ 	(TARGET_MEMTAG_TAG_SIZE): Renamed to TARGET_MEMTAG_TAG_BITSIZE.
+ 	* doc/tm.texi (TARGET_MEMTAG_TAG_SIZE): Likewise.
+ 	* doc/tm.texi.in (TARGET_MEMTAG_TAG_SIZE): Likewise.
+ 	* target.def (tag_size): Rename to tag_bitsize.
+ 	* targhooks.cc (default_memtag_tag_size): Rename to
+ 	default_memtag_tag_bitsize.
+ 	* targhooks.h (default_memtag_tag_size): Likewise.
+ 
+ 2025-08-25  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv-protos.h (riscv_init_cumulative_args): Change
+ 	fntype parameter from tree to const_tree.
+ 	* config/riscv/riscv.cc (riscv_init_cumulative_args): Likewise.
+ 	(riscv_function_value): Replace with new implementation that
+ 	conforms to TARGET_FUNCTION_VALUE hook signature.
+ 	(riscv_libcall_value): New function implementing TARGET_LIBCALL_VALUE.
+ 	(TARGET_FUNCTION_VALUE): Define.
+ 	(TARGET_LIBCALL_VALUE): Define.
+ 	* config/riscv/riscv.h (FUNCTION_VALUE): Remove.
+ 	(LIBCALL_VALUE): Remove.
+ 
+ 2025-08-25  Andi Kleen  <ak@gcc.gnu.org>
+ 
+ 	* config/i386/i386-expand.cc (ix86_vgf2p8affine_shift_matrix):
+ 	New function to lookup shift/rotate matrixes for gf2p8affine.
+ 	* config/i386/i386-protos.h (ix86_vgf2p8affine_shift_matrix):
+ 	Declare new function.
+ 	* config/i386/i386.cc (ix86_shift_rotate_cost): Add cost model
+ 	for shift/rotate implemented using gf2p8affine.
+ 	* config/i386/sse.md (VI1_AVX512_3264): New mode iterator.
+ 	(<insn><mode>3): Add GFNI case for shift patterns.
+ 	(cond_<insn><mode>3): New pattern.
+ 	(<insn><mode>3<mask_name>): Dito.
+ 	(<insn>v16qi): New rotate pattern to handle XOP V16QI case
+ 	and GFNI.
+ 	(rotl<mode>3, rotr<mode>3): Exclude V16QI case.
+ 
+ 2025-08-25  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/121634
+ 	* config/loongarch/simd.md (simd_maddw_evod_<mode>_<su>): Use
+ 	WVEC_HALF instead of WVEC for the mode of the sign_extend for
+ 	the rhs of multiplication.
+ 
+ 2025-08-25  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* ifcvt.cc (noce_try_sign_bit_splat): Fix right shift computation.
+ 
  2025-08-23  Sam James  <sam@gentoo.org>
  
  	PR target/120933
diff -Nrcpad gcc-16-20250824/gcc/DATESTAMP gcc-16-20250831/gcc/DATESTAMP
*** gcc-16-20250824/gcc/DATESTAMP	Sun Aug 24 22:32:12 2025
--- gcc-16-20250831/gcc/DATESTAMP	Sun Aug 31 22:32:10 2025
***************
*** 1 ****
! 20250824
--- 1 ----
! 20250831
diff -Nrcpad gcc-16-20250824/gcc/Makefile.in gcc-16-20250831/gcc/Makefile.in
*** gcc-16-20250824/gcc/Makefile.in	Sun Aug 24 22:32:12 2025
--- gcc-16-20250831/gcc/Makefile.in	Sun Aug 31 22:32:10 2025
*************** OBJS-libcommon = \
*** 1864,1869 ****
--- 1864,1870 ----
  	diagnostics/sarif-sink.o \
  	diagnostics/text-sink.o \
  	diagnostics/lazy-paths.o \
+ 	diagnostics/logging.o \
  	diagnostics/macro-unwinding.o \
  	diagnostics/option-classifier.o \
  	diagnostics/paths.o \
diff -Nrcpad gcc-16-20250824/gcc/acinclude.m4 gcc-16-20250831/gcc/acinclude.m4
*** gcc-16-20250824/gcc/acinclude.m4	Sun Aug 24 22:32:12 2025
--- gcc-16-20250831/gcc/acinclude.m4	Sun Aug 31 22:32:10 2025
*************** AC_DEFUN([gcc_GAS_FLAGS],
*** 481,486 ****
--- 481,491 ----
      dnl Always pass -arch ppc to assembler.
      gcc_cv_as_flags="-arch ppc"
      ;;
+   amdgcn*)
+     dnl Currently, only the llvm-mc assembler is supported.
+     dnl Add flags to ensure an amdgcn ELF file is written.
+     gcc_cv_as_flags="--filetype=obj -triple=amdgcn--amdhsa"
+     ;;
    *)
      gcc_cv_as_flags=" "
      ;;
diff -Nrcpad gcc-16-20250824/gcc/analyzer/ChangeLog gcc-16-20250831/gcc/analyzer/ChangeLog
*** gcc-16-20250824/gcc/analyzer/ChangeLog	Sun Aug 24 22:32:19 2025
--- gcc-16-20250831/gcc/analyzer/ChangeLog	Sun Aug 31 22:32:11 2025
***************
*** 1,3 ****
--- 1,9 ----
+ 2025-08-29  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* pending-diagnostic.cc: Include "diagnostics/logging.h".
+ 	(diagnostic_emission_context::warn): Add logging.
+ 	(diagnostic_emission_context::inform): Likewise.
+ 
  2025-07-25  David Malcolm  <dmalcolm@redhat.com>
  
  	* program-point.cc: Make diagnostics::context::m_source_printing
diff -Nrcpad gcc-16-20250824/gcc/analyzer/pending-diagnostic.cc gcc-16-20250831/gcc/analyzer/pending-diagnostic.cc
*** gcc-16-20250824/gcc/analyzer/pending-diagnostic.cc	Sun Aug 24 22:32:19 2025
--- gcc-16-20250831/gcc/analyzer/pending-diagnostic.cc	Sun Aug 31 22:32:11 2025
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,27 ----
  #include "analyzer/common.h"
  
  #include "diagnostics/event-id.h"
+ #include "diagnostics/logging.h"
  #include "cpplib.h"
  #include "digraph.h"
  #include "ordered-hash-map.h"
*************** diagnostic_emission_context::get_pending
*** 88,93 ****
--- 89,100 ----
  bool
  diagnostic_emission_context::warn (const char *gmsgid, ...)
  {
+   auto dc_logger = global_dc->get_logger ();
+   diagnostics::logging::log_function_params
+     (dc_logger, "ana::diagnostic_emission_context::warn")
+     .log_param_string ("gmsgid", gmsgid);
+   diagnostics::logging::auto_inc_depth depth_sentinel (dc_logger);
+ 
    const pending_diagnostic &pd = get_pending_diagnostic ();
    auto_diagnostic_group d;
    va_list ap;
*************** diagnostic_emission_context::warn (const
*** 97,102 ****
--- 104,114 ----
  						   pd.get_controlling_option (),
  						   gmsgid, &ap);
    va_end (ap);
+ 
+   if (dc_logger)
+     dc_logger->log_bool_return ("ana::diagnostic_emission_context::warn",
+ 				result);
+ 
    return result;
  }
  
*************** diagnostic_emission_context::warn (const
*** 106,111 ****
--- 118,129 ----
  void
  diagnostic_emission_context::inform (const char *gmsgid, ...)
  {
+   auto dc_logger = global_dc->get_logger ();
+   diagnostics::logging::log_function_params
+     (dc_logger, "ana::diagnostic_emission_context::inform")
+     .log_param_string ("gmsgid", gmsgid);
+   diagnostics::logging::auto_inc_depth depth_sentinel (dc_logger);
+ 
    const pending_diagnostic &pd = get_pending_diagnostic ();
    auto_diagnostic_group d;
    va_list ap;
diff -Nrcpad gcc-16-20250824/gcc/asan.h gcc-16-20250831/gcc/asan.h
*** gcc-16-20250824/gcc/asan.h	Sun Aug 24 22:32:19 2025
--- gcc-16-20250831/gcc/asan.h	Sun Aug 31 22:32:11 2025
*************** extern hash_set <tree> *asan_used_labels
*** 103,109 ****
     independently here.  */
  /* How many bits are used to store a tag in a pointer.
     The default version uses the entire top byte of a pointer (i.e. 8 bits).  */
! #define HWASAN_TAG_SIZE targetm.memtag.tag_size ()
  /* Tag Granule of HWASAN shadow stack.
     This is the size in real memory that each byte in the shadow memory refers
     to.  I.e. if a variable is X bytes long in memory then its tag in shadow
--- 103,109 ----
     independently here.  */
  /* How many bits are used to store a tag in a pointer.
     The default version uses the entire top byte of a pointer (i.e. 8 bits).  */
! #define HWASAN_TAG_SIZE targetm.memtag.tag_bitsize ()
  /* Tag Granule of HWASAN shadow stack.
     This is the size in real memory that each byte in the shadow memory refers
     to.  I.e. if a variable is X bytes long in memory then its tag in shadow
diff -Nrcpad gcc-16-20250824/gcc/c/ChangeLog gcc-16-20250831/gcc/c/ChangeLog
*** gcc-16-20250824/gcc/c/ChangeLog	Sun Aug 24 22:32:19 2025
--- gcc-16-20250831/gcc/c/ChangeLog	Sun Aug 31 22:32:11 2025
***************
*** 1,3 ****
--- 1,15 ----
+ 2025-08-26  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR middle-end/118839
+ 	* c-parser.cc (c_finish_omp_declare_variant): Error if variant
+ 	is the same as base.
+ 
+ 2025-08-26  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* c-parser.cc (c_finish_omp_declare_variant): Rework diagnostic
+ 	code.  Do not record variant if there are errors.  Make check for
+ 	a missing "match" clause unconditional.
+ 
  2025-08-21  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
  
  	PR c/121478
diff -Nrcpad gcc-16-20250824/gcc/c/c-parser.cc gcc-16-20250831/gcc/c/c-parser.cc
*** gcc-16-20250824/gcc/c/c-parser.cc	Sun Aug 24 22:32:19 2025
--- gcc-16-20250831/gcc/c/c-parser.cc	Sun Aug 31 22:32:11 2025
*************** c_finish_omp_declare_variant (c_parser *
*** 27304,27309 ****
--- 27304,27333 ----
        undeclared_variable (token->location, token->value);
        variant = error_mark_node;
      }
+   else if (TREE_CODE (variant) != FUNCTION_DECL)
+     {
+       error_at (token->location, "variant %qD is not a function",
+ 		variant);
+       variant = error_mark_node;
+     }
+   else if (fndecl_built_in_p (variant)
+ 	   && (strncmp (IDENTIFIER_POINTER (DECL_NAME (variant)),
+ 			"__builtin_", strlen ("__builtin_")) == 0
+ 	       || strncmp (IDENTIFIER_POINTER (DECL_NAME (variant)),
+ 			   "__sync_", strlen ("__sync_")) == 0
+ 	       || strncmp (IDENTIFIER_POINTER (DECL_NAME (variant)),
+ 			   "__atomic_", strlen ("__atomic_")) == 0))
+     {
+       error_at (token->location, "variant %qD is a built-in",
+ 		variant);
+       variant = error_mark_node;
+     }
+   else if (variant == fndecl)
+     {
+       error_at (token->location, "variant %qD is the same as base function",
+ 		variant);
+       variant = error_mark_node;
+     }
  
    c_parser_consume_token (parser);
  
*************** c_finish_omp_declare_variant (c_parser *
*** 27377,27406 ****
  	    goto fail;
  	  ctx = omp_check_context_selector (match_loc, ctx,
  					    OMP_CTX_DECLARE_VARIANT);
- 	  if (ctx != error_mark_node && variant != error_mark_node)
- 	    {
- 	      if (TREE_CODE (variant) != FUNCTION_DECL)
- 		{
- 		  error_at (token->location, "variant %qD is not a function",
- 			    variant);
- 		  variant = error_mark_node;
- 		}
- 	      else if (fndecl_built_in_p (variant)
- 		       && (strncmp (IDENTIFIER_POINTER (DECL_NAME (variant)),
- 				    "__builtin_", strlen ("__builtin_"))
- 			     == 0
- 			   || strncmp (IDENTIFIER_POINTER (DECL_NAME (variant)),
- 				       "__sync_", strlen ("__sync_"))
- 				== 0
- 			   || strncmp (IDENTIFIER_POINTER (DECL_NAME (variant)),
- 				       "__atomic_", strlen ("__atomic_"))
- 				== 0))
- 		{
- 		  error_at (token->location, "variant %qD is a built-in",
- 			    variant);
- 		  variant = error_mark_node;
- 		}
- 	    }
  	}
        else if (ccode == adjust_args)
  	{
--- 27401,27406 ----
*************** c_finish_omp_declare_variant (c_parser *
*** 27542,27559 ****
  
        parens.require_close (parser);
    } while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL));
    c_parser_skip_to_pragma_eol (parser);
  
!   if ((ctx != error_mark_node && variant != error_mark_node)
        && !omp_get_context_selector (ctx, OMP_TRAIT_SET_CONSTRUCT,
! 				    OMP_TRAIT_CONSTRUCT_SIMD))
      {
!       bool fail = false;
!       if (append_args_tree)
  	{
  	  int nappend_args = 0;
  	  int nbase_args = 0;
! 	  for (tree t = TYPE_ARG_TYPES (TREE_TYPE (fndecl));
  	       t && TREE_VALUE (t) != void_type_node; t = TREE_CHAIN (t))
  	    nbase_args++;
  	  for (tree t = append_args_tree; t; t = TREE_CHAIN (t))
--- 27542,27605 ----
  
        parens.require_close (parser);
    } while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL));
+   if (variant != error_mark_node && !has_match)
+     {
+       c_parser_error (parser, "expected %<match%> clause");
+       variant = error_mark_node;
+     }
    c_parser_skip_to_pragma_eol (parser);
  
!   /* At this point, we have completed parsing of the pragma, now it's
!      on to error checking.  */
!   if (variant == error_mark_node || ctx == error_mark_node)
!     /* Previously diagnosed error.  */
!     return;
! 
!   if ((has_adjust_args || append_args_tree)
        && !omp_get_context_selector (ctx, OMP_TRAIT_SET_CONSTRUCT,
! 				    OMP_TRAIT_CONSTRUCT_DISPATCH))
      {
!       error_at (has_adjust_args ? adjust_args_loc : append_args_loc,
! 		"an %qs clause can only be specified if the "
! 		"%<dispatch%> selector of the %<construct%> selector "
! 		"set appears in the %<match%> clause",
! 		has_adjust_args ? "adjust_args" : "append_args");
!       return;
!     }
! 
!   if (!omp_get_context_selector (ctx, OMP_TRAIT_SET_CONSTRUCT,
! 				 OMP_TRAIT_CONSTRUCT_SIMD))
!     /* Check that the base and variant have compatible types.  */
!     {
!       tree base_type = TREE_TYPE (fndecl);
!       tree variant_type = TREE_TYPE (variant);
!       bool unprototyped_variant
! 	= (TYPE_ARG_TYPES (variant_type) == NULL_TREE
! 	   && !TYPE_NO_NAMED_ARGS_STDARG_P (variant_type));
! 
!       if (append_args_tree
! 	  && TYPE_ARG_TYPES (base_type) == NULL_TREE
! 	  && !TYPE_NO_NAMED_ARGS_STDARG_P (base_type))
  	{
+ 	  /* The base function is a pre-C23 unprototyped function.  Without
+ 	     a prototype, we don't know the offset where the append_args go.
+ 	     That offset needs to be stored with the append_args in the
+ 	     variant function attributes, so we cannot presently handle
+ 	     this case.  */
+ 	  sorry_at (append_args_loc,
+ 		    "%<append_args%> with unprototyped base function "
+ 		    "is not supported yet");
+ 	  inform (DECL_SOURCE_LOCATION (fndecl),
+ 		  "base function %qD declared here", fndecl);
+ 	  return;
+ 	}
+       else if (append_args_tree)
+ 	{
+ 	  /* Find nbase_args, the number of fixed arguments in the base
+ 	     function.  */
  	  int nappend_args = 0;
  	  int nbase_args = 0;
! 	  for (tree t = TYPE_ARG_TYPES (base_type);
  	       t && TREE_VALUE (t) != void_type_node; t = TREE_CHAIN (t))
  	    nbase_args++;
  	  for (tree t = append_args_tree; t; t = TREE_CHAIN (t))
*************** c_finish_omp_declare_variant (c_parser *
*** 27564,27698 ****
  	  append_args_tree = build_tree_list (build_int_cst (integer_type_node,
  							     nbase_args),
  					      append_args_tree);
! 	  tree args, arg;
! 	  args = arg = TYPE_ARG_TYPES (TREE_TYPE (variant));
! 	  for (int j = 0; j < nbase_args && arg; j++, arg = TREE_CHAIN (arg))
! 	    args = arg;
! 	  for (int i = 0; i < nappend_args && arg; i++)
! 	    arg = TREE_CHAIN (arg);
! 	  tree saved_args;
! 	  if (nbase_args && args)
  	    {
! 	      saved_args = TREE_CHAIN (args);
! 	      TREE_CHAIN (args) = arg;
  	    }
! 	  else
  	    {
! 	      saved_args = args;
! 	      TYPE_ARG_TYPES (TREE_TYPE (variant)) = arg;
! 	      TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (variant)) = 1;
  	    }
! 	  if (!comptypes (TREE_TYPE (fndecl), TREE_TYPE (variant)))
! 	    fail = true;
! 	  if (nbase_args && args)
! 	    TREE_CHAIN (args) = saved_args;
! 	  else
  	    {
! 	      TYPE_ARG_TYPES (TREE_TYPE (variant)) = saved_args;
! 	      TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (variant)) = 0;
  	    }
! 	  arg = saved_args;
! 	  if (!fail)
! 	    for (int i = 0; i < nappend_args; i++, arg = TREE_CHAIN (arg))
! 	      if (!arg || !c_omp_interop_t_p (TREE_VALUE (arg)))
! 		{
! 		  error_at (DECL_SOURCE_LOCATION (variant),
! 			    "argument %d of %qD must be of %<omp_interop_t%>",
! 			    nbase_args + i + 1, variant);
! 		  inform (append_args_loc, "%<append_args%> specified here");
! 		  break;
! 		}
! 	}
!       else
! 	{
! 	  if (comptypes (TREE_TYPE (fndecl), TREE_TYPE (variant)))
  	    {
! 	      if (TYPE_ARG_TYPES (TREE_TYPE (variant)) == NULL_TREE
! 		  && TYPE_ARG_TYPES (TREE_TYPE (fndecl)) != NULL_TREE)
! 		{
! 		  if (!append_args_tree)
! 		    TYPE_ARG_TYPES (TREE_TYPE (variant))
! 		      = TYPE_ARG_TYPES (TREE_TYPE (fndecl));
! 		  else
! 		    {
! 		      tree new_args = NULL_TREE;
! 		      tree arg, last_arg = NULL_TREE;
! 		      for (arg = TYPE_ARG_TYPES (TREE_TYPE (fndecl));
! 			   arg && arg != void_type_node; arg = TREE_CHAIN (arg))
! 			{
! 			  if (new_args == NULL_TREE)
! 			    new_args = last_arg = copy_node (arg);
! 			  else
! 			    {
! 			      TREE_CHAIN (last_arg) = copy_node (arg);
! 			      last_arg = TREE_CHAIN (last_arg);
! 			    }
! 			}
! 		      for (tree t3 = append_args_tree; t3; t3 = TREE_CHAIN (t3))
! 			{
! 			  tree type = lookup_name (get_identifier ("omp_interop_t"));
! 			  type = type ? TREE_TYPE (type) : ptr_type_node;
! 			  last_arg = tree_cons (NULL_TREE, type, last_arg);
! 			}
! 		      TREE_CHAIN (last_arg) = arg;
! 		      TYPE_ARG_TYPES (TREE_TYPE (variant)) = new_args;
! 		    }
! 		}
  	    }
! 	  else
! 	    fail = true;
! 	}
!       if (fail)
! 	{
! 	  error_at (token->location,
! 		    "variant %qD and base %qD have incompatible types",
! 		    variant, fndecl);
! 	  variant = error_mark_node;
  	}
!     }
!   if (ctx != error_mark_node && variant != error_mark_node)
!     {
!       C_DECL_USED (variant) = 1;
!       tree construct = omp_get_context_selector_list (ctx,
! 						      OMP_TRAIT_SET_CONSTRUCT);
!       omp_mark_declare_variant (match_loc, variant, construct);
!       if (omp_context_selector_matches (ctx, NULL_TREE, false))
  	{
! 	  tree attr = tree_cons (get_identifier ("omp declare variant base"),
! 				 build_tree_list (variant, ctx),
! 				 DECL_ATTRIBUTES (fndecl));
! 	  DECL_ATTRIBUTES (fndecl) = attr;
  	}
      }
  
!   if (has_adjust_args || append_args_tree)
      {
!       if (!has_match)
! 	{
! 	  error_at (has_adjust_args ? adjust_args_loc : append_args_loc,
! 		    "an %qs clause requires a %<match%> clause",
! 		    has_adjust_args ? "adjust_args" : "append_args");
! 	}
!       else if (ctx != error_mark_node && variant != error_mark_node)
! 	{
! 	  tree attr = lookup_attribute ("omp declare variant base",
! 					DECL_ATTRIBUTES (fndecl));
! 	  if (attr != NULL_TREE)
! 	    {
! 	      tree ctx = TREE_VALUE (TREE_VALUE (attr));
! 	      if (!omp_get_context_selector (ctx, OMP_TRAIT_SET_CONSTRUCT,
! 					     OMP_TRAIT_CONSTRUCT_DISPATCH))
! 		error_at (has_adjust_args ? adjust_args_loc : append_args_loc,
! 			  "an %qs clause can only be specified if the "
! 			  "%<dispatch%> selector of the %<construct%> selector "
! 			  "set appears in the %<match%> clause",
! 			  has_adjust_args ? "adjust_args" : "append_args");
! 	    }
! 	}
      }
  
!   if ((ctx != error_mark_node && variant != error_mark_node)
!       && (need_device_ptr_list || append_args_tree))
      {
        tree variant_decl = tree_strip_nop_conversions (variant);
        tree t = build_tree_list (need_device_ptr_list,
--- 27610,27726 ----
  	  append_args_tree = build_tree_list (build_int_cst (integer_type_node,
  							     nbase_args),
  					      append_args_tree);
! 
! 	  /* Give a specific diagnostic if the append_args parameters
! 	     of the variant are of the wrong type, or missing.  The
! 	     compatible types test below could fail to detect this if
! 	     the variant is a varargs function.  */
! 	  if (!unprototyped_variant)
  	    {
! 	      tree args = TYPE_ARG_TYPES (variant_type);
! 	      for (int i = 0; args && i < nbase_args;
! 		   i++, args = TREE_CHAIN (args))
! 		;
! 	      for (int i = 0; i < nappend_args; i++, args = TREE_CHAIN (args))
! 		if (!args || !c_omp_interop_t_p (TREE_VALUE (args)))
! 		  {
! 		    error_at (DECL_SOURCE_LOCATION (variant),
! 			      "argument %d of %qD must be of "
! 			      "%<omp_interop_t%>",
! 			      nbase_args + i + 1, variant);
! 		    inform (append_args_loc,
! 			    "%<append_args%> specified here");
! 		    return;
! 		  }
  	    }
! 
! 	  /* Perform the "implementation defined transformation" on the type
! 	     of the base function to add the append_args before checking it
! 	     for compatibility with the function variant's type.  */
! 	  tree args = TYPE_ARG_TYPES (base_type);
! 	  tree newargs = NULL_TREE;
! 	  tree lastarg = NULL_TREE;
! 	  for (int j = 0; j < nbase_args; j++, args = TREE_CHAIN (args))
  	    {
! 	      tree t = tree_cons (TREE_PURPOSE (args),
! 				  TREE_VALUE (args), NULL_TREE);
! 	      if (lastarg)
! 		TREE_CHAIN (lastarg) = t;
! 	      else
! 		newargs = t;
! 	      lastarg = t;
  	    }
! 	  tree type = lookup_name (get_identifier ("omp_interop_t"));
! 	  type = type ? TREE_TYPE (type) : pointer_sized_int_node;
! 	  for (int j = 0; j < nappend_args; j++)
  	    {
! 	      tree t = tree_cons (NULL_TREE, type, NULL_TREE);
! 	      if (lastarg)
! 		TREE_CHAIN (lastarg) = t;
! 	      else
! 		newargs = t;
! 	      lastarg = t;
  	    }
! 	  TREE_CHAIN (lastarg) = args;
! 
! 	  /* Temporarily stuff newargs into the original base_type.  */
! 	  tree saveargs = TYPE_ARG_TYPES (base_type);
! 	  TYPE_ARG_TYPES (base_type) = newargs;
! 	  bool fail = !comptypes (base_type, variant_type);
! 	  TYPE_ARG_TYPES (base_type) = saveargs;
! 
! 	  if (fail)
  	    {
! 	      error_at (token->location,
! 			"variant %qD and base %qD have incompatible types "
! 			"after %<append_args%> adjustment",
! 			variant, fndecl);
! 	      inform (DECL_SOURCE_LOCATION (variant),
! 		      "%<declare variant%> candidate %qD declared here",
! 		      variant);
! 	      return;
  	    }
! 	  else if (unprototyped_variant)
! 	    /* If we've got an unprototyped variant, copy the transformed
! 	       base arg types to the variant.  This is needed later by
! 	       modify_call_for_omp_dispatch.  */
! 	    TYPE_ARG_TYPES (variant_type) = newargs;
  	}
!       else  /* No append_args present.  */
  	{
! 	  if (!comptypes (base_type, variant_type))
! 	    {
! 	      error_at (token->location,
! 			"variant %qD and base %qD have incompatible types",
! 			variant, fndecl);
! 	      inform (DECL_SOURCE_LOCATION (variant),
! 		      "%<declare variant%> candidate %qD declared here",
! 		      variant);
! 	      return;
! 	    }
! 	  else if (TYPE_ARG_TYPES (variant_type) == NULL_TREE
! 		   && !TYPE_NO_NAMED_ARGS_STDARG_P (variant_type)
! 		   && TYPE_ARG_TYPES (base_type) != NULL_TREE)
! 	    /* If we've got an unprototyped variant but the base has
! 	       a prototype, copy the base arg types to the variant.  */
! 	    TYPE_ARG_TYPES (variant_type) = TYPE_ARG_TYPES (base_type);
  	}
      }
  
!   /* If we made it here, store the parsed information.  */
!   C_DECL_USED (variant) = 1;
!   tree construct = omp_get_context_selector_list (ctx,
! 						  OMP_TRAIT_SET_CONSTRUCT);
!   omp_mark_declare_variant (match_loc, variant, construct);
!   if (omp_context_selector_matches (ctx, NULL_TREE, false))
      {
!       tree attr = tree_cons (get_identifier ("omp declare variant base"),
! 			     build_tree_list (variant, ctx),
! 			     DECL_ATTRIBUTES (fndecl));
!       DECL_ATTRIBUTES (fndecl) = attr;
      }
  
!   if (need_device_ptr_list || append_args_tree)
      {
        tree variant_decl = tree_strip_nop_conversions (variant);
        tree t = build_tree_list (need_device_ptr_list,
diff -Nrcpad gcc-16-20250824/gcc/c-family/ChangeLog gcc-16-20250831/gcc/c-family/ChangeLog
*** gcc-16-20250824/gcc/c-family/ChangeLog	Sun Aug 24 22:32:19 2025
--- gcc-16-20250831/gcc/c-family/ChangeLog	Sun Aug 31 22:32:11 2025
***************
*** 1,3 ****
--- 1,11 ----
+ 2025-08-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/121520
+ 	* c-cppbuiltin.cc (c_cpp_builtins): Properly call cpp_warn
+ 	for __STDCPP_FLOAT<NN>_T__ if FLOATN_NX_TYPE_NODE (i) is NULL
+ 	for C++23 for non-extended types and don't call cpp_warn for
+ 	extended types.
+ 
  2025-08-18  Indu Bhagat  <indu.bhagat@oracle.com>
  
  	* c-attribs.cc (add_no_sanitize_value): Use 'sanitize_code_type'
diff -Nrcpad gcc-16-20250824/gcc/c-family/c-cppbuiltin.cc gcc-16-20250831/gcc/c-family/c-cppbuiltin.cc
*** gcc-16-20250824/gcc/c-family/c-cppbuiltin.cc	Sun Aug 24 22:32:19 2025
--- gcc-16-20250831/gcc/c-family/c-cppbuiltin.cc	Sun Aug 31 22:32:11 2025
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1327,1348 ****
  
    for (int i = 0; i < NUM_FLOATN_NX_TYPES; i++)
      {
-       if (FLOATN_NX_TYPE_NODE (i) == NULL_TREE)
- 	continue;
        if (c_dialect_cxx ()
  	  && cxx_dialect > cxx20
  	  && !floatn_nx_types[i].extended)
  	{
  	  char name[sizeof ("__STDCPP_FLOAT128_T__=1")];
  	  sprintf (name, "__STDCPP_FLOAT%d_T__=1", floatn_nx_types[i].n);
  	  cpp_define_warn (pfile, name);
  	}
!       else if (cxx_dialect >= cxx23)
! 	{
! 	  char name[sizeof ("__STDCPP_FLOAT128_T__")];
! 	  sprintf (name, "__STDCPP_FLOAT%d_T__", floatn_nx_types[i].n);
! 	  cpp_warn (pfile, name);
! 	}
        char prefix[20], csuffix[20];
        sprintf (prefix, "FLT%d%s", floatn_nx_types[i].n,
  	       floatn_nx_types[i].extended ? "X" : "");
--- 1327,1348 ----
  
    for (int i = 0; i < NUM_FLOATN_NX_TYPES; i++)
      {
        if (c_dialect_cxx ()
  	  && cxx_dialect > cxx20
  	  && !floatn_nx_types[i].extended)
  	{
  	  char name[sizeof ("__STDCPP_FLOAT128_T__=1")];
+ 	  if (FLOATN_NX_TYPE_NODE (i) == NULL_TREE)
+ 	    {
+ 	      sprintf (name, "__STDCPP_FLOAT%d_T__", floatn_nx_types[i].n);
+ 	      cpp_warn (pfile, name);
+ 	      continue;
+ 	    }
  	  sprintf (name, "__STDCPP_FLOAT%d_T__=1", floatn_nx_types[i].n);
  	  cpp_define_warn (pfile, name);
  	}
!       else if (FLOATN_NX_TYPE_NODE (i) == NULL_TREE)
! 	continue;
        char prefix[20], csuffix[20];
        sprintf (prefix, "FLT%d%s", floatn_nx_types[i].n,
  	       floatn_nx_types[i].extended ? "X" : "");
diff -Nrcpad gcc-16-20250824/gcc/config/aarch64/aarch64.cc gcc-16-20250831/gcc/config/aarch64/aarch64.cc
*** gcc-16-20250824/gcc/config/aarch64/aarch64.cc	Sun Aug 24 22:32:19 2025
--- gcc-16-20250831/gcc/config/aarch64/aarch64.cc	Sun Aug 31 22:32:11 2025
*************** private:
*** 17057,17062 ****
--- 17057,17070 ----
       or vector loop.  There is one entry for each tuning option of
       interest.  */
    auto_vec<aarch64_vec_op_count, 2> m_ops;
+ 
+   /* When doing inner-loop vectorization the constraints on the data-refs in the
+      outer-loop could limit the inner loop references.  i.e. the outerloop can
+      force the inner-loop to do a load and splat which will result in the loop
+      being entirely scalar as all lanes work on a duplicate.  Currently we don't
+      support unrolling of the inner loop independently from the outerloop during
+      outer-loop vectorization which tends to lead to pipeline bubbles.  */
+   bool m_loop_fully_scalar_dup = false;
  };
  
  aarch64_vector_costs::aarch64_vector_costs (vec_info *vinfo,
*************** aarch64_bool_compound_p (vec_info *vinfo
*** 17420,17429 ****
     instructions.  */
  static unsigned int
  aarch64_sve_in_loop_reduction_latency (vec_info *vinfo,
  				       stmt_vec_info stmt_info,
  				       const sve_vec_cost *sve_costs)
  {
!   switch (vect_reduc_type (vinfo, stmt_info))
      {
      case EXTRACT_LAST_REDUCTION:
        return sve_costs->clast_cost;
--- 17428,17438 ----
     instructions.  */
  static unsigned int
  aarch64_sve_in_loop_reduction_latency (vec_info *vinfo,
+ 				       slp_tree node,
  				       stmt_vec_info stmt_info,
  				       const sve_vec_cost *sve_costs)
  {
!   switch (vect_reduc_type (vinfo, node))
      {
      case EXTRACT_LAST_REDUCTION:
        return sve_costs->clast_cost;
*************** aarch64_sve_in_loop_reduction_latency (v
*** 17463,17469 ****
     - If VEC_FLAGS & VEC_ANY_SVE, return the loop carry latency of the
       SVE implementation.  */
  static unsigned int
! aarch64_in_loop_reduction_latency (vec_info *vinfo, stmt_vec_info stmt_info,
  				   unsigned int vec_flags)
  {
    const cpu_vector_cost *vec_costs = aarch64_tune_params.vec_costs;
--- 17472,17480 ----
     - If VEC_FLAGS & VEC_ANY_SVE, return the loop carry latency of the
       SVE implementation.  */
  static unsigned int
! aarch64_in_loop_reduction_latency (vec_info *vinfo,
! 				   slp_tree node,
! 				   stmt_vec_info stmt_info,
  				   unsigned int vec_flags)
  {
    const cpu_vector_cost *vec_costs = aarch64_tune_params.vec_costs;
*************** aarch64_in_loop_reduction_latency (vec_i
*** 17476,17482 ****
    if (sve_costs)
      {
        unsigned int latency
! 	= aarch64_sve_in_loop_reduction_latency (vinfo, stmt_info, sve_costs);
        if (latency)
  	return latency;
      }
--- 17487,17494 ----
    if (sve_costs)
      {
        unsigned int latency
! 	= aarch64_sve_in_loop_reduction_latency (vinfo, node,
! 						 stmt_info, sve_costs);
        if (latency)
  	return latency;
      }
*************** aarch64_detect_vector_stmt_subtype (vec_
*** 17575,17581 ****
        && sve_costs)
      {
        unsigned int latency
! 	= aarch64_sve_in_loop_reduction_latency (vinfo, stmt_info, sve_costs);
        if (latency)
  	return latency;
      }
--- 17587,17594 ----
        && sve_costs)
      {
        unsigned int latency
! 	= aarch64_sve_in_loop_reduction_latency (vinfo, node,
! 						 stmt_info, sve_costs);
        if (latency)
  	return latency;
      }
*************** aarch64_vector_costs::count_ops (unsigne
*** 17787,17794 ****
        && vect_is_reduction (stmt_info))
      {
        unsigned int base
! 	= aarch64_in_loop_reduction_latency (m_vinfo, stmt_info, m_vec_flags);
!       if (aarch64_force_single_cycle (m_vinfo, stmt_info))
  	/* ??? Ideally we'd use a tree to reduce the copies down to 1 vector,
  	   and then accumulate that, but at the moment the loop-carried
  	   dependency includes all copies.  */
--- 17800,17809 ----
        && vect_is_reduction (stmt_info))
      {
        unsigned int base
! 	= aarch64_in_loop_reduction_latency (m_vinfo, node,
! 					     stmt_info, m_vec_flags);
!       if (m_costing_for_scalar
! 	  || aarch64_force_single_cycle (m_vinfo, stmt_info))
  	/* ??? Ideally we'd use a tree to reduce the copies down to 1 vector,
  	   and then accumulate that, but at the moment the loop-carried
  	   dependency includes all copies.  */
*************** aarch64_vector_costs::count_ops (unsigne
*** 17901,17907 ****
       have only accounted for one.  */
    if (stmt_info
        && (kind == vector_stmt || kind == vec_to_scalar)
!       && vect_reduc_type (m_vinfo, stmt_info) == COND_REDUCTION)
      ops->general_ops += count;
  
    /* Count the predicate operations needed by an SVE comparison.  */
--- 17916,17922 ----
       have only accounted for one.  */
    if (stmt_info
        && (kind == vector_stmt || kind == vec_to_scalar)
!       && vect_reduc_type (m_vinfo, node) == COND_REDUCTION)
      ops->general_ops += count;
  
    /* Count the predicate operations needed by an SVE comparison.  */
*************** aarch64_vector_costs::add_stmt_cost (int
*** 18072,18077 ****
--- 18087,18114 ----
  	analyze_loop_vinfo (loop_vinfo);
  
        m_analyzed_vinfo = true;
+       if (in_inner_loop_p)
+ 	m_loop_fully_scalar_dup = true;
+     }
+ 
+   /* Detect whether the loop is working on fully duplicated lanes.  This would
+      only be possible with inner loop vectorization since otherwise we wouldn't
+      try to vectorize.  */
+   if (in_inner_loop_p
+       && node
+       && m_loop_fully_scalar_dup
+       && SLP_TREE_LANES (node) == 1
+       && !SLP_TREE_CHILDREN (node).exists ())
+     {
+       /* Check if load is a duplicate.  */
+       if (gimple_vuse (stmt_info->stmt)
+ 	  && SLP_TREE_MEMORY_ACCESS_TYPE (node) == VMAT_INVARIANT)
+ 	;
+       else if (SLP_TREE_DEF_TYPE (node) == vect_constant_def
+ 	       || SLP_TREE_DEF_TYPE (node) == vect_external_def)
+ 	;
+       else
+ 	m_loop_fully_scalar_dup = false;
      }
  
    /* Apply the heuristic described above m_stp_sequence_cost.  */
*************** adjust_body_cost (loop_vec_info loop_vin
*** 18438,18445 ****
    if (m_vec_flags & VEC_ANY_SVE)
      threshold = CEIL (threshold, aarch64_estimated_sve_vq ());
  
!   if (m_num_vector_iterations >= 1
!       && m_num_vector_iterations < threshold)
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_NOTE, vect_location,
--- 18475,18493 ----
    if (m_vec_flags & VEC_ANY_SVE)
      threshold = CEIL (threshold, aarch64_estimated_sve_vq ());
  
!   /* Increase the cost of the vector code if it looks like the vector code has
!      limited throughput due to outer-loop vectorization.  */
!   if (m_loop_fully_scalar_dup)
!     {
!       body_cost *= estimated_vf;
!       if (dump_enabled_p ())
! 	dump_printf_loc (MSG_NOTE, vect_location,
! 			 "Increasing body cost to %d because vector code has"
! 			 " low throughput of per iteration due to splats\n",
! 			 body_cost);
!     }
!   else if (m_num_vector_iterations >= 1
! 	   && m_num_vector_iterations < threshold)
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_NOTE, vect_location,
*************** aarch64_expand_reversed_crc_using_pmull
*** 31878,31884 ****
  
  /* Expand the spaceship optab for floating-point operands.
  
!    If the result is compared against (-1, 0, 1 , 2), expand into
     fcmpe + conditional branch insns.
  
     Otherwise (the result is just stored as an integer), expand into
--- 31926,31932 ----
  
  /* Expand the spaceship optab for floating-point operands.
  
!    If the result is compared against (-1, 0, 1, -128), expand into
     fcmpe + conditional branch insns.
  
     Otherwise (the result is just stored as an integer), expand into
*************** aarch64_expand_fp_spaceship (rtx dest, r
*** 31917,31923 ****
        emit_jump (end_label);
  
        emit_label (un_label);
!       emit_move_insn (dest, const2_rtx);
        emit_jump (end_label);
  
        emit_label (gt_label);
--- 31965,31971 ----
        emit_jump (end_label);
  
        emit_label (un_label);
!       emit_move_insn (dest, GEN_INT (-128));
        emit_jump (end_label);
  
        emit_label (gt_label);
diff -Nrcpad gcc-16-20250824/gcc/config/aarch64/aarch64.md gcc-16-20250831/gcc/config/aarch64/aarch64.md
*** gcc-16-20250824/gcc/config/aarch64/aarch64.md	Sun Aug 24 22:32:19 2025
--- gcc-16-20250831/gcc/config/aarch64/aarch64.md	Sun Aug 31 22:32:11 2025
***************
*** 4507,4513 ****
    [(set_attr "type" "fcmp<stype>")]
  )
  
! (define_insn "*cmp_swp_<shift>_reg<mode>"
    [(set (reg:CC_SWP CC_REGNUM)
  	(compare:CC_SWP (ASHIFT:GPI
  			 (match_operand:GPI 0 "register_operand" "r")
--- 4507,4513 ----
    [(set_attr "type" "fcmp<stype>")]
  )
  
! (define_insn "cmp_swp_<shift>_reg<mode>"
    [(set (reg:CC_SWP CC_REGNUM)
  	(compare:CC_SWP (ASHIFT:GPI
  			 (match_operand:GPI 0 "register_operand" "r")
***************
*** 7689,7694 ****
--- 7689,7710 ----
    DONE;
  }
  )
+ 
+ (define_expand "isinf<mode>2"
+  [(match_operand:SI 0 "register_operand")
+   (match_operand:GPF 1 "register_operand")]
+  "TARGET_FLOAT"
+ {
+   rtx op = force_lowpart_subreg (<V_INT_EQUIV>mode, operands[1], <MODE>mode);
+   rtx tmp = gen_reg_rtx (<V_INT_EQUIV>mode);
+   emit_move_insn (tmp, GEN_INT (HOST_WIDE_INT_M1U << (<mantissa_bits> + 1)));
+   rtx cc_reg = gen_rtx_REG (CC_SWPmode, CC_REGNUM);
+   emit_insn (gen_cmp_swp_lsl_reg<v_int_equiv> (op, GEN_INT (1), tmp));
+   rtx cmp = gen_rtx_fmt_ee (EQ, SImode, cc_reg, const0_rtx);
+   emit_insn (gen_aarch64_cstoresi (operands[0], cmp, cc_reg));
+   DONE;
+ }
+ )
  
  ;; -------------------------------------------------------------------
  ;; Reload support
diff -Nrcpad gcc-16-20250824/gcc/config/aarch64/iterators.md gcc-16-20250831/gcc/config/aarch64/iterators.md
*** gcc-16-20250824/gcc/config/aarch64/iterators.md	Sun Aug 24 22:32:19 2025
--- gcc-16-20250831/gcc/config/aarch64/iterators.md	Sun Aug 31 22:32:11 2025
***************
*** 1340,1345 ****
--- 1340,1347 ----
  
  (define_mode_attr half_mask [(HI "255") (SI "65535") (DI "4294967295")])
  
+ (define_mode_attr mantissa_bits [(SF "23") (DF "52")])
+ 
  ;; For constraints used in scalar immediate vector moves
  (define_mode_attr hq [(HI "h") (QI "q")])
  
diff -Nrcpad gcc-16-20250824/gcc/config/i386/i386-expand.cc gcc-16-20250831/gcc/config/i386/i386-expand.cc
*** gcc-16-20250824/gcc/config/i386/i386-expand.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/i386/i386-expand.cc	Sun Aug 31 22:32:11 2025
*************** ix86_expand_setcc (rtx dest, enum rtx_co
*** 3151,3157 ****
  }
  
  /* Expand floating point op0 <=> op1, i.e.
!    dest = op0 == op1 ? 0 : op0 < op1 ? -1 : op0 > op1 ? 1 : 2.  */
  
  void
  ix86_expand_fp_spaceship (rtx dest, rtx op0, rtx op1, rtx op2)
--- 3151,3157 ----
  }
  
  /* Expand floating point op0 <=> op1, i.e.
!    dest = op0 == op1 ? 0 : op0 < op1 ? -1 : op0 > op1 ? 1 : -128.  */
  
  void
  ix86_expand_fp_spaceship (rtx dest, rtx op0, rtx op1, rtx op2)
*************** ix86_expand_fp_spaceship (rtx dest, rtx
*** 3264,3270 ****
    if (l2)
      {
        emit_label (l2);
!       emit_move_insn (dest, op2 == const0_rtx ? const2_rtx : op2);
      }
    emit_label (lend);
  }
--- 3264,3270 ----
    if (l2)
      {
        emit_label (l2);
!       emit_move_insn (dest, op2 == const0_rtx ? GEN_INT (-128) : op2);
      }
    emit_label (lend);
  }
*************** expand_cpymem_epilogue (rtx destmem, rtx
*** 8241,8248 ****
--- 8241,8250 ----
        unsigned HOST_WIDE_INT countval = UINTVAL (count);
        unsigned HOST_WIDE_INT epilogue_size = countval % max_size;
        unsigned int destalign = MEM_ALIGN (destmem);
+       cfun->machine->by_pieces_in_use = true;
        move_by_pieces (destmem, srcmem, epilogue_size, destalign,
  		      RETURN_BEGIN);
+       cfun->machine->by_pieces_in_use = false;
        return;
      }
    if (max_size > 8)
*************** expand_setmem_epilogue_via_loop (rtx des
*** 8405,8412 ****
  
  /* Callback routine for store_by_pieces.  Return the RTL of a register
     containing GET_MODE_SIZE (MODE) bytes in the RTL register op_p which
!    is a word or a word vector register.  If PREV_P isn't nullptr, it
!    has the RTL info from the previous iteration.  */
  
  static rtx
  setmem_epilogue_gen_val (void *op_p, void *prev_p, HOST_WIDE_INT,
--- 8407,8414 ----
  
  /* Callback routine for store_by_pieces.  Return the RTL of a register
     containing GET_MODE_SIZE (MODE) bytes in the RTL register op_p which
!    is an integer or a word vector register.  If PREV_P isn't nullptr,
!    it has the RTL info from the previous iteration.  */
  
  static rtx
  setmem_epilogue_gen_val (void *op_p, void *prev_p, HOST_WIDE_INT,
*************** setmem_epilogue_gen_val (void *op_p, voi
*** 8435,8444 ****
    rtx op = (rtx) op_p;
    machine_mode op_mode = GET_MODE (op);
  
-   gcc_assert (op_mode == word_mode
- 	      || (VECTOR_MODE_P (op_mode)
- 		  && GET_MODE_INNER (op_mode) == word_mode));
- 
    if (VECTOR_MODE_P (mode))
      {
        gcc_assert (GET_MODE_INNER (mode) == QImode);
--- 8437,8442 ----
*************** setmem_epilogue_gen_val (void *op_p, voi
*** 8460,8475 ****
        return tmp;
      }
  
-   target = gen_reg_rtx (word_mode);
    if (VECTOR_MODE_P (op_mode))
      {
        op = gen_rtx_SUBREG (word_mode, op, 0);
        emit_move_insn (target, op);
      }
    else
      target = op;
  
!   if (mode == word_mode)
      return target;
  
    rtx tmp = gen_reg_rtx (mode);
--- 8458,8474 ----
        return tmp;
      }
  
    if (VECTOR_MODE_P (op_mode))
      {
+       gcc_assert (GET_MODE_INNER (op_mode) == word_mode);
+       target = gen_reg_rtx (word_mode);
        op = gen_rtx_SUBREG (word_mode, op, 0);
        emit_move_insn (target, op);
      }
    else
      target = op;
  
!   if (mode == GET_MODE (target))
      return target;
  
    rtx tmp = gen_reg_rtx (mode);
*************** expand_setmem_epilogue (rtx destmem, rtx
*** 8490,8498 ****
--- 8489,8499 ----
        unsigned HOST_WIDE_INT countval = UINTVAL (count);
        unsigned HOST_WIDE_INT epilogue_size = countval % max_size;
        unsigned int destalign = MEM_ALIGN (destmem);
+       cfun->machine->by_pieces_in_use = true;
        store_by_pieces (destmem, epilogue_size, setmem_epilogue_gen_val,
  		       vec_value ? vec_value : value, destalign, true,
  		       RETURN_BEGIN);
+       cfun->machine->by_pieces_in_use = false;
        return;
      }
    if (max_size > 32)
*************** ix86_expand_ternlog (machine_mode mode,
*** 27034,27039 ****
--- 27035,27143 ----
    return target;
  }
  
+ /* GF2P8AFFINEQB matrixes to implement shift and rotate.  */
+ 
+ static const uint64_t matrix_ashift[8] =
+ {
+   0,
+   0x0001020408102040, /* 1 l */
+   0x0000010204081020, /* 2 l */
+   0x0000000102040810, /* 3 l */
+   0x0000000001020408, /* 4 l */
+   0x0000000000010204, /* 5 l */
+   0x0000000000000102, /* 6 l */
+   0x0000000000000001  /* 7 l */
+ };
+ 
+ static const uint64_t matrix_lshiftrt[8] =
+ {
+   0,
+   0x0204081020408000, /* 1 r */
+   0x0408102040800000, /* 2 r */
+   0x0810204080000000, /* 3 r */
+   0x1020408000000000, /* 4 r */
+   0x2040800000000000, /* 5 r */
+   0x4080000000000000, /* 6 r */
+   0x8000000000000000  /* 7 r */
+ };
+ 
+ static const uint64_t matrix_ashiftrt[8] =
+ {
+   0,
+   0x0204081020408080, /* 1 r */
+   0x0408102040808080, /* 2 r */
+   0x0810204080808080, /* 3 r */
+   0x1020408080808080, /* 4 r */
+   0x2040808080808080, /* 5 r */
+   0x4080808080808080, /* 6 r */
+   0x8080808080808080  /* 7 r */
+ };
+ 
+ static const uint64_t matrix_rotate[8] =
+ {
+   0,
+   0x8001020408102040, /* 1 rol8 */
+   0x4080010204081020, /* 2 rol8 */
+   0x2040800102040810, /* 3 rol8 */
+   0x1020408001020408, /* 4 rol8 */
+   0x0810204080010204, /* 5 rol8 */
+   0x0408102040800102, /* 6 rol8 */
+   0x0204081020408001  /* 7 rol8 */
+ };
+ 
+ static const uint64_t matrix_rotatert[8] =
+ {
+   0,
+   0x0204081020408001, /* 1 ror8 */
+   0x0408102040800102, /* 2 ror8 */
+   0x0810204080010204, /* 3 ror8 */
+   0x1020408001020408, /* 4 ror8 */
+   0x2040800102040810, /* 5 ror8 */
+   0x4080010204081020, /* 6 ror8 */
+   0x8001020408102040  /* 7 ror8 */
+ };
+ 
+ /* Return rtx to load a 64bit GF2P8AFFINE GP(2) matrix implementing a shift
+    for CODE and shift count COUNT into register with vector of size of SRC.  */
+ 
+ rtx
+ ix86_vgf2p8affine_shift_matrix (rtx src, rtx count, enum rtx_code code)
+ {
+   machine_mode mode = GET_MODE (src);
+   const uint64_t *matrix;
+   unsigned shift = INTVAL (count) & 7;
+   gcc_assert (shift > 0 && shift < 8);
+ 
+   switch (code)
+     {
+     case ASHIFT:
+       matrix = matrix_ashift;
+       break;
+     case ASHIFTRT:
+       matrix = matrix_ashiftrt;
+       break;
+     case LSHIFTRT:
+       matrix = matrix_lshiftrt;
+       break;
+     case ROTATE:
+       matrix = matrix_rotate;
+       break;
+     case ROTATERT:
+       matrix = matrix_rotatert;
+       break;
+     default:
+       gcc_unreachable ();
+     }
+ 
+   int nelts = GET_MODE_NUNITS (mode);
+   rtvec vec = rtvec_alloc (nelts);
+   uint64_t ma = matrix[shift];
+   for (int i = 0; i < nelts; i++)
+     RTVEC_ELT (vec, i) = gen_int_mode ((ma >> ((i % 8) * 8)) & 0xff, QImode);
+ 
+   return force_reg (mode, gen_rtx_CONST_VECTOR (mode, vec));
+ }
+ 
  /* Trunc a vector to a narrow vector, like v4di -> v4si.  */
  
  void
diff -Nrcpad gcc-16-20250824/gcc/config/i386/i386-features.cc gcc-16-20250831/gcc/config/i386/i386-features.cc
*** gcc-16-20250824/gcc/config/i386/i386-features.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/i386/i386-features.cc	Sun Aug 31 22:32:11 2025
*************** struct redundant_pattern
*** 3103,3108 ****
--- 3103,3110 ----
    auto_bitmap insns;
    /* The broadcast inner scalar.  */
    rtx val;
+   /* The actual redundant source value for UNSPEC_TLSDESC.  */
+   rtx tlsdesc_val;
    /* The inner scalar mode.  */
    machine_mode mode;
    /* The instruction which sets the inner scalar.  Nullptr if the inner
*************** ix86_emit_tls_call (rtx tls_set, x86_cse
*** 3806,3815 ****
  		 (code_label 78 11 77 3 14 (nil) [1 uses])
  		 (note 77 78 54 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
  
  	       */
! 	      gcc_assert (NOTE_P (insn)
! 			  && (NOTE_KIND (insn) == NOTE_INSN_FUNCTION_BEG
! 			      || NOTE_KIND (insn) == NOTE_INSN_BASIC_BLOCK));
  	      insn = NULL;
  	      break;
  	    }
--- 3808,3826 ----
  		 (code_label 78 11 77 3 14 (nil) [1 uses])
  		 (note 77 78 54 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
  
+ 		 or a basic block with only a debug marker:
+ 
+ 		 (note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ 		 (note 2 3 5 2 NOTE_INSN_FUNCTION_BEG)
+ 		 (debug_insn 5 2 16 2 (debug_marker) "x.c":6:3 -1 (nil))
+ 
  	       */
! 	      gcc_assert (DEBUG_INSN_P (insn)
! 			  || (NOTE_P (insn)
! 			      && ((NOTE_KIND (insn)
! 				   == NOTE_INSN_FUNCTION_BEG)
! 				  || (NOTE_KIND (insn)
! 				      == NOTE_INSN_BASIC_BLOCK))));
  	      insn = NULL;
  	      break;
  	    }
*************** ix86_emit_tls_call (rtx tls_set, x86_cse
*** 3854,3865 ****
  		 (note 4 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
  		 (note 2 4 26 2 NOTE_INSN_FUNCTION_BEG)
  
! 		 or after NOTE_INSN_BASIC_BLOCK a basic block with only
! 		 a label:
  
  		 (code_label 78 11 77 3 14 (nil) [1 uses])
  		 (note 77 78 54 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
  
  	       */
  	      insn = insn ? PREV_INSN (insn) : BB_END (bb);
  	      *after_p = insn;
--- 3865,3883 ----
  		 (note 4 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
  		 (note 2 4 26 2 NOTE_INSN_FUNCTION_BEG)
  
! 		 or after NOTE_INSN_BASIC_BLOCK in a basic block with
! 		 only a label:
  
  		 (code_label 78 11 77 3 14 (nil) [1 uses])
  		 (note 77 78 54 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
  
+ 		 or after debug marker in a basic block with only a
+ 		 debug marker:
+ 
+ 		 (note 3 0 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
+ 		 (note 2 3 5 2 NOTE_INSN_FUNCTION_BEG)
+ 		 (debug_insn 5 2 16 2 (debug_marker) "x.c":6:3 -1 (nil))
+ 
  	       */
  	      insn = insn ? PREV_INSN (insn) : BB_END (bb);
  	      *after_p = insn;
*************** public:
*** 4139,4144 ****
--- 4157,4164 ----
  private:
    /* The redundant source value.  */
    rtx val;
+   /* The actual redundant source value for UNSPEC_TLSDESC.  */
+   rtx tlsdesc_val;
    /* The instruction which defines the redundant value.  */
    rtx_insn *def_insn;
    /* Mode of the destination of the candidate redundant instruction.  */
*************** private:
*** 4152,4159 ****
--- 4172,4207 ----
    bool candidate_gnu_tls_p (rtx_insn *, attr_tls64);
    bool candidate_gnu2_tls_p (rtx, attr_tls64);
    bool candidate_vector_p (rtx);
+   rtx_insn *tls_set_insn_from_symbol (const_rtx, const_rtx);
  }; // class pass_x86_cse
  
+ /* Return the instruction which sets REG from TLS_SYMBOL.  */
+ 
+ rtx_insn *
+ pass_x86_cse::tls_set_insn_from_symbol (const_rtx reg,
+ 					const_rtx tls_symbol)
+ {
+   rtx_insn *set_insn = nullptr;
+   for (df_ref ref = DF_REG_DEF_CHAIN (REGNO (reg));
+        ref;
+        ref = DF_REF_NEXT_REG (ref))
+     {
+       if (DF_REF_IS_ARTIFICIAL (ref))
+ 	return nullptr;
+ 
+       set_insn = DF_REF_INSN (ref);
+       if (get_attr_tls64 (set_insn) != TLS64_LEA)
+ 	return nullptr;
+ 
+       rtx tls_set = PATTERN (set_insn);
+       rtx tls_src = XVECEXP (SET_SRC (tls_set), 0, 0);
+       if (!rtx_equal_p (tls_symbol, tls_src))
+ 	return nullptr;
+     }
+ 
+   return set_insn;
+ }
+ 
  /* Return true and output def_insn, val, mode, scalar_mode and kind if
     INSN is UNSPEC_TLS_GD or UNSPEC_TLS_LD_BASE.  */
  
*************** pass_x86_cse::candidate_gnu2_tls_p (rtx
*** 4210,4238 ****
    if (!TARGET_64BIT || !cfun->machine->tls_descriptor_call_multiple_p)
      return false;
  
!   /* Record GNU2 TLS CALLs for 64-bit:
  
!      (set (reg/f:DI 104)
! 	  (plus:DI (unspec:DI [
! 		      (symbol_ref:DI ("_TLS_MODULE_BASE_") [flags 0x10])
! 		      (reg:DI 114)
! 		      (reg/f:DI 7 sp)] UNSPEC_TLSDESC)
! 		   (const:DI (unspec:DI [
! 				(symbol_ref:DI ("e") [flags 0x1a])
! 			     ] UNSPEC_DTPOFF))))
  
!      (set (reg/f:DI 104)
! 	  (plus:DI (unspec:DI [
! 		      (symbol_ref:DI ("_TLS_MODULE_BASE_") [flags 0x10])
! 		      (unspec:DI [
! 			 (symbol_ref:DI ("_TLS_MODULE_BASE_") [flags 0x10])
! 		      ] UNSPEC_TLSDESC)
! 		      (reg/f:DI 7 sp)] UNSPEC_TLSDESC)
! 		   (const:DI (unspec:DI [
! 				(symbol_ref:DI ("e") [flags 0x1a])
! 			     ] UNSPEC_DTPOFF))))
  
!      and
  
       (set (reg:DI 101)
  	  (unspec:DI [(symbol_ref:DI ("foo") [flags 0x50])
--- 4258,4316 ----
    if (!TARGET_64BIT || !cfun->machine->tls_descriptor_call_multiple_p)
      return false;
  
!   rtx tls_symbol;
!   rtx_insn *set_insn;
!   rtx src = SET_SRC (set);
!   val = src;
!   tlsdesc_val = src;
!   kind = X86_CSE_TLSDESC;
  
!   if (tls64 == TLS64_COMBINE)
!     {
!       /* Record 64-bit TLS64_COMBINE:
  
! 	 (set (reg/f:DI 104)
! 	      (plus:DI (unspec:DI [
! 			  (symbol_ref:DI ("_TLS_MODULE_BASE_") [flags 0x10])
! 			  (reg:DI 114)
! 			  (reg/f:DI 7 sp)] UNSPEC_TLSDESC)
! 		       (const:DI (unspec:DI [
! 				    (symbol_ref:DI ("e") [flags 0x1a])
! 				  ] UNSPEC_DTPOFF))))
  
! 	 (set (reg/f:DI 104)
! 	      (plus:DI (unspec:DI [
! 			  (symbol_ref:DI ("_TLS_MODULE_BASE_") [flags 0x10])
! 			  (unspec:DI [
! 			     (symbol_ref:DI ("_TLS_MODULE_BASE_") [flags 0x10])
! 			  ] UNSPEC_TLSDESC)
! 			  (reg/f:DI 7 sp)] UNSPEC_TLSDESC)
! 		       (const:DI (unspec:DI [
! 				    (symbol_ref:DI ("e") [flags 0x1a])
! 				 ] UNSPEC_DTPOFF))))
!      */
! 
!       scalar_mode = mode = GET_MODE (src);
! 
!       /* Since the first operand of PLUS in the source TLS_COMBINE
! 	 pattern is unused, use the second operand of PLUS:
! 
! 	 (const:DI (unspec:DI [
! 		      (symbol_ref:DI ("e") [flags 0x1a])
! 		   ] UNSPEC_DTPOFF))
! 
! 	 as VAL to check if 2 TLS_COMBINE patterns have the same
! 	 source.  */
!       val = XEXP (src, 1);
!       gcc_assert (GET_CODE (val) == CONST
! 		  && GET_CODE (XEXP (val, 0)) == UNSPEC
! 		      && XINT (XEXP (val, 0), 1) == UNSPEC_DTPOFF
! 		      && SYMBOL_REF_P (XVECEXP (XEXP (val, 0), 0, 0)));
!       def_insn = nullptr;
!       return true;
!     }
! 
!   /* Record 64-bit TLS_CALL:
  
       (set (reg:DI 101)
  	  (unspec:DI [(symbol_ref:DI ("foo") [flags 0x50])
*************** pass_x86_cse::candidate_gnu2_tls_p (rtx
*** 4241,4310 ****
  
     */
  
-   rtx src = SET_SRC (set);
-   val = src;
-   if (tls64 != TLS64_CALL)
-     src = XEXP (src, 0);
- 
-   kind = X86_CSE_TLSDESC;
    gcc_assert (GET_CODE (src) == UNSPEC);
!   rtx tls_symbol = XVECEXP (src, 0, 0);
    src = XVECEXP (src, 0, 1);
    scalar_mode = mode = GET_MODE (src);
!   if (REG_P (src))
!     {
!       /* All definitions of reg:DI 129 in
! 
! 	 (set (reg:DI 110)
! 	      (unspec:DI [(symbol_ref:DI ("foo"))
! 			  (reg:DI 129)
! 			  (reg/f:DI 7 sp)] UNSPEC_TLSDESC))
! 
! 	 should have the same source as in
! 
! 	 (set (reg:DI 129)
! 	      (unspec:DI [(symbol_ref:DI ("foo"))] UNSPEC_TLSDESC))
  
!        */
  
!       df_ref ref;
!       rtx_insn *set_insn = nullptr;
!       for (ref = DF_REG_DEF_CHAIN (REGNO (src));
! 	   ref;
! 	   ref = DF_REF_NEXT_REG (ref))
! 	{
! 	  if (DF_REF_IS_ARTIFICIAL (ref))
! 	    break;
  
! 	  set_insn = DF_REF_INSN (ref);
! 	  tls64 = get_attr_tls64 (set_insn);
! 	  if (tls64 != TLS64_LEA)
! 	    {
! 	      set_insn = nullptr;
! 	      break;
! 	    }
  
! 	  rtx tls_set = PATTERN (set_insn);
! 	  rtx tls_src = XVECEXP (SET_SRC (tls_set), 0, 0);
! 	  if (!rtx_equal_p (tls_symbol, tls_src))
! 	    {
! 	      set_insn = nullptr;
! 	      break;
! 	    }
! 	}
  
!       if (!set_insn)
! 	return false;
  
!       def_insn = set_insn;
!     }
!   else if (GET_CODE (src) == UNSPEC
! 	   && XINT (src, 1) == UNSPEC_TLSDESC
! 	   && SYMBOL_REF_P (XVECEXP (src, 0, 0)))
!     def_insn = nullptr;
!   else
!     gcc_unreachable ();
  
    return true;
  }
  
--- 4319,4351 ----
  
     */
  
    gcc_assert (GET_CODE (src) == UNSPEC);
!   tls_symbol = XVECEXP (src, 0, 0);
    src = XVECEXP (src, 0, 1);
    scalar_mode = mode = GET_MODE (src);
!   gcc_assert (REG_P (src));
  
!   /* All definitions of reg:DI 129 in
  
!      (set (reg:DI 110)
! 	  (unspec:DI [(symbol_ref:DI ("foo"))
! 		      (reg:DI 129)
! 		      (reg/f:DI 7 sp)] UNSPEC_TLSDESC))
  
!      should have the same source as in
  
!      (set (reg:DI 129)
! 	  (unspec:DI [(symbol_ref:DI ("foo"))] UNSPEC_TLSDESC))
  
!    */
  
!   set_insn = tls_set_insn_from_symbol (src, tls_symbol);
!   if (!set_insn)
!     return false;
  
+   /* Use TLS_SYMBOL as VAL to check if 2 patterns have the same source.  */
+   val = tls_symbol;
+   def_insn = set_insn;
    return true;
  }
  
*************** pass_x86_cse::x86_cse (void)
*** 4379,4384 ****
--- 4420,4427 ----
  	  if (!set && !CALL_P (insn))
  	    continue;
  
+ 	  tlsdesc_val = nullptr;
+ 
  	  attr_tls64 tls64 = get_attr_tls64 (insn);
  	  switch (tls64)
  	    {
*************** pass_x86_cse::x86_cse (void)
*** 4450,4455 ****
--- 4493,4502 ----
  	  load = new redundant_pattern;
  
  	  load->val = copy_rtx (val);
+ 	  if (tlsdesc_val)
+ 	    load->tlsdesc_val = copy_rtx (tlsdesc_val);
+ 	  else
+ 	    load->tlsdesc_val = nullptr;
  	  load->mode = scalar_mode;
  	  load->size = GET_MODE_SIZE (mode);
  	  load->def_insn = def_insn;
*************** pass_x86_cse::x86_cse (void)
*** 4544,4550 ****
  		{
  		case X86_CSE_TLSDESC:
  		  ix86_place_single_tls_call (load->broadcast_reg,
! 					      load->val,
  					      load->kind,
  					      load->bbs,
  					      updated_gnu_tls_insns,
--- 4591,4597 ----
  		{
  		case X86_CSE_TLSDESC:
  		  ix86_place_single_tls_call (load->broadcast_reg,
! 					      load->tlsdesc_val,
  					      load->kind,
  					      load->bbs,
  					      updated_gnu_tls_insns,
*************** pass_x86_cse::x86_cse (void)
*** 4590,4596 ****
  		case X86_CSE_TLS_LD_BASE:
  		case X86_CSE_TLSDESC:
  		  ix86_place_single_tls_call (load->broadcast_reg,
! 					      load->val,
  					      load->kind,
  					      load->bbs,
  					      updated_gnu_tls_insns,
--- 4637,4645 ----
  		case X86_CSE_TLS_LD_BASE:
  		case X86_CSE_TLSDESC:
  		  ix86_place_single_tls_call (load->broadcast_reg,
! 					      (load->kind == X86_CSE_TLSDESC
! 					       ? load->tlsdesc_val
! 					       : load->val),
  					      load->kind,
  					      load->bbs,
  					      updated_gnu_tls_insns,
diff -Nrcpad gcc-16-20250824/gcc/config/i386/i386-protos.h gcc-16-20250831/gcc/config/i386/i386-protos.h
*** gcc-16-20250824/gcc/config/i386/i386-protos.h	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/i386/i386-protos.h	Sun Aug 31 22:32:11 2025
*************** extern void ix86_set_handled_components
*** 448,450 ****
--- 448,451 ----
  /* In i386-expand.cc.  */
  bool ix86_check_builtin_isa_match (unsigned int, HOST_WIDE_INT*,
  				   HOST_WIDE_INT*);
+ rtx ix86_vgf2p8affine_shift_matrix (rtx, rtx, enum rtx_code);
diff -Nrcpad gcc-16-20250824/gcc/config/i386/i386.cc gcc-16-20250831/gcc/config/i386/i386.cc
*** gcc-16-20250824/gcc/config/i386/i386.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/i386/i386.cc	Sun Aug 31 22:32:11 2025
*************** ix86_address_cost (rtx x, machine_mode,
*** 11382,11387 ****
--- 11382,11404 ----
  
    return cost;
  }
+ 
+ /* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P.  */
+ 
+ bool
+ ix86_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size,
+ 				     unsigned int align,
+ 				     enum by_pieces_operation op,
+ 				     bool speed_p)
+ {
+   /* Return true when we are currently expanding memcpy/memset epilogue
+      with move_by_pieces or store_by_pieces.  */
+   if (cfun->machine->by_pieces_in_use)
+     return true;
+ 
+   return default_use_by_pieces_infrastructure_p (size, align, op,
+ 						 speed_p);
+ }
  
  /* Allow {LABEL | SYMBOL}_REF - SYMBOL_REF-FOR-PICBASE for Mach-O as
     this is used for to form addresses to local data when -fPIC is in
*************** ix86_shift_rotate_cost (const struct pro
*** 22102,22107 ****
--- 22119,22133 ----
  	    }
  	  /* FALLTHRU */
  	case V32QImode:
+ 	  if (TARGET_GFNI && constant_op1)
+ 	    {
+ 	      /* Use vgf2p8affine.  One extra load for the mask, but in a loop
+ 		 with enough registers it will be moved out.  So for now don't
+ 		 account the constant mask load.  This is not quite right
+ 		 for non loop vectorization.  */
+ 	      extra = 0;
+ 	      return ix86_vec_cost (mode, cost->sse_op) + extra;
+ 	    }
  	  if (TARGET_AVX2)
  	    /* Use vpbroadcast.  */
  	    extra = cost->sse_op;
*************** ix86_shift_rotate_cost (const struct pro
*** 22136,22141 ****
--- 22162,22172 ----
  	    count = 9;
  	  return ix86_vec_cost (mode, cost->sse_op * count) + extra;
  
+ 	case V64QImode:
+ 	  /* Ignore the mask load for GF2P8AFFINEQB.  */
+ 	  extra = 0;
+ 	  return ix86_vec_cost (mode, cost->sse_op) + extra;
+ 
  	case V2DImode:
  	case V4DImode:
  	  /* V*DImode arithmetic right shift is emulated.  */
*************** private:
*** 25794,25808 ****
    unsigned m_num_sse_needed[3];
    /* Number of 256-bit vector permutation.  */
    unsigned m_num_avx256_vec_perm[3];
  };
  
  ix86_vector_costs::ix86_vector_costs (vec_info* vinfo, bool costing_for_scalar)
    : vector_costs (vinfo, costing_for_scalar),
      m_num_gpr_needed (),
      m_num_sse_needed (),
!     m_num_avx256_vec_perm ()
! {
! }
  
  /* Implement targetm.vectorize.create_costs.  */
  
--- 25825,25844 ----
    unsigned m_num_sse_needed[3];
    /* Number of 256-bit vector permutation.  */
    unsigned m_num_avx256_vec_perm[3];
+   /* Number of reductions for FMA/DOT_PROD_EXPR/SAD_EXPR  */
+   unsigned m_num_reduc[X86_REDUC_LAST];
+   /* Don't do unroll if m_prefer_unroll is false, default is true.  */
+   bool m_prefer_unroll;
  };
  
  ix86_vector_costs::ix86_vector_costs (vec_info* vinfo, bool costing_for_scalar)
    : vector_costs (vinfo, costing_for_scalar),
      m_num_gpr_needed (),
      m_num_sse_needed (),
!     m_num_avx256_vec_perm (),
!     m_num_reduc (),
!     m_prefer_unroll (true)
! {}
  
  /* Implement targetm.vectorize.create_costs.  */
  
*************** ix86_vector_costs::add_stmt_cost (int co
*** 26099,26104 ****
--- 26135,26259 ----
  	}
      }
  
+   /* Record number of load/store/gather/scatter in vectorized body.  */
+   if (where == vect_body && !m_costing_for_scalar)
+     {
+       switch (kind)
+ 	{
+ 	  /* Emulated gather/scatter or any scalarization.  */
+ 	case scalar_load:
+ 	case scalar_stmt:
+ 	case scalar_store:
+ 	case vector_gather_load:
+ 	case vector_scatter_store:
+ 	  m_prefer_unroll = false;
+ 	  break;
+ 
+ 	case vector_stmt:
+ 	case vec_to_scalar:
+ 	  /* Count number of reduction FMA and "real" DOT_PROD_EXPR,
+ 	     unroll in the vectorizer will enable partial sum.  */
+ 	  if (stmt_info
+ 	      && vect_is_reduction (stmt_info)
+ 	      && stmt_info->stmt)
+ 	    {
+ 	      /* Handle __builtin_fma.  */
+ 	      if (gimple_call_combined_fn (stmt_info->stmt) == CFN_FMA)
+ 		{
+ 		  m_num_reduc[X86_REDUC_FMA] += count;
+ 		  break;
+ 		}
+ 
+ 	      if (!is_gimple_assign (stmt_info->stmt))
+ 		break;
+ 
+ 	      tree_code subcode = gimple_assign_rhs_code (stmt_info->stmt);
+ 	      machine_mode inner_mode = GET_MODE_INNER (mode);
+ 	      tree rhs1, rhs2;
+ 	      bool native_vnni_p = true;
+ 	      gimple* def;
+ 	      machine_mode mode_rhs;
+ 	      switch (subcode)
+ 		{
+ 		case PLUS_EXPR:
+ 		case MINUS_EXPR:
+ 		  if (!fp || !flag_associative_math
+ 		      || flag_fp_contract_mode != FP_CONTRACT_FAST)
+ 		    break;
+ 
+ 		  /* FMA condition for different modes.  */
+ 		  if (((inner_mode == DFmode || inner_mode == SFmode)
+ 		       && !TARGET_FMA && !TARGET_AVX512VL)
+ 		      || (inner_mode == HFmode && !TARGET_AVX512FP16)
+ 		      || (inner_mode == BFmode && !TARGET_AVX10_2))
+ 		    break;
+ 
+ 		  /* MULT_EXPR + PLUS_EXPR/MINUS_EXPR is transformed
+ 		     to FMA/FNMA after vectorization.  */
+ 		  rhs1 = gimple_assign_rhs1 (stmt_info->stmt);
+ 		  rhs2 = gimple_assign_rhs2 (stmt_info->stmt);
+ 		  if (subcode == PLUS_EXPR
+ 		      && TREE_CODE (rhs1) == SSA_NAME
+ 		      && (def = SSA_NAME_DEF_STMT (rhs1), true)
+ 		      && is_gimple_assign (def)
+ 		      && gimple_assign_rhs_code (def) == MULT_EXPR)
+ 		    m_num_reduc[X86_REDUC_FMA] += count;
+ 		  else if (TREE_CODE (rhs2) == SSA_NAME
+ 			   && (def = SSA_NAME_DEF_STMT (rhs2), true)
+ 			   && is_gimple_assign (def)
+ 			   && gimple_assign_rhs_code (def) == MULT_EXPR)
+ 		    m_num_reduc[X86_REDUC_FMA] += count;
+ 		  break;
+ 
+ 		  /* Vectorizer lane_reducing_op_p supports DOT_PROX_EXPR,
+ 		     WIDEN_SUM_EXPR and SAD_EXPR, x86 backend only supports
+ 		     SAD_EXPR (usad{v16qi,v32qi,v64qi}) and DOT_PROD_EXPR.  */
+ 		case DOT_PROD_EXPR:
+ 		  rhs1 = gimple_assign_rhs1 (stmt_info->stmt);
+ 		  mode_rhs = TYPE_MODE (TREE_TYPE (rhs1));
+ 		  if (mode_rhs == QImode)
+ 		    {
+ 		      rhs2 = gimple_assign_rhs2 (stmt_info->stmt);
+ 		      signop signop1_p = TYPE_SIGN (TREE_TYPE (rhs1));
+ 		      signop signop2_p = TYPE_SIGN (TREE_TYPE (rhs2));
+ 
+ 		      /* vpdpbusd.  */
+ 		      if (signop1_p != signop2_p)
+ 			native_vnni_p
+ 			  = (GET_MODE_SIZE (mode) == 64
+ 			     ? TARGET_AVX512VNNI
+ 			     : ((TARGET_AVX512VNNI && TARGET_AVX512VL)
+ 				|| TARGET_AVXVNNI));
+ 		      else
+ 			/* vpdpbssd.  */
+ 			native_vnni_p
+ 			  = (GET_MODE_SIZE (mode) == 64
+ 			     ? TARGET_AVX10_2
+ 			     : (TARGET_AVXVNNIINT8 || TARGET_AVX10_2));
+ 		    }
+ 		  m_num_reduc[X86_REDUC_DOT_PROD] += count;
+ 
+ 		  /* Dislike to do unroll and partial sum for
+ 		     emulated DOT_PROD_EXPR.  */
+ 		  if (!native_vnni_p)
+ 		    m_num_reduc[X86_REDUC_DOT_PROD] += 3 * count;
+ 		  break;
+ 
+ 		case SAD_EXPR:
+ 		  m_num_reduc[X86_REDUC_SAD] += count;
+ 		  break;
+ 
+ 		default:
+ 		  break;
+ 		}
+ 	    }
+ 
+ 	default:
+ 	  break;
+ 	}
+     }
+ 
+ 
    combined_fn cfn;
    if ((kind == vector_stmt || kind == scalar_stmt)
        && stmt_info
*************** ix86_vector_costs::finish_cost (const ve
*** 26305,26310 ****
--- 26460,26500 ----
  	  && (exact_log2 (LOOP_VINFO_VECT_FACTOR (loop_vinfo).to_constant ())
  	      > ceil_log2 (LOOP_VINFO_INT_NITERS (loop_vinfo))))
  	m_costs[vect_body] = INT_MAX;
+ 
+       bool any_reduc_p = false;
+       for (int i = 0; i != X86_REDUC_LAST; i++)
+ 	if (m_num_reduc[i])
+ 	  {
+ 	    any_reduc_p = true;
+ 	    break;
+ 	  }
+ 
+       if (any_reduc_p
+ 	  /* Not much gain for loop with gather and scatter.  */
+ 	  && m_prefer_unroll
+ 	  && !LOOP_VINFO_EPILOGUE_P (loop_vinfo))
+ 	{
+ 	  unsigned unroll_factor
+ 	    = OPTION_SET_P (ix86_vect_unroll_limit)
+ 	    ? ix86_vect_unroll_limit
+ 	    : ix86_cost->vect_unroll_limit;
+ 
+ 	  if (unroll_factor > 1)
+ 	    {
+ 	      for (int i = 0 ; i != X86_REDUC_LAST; i++)
+ 		{
+ 		  if (m_num_reduc[i])
+ 		    {
+ 		      unsigned tmp = CEIL (ix86_cost->reduc_lat_mult_thr[i],
+ 					   m_num_reduc[i]);
+ 		      unroll_factor = MIN (unroll_factor, tmp);
+ 		    }
+ 		}
+ 
+ 	      m_suggested_unroll_factor  = 1 << ceil_log2 (unroll_factor);
+ 	    }
+ 	}
+ 
      }
  
    ix86_vect_estimate_reg_pressure ();
*************** ix86_memtag_can_tag_addresses ()
*** 27188,27196 ****
    return ix86_lam_type != lam_none && TARGET_LP64;
  }
  
! /* Implement TARGET_MEMTAG_TAG_SIZE.  */
  unsigned char
! ix86_memtag_tag_size ()
  {
    return IX86_HWASAN_TAG_SIZE;
  }
--- 27378,27386 ----
    return ix86_lam_type != lam_none && TARGET_LP64;
  }
  
! /* Implement TARGET_MEMTAG_TAG_BITSIZE.  */
  unsigned char
! ix86_memtag_tag_bitsize ()
  {
    return IX86_HWASAN_TAG_SIZE;
  }
*************** static const scoped_attribute_specs *con
*** 27761,27766 ****
--- 27951,27960 ----
  #undef TARGET_ADDRESS_COST
  #define TARGET_ADDRESS_COST ix86_address_cost
  
+ #undef TARGET_USE_BY_PIECES_INFRASTRUCTURE_P
+ #define TARGET_USE_BY_PIECES_INFRASTRUCTURE_P \
+   ix86_use_by_pieces_infrastructure_p
+ 
  #undef TARGET_OVERLAP_OP_BY_PIECES_P
  #define TARGET_OVERLAP_OP_BY_PIECES_P hook_bool_void_true
  
*************** ix86_libgcc_floating_mode_supported_p
*** 28164,28171 ****
  #undef TARGET_MEMTAG_UNTAGGED_POINTER
  #define TARGET_MEMTAG_UNTAGGED_POINTER ix86_memtag_untagged_pointer
  
! #undef TARGET_MEMTAG_TAG_SIZE
! #define TARGET_MEMTAG_TAG_SIZE ix86_memtag_tag_size
  
  #undef TARGET_GEN_CCMP_FIRST
  #define TARGET_GEN_CCMP_FIRST ix86_gen_ccmp_first
--- 28358,28365 ----
  #undef TARGET_MEMTAG_UNTAGGED_POINTER
  #define TARGET_MEMTAG_UNTAGGED_POINTER ix86_memtag_untagged_pointer
  
! #undef TARGET_MEMTAG_TAG_BITSIZE
! #define TARGET_MEMTAG_TAG_BITSIZE ix86_memtag_tag_bitsize
  
  #undef TARGET_GEN_CCMP_FIRST
  #define TARGET_GEN_CCMP_FIRST ix86_gen_ccmp_first
diff -Nrcpad gcc-16-20250824/gcc/config/i386/i386.h gcc-16-20250831/gcc/config/i386/i386.h
*** gcc-16-20250824/gcc/config/i386/i386.h	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/i386/i386.h	Sun Aug 31 22:32:11 2025
*************** struct stringop_algs
*** 102,107 ****
--- 102,116 ----
  #define COSTS_N_BYTES(N) ((N) * 2)
  #endif
  
+ 
+ enum ix86_reduc_unroll_factor{
+   X86_REDUC_FMA,
+   X86_REDUC_DOT_PROD,
+   X86_REDUC_SAD,
+ 
+   X86_REDUC_LAST
+ };
+ 
  /* Define the specific costs for a given cpu.  NB: hard_register is used
     by TARGET_REGISTER_MOVE_COST and TARGET_MEMORY_MOVE_COST to compute
     hard register move costs by register allocator.  Relative costs of
*************** struct processor_costs {
*** 225,230 ****
--- 234,246 ----
  				   to number of instructions executed in
  				   parallel.  See also
  				   ix86_reassociation_width.  */
+   const unsigned reduc_lat_mult_thr[X86_REDUC_LAST];
+ 				/* Latency times throughput of
+ 				   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 				   it's used to determine unroll
+ 				   factor in the vectorizer.  */
+   const unsigned vect_unroll_limit;    /* Limit how much the autovectorizer
+ 					  may unroll a loop.  */
    struct stringop_algs *memcpy, *memset;
    const int cond_taken_branch_cost;    /* Cost of taken branch for vectorizer
  					  cost model.  */
*************** struct GTY(()) machine_function {
*** 2938,2943 ****
--- 2954,2962 ----
    /* True if this is a recursive function.  */
    BOOL_BITFIELD recursive_function : 1;
  
+   /* True if by_pieces op is currently in use.  */
+   BOOL_BITFIELD by_pieces_in_use : 1;
+ 
    /* The largest alignment, in bytes, of stack slot actually used.  */
    unsigned int max_used_stack_alignment;
  
diff -Nrcpad gcc-16-20250824/gcc/config/i386/i386.opt gcc-16-20250831/gcc/config/i386/i386.opt
*** gcc-16-20250824/gcc/config/i386/i386.opt	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/i386/i386.opt	Sun Aug 31 22:32:11 2025
*************** munroll-only-small-loops
*** 1246,1251 ****
--- 1246,1255 ----
  Target Var(ix86_unroll_only_small_loops) Init(0) Optimization
  Enable conservative small loop unrolling.
  
+ -param=ix86-vect-unroll-limit=
+ Target Joined UInteger Var(ix86_vect_unroll_limit) Init(4) Param
+ Limit how much the autovectorizer may unroll a loop.
+ 
  mlam=
  Target RejectNegative Joined Enum(lam_type) Var(ix86_lam_type) Init(lam_none)
  -mlam=[none|u48|u57] Instrument meta data position in user data pointers.
diff -Nrcpad gcc-16-20250824/gcc/config/i386/sse.md gcc-16-20250831/gcc/config/i386/sse.md
*** gcc-16-20250824/gcc/config/i386/sse.md	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/i386/sse.md	Sun Aug 31 22:32:11 2025
***************
*** 326,331 ****
--- 326,334 ----
  (define_mode_iterator VI1_AVX512VL
    [V64QI (V16QI "TARGET_AVX512VL") (V32QI "TARGET_AVX512VL")])
  
+ (define_mode_iterator VI1_AVX512_3264
+   [(V64QI "TARGET_AVX512F") (V32QI "TARGET_AVX")])
+ 
  ;; All vector modes
  (define_mode_iterator V
    [(V64QI "TARGET_AVX512F") (V32QI "TARGET_AVX") V16QI
***************
*** 26559,26567 ****
  
  ;; XOP packed rotate instructions
  (define_expand "rotl<mode>3"
!   [(set (match_operand:VI_128 0 "register_operand")
! 	(rotate:VI_128
! 	 (match_operand:VI_128 1 "nonimmediate_operand")
  	 (match_operand:SI 2 "general_operand")))]
    "TARGET_XOP"
  {
--- 26562,26570 ----
  
  ;; XOP packed rotate instructions
  (define_expand "rotl<mode>3"
!   [(set (match_operand:VI248_128 0 "register_operand")
! 	(rotate:VI248_128
! 	 (match_operand:VI248_128 1 "nonimmediate_operand")
  	 (match_operand:SI 2 "general_operand")))]
    "TARGET_XOP"
  {
***************
*** 26590,26598 ****
  })
  
  (define_expand "rotr<mode>3"
!   [(set (match_operand:VI_128 0 "register_operand")
! 	(rotatert:VI_128
! 	 (match_operand:VI_128 1 "nonimmediate_operand")
  	 (match_operand:SI 2 "general_operand")))]
    "TARGET_XOP"
  {
--- 26593,26601 ----
  })
  
  (define_expand "rotr<mode>3"
!   [(set (match_operand:VI248_128 0 "register_operand")
! 	(rotatert:VI248_128
! 	 (match_operand:VI248_128 1 "nonimmediate_operand")
  	 (match_operand:SI 2 "general_operand")))]
    "TARGET_XOP"
  {
***************
*** 26964,26994 ****
        int i;
  
        if (<CODE> != ASHIFT)
! 	{
! 	  if (CONST_INT_P (operands[2]))
! 	    operands[2] = GEN_INT (-INTVAL (operands[2]));
! 	  else
! 	    negate = true;
! 	}
        par = gen_rtx_PARALLEL (V16QImode, rtvec_alloc (16));
        tmp = lowpart_subreg (QImode, operands[2], SImode);
        for (i = 0; i < 16; i++)
! 	XVECEXP (par, 0, i) = tmp;
  
        tmp = gen_reg_rtx (V16QImode);
        emit_insn (gen_vec_initv16qiqi (tmp, par));
  
        if (negate)
! 	emit_insn (gen_negv16qi2 (tmp, tmp));
  
        gen = (<CODE> == LSHIFTRT ? gen_xop_shlv16qi3 : gen_xop_shav16qi3);
        emit_insn (gen (operands[0], operands[1], tmp));
      }
    else
      ix86_expand_vecop_qihi (<CODE>, operands[0], operands[1], operands[2]);
    DONE;
  })
  
  (define_expand "ashrv2di3"
    [(set (match_operand:V2DI 0 "register_operand")
  	(ashiftrt:V2DI
--- 26967,27088 ----
        int i;
  
        if (<CODE> != ASHIFT)
!        {
! 	     if (CONST_INT_P (operands[2]))
! 	       operands[2] = GEN_INT (-INTVAL (operands[2]));
! 	     else
! 	       negate = true;
! 	   }
        par = gen_rtx_PARALLEL (V16QImode, rtvec_alloc (16));
        tmp = lowpart_subreg (QImode, operands[2], SImode);
        for (i = 0; i < 16; i++)
!         XVECEXP (par, 0, i) = tmp;
  
        tmp = gen_reg_rtx (V16QImode);
        emit_insn (gen_vec_initv16qiqi (tmp, par));
  
        if (negate)
!         emit_insn (gen_negv16qi2 (tmp, tmp));
  
        gen = (<CODE> == LSHIFTRT ? gen_xop_shlv16qi3 : gen_xop_shav16qi3);
        emit_insn (gen (operands[0], operands[1], tmp));
      }
+   else if (TARGET_GFNI && CONST_INT_P (operands[2])
+            && (<MODE_SIZE> == 64
+                || !(INTVAL (operands[2]) == 7 && <CODE> == ASHIFTRT)))
+     {
+       rtx matrix = ix86_vgf2p8affine_shift_matrix (operands[0], operands[2],
+ 						   <CODE>);
+       emit_insn (gen_vgf2p8affineqb_<mode> (operands[0], operands[1], matrix,
+ 					    const0_rtx));
+     }
    else
      ix86_expand_vecop_qihi (<CODE>, operands[0], operands[1], operands[2]);
    DONE;
  })
  
+ ; not generated by vectorizer?
+ (define_expand "cond_<insn><mode>"
+   [(set (match_operand:VI1_AVX512VL 0 "register_operand")
+ 	(vec_merge:VI1_AVX512VL
+ 	  (any_shift:VI1_AVX512VL
+ 	    (match_operand:VI1_AVX512VL 2 "register_operand")
+ 	    (match_operand:VI1_AVX512VL 3 "nonimmediate_or_const_vec_dup_operand"))
+ 	  (match_operand:VI1_AVX512VL 4 "nonimm_or_0_operand")
+ 	(match_operand:<avx512fmaskmode> 1 "register_operand")))]
+   "TARGET_GFNI && TARGET_AVX512F"
+ {
+   rtx matrix = ix86_vgf2p8affine_shift_matrix (operands[0], operands[2], <CODE>);
+   emit_insn (gen_vgf2p8affineqb_<mode>_mask (operands[0], operands[1], matrix,
+ 					     const0_rtx, operands[4],
+ 					     operands[1]));
+   DONE;
+ })
+ 
+ (define_expand "<insn><mode>3"
+   [(set (match_operand:VI1_AVX512_3264 0 "register_operand")
+ 	(any_rotate:VI1_AVX512_3264
+ 	  (match_operand:VI1_AVX512_3264 1 "register_operand")
+ 	  (match_operand:SI 2 "const_int_operand")))]
+   "TARGET_GFNI"
+ {
+   rtx matrix = ix86_vgf2p8affine_shift_matrix (operands[0], operands[2], <CODE>);
+   emit_insn (gen_vgf2p8affineqb_<mode> (operands[0], operands[1], matrix,
+              const0_rtx));
+   DONE;
+ })
+ 
+ (define_expand "<insn>v16qi3"
+   [(set (match_operand:V16QI 0 "register_operand")
+      (any_rotate:V16QI
+        (match_operand:V16QI 1 "nonimmediate_operand")
+        (match_operand:SI 2 "general_operand")))]
+   "TARGET_GFNI || TARGET_XOP"
+ {
+   /* Handle the V16QI XOP case to avoid a conflict with the other expand.  */
+   if (TARGET_XOP)
+     {
+       if (! const_0_to_7_operand (operands[2], SImode))
+         {
+           rtvec vs = rtvec_alloc (16);
+           rtx par = gen_rtx_PARALLEL (V16QImode, vs);
+           rtx reg = gen_reg_rtx (V16QImode);
+           rtx op2 = operands[2];
+           int i;
+ 
+           if (GET_MODE (op2) != QImode)
+             {
+               op2 = gen_reg_rtx (QImode);
+               convert_move (op2, operands[2], false);
+             }
+ 
+           for (i = 0; i < 16; i++)
+             RTVEC_ELT (vs, i) = op2;
+ 
+           emit_insn (gen_vec_initv16qiqi (reg, par));
+           if (<CODE> == ROTATERT)
+             {
+               rtx neg = gen_reg_rtx (V16QImode);
+               emit_insn (gen_negv16qi2 (neg, reg));
+               emit_insn (gen_xop_vrotlv16qi3 (operands[0], operands[1], neg));
+               reg = neg;
+             }
+           emit_insn (gen_xop_vrotlv16qi3 (operands[0], operands[1], reg));
+           DONE;
+        }
+     }
+   else if (TARGET_GFNI && CONST_INT_P (operands[2]))
+     {
+       rtx matrix = ix86_vgf2p8affine_shift_matrix (operands[0], operands[2], <CODE>);
+       emit_insn (gen_vgf2p8affineqb_v16qi (operands[0],
+ 					   force_reg (V16QImode, operands[1]),
+ 					   matrix, const0_rtx));
+       DONE;
+     }
+   else
+     FAIL;
+ })
+ 
  (define_expand "ashrv2di3"
    [(set (match_operand:V2DI 0 "register_operand")
  	(ashiftrt:V2DI
diff -Nrcpad gcc-16-20250824/gcc/config/i386/x86-tune-costs.h gcc-16-20250831/gcc/config/i386/x86-tune-costs.h
*** gcc-16-20250824/gcc/config/i386/x86-tune-costs.h	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/i386/x86-tune-costs.h	Sun Aug 31 22:32:11 2025
*************** struct processor_costs ix86_size_cost =
*** 141,146 ****
--- 141,152 ----
    COSTS_N_BYTES (4),			/* cost of CVT(T)PS2PI instruction.  */
    
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    ix86_size_memcpy,
    ix86_size_memset,
    COSTS_N_BYTES (1),			/* cond_taken_branch_cost.  */
*************** struct processor_costs i386_cost = {	/*
*** 261,266 ****
--- 267,278 ----
    COSTS_N_INSNS (27),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (27),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    i386_memcpy,
    i386_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs i486_cost = {	/*
*** 382,387 ****
--- 394,405 ----
    COSTS_N_INSNS (27),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (27),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    i486_memcpy,
    i486_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs pentium_cost = {
*** 501,506 ****
--- 519,530 ----
    COSTS_N_INSNS (3),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (3),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    pentium_memcpy,
    pentium_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs lakemont_cost = {
*** 613,618 ****
--- 637,648 ----
    COSTS_N_INSNS (5),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (5),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    pentium_memcpy,
    pentium_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs pentiumpro_cost =
*** 740,745 ****
--- 770,781 ----
    COSTS_N_INSNS (3),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (3),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    pentiumpro_memcpy,
    pentiumpro_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs geode_cost = {
*** 858,863 ****
--- 894,905 ----
    COSTS_N_INSNS (6),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (6),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    geode_memcpy,
    geode_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs k6_cost = {
*** 979,984 ****
--- 1021,1032 ----
    COSTS_N_INSNS (2),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (2),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    k6_memcpy,
    k6_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs athlon_cost = {
*** 1101,1106 ****
--- 1149,1160 ----
    COSTS_N_INSNS (4),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (6),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    athlon_memcpy,
    athlon_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs k8_cost = {
*** 1232,1237 ****
--- 1286,1297 ----
    COSTS_N_INSNS (4),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (5),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    k8_memcpy,
    k8_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs amdfam10_cost = {
*** 1371,1376 ****
--- 1431,1442 ----
    COSTS_N_INSNS (7),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (4),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    amdfam10_memcpy,
    amdfam10_memset,
    COSTS_N_INSNS (2),			/* cond_taken_branch_cost.  */
*************** const struct processor_costs bdver_cost
*** 1503,1508 ****
--- 1569,1580 ----
    COSTS_N_INSNS (4),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (4),			/* cost of CVT(T)PS2PI instruction.  */
    1, 2, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    bdver_memcpy,
    bdver_memset,
    COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
*************** struct processor_costs znver1_cost = {
*** 1668,1673 ****
--- 1740,1751 ----
       plus/minus operations per cycle but only one multiply.  This is adjusted
       in ix86_reassociation_width.  */
    4, 4, 3, 6,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {5, 1, 3},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   4,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    znver1_memcpy,
    znver1_memset,
    COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
*************** struct processor_costs znver2_cost = {
*** 1836,1841 ****
--- 1914,1925 ----
       plus/minus operations per cycle but only one multiply.  This is adjusted
       in ix86_reassociation_width.  */
    4, 4, 3, 6,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {10, 1, 3},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   4,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    znver2_memcpy,
    znver2_memset,
    COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
*************** struct processor_costs znver3_cost = {
*** 1979,1984 ****
--- 2063,2074 ----
       plus/minus operations per cycle but only one multiply.  This is adjusted
       in ix86_reassociation_width.  */
    4, 4, 3, 6,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 1, 6},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   4,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    znver2_memcpy,
    znver2_memset,
    COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
*************** struct processor_costs znver4_cost = {
*** 2125,2130 ****
--- 2215,2226 ----
       plus/minus operations per cycle but only one multiply.  This is adjusted
       in ix86_reassociation_width.  */
    4, 4, 3, 6,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 8, 6},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   4,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    znver2_memcpy,
    znver2_memset,
    COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
*************** struct processor_costs znver5_cost = {
*** 2287,2292 ****
--- 2383,2394 ----
  	We increase width to 6 for multiplications
  	in ix86_reassociation_width.  */
    6, 6, 4, 6,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 8, 6},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   4,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    znver2_memcpy,
    znver2_memset,
    COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
*************** struct processor_costs skylake_cost = {
*** 2422,2427 ****
--- 2524,2535 ----
    COSTS_N_INSNS (6),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (7),			/* cost of CVT(T)PS2PI instruction.  */
    1, 4, 2, 2,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 1, 3},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   4,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    skylake_memcpy,
    skylake_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs icelake_cost = {
*** 2559,2564 ****
--- 2667,2678 ----
    COSTS_N_INSNS (7),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (6),			/* cost of CVT(T)PS2PI instruction.  */
    1, 4, 2, 2,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 10, 3},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   4,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    icelake_memcpy,
    icelake_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs alderlake_cost =
*** 2690,2695 ****
--- 2804,2815 ----
    COSTS_N_INSNS (7),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (6),			/* cost of CVT(T)PS2PI instruction.  */
    1, 4, 3, 3,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 8, 3},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   4,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    alderlake_memcpy,
    alderlake_memset,
    COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
*************** const struct processor_costs btver1_cost
*** 2814,2819 ****
--- 2934,2945 ----
    COSTS_N_INSNS (4),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (4),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    btver1_memcpy,
    btver1_memset,
    COSTS_N_INSNS (2),			/* cond_taken_branch_cost.  */
*************** const struct processor_costs btver2_cost
*** 2935,2940 ****
--- 3061,3072 ----
    COSTS_N_INSNS (4),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (4),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    btver2_memcpy,
    btver2_memset,
    COSTS_N_INSNS (2),			/* cond_taken_branch_cost.  */
*************** struct processor_costs pentium4_cost = {
*** 3055,3060 ****
--- 3187,3198 ----
    COSTS_N_INSNS (12),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (8),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    pentium4_memcpy,
    pentium4_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs nocona_cost = {
*** 3178,3183 ****
--- 3316,3327 ----
    COSTS_N_INSNS (12),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (8),			/* cost of CVT(T)PS2PI instruction.  */
    1, 1, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {1, 1, 1},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    nocona_memcpy,
    nocona_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs atom_cost = {
*** 3299,3304 ****
--- 3443,3454 ----
    COSTS_N_INSNS (6),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (4),			/* cost of CVT(T)PS2PI instruction.  */
    2, 2, 2, 2,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 8, 3},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   2,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    atom_memcpy,
    atom_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs slm_cost = {
*** 3420,3425 ****
--- 3570,3581 ----
    COSTS_N_INSNS (4),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (4),			/* cost of CVT(T)PS2PI instruction.  */
    1, 2, 1, 1,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 8, 3},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    slm_memcpy,
    slm_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs tremont_cost = {
*** 3555,3560 ****
--- 3711,3722 ----
    COSTS_N_INSNS (4),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (4),			/* cost of CVT(T)PS2PI instruction.  */
    1, 4, 3, 3,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 1, 3},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   4,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    tremont_memcpy,
    tremont_memset,
    COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
*************** struct processor_costs lujiazui_cost = {
*** 3681,3686 ****
--- 3843,3854 ----
    COSTS_N_INSNS (3),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (3),			/* cost of CVT(T)PS2PI instruction.  */
    1, 4, 3, 3,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 1, 3},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   4,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    lujiazui_memcpy,
    lujiazui_memset,
    COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
*************** struct processor_costs yongfeng_cost = {
*** 3805,3810 ****
--- 3973,3984 ----
    COSTS_N_INSNS (3),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (3),			/* cost of CVT(T)PS2PI instruction.  */
    4, 4, 4, 4,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 1, 3},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    yongfeng_memcpy,
    yongfeng_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs shijidadao_cost =
*** 3929,3934 ****
--- 4103,4114 ----
    COSTS_N_INSNS (3),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (3),			/* cost of CVT(T)PS2PI instruction.  */
    4, 4, 4, 4,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 1, 3},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    shijidadao_memcpy,
    shijidadao_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
*************** struct processor_costs generic_cost = {
*** 4078,4083 ****
--- 4258,4269 ----
    COSTS_N_INSNS (3),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (3),			/* cost of CVT(T)PS2PI instruction.  */
    1, 4, 3, 3,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 8, 3},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   4,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    generic_memcpy,
    generic_memset,
    COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
*************** struct processor_costs core_cost = {
*** 4215,4220 ****
--- 4401,4412 ----
    COSTS_N_INSNS (6),			/* cost of CVTPI2PS instruction.  */
    COSTS_N_INSNS (7),			/* cost of CVT(T)PS2PI instruction.  */
    1, 4, 2, 2,				/* reassoc int, fp, vec_int, vec_fp.  */
+   {8, 1, 3},				/* latency times throughput of
+ 					   FMA/DOT_PROD_EXPR/SAD_EXPR,
+ 					   it's used to determine unroll
+ 					   factor in the vectorizer.  */
+   1,					/* Limit how much the autovectorizer
+ 					   may unroll a loop.  */
    core_memcpy,
    core_memset,
    COSTS_N_INSNS (3),			/* cond_taken_branch_cost.  */
diff -Nrcpad gcc-16-20250824/gcc/config/loongarch/simd.md gcc-16-20250831/gcc/config/loongarch/simd.md
*** gcc-16-20250824/gcc/config/loongarch/simd.md	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/loongarch/simd.md	Sun Aug 31 22:32:11 2025
***************
*** 773,779 ****
  	      (vec_select:<VEC_HALF>
  		(match_operand:IVEC 2 "register_operand" "f")
  		(match_operand:IVEC 4 "vect_par_cnst_even_or_odd_half")))
! 	    (any_extend:<WVEC>
  	      (vec_select:<VEC_HALF>
  		(match_operand:IVEC 3 "register_operand" "f")
  		(match_dup 4))))
--- 773,779 ----
  	      (vec_select:<VEC_HALF>
  		(match_operand:IVEC 2 "register_operand" "f")
  		(match_operand:IVEC 4 "vect_par_cnst_even_or_odd_half")))
! 	    (any_extend:<WVEC_HALF>
  	      (vec_select:<VEC_HALF>
  		(match_operand:IVEC 3 "register_operand" "f")
  		(match_dup 4))))
diff -Nrcpad gcc-16-20250824/gcc/config/riscv/autovec-opt.md gcc-16-20250831/gcc/config/riscv/autovec-opt.md
*** gcc-16-20250824/gcc/config/riscv/autovec-opt.md	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/riscv/autovec-opt.md	Sun Aug 31 22:32:12 2025
***************
*** 1824,1829 ****
--- 1824,1874 ----
    }
    [(set_attr "type" "vimerge")])
  
+ (define_insn_and_split "*vmacc_vx_<mode>"
+  [(set (match_operand:V_VLSI 0 "register_operand")
+    (plus:V_VLSI
+     (mult:V_VLSI
+      (vec_duplicate:V_VLSI
+       (match_operand:<VEL>   1 "register_operand"))
+      (match_operand:V_VLSI   2 "register_operand"))
+     (match_operand:V_VLSI    3 "register_operand")))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     insn_code icode = code_for_pred_mul_plus_vx (<MODE>mode);
+     rtx ops[] = {operands[0], operands[1], operands[2], operands[3],
+ 		 RVV_VUNDEF(<MODE>mode)};
+     riscv_vector::emit_vlmax_insn (icode, riscv_vector::TERNARY_OP, ops);
+ 
+     DONE;
+   }
+   [(set_attr "type" "vimuladd")])
+ 
+ (define_insn_and_split "*vnmsac_vx_<mode>"
+  [(set (match_operand:V_VLSI 0 "register_operand")
+    (minus:V_VLSI
+     (match_operand:V_VLSI   3 "register_operand")
+     (mult:V_VLSI
+      (vec_duplicate:V_VLSI
+       (match_operand:<VEL>   1 "register_operand"))
+      (match_operand:V_VLSI   2 "register_operand"))))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     insn_code icode = code_for_pred_vnmsac_vx (<MODE>mode);
+     rtx ops[] = {operands[0], operands[1], operands[2], operands[3],
+ 		 RVV_VUNDEF(<MODE>mode)};
+     riscv_vector::emit_vlmax_insn (icode, riscv_vector::TERNARY_OP, ops);
+ 
+     DONE;
+   }
+   [(set_attr "type" "vimuladd")])
+ 
+ 
  ;; =============================================================================
  ;; Combine vec_duplicate + op.vv to op.vf
  ;; Include
***************
*** 2004,2006 ****
--- 2049,2146 ----
    }
    [(set_attr "type" "vfwmuladd")]
  )
+ 
+ ;; vfmul.vf
+ (define_insn_and_split "*vfmul_vf_<mode>"
+   [(set (match_operand:V_VLSF 0 "register_operand")
+     (mult:V_VLSF
+       (vec_duplicate:V_VLSF
+         (match_operand:<VEL> 2 "register_operand"))
+       (match_operand:V_VLSF 1 "register_operand")))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::emit_vlmax_insn (code_for_pred_scalar (MULT, <MODE>mode),
+ 				   riscv_vector::BINARY_OP_FRM_DYN, operands);
+     DONE;
+   }
+   [(set_attr "type" "vfmul")]
+ )
+ 
+ ;; vfrdiv.vf
+ (define_insn_and_split "*vfrdiv_vf_<mode>"
+   [(set (match_operand:V_VLSF 0 "register_operand")
+     (div:V_VLSF
+       (vec_duplicate:V_VLSF
+ 	(match_operand:<VEL> 2 "register_operand"))
+       (match_operand:V_VLSF 1 "register_operand")))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::emit_vlmax_insn (code_for_pred_reverse_scalar (DIV, <MODE>mode),
+ 				   riscv_vector::BINARY_OP_FRM_DYN, operands);
+     DONE;
+   }
+   [(set_attr "type" "vfdiv")]
+ )
+ 
+ ;; vfmin.vf
+ (define_insn_and_split "*vfmin_vf_<mode>"
+   [(set (match_operand:V_VLSF 0 "register_operand")
+     (smin:V_VLSF
+       (vec_duplicate:V_VLSF
+ 	(match_operand:<VEL> 2 "register_operand"))
+       (match_operand:V_VLSF 1 "register_operand")))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::emit_vlmax_insn (code_for_pred_scalar (SMIN, <MODE>mode),
+ 				   riscv_vector::BINARY_OP, operands);
+     DONE;
+   }
+   [(set_attr "type" "vfminmax")]
+ )
+ 
+ (define_insn_and_split "*vfmin_vf_ieee_<mode>"
+   [(set (match_operand:V_VLSF 0 "register_operand")
+     (unspec:V_VLSF [
+       (vec_duplicate:V_VLSF
+ 	(match_operand:<VEL> 2 "register_operand"))
+       (match_operand:V_VLSF 1 "register_operand")
+       ] UNSPEC_VFMIN))]
+   "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode) && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::emit_vlmax_insn (code_for_pred_scalar (UNSPEC_VFMIN, <MODE>mode),
+ 				   riscv_vector::BINARY_OP, operands);
+     DONE;
+   }
+   [(set_attr "type" "vfminmax")]
+ )
+ 
+ (define_insn_and_split "*vfmin_vf_ieee_<mode>"
+   [(set (match_operand:V_VLSF 0 "register_operand")
+     (unspec:V_VLSF [
+       (match_operand:V_VLSF 1 "register_operand")
+       (vec_duplicate:V_VLSF
+ 	(match_operand:<VEL> 2 "register_operand"))
+       ] UNSPEC_VFMIN))]
+   "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode) && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::emit_vlmax_insn (code_for_pred_scalar (UNSPEC_VFMIN, <MODE>mode),
+ 				   riscv_vector::BINARY_OP, operands);
+     DONE;
+   }
+   [(set_attr "type" "vfminmax")]
+ )
diff -Nrcpad gcc-16-20250824/gcc/config/riscv/riscv-avlprop.cc gcc-16-20250831/gcc/config/riscv/riscv-avlprop.cc
*** gcc-16-20250824/gcc/config/riscv/riscv-avlprop.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/riscv/riscv-avlprop.cc	Sun Aug 31 22:32:12 2025
*************** get_insn_vtype_mode (rtx_insn *rinsn)
*** 156,161 ****
--- 156,162 ----
    extract_insn_cached (rinsn);
    int mode_idx = get_attr_mode_idx (rinsn);
    gcc_assert (mode_idx != INVALID_ATTRIBUTE);
+   gcc_assert (mode_idx < recog_data.n_operands);
    return GET_MODE (recog_data.operand[mode_idx]);
  }
  
*************** simplify_replace_vlmax_avl (rtx_insn *ri
*** 205,210 ****
--- 206,212 ----
      {
        int index = get_attr_avl_type_idx (rinsn);
        gcc_assert (index != INVALID_ATTRIBUTE);
+       gcc_assert (index < recog_data.n_operands);
        validate_change_or_fail (rinsn, recog_data.operand_loc[index],
  			       get_avl_type_rtx (avl_type::NONVLMAX), false);
      }
*************** pass_avlprop::get_vlmax_ta_preferred_avl
*** 361,366 ****
--- 363,370 ----
  	     is not depend on.  */
  	  extract_insn_cached (use_insn->rtl ());
  	  int merge_op_idx = get_attr_merge_op_idx (use_insn->rtl ());
+ 	  gcc_assert (merge_op_idx == INVALID_ATTRIBUTE
+ 		      || merge_op_idx < recog_data.n_operands);
  	  if (merge_op_idx != INVALID_ATTRIBUTE
  	      && !satisfies_constraint_vu (recog_data.operand[merge_op_idx])
  	      && refers_to_regno_p (set->regno (),
diff -Nrcpad gcc-16-20250824/gcc/config/riscv/riscv-cores.def gcc-16-20250831/gcc/config/riscv/riscv-cores.def
*** gcc-16-20250824/gcc/config/riscv/riscv-cores.def	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/riscv/riscv-cores.def	Sun Aug 31 22:32:12 2025
*************** RISCV_CORE("xt-c908v",        "rv64imafd
*** 113,119 ****
  			      "zvfh_sstc_svinval_svnapot_svpbmt__xtheadba_"
  			      "xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_"
  			      "xtheadfmemidx_xtheadmac_xtheadmemidx_"
! 			      "xtheadmempair_xtheadsync_xtheadvdot",
  			      "xt-c908")
  RISCV_CORE("xt-c910",         "rv64imafdc_zicntr_zicsr_zifencei_zihpm_zfh_"
  			      "xtheadba_xtheadbb_xtheadbs_xtheadcmo_"
--- 113,119 ----
  			      "zvfh_sstc_svinval_svnapot_svpbmt__xtheadba_"
  			      "xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_"
  			      "xtheadfmemidx_xtheadmac_xtheadmemidx_"
! 			      "xtheadmempair_xtheadsync",
  			      "xt-c908")
  RISCV_CORE("xt-c910",         "rv64imafdc_zicntr_zicsr_zifencei_zihpm_zfh_"
  			      "xtheadba_xtheadbb_xtheadbs_xtheadcmo_"
*************** RISCV_CORE("xt-c910",         "rv64imafd
*** 121,127 ****
  			      "xtheadmemidx_xtheadmempair_xtheadsync",
  			      "xt-c910")
  RISCV_CORE("xt-c910v2",       "rv64imafdc_zicbom_zicbop_zicboz_zicntr_zicond_"
! 			      "zicsr_zifencei _zihintntl_zihintpause_zihpm_"
  			      "zawrs_zfa_zfbfmin_zfh_zca_zcb_zcd_zba_zbb_zbc_"
  			      "zbs_sscofpmf_sstc_svinval_svnapot_svpbmt_"
  			      "xtheadba_xtheadbb_xtheadbs_xtheadcmo_"
--- 121,127 ----
  			      "xtheadmemidx_xtheadmempair_xtheadsync",
  			      "xt-c910")
  RISCV_CORE("xt-c910v2",       "rv64imafdc_zicbom_zicbop_zicboz_zicntr_zicond_"
! 			      "zicsr_zifencei_zihintntl_zihintpause_zihpm_"
  			      "zawrs_zfa_zfbfmin_zfh_zca_zcb_zcd_zba_zbb_zbc_"
  			      "zbs_sscofpmf_sstc_svinval_svnapot_svpbmt_"
  			      "xtheadba_xtheadbb_xtheadbs_xtheadcmo_"
*************** RISCV_CORE("xt-c920",         "rv64imafd
*** 135,147 ****
  			      "xtheadvector",
  			      "xt-c910")
  RISCV_CORE("xt-c920v2",       "rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicond_"
! 			      "zicsr_zifencei _zihintntl_zihintpause_zihpm_"
  			      "zawrs_zfa_zfbfmin_zfh_zca_zcb_zcd_zba_zbb_zbc_"
  			      "zbs_zvfbfmin_zvfbfwma_zvfh_sscofpmf_sstc_"
  			      "svinval_svnapot_svpbmt_xtheadba_xtheadbb_"
  			      "xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_"
  			      "xtheadmac_xtheadmemidx_xtheadmempair_"
! 			      "xtheadsync_xtheadvdot",
  			       "xt-c920v2")
  
  RISCV_CORE("tt-ascalon-d8",   "rv64imafdcv_zic64b_zicbom_zicbop_zicboz_"
--- 135,147 ----
  			      "xtheadvector",
  			      "xt-c910")
  RISCV_CORE("xt-c920v2",       "rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicond_"
! 			      "zicsr_zifencei_zihintntl_zihintpause_zihpm_"
  			      "zawrs_zfa_zfbfmin_zfh_zca_zcb_zcd_zba_zbb_zbc_"
  			      "zbs_zvfbfmin_zvfbfwma_zvfh_sscofpmf_sstc_"
  			      "svinval_svnapot_svpbmt_xtheadba_xtheadbb_"
  			      "xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_"
  			      "xtheadmac_xtheadmemidx_xtheadmempair_"
! 			      "xtheadsync",
  			       "xt-c920v2")
  
  RISCV_CORE("tt-ascalon-d8",   "rv64imafdcv_zic64b_zicbom_zicbop_zicboz_"
diff -Nrcpad gcc-16-20250824/gcc/config/riscv/riscv-protos.h gcc-16-20250831/gcc/config/riscv/riscv-protos.h
*** gcc-16-20250824/gcc/config/riscv/riscv-protos.h	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/riscv/riscv-protos.h	Sun Aug 31 22:32:12 2025
*************** extern int riscv_register_move_cost (mac
*** 144,149 ****
--- 144,150 ----
  extern bool synthesize_ior_xor (rtx_code, rtx [3]);
  extern bool synthesize_and (rtx [3]);
  extern bool synthesize_add (rtx [3]);
+ extern bool synthesize_add_extended (rtx [3]);
  
  #ifdef RTX_CODE
  extern void riscv_expand_int_scc (rtx, enum rtx_code, rtx, rtx, bool *invert_ptr = 0);
*************** extern bool th_print_operand_address (FI
*** 831,837 ****
  
  extern bool strided_load_broadcast_p (void);
  extern bool riscv_use_divmod_expander (void);
! void riscv_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int);
  extern bool
  riscv_option_valid_attribute_p (tree, tree, tree, int);
  extern bool
--- 832,838 ----
  
  extern bool strided_load_broadcast_p (void);
  extern bool riscv_use_divmod_expander (void);
! void riscv_init_cumulative_args (CUMULATIVE_ARGS *, const_tree, rtx, tree, int);
  extern bool
  riscv_option_valid_attribute_p (tree, tree, tree, int);
  extern bool
diff -Nrcpad gcc-16-20250824/gcc/config/riscv/riscv.cc gcc-16-20250831/gcc/config/riscv/riscv.cc
*** gcc-16-20250824/gcc/config/riscv/riscv.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/riscv/riscv.cc	Sun Aug 31 22:32:12 2025
*************** riscv_pass_vls_aggregate_in_gpr (struct
*** 6126,6132 ****
     For a library call, FNTYPE is 0.  */
  
  void
! riscv_init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype, rtx, tree, int)
  {
    memset (cum, 0, sizeof (*cum));
  
--- 6126,6133 ----
     For a library call, FNTYPE is 0.  */
  
  void
! riscv_init_cumulative_args (CUMULATIVE_ARGS *cum, const_tree fntype,
! 			    rtx, tree, int)
  {
    memset (cum, 0, sizeof (*cum));
  
*************** riscv_arg_partial_bytes (cumulative_args
*** 6407,6436 ****
    return arg.stack_p ? arg.num_gprs * UNITS_PER_WORD : 0;
  }
  
! /* Implement FUNCTION_VALUE and LIBCALL_VALUE.  For normal calls,
!    VALTYPE is the return type and MODE is VOIDmode.  For libcalls,
!    VALTYPE is null and MODE is the mode of the return value.  */
  
  rtx
! riscv_function_value (const_tree type, const_tree func, machine_mode mode)
  {
    struct riscv_arg_info info;
    CUMULATIVE_ARGS args;
  
!   if (type)
      {
!       int unsigned_p = TYPE_UNSIGNED (type);
  
!       mode = TYPE_MODE (type);
  
!       /* Since TARGET_PROMOTE_FUNCTION_MODE unconditionally promotes,
! 	 return values, promote the mode here too.  */
!       mode = promote_function_mode (type, mode, &unsigned_p, func, 1);
!     }
  
!   memset (&args, 0, sizeof args);
  
!   return riscv_get_arg_info (&info, &args, mode, type, true, true);
  }
  
  /* Implement TARGET_PASS_BY_REFERENCE. */
--- 6408,6451 ----
    return arg.stack_p ? arg.num_gprs * UNITS_PER_WORD : 0;
  }
  
! /* Implements hook TARGET_FUNCTION_VALUE.  */
  
  rtx
! riscv_function_value (const_tree ret_type, const_tree fn_decl_or_type,
! 		      bool)
  {
    struct riscv_arg_info info;
    CUMULATIVE_ARGS args;
  
!   if (fn_decl_or_type)
      {
!       const_tree fntype = TREE_CODE (fn_decl_or_type) == FUNCTION_DECL ?
! 			    TREE_TYPE (fn_decl_or_type) : fn_decl_or_type;
!       riscv_init_cumulative_args (&args, fntype, NULL_RTX, NULL_TREE, 0);
!     }
!   else
!     memset (&args, 0, sizeof args);
  
!   int unsigned_p = TYPE_UNSIGNED (ret_type);
  
!   machine_mode mode = TYPE_MODE (ret_type);
  
!   /* Since TARGET_PROMOTE_FUNCTION_MODE unconditionally promotes,
!      return values, promote the mode here too.  */
!   mode = promote_function_mode (ret_type, mode, &unsigned_p, fn_decl_or_type, 1);
  
!   return riscv_get_arg_info (&info, &args, mode, ret_type, true, true);
! }
! 
! /* Implements hook TARGET_LIBCALL_VALUE.  */
! 
! rtx
! riscv_libcall_value (machine_mode mode, const_rtx fun ATTRIBUTE_UNUSED)
! {
!   struct riscv_arg_info info;
!   CUMULATIVE_ARGS args;
!   memset (&args, 0, sizeof args);
!   return riscv_get_arg_info (&info, &args, mode, NULL_TREE, true, true);
  }
  
  /* Implement TARGET_PASS_BY_REFERENCE. */
*************** synthesize_add (rtx operands[3])
*** 15451,15456 ****
--- 15466,15557 ----
    return true;
  }
  
+ /*  Synthesize OPERANDS[0] = OPERANDS[1] + OPERANDS[2].
+ 
+     For 32-bit object cases with a 64-bit target.
+ 
+     OPERANDS[0] and OPERANDS[1] will be a REG and may be the same
+     REG.
+ 
+     OPERANDS[2] is a CONST_INT.
+ 
+     Return TRUE if the operation was fully synthesized and the caller
+     need not generate additional code.  Return FALSE if the operation
+     was not synthesized and the caller is responsible for emitting the
+     proper sequence.  */
+ 
+ 
+ bool
+ synthesize_add_extended (rtx operands[3])
+ {
+ 
+ /*  If operands[2] is a 12-bit signed immediate,
+     no synthesis needs to be done.  */
+ 
+   if (SMALL_OPERAND (INTVAL (operands[2])))
+     return false;
+ 
+   HOST_WIDE_INT ival = INTVAL (operands[2]);
+   int budget1 = riscv_const_insns (operands[2], true);
+   int budget2 = riscv_const_insns (GEN_INT (-INTVAL (operands[2])), true);
+ 
+ /*  If operands[2] can be split into two 12-bit signed immediates,
+     split add into two adds.  */
+ 
+   if (SUM_OF_TWO_S12 (ival))
+     {
+       HOST_WIDE_INT saturated = HOST_WIDE_INT_M1U << (IMM_BITS - 1);
+ 
+       if (ival >= 0)
+ 	saturated = ~saturated;
+ 
+       ival -= saturated;
+ 
+       rtx temp = gen_reg_rtx (DImode);
+       emit_insn (gen_addsi3_extended (temp, operands[1], GEN_INT (saturated)));
+       temp = gen_lowpart (SImode, temp);
+       SUBREG_PROMOTED_VAR_P (temp) = 1;
+       SUBREG_PROMOTED_SET (temp, SRP_SIGNED);
+       emit_insn (gen_rtx_SET (operands[0], temp));
+       rtx t = gen_reg_rtx (DImode);
+       emit_insn (gen_addsi3_extended (t, operands[0], GEN_INT (ival)));
+       t = gen_lowpart (SImode, t);
+       SUBREG_PROMOTED_VAR_P (t) = 1;
+       SUBREG_PROMOTED_SET (t, SRP_SIGNED);
+       emit_move_insn (operands[0], t);
+       return true;
+     }
+ 
+ 
+ /*  If the negated value is cheaper to synthesize, subtract that from
+     operands[1]. */
+ 
+   if (budget2 < budget1)
+     {
+       rtx tmp = gen_reg_rtx (SImode);
+       emit_insn (gen_rtx_SET (tmp, GEN_INT (-INTVAL (operands[2]))));
+ 
+       rtx t = gen_reg_rtx (DImode);
+       emit_insn (gen_subsi3_extended (t, operands[1], tmp));
+       t = gen_lowpart (SImode, t);
+       SUBREG_PROMOTED_VAR_P (t) = 1;
+       SUBREG_PROMOTED_SET (t, SRP_SIGNED);
+       emit_move_insn (operands[0], t);
+       return true;
+     }
+ 
+   rtx tsrc = force_reg (SImode, operands[2]);
+   rtx tdest = gen_reg_rtx (DImode);
+   emit_insn (gen_addsi3_extended (tdest, operands[1], tsrc));
+   tdest = gen_lowpart (SImode, tdest);
+   SUBREG_PROMOTED_VAR_P (tdest) = 1;
+   SUBREG_PROMOTED_SET (tdest, SRP_SIGNED);
+   emit_move_insn (operands[0], tdest);
+   return true;
+ 
+ }
+ 
+ 
  /*
      HINT : argument specify the target cache
  
*************** riscv_prefetch_offset_address_p (rtx x,
*** 15844,15849 ****
--- 15945,15956 ----
  #undef TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P
  #define TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P riscv_vector_mode_supported_any_target_p
  
+ #undef TARGET_FUNCTION_VALUE
+ #define TARGET_FUNCTION_VALUE riscv_function_value
+ 
+ #undef TARGET_LIBCALL_VALUE
+ #define TARGET_LIBCALL_VALUE riscv_libcall_value
+ 
  #undef TARGET_FUNCTION_VALUE_REGNO_P
  #define TARGET_FUNCTION_VALUE_REGNO_P riscv_function_value_regno_p
  
diff -Nrcpad gcc-16-20250824/gcc/config/riscv/riscv.h gcc-16-20250831/gcc/config/riscv/riscv.h
*** gcc-16-20250824/gcc/config/riscv/riscv.h	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/riscv/riscv.h	Sun Aug 31 22:32:12 2025
*************** enum reg_class
*** 765,776 ****
  
  #define CALLEE_SAVED_FREG_NUMBER(REGNO) CALLEE_SAVED_REG_NUMBER (REGNO - 32)
  
- #define LIBCALL_VALUE(MODE) \
-   riscv_function_value (NULL_TREE, NULL_TREE, MODE)
- 
- #define FUNCTION_VALUE(VALTYPE, FUNC) \
-   riscv_function_value (VALTYPE, FUNC, VOIDmode)
- 
  /* 1 if N is a possible register number for function argument passing.
     We have no FP argument registers when soft-float.  */
  
--- 765,770 ----
diff -Nrcpad gcc-16-20250824/gcc/config/riscv/riscv.md gcc-16-20250831/gcc/config/riscv/riscv.md
*** gcc-16-20250824/gcc/config/riscv/riscv.md	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/riscv/riscv.md	Sun Aug 31 22:32:12 2025
***************
*** 717,740 ****
  		 (match_operand:SI 2 "reg_or_const_int_operand")))]
    ""
  {
    if (TARGET_64BIT)
      {
!       rtx t = gen_reg_rtx (DImode);
! 
!       if (CONST_INT_P (operands[2]) && !SMALL_OPERAND (operands[2]))
! 	operands[2] = force_reg (SImode, operands[2]);
!       emit_insn (gen_addsi3_extended (t, operands[1], operands[2]));
!       t = gen_lowpart (SImode, t);
!       SUBREG_PROMOTED_VAR_P (t) = 1;
!       SUBREG_PROMOTED_SET (t, SRP_SIGNED);
!       emit_move_insn (operands[0], t);
        DONE;
      }
  
-   /* We may be able to find a faster sequence, if so, then we are
-      done.  Otherwise let expansion continue normally.  */
-   if (CONST_INT_P (operands[2]) && synthesize_add (operands))
-     DONE;
  })
  
  (define_expand "adddi3"
--- 717,741 ----
  		 (match_operand:SI 2 "reg_or_const_int_operand")))]
    ""
  {
+   /* We may be able to find a faster sequence, if so, then we are
+      done.  Otherwise let expansion continue normally.  */
+   if (CONST_INT_P (operands[2])
+       && ((!TARGET_64BIT && synthesize_add (operands))
+ 	  || (TARGET_64BIT && synthesize_add_extended (operands))))
+     DONE;
+ 
+   /* Constants have already been handled already.  */
    if (TARGET_64BIT)
      {
!       rtx tdest = gen_reg_rtx (DImode);
!       emit_insn (gen_addsi3_extended (tdest, operands[1], operands[2]));
!       tdest = gen_lowpart (SImode, tdest);
!       SUBREG_PROMOTED_VAR_P (tdest) = 1;
!       SUBREG_PROMOTED_SET (tdest, SRP_SIGNED);
!       emit_move_insn (operands[0], tdest);
        DONE;
      }
  
  })
  
  (define_expand "adddi3"
diff -Nrcpad gcc-16-20250824/gcc/config/riscv/vector.md gcc-16-20250831/gcc/config/riscv/vector.md
*** gcc-16-20250824/gcc/config/riscv/vector.md	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/riscv/vector.md	Sun Aug 31 22:32:12 2025
***************
*** 1398,1403 ****
--- 1398,1404 ----
    }
    [(set_attr "type" "vmov,vlde,vste")
     (set_attr "mode" "<VT:MODE>")
+    (set (attr "merge_op_idx") (const_int INVALID_ATTRIBUTE))
     (set (attr "avl_type_idx") (const_int INVALID_ATTRIBUTE))
     (set (attr "mode_idx") (const_int INVALID_ATTRIBUTE))])
  
***************
*** 1435,1440 ****
--- 1436,1442 ----
    }
    [(set_attr "type" "vlde,vste,vmov")
     (set_attr "mode" "<MODE>")
+    (set (attr "merge_op_idx") (const_int INVALID_ATTRIBUTE))
     (set (attr "avl_type_idx") (const_int INVALID_ATTRIBUTE))
     (set (attr "mode_idx") (const_int INVALID_ATTRIBUTE))]
  )
***************
*** 1485,1490 ****
--- 1487,1493 ----
  }
    [(set_attr "type" "vlde,vste,vmov")
     (set_attr "mode" "<VLS_AVL_REG:MODE>")
+    (set (attr "merge_op_idx") (const_int INVALID_ATTRIBUTE))
     (set (attr "avl_type_idx") (const_int INVALID_ATTRIBUTE))
     (set (attr "mode_idx") (const_int INVALID_ATTRIBUTE))]
  )
***************
*** 5490,5495 ****
--- 5493,5590 ----
    "TARGET_VECTOR"
  {})
  
+ (define_expand "@pred_mul_plus_vx_<mode>"
+   [(set (match_operand:V_VLSI_QHS       0 "register_operand")
+ 	(if_then_else:V_VLSI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM>        1 "vector_mask_operand")
+ 	     (match_operand             6 "vector_length_operand")
+ 	     (match_operand             7 "const_int_operand")
+ 	     (match_operand             8 "const_int_operand")
+ 	     (match_operand             9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:V_VLSI_QHS
+ 	    (mult:V_VLSI_QHS
+ 	      (vec_duplicate:V_VLSI_QHS
+ 	        (match_operand:<VEL>    2 "register_operand"))
+ 	      (match_operand:V_VLSI_QHS 3 "register_operand"))
+ 	    (match_operand:V_VLSI_QHS   4 "register_operand"))
+ 	  (match_operand:V_VLSI_QHS     5 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   riscv_vector::prepare_ternary_operands (operands);
+ })
+ 
+ (define_expand "@pred_mul_plus_vx_<mode>"
+   [(set (match_operand:V_VLSI_D       0 "register_operand")
+ 	(if_then_else:V_VLSI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM>      1 "vector_mask_operand")
+ 	     (match_operand           6 "vector_length_operand")
+ 	     (match_operand           7 "const_int_operand")
+ 	     (match_operand           8 "const_int_operand")
+ 	     (match_operand           9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:V_VLSI_D
+ 	    (mult:V_VLSI_D
+ 	      (vec_duplicate:V_VLSI_D
+ 		(match_operand:<VEL>  2 "register_operand"))
+ 	      (match_operand:V_VLSI_D 3 "register_operand"))
+ 	    (match_operand:V_VLSI_D   4 "register_operand"))
+ 	  (match_operand:V_VLSI_D     5 "vector_merge_operand")))]
+   "TARGET_VECTOR && TARGET_64BIT"
+ {
+   riscv_vector::prepare_ternary_operands (operands);
+ })
+ 
+ (define_expand "@pred_vnmsac_vx_<mode>"
+   [(set (match_operand:V_VLSI_QHS       0 "register_operand")
+ 	(if_then_else:V_VLSI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM>        1 "vector_mask_operand")
+ 	     (match_operand             6 "vector_length_operand")
+ 	     (match_operand             7 "const_int_operand")
+ 	     (match_operand             8 "const_int_operand")
+ 	     (match_operand             9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (minus:V_VLSI_QHS
+ 	    (match_operand:V_VLSI_QHS   4 "register_operand")
+ 	    (mult:V_VLSI_QHS
+ 	      (vec_duplicate:V_VLSI_QHS
+ 	        (match_operand:<VEL>    2 "register_operand"))
+ 	      (match_operand:V_VLSI_QHS 3 "register_operand")))
+ 	  (match_operand:V_VLSI_QHS     5 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   riscv_vector::prepare_ternary_operands (operands);
+ })
+ 
+ (define_expand "@pred_vnmsac_vx_<mode>"
+   [(set (match_operand:V_VLSI_D       0 "register_operand")
+ 	(if_then_else:V_VLSI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM>      1 "vector_mask_operand")
+ 	     (match_operand           6 "vector_length_operand")
+ 	     (match_operand           7 "const_int_operand")
+ 	     (match_operand           8 "const_int_operand")
+ 	     (match_operand           9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (minus:V_VLSI_D
+ 	    (match_operand:V_VLSI_D   4 "register_operand")
+ 	    (mult:V_VLSI_D
+ 	      (vec_duplicate:V_VLSI_D
+ 		(match_operand:<VEL>  2 "register_operand"))
+ 	      (match_operand:V_VLSI_D 3 "register_operand")))
+ 	  (match_operand:V_VLSI_D     5 "vector_merge_operand")))]
+   "TARGET_VECTOR && TARGET_64BIT"
+ {
+   riscv_vector::prepare_ternary_operands (operands);
+ })
+ 
  (define_insn "*pred_madd<mode>_scalar"
    [(set (match_operand:V_VLSI 0 "register_operand"            "=vd, vr")
  	(if_then_else:V_VLSI
***************
*** 6324,6331 ****
     (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_<optab><mode>_scalar"
!   [(set (match_operand:VF 0 "register_operand"           "=vd, vd, vr, vr")
! 	(if_then_else:VF
  	  (unspec:<VM>
  	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,Wc1")
  	     (match_operand 5 "vector_length_operand"    "rvl,rvl,rvl,rvl")
--- 6419,6426 ----
     (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_<optab><mode>_scalar"
!   [(set (match_operand:V_VLSF 0 "register_operand"           "=vd, vd, vr, vr")
! 	(if_then_else:V_VLSF
  	  (unspec:<VM>
  	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,Wc1")
  	     (match_operand 5 "vector_length_operand"    "rvl,rvl,rvl,rvl")
***************
*** 6336,6346 ****
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)
  	     (reg:SI FRM_REGNUM)] UNSPEC_VPREDICATE)
! 	  (commutative_float_binop:VF
! 	    (vec_duplicate:VF
  	      (match_operand:<VEL> 4 "register_operand"  "  f,  f,  f,  f"))
! 	    (match_operand:VF 3 "register_operand"       " vr, vr, vr, vr"))
! 	  (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "vf<insn>.vf\t%0,%3,%4%p1"
    [(set_attr "type" "<float_insn_type>")
--- 6431,6441 ----
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)
  	     (reg:SI FRM_REGNUM)] UNSPEC_VPREDICATE)
! 	  (commutative_float_binop:V_VLSF
! 	    (vec_duplicate:V_VLSF
  	      (match_operand:<VEL> 4 "register_operand"  "  f,  f,  f,  f"))
! 	    (match_operand:V_VLSF 3 "register_operand"       " vr, vr, vr, vr"))
! 	  (match_operand:V_VLSF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "vf<insn>.vf\t%0,%3,%4%p1"
    [(set_attr "type" "<float_insn_type>")
***************
*** 6349,6391 ****
  	(symbol_ref "riscv_vector::get_frm_mode (operands[9])"))])
  
  (define_insn "@pred_<optab><mode>_scalar"
!   [(set (match_operand:VF 0 "register_operand"           "=vd, vd, vr, vr")
! 	(if_then_else:VF
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,Wc1")
! 	     (match_operand 5 "vector_length_operand"    "rvl,rvl,rvl,rvl")
! 	     (match_operand 6 "const_int_operand"        "  i,  i,  i,  i")
! 	     (match_operand 7 "const_int_operand"        "  i,  i,  i,  i")
! 	     (match_operand 8 "const_int_operand"        "  i,  i,  i,  i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
! 	  (commutative_float_binop_nofrm:VF
! 	    (vec_duplicate:VF
! 	      (match_operand:<VEL> 4 "register_operand"  "  f,  f,  f,  f"))
! 	    (match_operand:VF 3 "register_operand"       " vr, vr, vr, vr"))
! 	  (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "vf<insn>.vf\t%0,%3,%4%p1"
    [(set_attr "type" "<float_insn_type>")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_<ieee_fmaxmin_op><mode>_scalar"
!   [(set (match_operand:VF 0 "register_operand"           "=vd, vd, vr, vr")
! 	(if_then_else:VF
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,Wc1")
! 	     (match_operand 5 "vector_length_operand"    "rvl,rvl,rvl,rvl")
! 	     (match_operand 6 "const_int_operand"        "  i,  i,  i,  i")
! 	     (match_operand 7 "const_int_operand"        "  i,  i,  i,  i")
! 	     (match_operand 8 "const_int_operand"        "  i,  i,  i,  i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
! 	  (unspec:VF
! 	    [(match_operand:VF 3 "register_operand"        " vr, vr, vr, vr")
! 	      (vec_duplicate:VF
  		(match_operand:<VEL> 4 "register_operand"  "  f,  f,  f,  f"))]
  	      UNSPEC_VFMAXMIN)
! 	  (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "v<ieee_fmaxmin_op>.vf\t%0,%3,%4%p1"
    [(set_attr "type" "vfminmax")
--- 6444,6486 ----
  	(symbol_ref "riscv_vector::get_frm_mode (operands[9])"))])
  
  (define_insn "@pred_<optab><mode>_scalar"
!   [(set (match_operand:V_VLSF 0 "register_operand"           "=vd, vd, vr, vr")
! 	(if_then_else:V_VLSF
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand"     " vm, vm,Wc1,Wc1")
! 	     (match_operand 5 "vector_length_operand"        "rvl,rvl,rvl,rvl")
! 	     (match_operand 6 "const_int_operand"            "  i,  i,  i,  i")
! 	     (match_operand 7 "const_int_operand"            "  i,  i,  i,  i")
! 	     (match_operand 8 "const_int_operand"            "  i,  i,  i,  i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
! 	  (commutative_float_binop_nofrm:V_VLSF
! 	    (vec_duplicate:V_VLSF
! 	      (match_operand:<VEL> 4 "register_operand"      "  f,  f,  f,  f"))
! 	    (match_operand:V_VLSF 3 "register_operand"       " vr, vr, vr, vr"))
! 	  (match_operand:V_VLSF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "vf<insn>.vf\t%0,%3,%4%p1"
    [(set_attr "type" "<float_insn_type>")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_<ieee_fmaxmin_op><mode>_scalar"
!   [(set (match_operand:V_VLSF 0 "register_operand"         "=vd, vd, vr, vr")
! 	(if_then_else:V_VLSF
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand"   " vm, vm,Wc1,Wc1")
! 	     (match_operand 5 "vector_length_operand"      "rvl,rvl,rvl,rvl")
! 	     (match_operand 6 "const_int_operand"          "  i,  i,  i,  i")
! 	     (match_operand 7 "const_int_operand"          "  i,  i,  i,  i")
! 	     (match_operand 8 "const_int_operand"          "  i,  i,  i,  i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
! 	  (unspec:V_VLSF
! 	    [(match_operand:V_VLSF 3 "register_operand"    " vr, vr, vr, vr")
! 	      (vec_duplicate:V_VLSF
  		(match_operand:<VEL> 4 "register_operand"  "  f,  f,  f,  f"))]
  	      UNSPEC_VFMAXMIN)
! 	  (match_operand:V_VLSF 2 "vector_merge_operand"   " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "v<ieee_fmaxmin_op>.vf\t%0,%3,%4%p1"
    [(set_attr "type" "vfminmax")
***************
*** 6417,6424 ****
  	(symbol_ref "riscv_vector::get_frm_mode (operands[9])"))])
  
  (define_insn "@pred_<optab><mode>_reverse_scalar"
!   [(set (match_operand:VF 0 "register_operand"           "=vd, vd, vr, vr")
! 	(if_then_else:VF
  	  (unspec:<VM>
  	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,Wc1")
  	     (match_operand 5 "vector_length_operand"    "rvl,rvl,rvl,rvl")
--- 6512,6519 ----
  	(symbol_ref "riscv_vector::get_frm_mode (operands[9])"))])
  
  (define_insn "@pred_<optab><mode>_reverse_scalar"
!   [(set (match_operand:V_VLSF 0 "register_operand"       "=vd, vd, vr, vr")
! 	(if_then_else:V_VLSF
  	  (unspec:<VM>
  	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,Wc1")
  	     (match_operand 5 "vector_length_operand"    "rvl,rvl,rvl,rvl")
***************
*** 6429,6439 ****
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)
  	     (reg:SI FRM_REGNUM)] UNSPEC_VPREDICATE)
! 	  (non_commutative_float_binop:VF
! 	    (vec_duplicate:VF
  	      (match_operand:<VEL> 4 "register_operand"  "  f,  f,  f,  f"))
! 	    (match_operand:VF 3 "register_operand"       " vr, vr, vr, vr"))
! 	  (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "vfr<insn>.vf\t%0,%3,%4%p1"
    [(set_attr "type" "<float_insn_type>")
--- 6524,6534 ----
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)
  	     (reg:SI FRM_REGNUM)] UNSPEC_VPREDICATE)
! 	  (non_commutative_float_binop:V_VLSF
! 	    (vec_duplicate:V_VLSF
  	      (match_operand:<VEL> 4 "register_operand"  "  f,  f,  f,  f"))
! 	    (match_operand:V_VLSF 3 "register_operand"   " vr, vr, vr, vr"))
! 	  (match_operand:V_VLSF 2 "vector_merge_operand" " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "vfr<insn>.vf\t%0,%3,%4%p1"
    [(set_attr "type" "<float_insn_type>")
***************
*** 8839,8844 ****
--- 8934,9039 ----
    [(set_attr "type" "vssegt<order>x")
     (set_attr "mode" "<V32T:MODE>")])
  
+ (define_insn "*pred_macc_<mode>_scalar_undef"
+   [(set (match_operand:V_VLSI_QHS       0 "register_operand"      "=vd,  vr")
+ 	(if_then_else:V_VLSI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM>        1 "vector_mask_operand"   " vm, Wc1")
+ 	     (match_operand             6 "vector_length_operand" "rvl, rvl")
+ 	     (match_operand             7 "const_int_operand"     "  i,   i")
+ 	     (match_operand             8 "const_int_operand"     "  i,   i")
+ 	     (match_operand             9 "const_int_operand"     "  i,   i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:V_VLSI_QHS
+ 	    (mult:V_VLSI_QHS
+ 	      (vec_duplicate:V_VLSI_QHS
+ 		(match_operand:<VEL>    3 "reg_or_0_operand"     "  rJ,  rJ"))
+ 	      (match_operand:V_VLSI_QHS 4 "register_operand"     "  vr,  vr"))
+ 	    (match_operand:V_VLSI_QHS   5 "register_operand"     "   0,   0"))
+ 	  (match_operand:V_VLSI_QHS     2 "vector_undef_operand")))]
+   "TARGET_VECTOR"
+   "@
+    vmacc.vx\t%0,%z3,%4%p1
+    vmacc.vx\t%0,%z3,%4%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_macc_<mode>_scalar_undef"
+   [(set (match_operand:V_VLSI_D       0 "register_operand"      "=vd,  vr")
+ 	(if_then_else:V_VLSI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM>      1 "vector_mask_operand"   " vm, Wc1")
+ 	     (match_operand           6 "vector_length_operand" "rvl, rvl")
+ 	     (match_operand           7 "const_int_operand"     "  i,   i")
+ 	     (match_operand           8 "const_int_operand"     "  i,   i")
+ 	     (match_operand           9 "const_int_operand"     "  i,   i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:V_VLSI_D
+ 	    (mult:V_VLSI_D
+ 	      (vec_duplicate:V_VLSI_D
+ 		(match_operand:<VEL>  3 "reg_or_0_operand"     "  rJ,  rJ"))
+ 	      (match_operand:V_VLSI_D 4 "register_operand"     "  vr,  vr"))
+ 	    (match_operand:V_VLSI_D   5 "register_operand"     "   0,   0"))
+ 	  (match_operand:V_VLSI_D     2 "vector_undef_operand")))]
+   "TARGET_VECTOR && TARGET_64BIT"
+   "@
+    vmacc.vx\t%0,%z3,%4%p1
+    vmacc.vx\t%0,%z3,%4%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_nmsac_<mode>_scalar_undef"
+   [(set (match_operand:V_VLSI_QHS       0 "register_operand"      "=vd,  vr")
+ 	(if_then_else:V_VLSI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM>        1 "vector_mask_operand"   " vm, Wc1")
+ 	     (match_operand             6 "vector_length_operand" "rvl, rvl")
+ 	     (match_operand             7 "const_int_operand"     "  i,   i")
+ 	     (match_operand             8 "const_int_operand"     "  i,   i")
+ 	     (match_operand             9 "const_int_operand"     "  i,   i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (minus:V_VLSI_QHS
+ 	    (match_operand:V_VLSI_QHS   5 "register_operand"     "   0,   0")
+ 	    (mult:V_VLSI_QHS
+ 	      (vec_duplicate:V_VLSI_QHS
+ 		(match_operand:<VEL>    3 "reg_or_0_operand"     "  rJ,  rJ"))
+ 	      (match_operand:V_VLSI_QHS 4 "register_operand"     "  vr,  vr")))
+ 	  (match_operand:V_VLSI_QHS     2 "vector_undef_operand")))]
+   "TARGET_VECTOR"
+   "@
+    vnmsac.vx\t%0,%z3,%4%p1
+    vnmsac.vx\t%0,%z3,%4%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_nmsac_<mode>_scalar_undef"
+   [(set (match_operand:V_VLSI_D       0 "register_operand"      "=vd,  vr")
+ 	(if_then_else:V_VLSI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM>      1 "vector_mask_operand"   " vm, Wc1")
+ 	     (match_operand           6 "vector_length_operand" "rvl, rvl")
+ 	     (match_operand           7 "const_int_operand"     "  i,   i")
+ 	     (match_operand           8 "const_int_operand"     "  i,   i")
+ 	     (match_operand           9 "const_int_operand"     "  i,   i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (minus:V_VLSI_D
+ 	    (match_operand:V_VLSI_D   5 "register_operand"     "   0,   0")
+ 	    (mult:V_VLSI_D
+ 	      (vec_duplicate:V_VLSI_D
+ 		(match_operand:<VEL>  3 "reg_or_0_operand"     "  rJ,  rJ"))
+ 	      (match_operand:V_VLSI_D 4 "register_operand"     "  vr,  vr")))
+ 	  (match_operand:V_VLSI_D     2 "vector_undef_operand")))]
+   "TARGET_VECTOR && TARGET_64BIT"
+   "@
+    vnmsac.vx\t%0,%z3,%4%p1
+    vnmsac.vx\t%0,%z3,%4%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")])
+ 
  (include "autovec.md")
  (include "autovec-opt.md")
  (include "sifive-vector.md")
diff -Nrcpad gcc-16-20250824/gcc/config/s390/s390.cc gcc-16-20250831/gcc/config/s390/s390.cc
*** gcc-16-20250824/gcc/config/s390/s390.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/s390/s390.cc	Sun Aug 31 22:32:12 2025
*************** s390_expand_int_spaceship (rtx op0, rtx
*** 8318,8324 ****
  }
  
  /* Expand floating-point op0 = op1 <=> op2, i.e.,
!    op0 = op1 == op2 ? 0 : op1 < op2 ? -1 : op1 > op2 ? 1 : 2.
  
     If op3 equals const0_rtx, then we are interested in the compare only (see
     test spaceship-fp-4.c).  Otherwise, op3 is a CONST_INT different than
--- 8318,8324 ----
  }
  
  /* Expand floating-point op0 = op1 <=> op2, i.e.,
!    op0 = op1 == op2 ? 0 : op1 < op2 ? -1 : op1 > op2 ? 1 : -128.
  
     If op3 equals const0_rtx, then we are interested in the compare only (see
     test spaceship-fp-4.c).  Otherwise, op3 is a CONST_INT different than
*************** s390_expand_fp_spaceship (rtx op0, rtx o
*** 8368,8374 ****
      {
        emit_jump (l_end);
        emit_label (l_unordered);
!       rtx unord_val = op3 == const0_rtx ? const2_rtx : op3;
        emit_move_insn (op0, unord_val);
      }
    emit_label (l_end);
--- 8368,8374 ----
      {
        emit_jump (l_end);
        emit_label (l_unordered);
!       rtx unord_val = op3 == const0_rtx ? GEN_INT (-128) : op3;
        emit_move_insn (op0, unord_val);
      }
    emit_label (l_end);
diff -Nrcpad gcc-16-20250824/gcc/config/xtensa/xtensa-protos.h gcc-16-20250831/gcc/config/xtensa/xtensa-protos.h
*** gcc-16-20250824/gcc/config/xtensa/xtensa-protos.h	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/xtensa/xtensa-protos.h	Sun Aug 31 22:32:12 2025
*************** extern bool xtensa_tls_referenced_p (rtx
*** 60,65 ****
--- 60,66 ----
  extern enum rtx_code xtensa_shlrd_which_direction (rtx, rtx);
  extern bool xtensa_split1_finished_p (void);
  extern void xtensa_split_DI_reg_imm (rtx *);
+ extern char *xtensa_bswapsi2_output (rtx_insn *, const char *);
  
  #ifdef TREE_CODE
  extern void init_cumulative_args (CUMULATIVE_ARGS *, int);
diff -Nrcpad gcc-16-20250824/gcc/config/xtensa/xtensa.cc gcc-16-20250831/gcc/config/xtensa/xtensa.cc
*** gcc-16-20250824/gcc/config/xtensa/xtensa.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/xtensa/xtensa.cc	Sun Aug 31 22:32:12 2025
*************** xtensa_split_DI_reg_imm (rtx *operands)
*** 2645,2650 ****
--- 2645,2738 ----
  }
  
  
+ /* Return the asm output string of bswapsi2_internal insn pattern.
+    It does this by scanning backwards for the BB from the specified insn,
+    and if an another bswapsi2_internal is found, it omits the instruction
+    to set SAR to 8. If not found, or if a CALL, JUMP, ASM, or other insn
+    that clobbers SAR is found first, prepend an instruction to set SAR to
+    8 as usual.  */
+ 
+ static int
+ xtensa_bswapsi2_output_1 (rtx_insn *insn)
+ {
+   int icode;
+   rtx pat;
+   const char *iname;
+ 
+   /* CALL insn do not preserve SAR.
+      JUMP insn only appear at the end of BB, so they do not need to be
+      considered when scanning backwards.  */
+   if (CALL_P (insn))
+     return -1;
+ 
+   switch (icode = INSN_CODE (insn))
+     {
+     /* rotate insns clobber SAR.  */
+     case CODE_FOR_rotlsi3:
+     case CODE_FOR_rotrsi3:
+       return -1;
+     /* simple shift insns clobber SAR if non-immediate shift amounts.  */
+     case CODE_FOR_ashlsi3_internal:
+     case CODE_FOR_ashrsi3:
+     case CODE_FOR_lshrsi3:
+       if (! CONST_INT_P (XEXP (SET_SRC (PATTERN (insn)), 1)))
+ 	return -1;
+       break;
+     /* this insn always set SAR to 8.  */
+     case CODE_FOR_bswapsi2_internal:
+       return 1;
+     default:
+       break;
+     }
+ 
+   /* "*shift_per_byte" and "*shlrd_*" complex shift insns clobber SAR.  */
+   if (icode >= CODE_FOR_nothing
+       && (! strcmp (iname = insn_data[icode].name, "*shift_per_byte")
+ 	  || ! strncmp (iname, "*shlrd_", 7)))
+     return -1;
+ 
+   /* asm statements may also clobber SAR, so they are anything goes.  */
+   if (NONJUMP_INSN_P (insn))
+     switch (GET_CODE (pat = PATTERN (insn)))
+       {
+       case SET:
+ 	return GET_CODE (SET_SRC (pat)) == ASM_OPERANDS ? -1 : 0;
+       case PARALLEL:
+ 	return (GET_CODE (pat = XVECEXP (pat, 0, 0)) == SET
+ 		&& GET_CODE (SET_SRC (pat)) == ASM_OPERANDS)
+ 	       || GET_CODE (pat) == ASM_OPERANDS
+ 	       || GET_CODE (pat) == ASM_INPUT ? -1 : 0;
+       case ASM_OPERANDS:
+ 	return -1;
+       default:
+ 	break;
+     }
+ 
+   /* All other insns are not interested in SAR.  */
+   return 0;
+ }
+ 
+ char *
+ xtensa_bswapsi2_output (rtx_insn *insn, const char *output)
+ {
+   static char result[128];
+   int i;
+ 
+   strcpy (result, "ssai\t8\n\t");
+   while ((insn = prev_nonnote_nondebug_insn_bb (insn)))
+     if ((i = xtensa_bswapsi2_output_1 (insn)) < 0)
+       break;
+     else if (i > 0)
+       {
+ 	result[0] = '\0';
+ 	break;
+       }
+   strcat (result, output);
+ 
+   return result;
+ }
+ 
+ 
  /* Try to split an integer value into what are suitable for two consecutive
     immediate addition instructions, ADDI or ADDMI.  */
  
diff -Nrcpad gcc-16-20250824/gcc/config/xtensa/xtensa.md gcc-16-20250831/gcc/config/xtensa/xtensa.md
*** gcc-16-20250824/gcc/config/xtensa/xtensa.md	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/config/xtensa/xtensa.md	Sun Aug 31 22:32:12 2025
***************
*** 88,93 ****
--- 88,94 ----
  ;; This mode iterator allows the HI and QI patterns to be defined from
  ;; the same template.
  (define_mode_iterator HQI [HI QI])
+ (define_mode_attr mode_bits [(HI "16") (QI "8")])
  
  ;; This mode iterator allows the SI and HI patterns to be defined from
  ;; the same template.
***************
*** 176,194 ****
  ;; Addition.
  
  (define_insn "addsi3"
!   [(set (match_operand:SI 0 "register_operand" "=D,D,a,a,a")
! 	(plus:SI (match_operand:SI 1 "register_operand" "%d,d,r,r,r")
! 		 (match_operand:SI 2 "add_operand" "d,O,r,J,N")))]
    ""
!   "@
!    add.n\t%0, %1, %2
!    addi.n\t%0, %1, %d2
!    add\t%0, %1, %2
!    addi\t%0, %1, %d2
!    addmi\t%0, %1, %x2"
!   [(set_attr "type"	"arith,arith,arith,arith,arith")
!    (set_attr "mode"	"SI")
!    (set_attr "length"	"2,2,3,3,3")])
  
  (define_insn "*addsubx"
    [(set (match_operand:SI 0 "register_operand" "=a")
--- 177,194 ----
  ;; Addition.
  
  (define_insn "addsi3"
!   [(set (match_operand:SI 0 "register_operand")
! 	(plus:SI (match_operand:SI 1 "register_operand")
! 		 (match_operand:SI 2 "add_operand")))]
    ""
!   {@ [cons: =0, %1, 2; attrs: type, length]
!      [D, d, d; arith, 2] add.n\t%0, %1, %2
!      [D, d, O; arith, 2] addi.n\t%0, %1, %d2
!      [a, r, r; arith, 3] add\t%0, %1, %2
!      [a, r, J; arith, 3] addi\t%0, %1, %d2
!      [a, r, N; arith, 3] addmi\t%0, %1, %x2
!   }
!   [(set_attr "mode" "SI")])
  
  (define_insn "*addsubx"
    [(set (match_operand:SI 0 "register_operand" "=a")
***************
*** 392,409 ****
     (set_attr "length"	"3")])
  
  (define_insn "<u>mulhisi3"
!   [(set (match_operand:SI 0 "register_operand" "=C,A")
! 	(mult:SI (any_extend:SI
! 		  (match_operand:HI 1 "register_operand" "%r,r"))
! 		 (any_extend:SI
! 		  (match_operand:HI 2 "register_operand" "r,r"))))]
    "TARGET_MUL16 || TARGET_MAC16"
!   "@
!    mul16<su>\t%0, %1, %2
!    <u>mul.aa.ll\t%1, %2"
!   [(set_attr "type"	"mul16,mac16")
!    (set_attr "mode"	"SI")
!    (set_attr "length"	"3,3")])
  
  (define_insn "muladdhisi"
    [(set (match_operand:SI 0 "register_operand" "=A")
--- 392,406 ----
     (set_attr "length"	"3")])
  
  (define_insn "<u>mulhisi3"
!   [(set (match_operand:SI 0 "register_operand")
! 	(mult:SI (any_extend:SI (match_operand:HI 1 "register_operand"))
! 		 (any_extend:SI (match_operand:HI 2 "register_operand"))))]
    "TARGET_MUL16 || TARGET_MAC16"
!   {@ [cons: =0, %1, 2; attrs: type, length]
!      [C, r, r; mul16, 3] mul16<su>\t%0, %1, %2
!      [A, r, r; mac16, 3] <u>mul.aa.ll\t%1, %2
!   }
!   [(set_attr "mode" "SI")])
  
  (define_insn "muladdhisi"
    [(set (match_operand:SI 0 "register_operand" "=A")
***************
*** 652,687 ****
  })
  
  (define_insn "bswapsi2_internal"
!   [(set (match_operand:SI 0 "register_operand" "=a,&a")
! 	(bswap:SI (match_operand:SI 1 "register_operand" "0,r")))
!    (clobber (match_scratch:SI 2 "=&a,X"))]
    "!optimize_debug && optimize > 1 && !optimize_size"
! {
!   rtx_insn *prev_insn = prev_nonnote_nondebug_insn (insn);
!   const char *init = "ssai\t8\;";
!   static char result[128];
!   if (prev_insn && NONJUMP_INSN_P (prev_insn))
!     {
!       rtx x = PATTERN (prev_insn);
!       if (GET_CODE (x) == PARALLEL && XVECLEN (x, 0) == 2
! 	  && GET_CODE (XVECEXP (x, 0, 0)) == SET
! 	  && GET_CODE (XVECEXP (x, 0, 1)) == CLOBBER)
! 	{
! 	  x = XEXP (XVECEXP (x, 0, 0), 1);
! 	  if (GET_CODE (x) == BSWAP && GET_MODE (x) == SImode)
! 	    init = "";
! 	}
!     }
!   sprintf (result,
! 	   (which_alternative == 0)
! 	   ? "%s" "srli\t%%2, %%1, 16\;src\t%%2, %%2, %%1\;src\t%%2, %%2, %%2\;src\t%%0, %%1, %%2"
! 	   : "%s" "srli\t%%0, %%1, 16\;src\t%%0, %%0, %%1\;src\t%%0, %%0, %%0\;src\t%%0, %%1, %%0",
! 	   init);
!   return result;
! }
!    [(set_attr "type"	"arith,arith")
!     (set_attr "mode"	"SI")
!     (set_attr "length"	"15,15")])
  
  (define_expand "bswapdi2"
    [(set (match_operand:DI 0 "register_operand" "")
--- 649,663 ----
  })
  
  (define_insn "bswapsi2_internal"
!   [(set (match_operand:SI 0 "register_operand")
! 	(bswap:SI (match_operand:SI 1 "register_operand")))
!    (clobber (match_scratch:SI 2))]
    "!optimize_debug && optimize > 1 && !optimize_size"
!   {@ [cons: =0, 1, =2; attrs: type, length]
!      [ a, 0, &a; arith, 15] << xtensa_bswapsi2_output (insn, "srli\t%2, %1, 16\;src\t%2, %2, %1\;src\t%2, %2, %2\;src\t%0, %1, %2");
!      [&a, r,  X; arith, 15] << xtensa_bswapsi2_output (insn, "srli\t%0, %1, 16\;src\t%0, %0, %1\;src\t%0, %0, %0\;src\t%0, %1, %0");
!   }
!   [(set_attr "mode" "SI")])
  
  (define_expand "bswapdi2"
    [(set (match_operand:DI 0 "register_operand" "")
***************
*** 742,757 ****
  ;; Logical instructions.
  
  (define_insn "andsi3"
!   [(set (match_operand:SI 0 "register_operand" "=a,a")
! 	(and:SI (match_operand:SI 1 "register_operand" "%r,r")
! 		(match_operand:SI 2 "mask_operand" "P,r")))]
    ""
!   "@
!    extui\t%0, %1, 0, %K2
!    and\t%0, %1, %2"
!   [(set_attr "type"	"arith,arith")
!    (set_attr "mode"	"SI")
!    (set_attr "length"	"3,3")])
  
  (define_insn_and_split "*andsi3_bitcmpl"
    [(set (match_operand:SI 0 "register_operand" "=a")
--- 718,732 ----
  ;; Logical instructions.
  
  (define_insn "andsi3"
!   [(set (match_operand:SI 0 "register_operand")
! 	(and:SI (match_operand:SI 1 "register_operand")
! 		(match_operand:SI 2 "mask_operand")))]
    ""
!   {@ [cons: =0, %1, 2; attrs: type, length]
!      [a, r, P; arith, 3] extui\t%0, %1, 0, %K2
!      [a, r, r; arith, 3] and\t%0, %1, %2
!   }
!   [(set_attr "mode" "SI")])
  
  (define_insn_and_split "*andsi3_bitcmpl"
    [(set (match_operand:SI 0 "register_operand" "=a")
***************
*** 944,970 ****
  
  ;; Zero-extend instructions.
  
! (define_insn "zero_extendhisi2"
!   [(set (match_operand:SI 0 "register_operand" "=a,a")
! 	(zero_extend:SI (match_operand:HI 1 "nonimmed_operand" "r,U")))]
!   ""
!   "@
!    extui\t%0, %1, 0, 16
!    %v1l16ui\t%0, %1"
!   [(set_attr "type"	"arith,load")
!    (set_attr "mode"	"SI")
!    (set_attr "length"	"3,3")])
! 
! (define_insn "zero_extendqisi2"
!   [(set (match_operand:SI 0 "register_operand" "=a,a")
! 	(zero_extend:SI (match_operand:QI 1 "nonimmed_operand" "r,U")))]
    ""
!   "@
!    extui\t%0, %1, 0, 8
!    %v1l8ui\t%0, %1"
!   [(set_attr "type"	"arith,load")
!    (set_attr "mode"	"SI")
!    (set_attr "length"	"3,3")])
  
  
  ;; Sign-extend instructions.
--- 919,933 ----
  
  ;; Zero-extend instructions.
  
! (define_insn "zero_extend<mode>si2"
!   [(set (match_operand:SI 0 "register_operand")
! 	(zero_extend:SI (match_operand:HQI 1 "nonimmed_operand")))]
    ""
!   {@ [cons: =0, 1; attrs: type, length]
!      [a, r; arith, 3] extui\t%0, %1, 0, <mode_bits>
!      [a, U; load , 3] %v1l<mode_bits>ui\t%0, %1
!   }
!   [(set_attr "mode" "SI")])
  
  
  ;; Sign-extend instructions.
***************
*** 982,996 ****
  })
  
  (define_insn "extendhisi2_internal"
!   [(set (match_operand:SI 0 "register_operand" "=B,a")
! 	(sign_extend:SI (match_operand:HI 1 "sext_operand" "r,U")))]
    ""
!   "@
!    sext\t%0, %1, 15
!    %v1l16si\t%0, %1"
!   [(set_attr "type"	"arith,load")
!    (set_attr "mode"	"SI")
!    (set_attr "length"	"3,3")])
  
  (define_expand "extendqisi2"
    [(set (match_operand:SI 0 "register_operand" "")
--- 945,958 ----
  })
  
  (define_insn "extendhisi2_internal"
!   [(set (match_operand:SI 0 "register_operand")
! 	(sign_extend:SI (match_operand:HI 1 "sext_operand")))]
    ""
!   {@ [cons: =0, 1; attrs: type, length]
!      [B, r; arith, 3] sext\t%0, %1, 15
!      [a, U; load , 3] %v1l16si\t%0, %1
!   }
!   [(set_attr "mode" "SI")])
  
  (define_expand "extendqisi2"
    [(set (match_operand:SI 0 "register_operand" "")
***************
*** 1327,1355 ****
  })
  
  (define_insn "movsi_internal"
!   [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,a,W,a,a,U,*a,*A")
! 	(match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,Y,i,T,U,r,*A,*r"))]
    "xtensa_valid_move (SImode, operands)"
!   "@
!    movi.n\t%0, %x1
!    mov.n\t%0, %1
!    mov.n\t%0, %1
!    %v1l32i.n\t%0, %1
!    %v0s32i.n\t%1, %0
!    %v0s32i.n\t%1, %0
!    mov\t%0, %1
!    movsp\t%0, %1
!    movi\t%0, %x1
!    movi\t%0, %1
!    const16\t%0, %t1\;const16\t%0, %b1
!    %v1l32r\t%0, %1
!    %v1l32i\t%0, %1
!    %v0s32i\t%1, %0
!    rsr\t%0, ACCLO
!    wsr\t%1, ACCLO"
!   [(set_attr "type"	"move,move,move,load,store,store,move,move,move,load,move,load,load,store,rsr,wsr")
!    (set_attr "mode"	"SI")
!    (set_attr "length"	"2,2,2,2,2,2,3,3,3,3,6,3,3,3,3,3")])
  
  (define_split
    [(set (match_operand:SHI 0 "register_operand")
--- 1289,1316 ----
  })
  
  (define_insn "movsi_internal"
!   [(set (match_operand:SI 0 "nonimmed_operand")
! 	(match_operand:SI 1 "move_operand"))]
    "xtensa_valid_move (SImode, operands)"
!   {@ [cons: =0, 1; attrs: type, length]
!      [ D,  M; move , 2] movi.n\t%0, %x1
!      [ D,  D; move , 2] mov.n\t%0, %1
!      [ D,  d; move , 2] ^
!      [ D,  R; load , 2] %v1l32i.n\t%0, %1
!      [ R,  D; store, 2] %v0s32i.n\t%1, %0
!      [ R,  d; store, 2] ^
!      [ a,  r; move , 3] mov\t%0, %1
!      [ q,  r; move , 3] movsp\t%0, %1
!      [ a,  I; move , 3] movi\t%0, %x1
!      [ a,  Y; load , 3] movi\t%0, %1
!      [ W,  i; move , 6] const16\t%0, %t1\;const16\t%0, %b1
!      [ a,  T; load , 3] %v1l32r\t%0, %1
!      [ a,  U; load , 3] %v1l32i\t%0, %1
!      [ U,  r; store, 3] %v0s32i\t%1, %0
!      [*a, *A; rsr  , 3] rsr\t%0, ACCLO
!      [*A, *r; wsr  , 3] wsr\t%1, ACCLO
!   }
!   [(set_attr "mode" "SI")])
  
  (define_split
    [(set (match_operand:SHI 0 "register_operand")
***************
*** 1399,1421 ****
  })
  
  (define_insn "movhi_internal"
!   [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,a,a,U,*a,*A")
! 	(match_operand:HI 1 "move_operand" "M,d,r,I,Y,T,U,r,*A,*r"))]
    "xtensa_valid_move (HImode, operands)"
!   "@
!    movi.n\t%0, %x1
!    mov.n\t%0, %1
!    mov\t%0, %1
!    movi\t%0, %x1
!    movi\t%0, %1
!    %v1l32r\t%0, %1
!    %v1l16ui\t%0, %1
!    %v0s16i\t%1, %0
!    rsr\t%0, ACCLO
!    wsr\t%1, ACCLO"
!   [(set_attr "type"	"move,move,move,move,load,load,load,store,rsr,wsr")
!    (set_attr "mode"	"HI")
!    (set_attr "length"	"2,2,3,3,3,3,3,3,3,3")])
  
  ;; 8-bit Integer moves
  
--- 1360,1381 ----
  })
  
  (define_insn "movhi_internal"
!   [(set (match_operand:HI 0 "nonimmed_operand")
! 	(match_operand:HI 1 "move_operand"))]
    "xtensa_valid_move (HImode, operands)"
!   {@ [cons: =0, 1; attrs: type, length]
!      [ D,  M; move , 2] movi.n\t%0, %x1
!      [ D,  d; move , 2] mov.n\t%0, %1
!      [ a,  r; move , 3] mov\t%0, %1
!      [ a,  I; move , 3] movi\t%0, %x1
!      [ a,  Y; load , 3] movi\t%0, %1
!      [ a,  T; load , 3] %v1l32r\t%0, %1
!      [ a,  U; load , 3] %v1l16ui\t%0, %1
!      [ U,  r; store, 3] %v0s16i\t%1, %0
!      [*a, *A; rsr  , 3] rsr\t%0, ACCLO
!      [*A, *r; wsr  , 3] wsr\t%1, ACCLO
!   }
!   [(set_attr "mode" "HI")])
  
  ;; 8-bit Integer moves
  
***************
*** 1429,1449 ****
  })
  
  (define_insn "movqi_internal"
!   [(set (match_operand:QI 0 "nonimmed_operand" "=D,D,a,a,a,U,*a,*A")
! 	(match_operand:QI 1 "move_operand" "M,d,r,I,U,r,*A,*r"))]
    "xtensa_valid_move (QImode, operands)"
!   "@
!    movi.n\t%0, %x1
!    mov.n\t%0, %1
!    mov\t%0, %1
!    movi\t%0, %x1
!    %v1l8ui\t%0, %1
!    %v0s8i\t%1, %0
!    rsr\t%0, ACCLO
!    wsr\t%1, ACCLO"
!   [(set_attr "type"	"move,move,move,move,load,store,rsr,wsr")
!    (set_attr "mode"	"QI")
!    (set_attr "length"	"2,2,3,3,3,3,3,3")])
  
  ;; Sub-word reloads from the constant pool.
  
--- 1389,1408 ----
  })
  
  (define_insn "movqi_internal"
!   [(set (match_operand:QI 0 "nonimmed_operand")
! 	(match_operand:QI 1 "move_operand"))]
    "xtensa_valid_move (QImode, operands)"
!   {@ [cons: =0, 1; attrs: type, length]
!      [ D,  M; move , 2] movi.n\t%0, %x1
!      [ D,  d; move , 2] mov.n\t%0, %1
!      [ a,  r; move , 3] mov\t%0, %1
!      [ a,  I; move , 3] movi\t%0, %x1
!      [ a,  U; load , 3] %v1l8ui\t%0, %1
!      [ U,  r; store, 3] %v0s8i\t%1, %0
!      [*a, *A; rsr  , 3] rsr\t%0, ACCLO
!      [*A, *r; wsr  , 3] wsr\t%1, ACCLO
!   }
!   [(set_attr "mode" "QI")])
  
  ;; Sub-word reloads from the constant pool.
  
***************
*** 1501,1530 ****
  })
  
  (define_insn "movsf_internal"
!   [(set (match_operand:SF 0 "nonimmed_operand" "=f,f,U,D,a,D,R,a,f,a,a,W,a,U")
! 	(match_operand:SF 1 "move_operand" "f,^U,f,d,T,R,d,r,r,f,Y,iF,U,r"))]
    "((register_operand (operands[0], SFmode)
       || register_operand (operands[1], SFmode))
      && !(FP_REG_P (xt_true_regnum (operands[0]))
  	 && (constantpool_mem_p (operands[1]) || CONSTANT_P (operands[1]))))"
!   "@
!    mov.s\t%0, %1
!    %v1lsi\t%0, %1
!    %v0ssi\t%1, %0
!    mov.n\t%0, %1
!    %v1l32r\t%0, %1
!    %v1l32i.n\t%0, %1
!    %v0s32i.n\t%1, %0
!    mov\t%0, %1
!    wfr\t%0, %1
!    rfr\t%0, %1
!    movi\t%0, %y1
!    const16\t%0, %t1\;const16\t%0, %b1
!    %v1l32i\t%0, %1
!    %v0s32i\t%1, %0"
!   [(set_attr "type"	"farith,fload,fstore,move,load,load,store,move,farith,farith,load,move,load,store")
!    (set_attr "mode"	"SF")
!    (set_attr "length"	"3,3,3,2,3,2,2,3,3,3,3,6,3,3")])
  
  (define_insn "*lsiu"
    [(set (match_operand:SF 0 "register_operand" "=f")
--- 1460,1488 ----
  })
  
  (define_insn "movsf_internal"
!   [(set (match_operand:SF 0 "nonimmed_operand")
! 	(match_operand:SF 1 "move_operand"))]
    "((register_operand (operands[0], SFmode)
       || register_operand (operands[1], SFmode))
      && !(FP_REG_P (xt_true_regnum (operands[0]))
  	 && (constantpool_mem_p (operands[1]) || CONSTANT_P (operands[1]))))"
!   {@ [cons: =0, 1; attrs: type, length]
!      [f,  f; farith, 3] mov.s\t%0, %1
!      [f, ^U; fload , 3] %v1lsi\t%0, %1
!      [U,  f; fstore, 3] %v0ssi\t%1, %0
!      [D,  d; move  , 2] mov.n\t%0, %1
!      [a,  T; load  , 3] %v1l32r\t%0, %1
!      [D,  R; load  , 2] %v1l32i.n\t%0, %1
!      [R,  d; store , 2] %v0s32i.n\t%1, %0
!      [a,  r; move  , 3] mov\t%0, %1
!      [f,  r; farith, 3] wfr\t%0, %1
!      [a,  f; farith, 3] rfr\t%0, %1
!      [a,  Y; load  , 3] movi\t%0, %y1
!      [W, iF; move  , 6] const16\t%0, %t1\;const16\t%0, %b1
!      [a,  U; load  , 3] %v1l32i\t%0, %1
!      [U,  r; store , 3] %v0s32i\t%1, %0
!   }
!   [(set_attr "mode" "SF")])
  
  (define_insn "*lsiu"
    [(set (match_operand:SF 0 "register_operand" "=f")
***************
*** 1692,1707 ****
  })
  
  (define_insn "ashlsi3_internal"
!   [(set (match_operand:SI 0 "register_operand" "=a,a")
! 	(ashift:SI (match_operand:SI 1 "register_operand" "r,r")
! 		   (match_operand:SI 2 "arith_operand" "J,r")))]
    ""
!   "@
!    slli\t%0, %1, %R2
!    ssl\t%2\;sll\t%0, %1"
!   [(set_attr "type"	"arith,arith")
!    (set_attr "mode"	"SI")
!    (set_attr "length"	"3,6")])
  
  (define_split
    [(set (match_operand:SI 0 "register_operand")
--- 1650,1664 ----
  })
  
  (define_insn "ashlsi3_internal"
!   [(set (match_operand:SI 0 "register_operand")
! 	(ashift:SI (match_operand:SI 1 "register_operand")
! 		   (match_operand:SI 2 "arith_operand")))]
    ""
!   {@ [cons: =0, 1, 2; attrs: type, length]
!      [a, r, J; arith, 3] slli\t%0, %1, %R2
!      [a, r, r; arith, 6] ssl\t%2\;sll\t%0, %1
!   }
!   [(set_attr "mode" "SI")])
  
  (define_split
    [(set (match_operand:SI 0 "register_operand")
***************
*** 1713,1747 ****
  		 (match_dup 1)))])
  
  (define_insn "ashrsi3"
!   [(set (match_operand:SI 0 "register_operand" "=a,a")
! 	(ashiftrt:SI (match_operand:SI 1 "register_operand" "r,r")
! 		     (match_operand:SI 2 "arith_operand" "J,r")))]
    ""
!   "@
!    srai\t%0, %1, %R2
!    ssr\t%2\;sra\t%0, %1"
!   [(set_attr "type"	"arith,arith")
!    (set_attr "mode"	"SI")
!    (set_attr "length"	"3,6")])
  
  (define_insn "lshrsi3"
!   [(set (match_operand:SI 0 "register_operand" "=a,a")
! 	(lshiftrt:SI (match_operand:SI 1 "register_operand" "r,r")
! 		     (match_operand:SI 2 "arith_operand" "J,r")))]
    ""
! {
!   if (which_alternative == 0)
!     {
!       if ((INTVAL (operands[2]) & 0x1f) < 16)
! 	return "srli\t%0, %1, %R2";
!       else
! 	return "extui\t%0, %1, %R2, %L2";
!     }
!   return "ssr\t%2\;srl\t%0, %1";
! }
!   [(set_attr "type"	"arith,arith")
!    (set_attr "mode"	"SI")
!    (set_attr "length"	"3,6")])
  
  (define_insn "*shift_per_byte"
    [(set (match_operand:SI 0 "register_operand" "=a")
--- 1670,1695 ----
  		 (match_dup 1)))])
  
  (define_insn "ashrsi3"
!   [(set (match_operand:SI 0 "register_operand")
! 	(ashiftrt:SI (match_operand:SI 1 "register_operand")
! 		     (match_operand:SI 2 "arith_operand")))]
    ""
!   {@ [cons: =0, 1, 2; attrs: type, length]
!      [a, r, J; arith, 3] srai\t%0, %1, %R2
!      [a, r, r; arith, 6] ssr\t%2\;sra\t%0, %1
!   }
!   [(set_attr "mode" "SI")])
  
  (define_insn "lshrsi3"
!   [(set (match_operand:SI 0 "register_operand")
! 	(lshiftrt:SI (match_operand:SI 1 "register_operand")
! 		     (match_operand:SI 2 "arith_operand")))]
    ""
!   {@ [cons: =0, 1, 2; attrs: type, length]
!      [a, r, J; arith, 3] << (INTVAL (operands[2]) & 0x1f) < 16 ? \"srli\t%0, %1, %R2\" : \"extui\t%0, %1, %R2, %L2\";
!      [a, r, r; arith, 6] ssr\t%2\;srl\t%0, %1
!   }
!   [(set_attr "mode" "SI")])
  
  (define_insn "*shift_per_byte"
    [(set (match_operand:SI 0 "register_operand" "=a")
***************
*** 1944,1971 ****
     (set_attr "length"	"6")])
  
  (define_insn "rotlsi3"
!   [(set (match_operand:SI 0 "register_operand" "=a,a")
! 	(rotate:SI (match_operand:SI 1 "register_operand" "r,r")
! 		     (match_operand:SI 2 "arith_operand" "J,r")))]
    ""
!   "@
!    ssai\t%L2\;src\t%0, %1, %1
!    ssl\t%2\;src\t%0, %1, %1"
!   [(set_attr "type"	"multi,multi")
!    (set_attr "mode"	"SI")
!    (set_attr "length"	"6,6")])
  
  (define_insn "rotrsi3"
!   [(set (match_operand:SI 0 "register_operand" "=a,a")
! 	(rotatert:SI (match_operand:SI 1 "register_operand" "r,r")
! 		     (match_operand:SI 2 "arith_operand" "J,r")))]
    ""
!   "@
!    ssai\t%R2\;src\t%0, %1, %1
!    ssr\t%2\;src\t%0, %1, %1"
!   [(set_attr "type"	"multi,multi")
!    (set_attr "mode"	"SI")
!    (set_attr "length"	"6,6")])
  
  
  ;; Comparisons.
--- 1892,1917 ----
     (set_attr "length"	"6")])
  
  (define_insn "rotlsi3"
!   [(set (match_operand:SI 0 "register_operand")
! 	(rotate:SI (match_operand:SI 1 "register_operand")
! 		     (match_operand:SI 2 "arith_operand")))]
    ""
!   {@ [cons: =0, 1, 2; attrs: type, length]
!      [a, r, J; multi, 6] ssai\t%L2\;src\t%0, %1, %1
!      [a, r, r; multi, 6] ssl\t%2\;src\t%0, %1, %1
!   }
!   [(set_attr "mode" "SI")])
  
  (define_insn "rotrsi3"
!   [(set (match_operand:SI 0 "register_operand")
! 	(rotatert:SI (match_operand:SI 1 "register_operand")
! 		     (match_operand:SI 2 "arith_operand")))]
    ""
!   {@ [cons: =0, 1, 2; attrs: type, length]
!      [a, r, J; multi, 6] ssai\t%R2\;src\t%0, %1, %1
!      [a, r, r; multi, 6] ssr\t%2\;src\t%0, %1, %1
!   }
!   [(set_attr "mode" "SI")])
  
  
  ;; Comparisons.
***************
*** 2187,2193 ****
  		      (label_ref (match_dup 1))
  		      (pc)))]
  {
!   operands[3] = GEN_INT ((1 << GET_MODE_BITSIZE (GET_MODE (operands[3]))) - 1);
  })
  
  (define_insn_and_split "*masktrue_const_pow2_minus_one"
--- 2133,2139 ----
  		      (label_ref (match_dup 1))
  		      (pc)))]
  {
!   operands[3] = GEN_INT (GET_MODE_MASK (GET_MODE (operands[3])));
  })
  
  (define_insn_and_split "*masktrue_const_pow2_minus_one"
diff -Nrcpad gcc-16-20250824/gcc/configure gcc-16-20250831/gcc/configure
*** gcc-16-20250824/gcc/configure	Sun Aug 24 22:33:49 2025
--- gcc-16-20250831/gcc/configure	Sun Aug 31 22:34:36 2025
*************** else
*** 25638,25643 ****
--- 25638,25646 ----
    powerpc*-*-darwin*)
          gcc_cv_as_flags="-arch ppc"
      ;;
+   amdgcn*)
+             gcc_cv_as_flags="--filetype=obj -triple=amdgcn--amdhsa"
+     ;;
    *)
      gcc_cv_as_flags=" "
      ;;
*************** fi
*** 26500,26507 ****
  esac
  
  # Check if we have .[us]leb128, and support symbol arithmetic with it.
! # Older versions of GAS and some non-GNU assemblers, have a bugs handling
! # these directives, even when they appear to accept them.
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .sleb128 and .uleb128" >&5
  $as_echo_n "checking assembler for .sleb128 and .uleb128... " >&6; }
  if ${gcc_cv_as_leb128+:} false; then :
--- 26503,26510 ----
  esac
  
  # Check if we have .[us]leb128, and support symbol arithmetic with it.
! # Older versions of GAS and some non-GNU assemblers have bugs in handling
! # of these directives, even when they appear to accept them.
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .sleb128 and .uleb128" >&5
  $as_echo_n "checking assembler for .sleb128 and .uleb128... " >&6; }
  if ${gcc_cv_as_leb128+:} false; then :
*************** elif test "x$gcc_cv_otool" != x; then
*** 26535,26540 ****
--- 26538,26548 ----
       | grep '04 80 0a 8e 78 80 80 80 80 80 80 80 80 80 01' >/dev/null; then
      gcc_cv_as_leb128=yes
    fi
+ elif test "x$gcc_cv_readelf" != x; then
+   if $gcc_cv_readelf -x .data conftest.o 2>/dev/null \
+      | grep '04800a8e 78808080 80808080 808001' >/dev/null; then
+     gcc_cv_as_leb128=yes
+   fi
  else
    # play safe, assume the assembler is broken.
    :
diff -Nrcpad gcc-16-20250824/gcc/configure.ac gcc-16-20250831/gcc/configure.ac
*** gcc-16-20250824/gcc/configure.ac	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/configure.ac	Sun Aug 31 22:32:12 2025
*************** case $target in
*** 3307,3314 ****
  esac
  
  # Check if we have .[us]leb128, and support symbol arithmetic with it.
! # Older versions of GAS and some non-GNU assemblers, have a bugs handling
! # these directives, even when they appear to accept them.
  gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
  [$check_leb128_asflags],
  [	.data
--- 3307,3314 ----
  esac
  
  # Check if we have .[us]leb128, and support symbol arithmetic with it.
! # Older versions of GAS and some non-GNU assemblers have bugs in handling
! # of these directives, even when they appear to accept them.
  gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
  [$check_leb128_asflags],
  [	.data
*************** elif test "x$gcc_cv_otool" != x; then
*** 3330,3335 ****
--- 3330,3340 ----
       | grep '04 80 0a 8e 78 80 80 80 80 80 80 80 80 80 01' >/dev/null; then
      gcc_cv_as_leb128=yes
    fi
+ elif test "x$gcc_cv_readelf" != x; then
+   if $gcc_cv_readelf -x .data conftest.o 2>/dev/null \
+      | grep '04800a8e 78808080 80808080 808001' >/dev/null; then
+     gcc_cv_as_leb128=yes
+   fi
  else
    # play safe, assume the assembler is broken.
    :
diff -Nrcpad gcc-16-20250824/gcc/cp/ChangeLog gcc-16-20250831/gcc/cp/ChangeLog
*** gcc-16-20250824/gcc/cp/ChangeLog	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/cp/ChangeLog	Sun Aug 31 22:32:12 2025
***************
*** 1,3 ****
--- 1,60 ----
+ 2025-08-29  Sirui Mu  <msrlancern@gmail.com>
+ 
+ 	* typeck.cc (cp_build_array_ref): Handle 0[arr] earlier.
+ 
+ 2025-08-28  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/107953
+ 	* parser.cc (cp_parser_lambda_expression): Set
+ 	greater_than_is_operator_p.
+ 
+ 2025-08-28  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/119844
+ 	* typeck2.cc (cxx_incomplete_type_inform): Add explanation when
+ 	a similar type is complete but attached to a different module.
+ 	Also fix handling of partial specs and templates.
+ 
+ 2025-08-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/121583
+ 	* semantics.cc (apply_deduced_return_type): Adjust
+ 	fun->returns*_struct when !uses_template_parms (fco) instead of
+ 	when !processing_template_decl.
+ 
+ 2025-08-28  Jakub Jelinek  <jakub@redhat.com>
+ 	    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/121575
+ 	* pt.cc (tsubst_expr) <case PARM_DECL>: If DECL_CONTEXT (t) isn't a
+ 	template return t for PARM_DECLs without local specialization.
+ 
+ 2025-08-26  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR middle-end/118839
+ 	* decl.cc (omp_declare_variant_finalize_one): Error if variant
+ 	is the same as base.
+ 
+ 2025-08-26  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* parser.cc (cp_finish_omp_declare_variant): Structure diagnostic
+ 	code similarly to C front end.  Make check for a missing "match"
+ 	clause unconditional.
+ 
+ 2025-08-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* pt.cc (finish_expansion_stmt): Implement C++ CWG3048
+ 	- Empty destructuring expansion statements.  Don't error for
+ 	destructuring expansion stmts if sz is 0, don't call
+ 	fit_decomposition_lang_decl if n is 0 and pass NULL rather than
+ 	this_decomp to cp_finish_decl.
+ 
+ 2025-08-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/121601
+ 	* constexpr.cc (cxx_bind_parameters_in_call): Move break
+ 	if *jump_target before the check for null this object pointer.
+ 
  2025-08-23  Eczbek  <eczbek.void@gmail.com>
  
  	PR c++/116928
diff -Nrcpad gcc-16-20250824/gcc/cp/constexpr.cc gcc-16-20250831/gcc/cp/constexpr.cc
*** gcc-16-20250824/gcc/cp/constexpr.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/cp/constexpr.cc	Sun Aug 31 22:32:12 2025
*************** cxx_bind_parameters_in_call (const const
*** 2694,2699 ****
--- 2694,2701 ----
  	arg = cxx_eval_constant_expression (ctx, x, vc_prvalue,
  					    non_constant_p, overflow_p,
  					    jump_target);
+       if (*jump_target)
+ 	break;
        /* Check we aren't dereferencing a null pointer when calling a non-static
  	 member function, which is undefined behaviour.  */
        if (i == 0 && DECL_OBJECT_MEMBER_FUNCTION_P (fun)
*************** cxx_bind_parameters_in_call (const const
*** 2711,2718 ****
        /* Don't VERIFY_CONSTANT here.  */
        if (*non_constant_p && ctx->quiet)
  	break;
-       if (*jump_target)
- 	break;
        /* Just discard ellipsis args after checking their constantitude.  */
        if (!parms)
  	continue;
--- 2713,2718 ----
diff -Nrcpad gcc-16-20250824/gcc/cp/decl.cc gcc-16-20250831/gcc/cp/decl.cc
*** gcc-16-20250824/gcc/cp/decl.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/cp/decl.cc	Sun Aug 31 22:32:12 2025
*************** omp_declare_variant_finalize_one (tree d
*** 8607,8612 ****
--- 8607,8619 ----
    variant = cp_get_callee_fndecl_nofold (STRIP_REFERENCE_REF (variant));
    input_location = save_loc;
  
+   if (variant == decl)
+     {
+       error_at (varid_loc, "variant %qD is the same as base function",
+ 		variant);
+       return true;
+     }
+ 
    if (variant)
      {
        bool fail;
diff -Nrcpad gcc-16-20250824/gcc/cp/parser.cc gcc-16-20250831/gcc/cp/parser.cc
*** gcc-16-20250824/gcc/cp/parser.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/cp/parser.cc	Sun Aug 31 22:32:12 2025
*************** cp_parser_lambda_expression (cp_parser*
*** 11806,11811 ****
--- 11806,11813 ----
       it now.  */
    push_deferring_access_checks (dk_no_deferred);
  
+   auto gr = make_temp_override (parser->greater_than_is_operator_p, true);
+ 
    if (!consteval_block_p)
      {
        cp_parser_lambda_introducer (parser, lambda_expr);
*************** cp_finish_omp_declare_variant (cp_parser
*** 51642,51682 ****
  					      append_args_tree);
  	}
    } while (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL));
  
!   if ((ctx != error_mark_node && variant != error_mark_node)
!       && (has_adjust_args || append_args_tree))
      {
!       if (!has_match)
  	{
  	  error_at (has_adjust_args ? adjust_args_loc : append_args_loc,
! 		    "an %qs clause requires a %<match%> clause",
  		    has_adjust_args ? "adjust_args" : "append_args");
  	}
!       else
! 	{
! 	  gcc_assert (TREE_PURPOSE (attrs)
! 		      == get_identifier ("omp declare variant base"));
! 	  gcc_assert (TREE_PURPOSE (TREE_VALUE (attrs)) == variant);
! 	  ctx = TREE_VALUE (TREE_VALUE (attrs));
! 	  if (!omp_get_context_selector (ctx, OMP_TRAIT_SET_CONSTRUCT,
! 					 OMP_TRAIT_CONSTRUCT_DISPATCH))
! 	    error_at (has_adjust_args ? adjust_args_loc : append_args_loc,
! 		      "an %qs clause can only be specified if the %<dispatch%> "
! 		      "selector of the construct selector set appears "
! 		      "in the %<match%> clause",
! 		      has_adjust_args ? "adjust_args" : "append_args");
! 	  // We might not have a DECL for the variant yet. So we store the
! 	  // need_device_ptr list in the base function attribute, after loc
! 	  // nodes.
! 	  tree t = build_tree_list (need_device_ptr_list,
! 				    NULL_TREE /* need_device_addr */);
! 	  TREE_CHAIN (t) = append_args_tree;
! 	  TREE_VALUE (attrs) = chainon (TREE_VALUE (attrs),
! 					build_tree_list ( NULL_TREE, t));
! 	}
      }
  
-   cp_parser_skip_to_pragma_eol (parser, pragma_tok);
    return attrs;
  }
  
--- 51644,51684 ----
  					      append_args_tree);
  	}
    } while (cp_lexer_next_token_is_not (parser->lexer, CPP_PRAGMA_EOL));
+   if (variant != error_mark_node && !has_match)
+     {
+       cp_parser_error (parser, "expected %<match%> clause");
+       variant = error_mark_node;
+     }
+   cp_parser_skip_to_pragma_eol (parser, pragma_tok);
  
!   /* At this point, we have completed parsing of the pragma, now it's
!      on to error checking.  */
!   if (variant == error_mark_node || ctx == error_mark_node)
!     /* Previously diagnosed error.  */
!     return attrs;
! 
!   if (has_adjust_args || append_args_tree)
      {
!       if (!omp_get_context_selector (ctx, OMP_TRAIT_SET_CONSTRUCT,
! 				     OMP_TRAIT_CONSTRUCT_DISPATCH))
  	{
  	  error_at (has_adjust_args ? adjust_args_loc : append_args_loc,
! 		    "an %qs clause can only be specified if the %<dispatch%> "
! 		    "selector of the construct selector set appears "
! 		    "in the %<match%> clause",
  		    has_adjust_args ? "adjust_args" : "append_args");
+ 	  return attrs;
  	}
!       // We might not have a DECL for the variant yet. So we store the
!       // need_device_ptr list in the base function attribute, after loc
!       // nodes.
!       tree t = build_tree_list (need_device_ptr_list,
! 				NULL_TREE /* need_device_addr */);
!       TREE_CHAIN (t) = append_args_tree;
!       TREE_VALUE (attrs) = chainon (TREE_VALUE (attrs),
! 				    build_tree_list (NULL_TREE, t));
      }
  
    return attrs;
  }
  
diff -Nrcpad gcc-16-20250824/gcc/cp/pt.cc gcc-16-20250831/gcc/cp/pt.cc
*** gcc-16-20250824/gcc/cp/pt.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/cp/pt.cc	Sun Aug 31 22:32:12 2025
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 22321,22326 ****
--- 22321,22331 ----
  	      if (DECL_NAME (t) == this_identifier && current_class_ptr)
  		RETURN (current_class_ptr);
  
+ 	      /* Parameters of non-templates map to themselves (e.g. in
+ 		 expansion statement body).  */
+ 	      if (DECL_CONTEXT (t) && !uses_template_parms (DECL_CONTEXT (t)))
+ 		RETURN (t);
+ 
  	      /* This can happen for a parameter name used later in a function
  		 declaration (such as in a late-specified return type).  Just
  		 make a dummy decl, since it's only used for its type.  */
*************** finish_expansion_stmt (tree expansion_st
*** 32827,32837 ****
  					 tf_warning_or_error);
        if (sz < 0)
  	return;
-       if (sz == 0)
- 	{
- 	  error_at (loc, "empty structured binding");
- 	  return;
- 	}
        n = sz;
        tree auto_node = make_auto ();
        tree decomp_type = cp_build_reference_type (auto_node, true);
--- 32832,32837 ----
*************** finish_expansion_stmt (tree expansion_st
*** 32843,32849 ****
  	= DECL_DECLARED_CONSTEXPR_P (range_decl);
        if (DECL_DECLARED_CONSTEXPR_P (decl))
  	TREE_READONLY (decl) = 1;
!       fit_decomposition_lang_decl (decl, NULL_TREE);
        pushdecl (decl);
        cp_decomp this_decomp;
        this_decomp.count = n;
--- 32843,32850 ----
  	= DECL_DECLARED_CONSTEXPR_P (range_decl);
        if (DECL_DECLARED_CONSTEXPR_P (decl))
  	TREE_READONLY (decl) = 1;
!       if (n)
! 	fit_decomposition_lang_decl (decl, NULL_TREE);
        pushdecl (decl);
        cp_decomp this_decomp;
        this_decomp.count = n;
*************** finish_expansion_stmt (tree expansion_st
*** 32864,32870 ****
        DECL_NAME (decl) = for_range__identifier;
        cp_finish_decl (decl, expansion_init,
  		      /*is_constant_init*/false, NULL_TREE,
! 		      LOOKUP_ONLYCONVERTING, &this_decomp);
        DECL_NAME (decl) = NULL_TREE;
      }
  
--- 32865,32871 ----
        DECL_NAME (decl) = for_range__identifier;
        cp_finish_decl (decl, expansion_init,
  		      /*is_constant_init*/false, NULL_TREE,
! 		      LOOKUP_ONLYCONVERTING, n ? &this_decomp : NULL);
        DECL_NAME (decl) = NULL_TREE;
      }
  
diff -Nrcpad gcc-16-20250824/gcc/cp/semantics.cc gcc-16-20250831/gcc/cp/semantics.cc
*** gcc-16-20250824/gcc/cp/semantics.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/cp/semantics.cc	Sun Aug 31 22:32:12 2025
*************** apply_deduced_return_type (tree fco, tre
*** 14213,14219 ****
                                 result);
    DECL_RESULT (fco) = result;
  
!   if (!processing_template_decl)
      if (function *fun = DECL_STRUCT_FUNCTION (fco))
        {
  	bool aggr = aggregate_value_p (result, fco);
--- 14213,14219 ----
                                 result);
    DECL_RESULT (fco) = result;
  
!   if (!uses_template_parms (fco))
      if (function *fun = DECL_STRUCT_FUNCTION (fco))
        {
  	bool aggr = aggregate_value_p (result, fco);
diff -Nrcpad gcc-16-20250824/gcc/cp/typeck.cc gcc-16-20250831/gcc/cp/typeck.cc
*** gcc-16-20250824/gcc/cp/typeck.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/cp/typeck.cc	Sun Aug 31 22:32:12 2025
*************** tree
*** 3973,3979 ****
  cp_build_array_ref (location_t loc, tree array, tree idx,
  		    tsubst_flags_t complain)
  {
-   tree first = NULL_TREE;
    tree ret;
  
    if (idx == 0)
--- 3973,3978 ----
*************** cp_build_array_ref (location_t loc, tree
*** 3987,3992 ****
--- 3986,4006 ----
        || TREE_TYPE (idx) == error_mark_node)
      return error_mark_node;
  
+   /* 0[array] */
+   if (TREE_CODE (TREE_TYPE (idx)) == ARRAY_TYPE)
+     {
+       std::swap (array, idx);
+ 
+       tree first = NULL_TREE;
+       if (flag_strong_eval_order == 2 && TREE_SIDE_EFFECTS (array))
+ 	idx = first = save_expr (idx);
+       ret = cp_build_array_ref (loc, array, idx, complain);
+ 
+       if (first)
+ 	ret = build2 (COMPOUND_EXPR, TREE_TYPE (ret), first, ret);
+       return ret;
+     }
+ 
    /* If ARRAY is a COMPOUND_EXPR or COND_EXPR, move our reference
       inside it.  */
    switch (TREE_CODE (array))
*************** cp_build_array_ref (location_t loc, tree
*** 4066,4079 ****
  
    bool non_lvalue = convert_vector_to_array_for_subscript (loc, &array, idx);
  
-   /* 0[array] */
-   if (TREE_CODE (TREE_TYPE (idx)) == ARRAY_TYPE)
-     {
-       std::swap (array, idx);
-       if (flag_strong_eval_order == 2 && TREE_SIDE_EFFECTS (array))
- 	idx = first = save_expr (idx);
-     }
- 
    if (TREE_CODE (TREE_TYPE (array)) == ARRAY_TYPE)
      {
        tree rval, type;
--- 4080,4085 ----
*************** cp_build_array_ref (location_t loc, tree
*** 4149,4165 ****
        protected_set_expr_location (ret, loc);
        if (non_lvalue)
  	ret = non_lvalue_loc (loc, ret);
-       if (first)
- 	ret = build2_loc (loc, COMPOUND_EXPR, TREE_TYPE (ret), first, ret);
        return ret;
      }
  
    {
      tree ar = cp_default_conversion (array, complain);
      tree ind = cp_default_conversion (idx, complain);
  
!     if (!processing_template_decl
! 	&& !first && flag_strong_eval_order == 2 && TREE_SIDE_EFFECTS (ind))
        ar = first = save_expr (ar);
  
      /* Put the integer in IND to simplify error checking.  */
--- 4155,4170 ----
        protected_set_expr_location (ret, loc);
        if (non_lvalue)
  	ret = non_lvalue_loc (loc, ret);
        return ret;
      }
  
    {
      tree ar = cp_default_conversion (array, complain);
      tree ind = cp_default_conversion (idx, complain);
+     tree first = NULL_TREE;
  
!     if (!processing_template_decl && flag_strong_eval_order == 2
! 	&& TREE_SIDE_EFFECTS (ind))
        ar = first = save_expr (ar);
  
      /* Put the integer in IND to simplify error checking.  */
diff -Nrcpad gcc-16-20250824/gcc/cp/typeck2.cc gcc-16-20250831/gcc/cp/typeck2.cc
*** gcc-16-20250824/gcc/cp/typeck2.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/cp/typeck2.cc	Sun Aug 31 22:32:12 2025
*************** cxx_incomplete_type_inform (const_tree t
*** 281,295 ****
    location_t loc = DECL_SOURCE_LOCATION (TYPE_MAIN_DECL (type));
    tree ptype = strip_top_quals (CONST_CAST_TREE (type));
  
    if (current_class_type
        && TYPE_BEING_DEFINED (current_class_type)
!       && same_type_p (ptype, current_class_type))
      inform (loc, "definition of %q#T is not complete until "
  	    "the closing brace", ptype);
-   else if (!TYPE_TEMPLATE_INFO (ptype))
-     inform (loc, "forward declaration of %q#T", ptype);
    else
!     inform (loc, "declaration of %q#T", ptype);
  }
  
  /* Print an error message for invalid use of an incomplete type.
--- 281,376 ----
    location_t loc = DECL_SOURCE_LOCATION (TYPE_MAIN_DECL (type));
    tree ptype = strip_top_quals (CONST_CAST_TREE (type));
  
+   /* When defining a template, current_class_type will be the pattern on
+      the template definition, while non-self-reference usages of this
+      template will be an instantiation; we should pull out the pattern to
+      compare against.  And for partial specs we should use the loc of the
+      partial spec rather than the primary template.  */
+   tree ttype = NULL_TREE;
+   tree tinfo = TYPE_TEMPLATE_INFO (ptype);
+   if (tinfo)
+     {
+       tree tmpl = TI_TEMPLATE (tinfo);
+       if (PRIMARY_TEMPLATE_P (tmpl) && TI_PARTIAL_INFO (tinfo))
+ 	{
+ 	  tree partial = TI_TEMPLATE (TI_PARTIAL_INFO (tinfo));
+ 	  loc = DECL_SOURCE_LOCATION (partial);
+ 	  ttype = TREE_TYPE (partial);
+ 	}
+       else
+ 	ttype = TREE_TYPE (tmpl);
+     }
+ 
    if (current_class_type
        && TYPE_BEING_DEFINED (current_class_type)
!       && (same_type_p (ptype, current_class_type)
! 	  || (ttype && same_type_p (ttype, current_class_type))))
      inform (loc, "definition of %q#T is not complete until "
  	    "the closing brace", ptype);
    else
!     {
!       if (!tinfo)
! 	inform (loc, "forward declaration of %q#T", ptype);
!       else
! 	inform (loc, "declaration of %q#T", ptype);
! 
!       /* If there's a similar-looking complete type attached
! 	 to a different module, point at that as a suggestion.  */
!       if (modules_p () && TYPE_NAMESPACE_SCOPE_P (ptype))
! 	{
! 	  tree result = lookup_qualified_name (CP_TYPE_CONTEXT (ptype),
! 					       TYPE_IDENTIFIER (ptype),
! 					       LOOK_want::TYPE);
! 	  if (TREE_CODE (result) == TREE_LIST)
! 	    for (; result; result = TREE_CHAIN (result))
! 	      {
! 		tree cand = TREE_VALUE (result);
! 
! 		/* Typedefs are not likely intended to correspond.  */
! 		if (is_typedef_decl (STRIP_TEMPLATE (cand))
! 		    || DECL_ALIAS_TEMPLATE_P (cand))
! 		  continue;
! 
! 		/* Only look at templates if type was a template.  */
! 		if ((tinfo != nullptr) != (TREE_CODE (cand) == TEMPLATE_DECL))
! 		  continue;
! 
! 		/* If we're looking for a template specialisation,
! 		   only consider matching specialisations.  */
! 		if (tinfo)
! 		  {
! 		    tree t = lookup_template_class (cand, TI_ARGS (tinfo),
! 						    NULL_TREE, NULL_TREE,
! 						    tf_none);
! 		    if (t == error_mark_node
! 			|| !CLASS_TYPE_P (t)
! 			|| TYPE_BEING_DEFINED (t))
! 		      continue;
! 
! 		    if (CLASSTYPE_TEMPLATE_INSTANTIATION (t))
! 		      {
! 			/* An uninstantiated template: check if there is a
! 			   pattern that could be used.  We don't want to
! 			   call instantiate_class_template as that could
! 			   cause further errors; this is just a hint.  */
! 			tree part = most_specialized_partial_spec (t, tf_none);
! 			cand = (part ? TI_TEMPLATE (part)
! 				: CLASSTYPE_TI_TEMPLATE (t));
! 		      }
! 		    else
! 		      cand = TYPE_NAME (t);
! 		  }
! 		
! 		if (!COMPLETE_TYPE_P (TREE_TYPE (cand)))
! 		  continue;
! 
! 		inform (DECL_SOURCE_LOCATION (cand),
! 			"%q#T has a definition but does not correspond with "
! 			"%q#T because it is attached to a different module",
! 			TREE_TYPE (cand), ptype);
! 	      }
! 	}
!     }
  }
  
  /* Print an error message for invalid use of an incomplete type.
diff -Nrcpad gcc-16-20250824/gcc/diagnostic-global-context.cc gcc-16-20250831/gcc/diagnostic-global-context.cc
*** gcc-16-20250824/gcc/diagnostic-global-context.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/diagnostic-global-context.cc	Sun Aug 31 22:32:12 2025
*************** along with GCC; see the file COPYING3.
*** 28,38 ****
--- 28,42 ----
  #include "intl.h"
  #include "diagnostic.h"
  #include "diagnostics/sink.h"
+ #include "diagnostics/logging.h"
  
  /* A diagnostics::context surrogate for stderr.  */
  static diagnostics::context global_diagnostic_context;
  diagnostics::context *global_dc = &global_diagnostic_context;
  
+ using log_function_params = diagnostics::logging::log_function_params;
+ using auto_inc_log_depth = diagnostics::logging::auto_inc_depth;
+ 
  /* Standard error reporting routines in increasing order of severity.  */
  
  /* Text to be emitted verbatim to the error message stream; this
*************** diagnostics::context *global_dc = &globa
*** 41,48 ****
  void
  verbatim (const char *gmsgid, ...)
  {
!   va_list ap;
  
    va_start (ap, gmsgid);
    text_info text (_(gmsgid), &ap, errno);
    global_dc->report_verbatim (text);
--- 45,56 ----
  void
  verbatim (const char *gmsgid, ...)
  {
!   auto logger = global_dc->get_logger ();
!   log_function_params (logger, __func__)
!     .log_param_string ("gmsgid", gmsgid);
!   auto_inc_log_depth depth_sentinel (logger);
  
+   va_list ap;
    va_start (ap, gmsgid);
    text_info text (_(gmsgid), &ap, errno);
    global_dc->report_verbatim (text);
*************** emit_diagnostic (enum diagnostics::kind
*** 58,63 ****
--- 66,78 ----
  		 diagnostics::option_id option_id,
  		 const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_location_t ("location", location)
+     .log_param_option_id ("option_id", option_id)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** emit_diagnostic (enum diagnostics::kind
*** 65,70 ****
--- 80,89 ----
    bool ret = global_dc->diagnostic_impl (&richloc, nullptr, option_id,
  					 gmsgid, &ap, kind);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("emit_diagnostic", ret);
+ 
    return ret;
  }
  
*************** emit_diagnostic (enum diagnostics::kind
*** 76,87 ****
--- 95,117 ----
  		 diagnostics::option_id option_id,
  		 const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_rich_location ("richloc", richloc)
+     .log_param_option_id ("option_id", option_id)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
    bool ret = global_dc->diagnostic_impl (richloc, nullptr, option_id,
  					 gmsgid, &ap, kind);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("emit_diagnostic", ret);
+ 
    return ret;
  }
  
*************** emit_diagnostic_valist (enum diagnostics
*** 93,101 ****
  			diagnostics::option_id option_id,
  			const char *gmsgid, va_list *ap)
  {
    rich_location richloc (line_table, location);
!   return global_dc->diagnostic_impl (&richloc, nullptr, option_id,
! 				     gmsgid, ap, kind);
  }
  
  /* As above, but with rich_location and metadata.  */
--- 123,143 ----
  			diagnostics::option_id option_id,
  			const char *gmsgid, va_list *ap)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_location_t ("location", location)
+     .log_param_option_id ("option_id", option_id)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    rich_location richloc (line_table, location);
!   bool ret = global_dc->diagnostic_impl (&richloc, nullptr, option_id,
! 					 gmsgid, ap, kind);
! 
!   if (logger)
!     logger->log_bool_return ("emit_diagnostic_valist", ret);
! 
!   return ret;
  }
  
  /* As above, but with rich_location and metadata.  */
*************** emit_diagnostic_valist_meta (enum diagno
*** 107,114 ****
  			     diagnostics::option_id option_id,
  			     const char *gmsgid, va_list *ap)
  {
!   return global_dc->diagnostic_impl (richloc, metadata, option_id,
! 				     gmsgid, ap, kind);
  }
  
  /* An informative note at LOCATION.  Use this for additional details on an error
--- 149,168 ----
  			     diagnostics::option_id option_id,
  			     const char *gmsgid, va_list *ap)
  {
!   auto logger = global_dc->get_logger ();
!   log_function_params (logger, __func__)
!     .log_param_rich_location ("richloc", richloc)
!     .log_param_option_id ("option_id", option_id)
!     .log_param_string ("gmsgid", gmsgid);
!   auto_inc_log_depth depth_sentinel (logger);
! 
!   bool ret = global_dc->diagnostic_impl (richloc, metadata, option_id,
! 					 gmsgid, ap, kind);
! 
!   if (logger)
!     logger->log_bool_return ("emit_diagnostic_valist_meta", ret);
! 
!   return ret;
  }
  
  /* An informative note at LOCATION.  Use this for additional details on an error
*************** emit_diagnostic_valist_meta (enum diagno
*** 116,121 ****
--- 170,181 ----
  void
  inform (location_t location, const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_location_t ("location", location)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** inform (rich_location *richloc, const ch
*** 131,136 ****
--- 191,202 ----
  {
    gcc_assert (richloc);
  
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_rich_location ("richloc", richloc)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** void
*** 145,150 ****
--- 211,222 ----
  inform_n (location_t location, unsigned HOST_WIDE_INT n,
  	  const char *singular_gmsgid, const char *plural_gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_location_t ("location", location)
+     .log_params_n_gmsgids (n, singular_gmsgid, plural_gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    va_list ap;
    va_start (ap, plural_gmsgid);
    auto_diagnostic_group d;
*************** inform_n (location_t location, unsigned
*** 161,166 ****
--- 233,244 ----
  bool
  warning (diagnostics::option_id option_id, const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_option_id ("option_id", option_id)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** warning (diagnostics::option_id option_i
*** 169,174 ****
--- 247,256 ----
  					 gmsgid, &ap,
  					 diagnostics::kind::warning);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("warning", ret);
+ 
    return ret;
  }
  
*************** warning_at (location_t location,
*** 181,186 ****
--- 263,275 ----
  	    diagnostics::option_id option_id,
  	    const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_location_t ("location", location)
+     .log_param_option_id ("option_id", option_id)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** warning_at (location_t location,
*** 189,194 ****
--- 278,287 ----
  					 gmsgid, &ap,
  					 diagnostics::kind::warning);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("warning_at", ret);
+ 
    return ret;
  }
  
*************** warning_at (rich_location *richloc,
*** 201,206 ****
--- 294,306 ----
  {
    gcc_assert (richloc);
  
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_rich_location ("richloc", richloc)
+     .log_param_option_id ("option_id", option_id)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** warning_at (rich_location *richloc,
*** 208,213 ****
--- 308,317 ----
  					 gmsgid, &ap,
  					 diagnostics::kind::warning);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("warning_at", ret);
+ 
    return ret;
  }
  
*************** warning_meta (rich_location *richloc,
*** 221,226 ****
--- 325,337 ----
  {
    gcc_assert (richloc);
  
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_rich_location ("richloc", richloc)
+     .log_param_option_id ("option_id", option_id)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** warning_meta (rich_location *richloc,
*** 228,233 ****
--- 339,348 ----
  					 gmsgid, &ap,
  					 diagnostics::kind::warning);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("warning_meta", ret);
+ 
    return ret;
  }
  
*************** warning_n (rich_location *richloc,
*** 241,246 ****
--- 356,368 ----
  {
    gcc_assert (richloc);
  
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_rich_location ("richloc", richloc)
+     .log_param_option_id ("option_id", option_id)
+     .log_params_n_gmsgids (n, singular_gmsgid, plural_gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, plural_gmsgid);
*************** warning_n (rich_location *richloc,
*** 248,253 ****
--- 370,379 ----
  					   singular_gmsgid, plural_gmsgid,
  					   &ap, diagnostics::kind::warning);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("warning_n", ret);
+ 
    return ret;
  }
  
*************** warning_n (location_t location,
*** 261,266 ****
--- 387,399 ----
  	   unsigned HOST_WIDE_INT n,
  	   const char *singular_gmsgid, const char *plural_gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_location_t ("location", location)
+     .log_param_option_id ("option_id", option_id)
+     .log_params_n_gmsgids (n, singular_gmsgid, plural_gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, plural_gmsgid);
*************** warning_n (location_t location,
*** 269,274 ****
--- 402,411 ----
  					   singular_gmsgid, plural_gmsgid,
  					   &ap, diagnostics::kind::warning);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("warning_n", ret);
+ 
    return ret;
  }
  
*************** pedwarn (location_t location,
*** 290,295 ****
--- 427,439 ----
  	 diagnostics::option_id option_id,
  	 const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_location_t ("location", location)
+     .log_param_option_id ("option_id", option_id)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** pedwarn (location_t location,
*** 298,303 ****
--- 442,451 ----
  					 gmsgid, &ap,
  					 diagnostics::kind::pedwarn);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("pedwarn", ret);
+ 
    return ret;
  }
  
*************** pedwarn (rich_location *richloc,
*** 310,315 ****
--- 458,470 ----
  {
    gcc_assert (richloc);
  
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_rich_location ("richloc", richloc)
+     .log_param_option_id ("option_id", option_id)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** pedwarn (rich_location *richloc,
*** 317,322 ****
--- 472,481 ----
  					 gmsgid, &ap,
  					 diagnostics::kind::pedwarn);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("pedwarn", ret);
+ 
    return ret;
  }
  
*************** pedwarn (rich_location *richloc,
*** 330,335 ****
--- 489,500 ----
  bool
  permerror (location_t location, const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_location_t ("location", location)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** permerror (location_t location, const ch
*** 337,342 ****
--- 502,511 ----
    bool ret = global_dc->diagnostic_impl (&richloc, nullptr, -1, gmsgid, &ap,
  					 diagnostics::kind::permerror);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("permerror", ret);
+ 
    return ret;
  }
  
*************** permerror (rich_location *richloc, const
*** 347,358 ****
--- 516,537 ----
  {
    gcc_assert (richloc);
  
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_rich_location ("richloc", richloc)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
    bool ret = global_dc->diagnostic_impl (richloc, nullptr, -1, gmsgid, &ap,
  					 diagnostics::kind::permerror);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("permerror", ret);
+ 
    return ret;
  }
  
*************** permerror_opt (location_t location,
*** 365,370 ****
--- 544,556 ----
  	       diagnostics::option_id option_id,
  	       const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_location_t ("location", location)
+     .log_param_option_id ("option_id", option_id)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** permerror_opt (location_t location,
*** 373,378 ****
--- 559,568 ----
  					 gmsgid, &ap,
  					 diagnostics::kind::permerror);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("permerror_opt", ret);
+ 
    return ret;
  }
  
*************** permerror_opt (rich_location *richloc,
*** 385,390 ****
--- 575,587 ----
  {
    gcc_assert (richloc);
  
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_rich_location ("richloc", richloc)
+     .log_param_option_id ("option_id", option_id)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** permerror_opt (rich_location *richloc,
*** 392,397 ****
--- 589,598 ----
  					 gmsgid, &ap,
  					 diagnostics::kind::permerror);
    va_end (ap);
+ 
+   if (logger)
+     logger->log_bool_return ("permerror_opt", ret);
+ 
    return ret;
  }
  
*************** permerror_opt (rich_location *richloc,
*** 400,405 ****
--- 601,611 ----
  void
  error (const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** void
*** 415,420 ****
--- 621,632 ----
  error_n (location_t location, unsigned HOST_WIDE_INT n,
  	 const char *singular_gmsgid, const char *plural_gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_location_t ("location", location)
+     .log_params_n_gmsgids (n, singular_gmsgid, plural_gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, plural_gmsgid);
*************** error_n (location_t location, unsigned H
*** 429,434 ****
--- 641,652 ----
  void
  error_at (location_t loc, const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_location_t ("loc", loc)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** error_at (rich_location *richloc, const
*** 445,450 ****
--- 663,674 ----
  {
    gcc_assert (richloc);
  
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_rich_location ("richloc", richloc)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** error_meta (rich_location *richloc, cons
*** 461,466 ****
--- 685,696 ----
  {
    gcc_assert (richloc);
  
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_rich_location ("richloc", richloc)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** error_meta (rich_location *richloc, cons
*** 475,480 ****
--- 705,715 ----
  void
  sorry (const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** sorry (const char *gmsgid, ...)
*** 488,493 ****
--- 723,734 ----
  void
  sorry_at (location_t loc, const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_location_t ("loc", loc)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** seen_error (void)
*** 511,516 ****
--- 752,763 ----
  void
  fatal_error (location_t loc, const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_location_t ("loc", loc)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** fatal_error (location_t loc, const char
*** 527,532 ****
--- 774,784 ----
  void
  internal_error (const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
*************** internal_error (const char *gmsgid, ...)
*** 544,549 ****
--- 796,806 ----
  void
  internal_error_no_backtrace (const char *gmsgid, ...)
  {
+   auto logger = global_dc->get_logger ();
+   log_function_params (logger, __func__)
+     .log_param_string ("gmsgid", gmsgid);
+   auto_inc_log_depth depth_sentinel (logger);
+ 
    auto_diagnostic_group d;
    va_list ap;
    va_start (ap, gmsgid);
diff -Nrcpad gcc-16-20250824/gcc/diagnostics/context.cc gcc-16-20250831/gcc/diagnostics/context.cc
*** gcc-16-20250824/gcc/diagnostics/context.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/diagnostics/context.cc	Sun Aug 31 22:32:12 2025
*************** along with GCC; see the file COPYING3.
*** 51,56 ****
--- 51,57 ----
  #include "diagnostics/buffering.h"
  #include "diagnostics/file-cache.h"
  #include "diagnostics/dumping.h"
+ #include "diagnostics/logging.h"
  
  #ifdef HAVE_TERMIOS_H
  # include <termios.h>
*************** context::initialize (int n_opts)
*** 211,216 ****
--- 212,218 ----
    m_diagrams.m_theme = nullptr;
    m_original_argv = nullptr;
    m_diagnostic_buffer = nullptr;
+   m_logger = nullptr;
  
    enum diagnostic_text_art_charset text_art_charset
      = DIAGNOSTICS_TEXT_ART_CHARSET_EMOJI;
*************** context::initialize (int n_opts)
*** 222,227 ****
--- 224,250 ----
  	text_art_charset = DIAGNOSTICS_TEXT_ART_CHARSET_ASCII;
      }
    set_text_art_charset (text_art_charset);
+ 
+   if (const char *name = getenv ("GCC_DIAGNOSTICS_LOG"))
+     {
+       if (name[0] != '\0')
+ 	{
+ 	  /* Try to write a log to the named path.  */
+ 	  if (FILE *outfile = fopen (name, "w"))
+ 	    m_logger = new logging::logger
+ 	      (output_file (outfile, true,
+ 			    label_text::take (xstrdup (name))));
+ 	}
+       else
+ 	/* Write a log to stderr.  */
+ 	m_logger = new logging::logger
+ 	  (output_file
+ 	   (stderr, false,
+ 	    label_text::borrow ("stderr")));
+     }
+ 
+   if (m_logger)
+     m_logger->log_printf ("diagnostics::context::initialize");
  }
  
  /* Maybe initialize the color support. We require clients to do this
*************** context::initialize_input_context (diagn
*** 329,334 ****
--- 352,366 ----
  void
  context::finish ()
  {
+   if (m_logger)
+     {
+       m_logger->log_printf ("diagnostics::context::finish");
+       /* We're cleaning up the logger before this function exits,
+ 	 so we can't use auto_inc_depth here.  */
+       m_logger->inc_depth ();
+       dump (m_logger->get_stream (), m_logger->get_indent ());
+     }
+ 
    /* We might be handling a fatal error.
       Close any active diagnostic groups, which may trigger flushing
       sinks.  */
*************** context::finish ()
*** 381,425 ****
  
    freeargv (m_original_argv);
    m_original_argv = nullptr;
  }
  
  /* Dump state of this diagnostics::context to OUT, for debugging.  */
  
  void
! context::dump (FILE *outfile) const
  {
!   dumping::emit_heading (outfile, 0, "diagnostics::context");
!   m_diagnostic_counters.dump (outfile, 2);
!   dumping::emit_heading (outfile, 2, "reference printer");
    if (m_reference_printer)
!     m_reference_printer->dump (outfile, 4);
    else
!     dumping::emit_none (outfile, 4);
!   dumping::emit_heading (outfile, 2, "output sinks");
    if (m_sinks.length () > 0)
      {
        for (unsigned i = 0; i < m_sinks.length (); ++i)
  	{
! 	  dumping::emit_indent (outfile, 4);
  	  const sink *s = m_sinks[i];
  	  fprintf (outfile, "sink %i (", i);
  	  s->dump_kind (outfile);
  	  fprintf (outfile, "):\n");
! 	  s->dump (outfile, 6);
  	}
      }
    else
!     dumping::emit_none (outfile, 4);
!   dumping::emit_heading (outfile, 2, "diagnostic buffer");
    if (m_diagnostic_buffer)
!     m_diagnostic_buffer->dump (outfile, 4);
    else
!     dumping::emit_none (outfile, 4);
!   dumping::emit_heading (outfile, 2, "file cache");
    if (m_file_cache)
!     m_file_cache->dump (outfile, 4);
    else
!     dumping::emit_none (outfile, 4);
  }
  
  /* Return true if sufficiently severe diagnostics have been seen that
--- 413,460 ----
  
    freeargv (m_original_argv);
    m_original_argv = nullptr;
+ 
+   delete m_logger;
+   m_logger = nullptr;
  }
  
  /* Dump state of this diagnostics::context to OUT, for debugging.  */
  
  void
! context::dump (FILE *outfile, int indent) const
  {
!   dumping::emit_heading (outfile, indent, "diagnostics::context");
!   m_diagnostic_counters.dump (outfile, indent + 2);
!   dumping::emit_heading (outfile, indent + 2, "reference printer");
    if (m_reference_printer)
!     m_reference_printer->dump (outfile, indent + 4);
    else
!     dumping::emit_none (outfile, indent + 4);
!   dumping::emit_heading (outfile, indent + 2, "output sinks");
    if (m_sinks.length () > 0)
      {
        for (unsigned i = 0; i < m_sinks.length (); ++i)
  	{
! 	  dumping::emit_indent (outfile, indent + 4);
  	  const sink *s = m_sinks[i];
  	  fprintf (outfile, "sink %i (", i);
  	  s->dump_kind (outfile);
  	  fprintf (outfile, "):\n");
! 	  s->dump (outfile, indent + 6);
  	}
      }
    else
!     dumping::emit_none (outfile, indent + 4);
!   dumping::emit_heading (outfile, indent + 2, "diagnostic buffer");
    if (m_diagnostic_buffer)
!     m_diagnostic_buffer->dump (outfile, indent + 4);
    else
!     dumping::emit_none (outfile, indent + 4);
!   dumping::emit_heading (outfile, indent + 2, "file cache");
    if (m_file_cache)
!     m_file_cache->dump (outfile, indent + 4);
    else
!     dumping::emit_none (outfile, indent + 4);
  }
  
  /* Return true if sufficiently severe diagnostics have been seen that
*************** context::remove_all_output_sinks ()
*** 445,450 ****
--- 480,488 ----
  void
  context::set_sink (std::unique_ptr<sink> sink_)
  {
+   DIAGNOSTICS_LOG_SCOPE_PRINTF0 (m_logger, "diagnostics::context::set_sink");
+   if (m_logger)
+     sink_->dump (m_logger->get_stream (), m_logger->get_indent ());
    remove_all_output_sinks ();
    m_sinks.safe_push (sink_.release ());
  }
*************** context::get_sink (size_t idx) const
*** 460,465 ****
--- 498,506 ----
  void
  context::add_sink (std::unique_ptr<sink> sink_)
  {
+   DIAGNOSTICS_LOG_SCOPE_PRINTF0 (m_logger, "diagnostics::context::add_sink");
+   if (m_logger)
+     sink_->dump (m_logger->get_stream (), m_logger->get_indent ());
    m_sinks.safe_push (sink_.release ());
  }
  
*************** get_text_for_kind (enum kind kind)
*** 664,669 ****
--- 705,723 ----
    return diagnostic_kind_text[static_cast<int> (kind)];
  }
  
+ static const char *const diagnostic_kind_debug_text[] = {
+ #define DEFINE_DIAGNOSTIC_KIND(K, T, C) (#K),
+ #include "diagnostics/kinds.def"
+ #undef DEFINE_DIAGNOSTIC_KIND
+   "must-not-happen"
+ };
+ 
+ const char *
+ get_debug_string_for_kind (enum kind kind)
+ {
+   return diagnostic_kind_debug_text[static_cast<int> (kind)];
+ }
+ 
  static const char *const diagnostic_kind_color[] = {
  #define DEFINE_DIAGNOSTIC_KIND(K, T, C) (C),
  #include "diagnostics/kinds.def"
*************** context::emit_diagnostic_with_group_va (
*** 1276,1281 ****
--- 1330,1338 ----
  bool
  context::report_diagnostic (diagnostic_info *diagnostic)
  {
+   auto logger = get_logger ();
+   DIAGNOSTICS_LOG_SCOPE_PRINTF0 (logger, "diagnostics::context::report_diagnostic");
+ 
    enum kind orig_diag_kind = diagnostic->m_kind;
  
    /* Every call to report_diagnostic should be within a
*************** context::report_diagnostic (diagnostic_i
*** 1290,1295 ****
--- 1347,1354 ----
    if (was_warning && m_inhibit_warnings)
      {
        inhibit_notes_in_group ();
+       if (m_logger)
+ 	m_logger->log_printf ("rejecting: inhibiting warnings");
        return false;
      }
  
*************** context::report_diagnostic (diagnostic_i
*** 1305,1311 ****
      }
  
    if (diagnostic->m_kind == kind::note && m_inhibit_notes_p)
!     return false;
  
    /* If the user requested that warnings be treated as errors, so be
       it.  Note that we do this before the next block so that
--- 1364,1374 ----
      }
  
    if (diagnostic->m_kind == kind::note && m_inhibit_notes_p)
!     {
!       if (m_logger)
! 	m_logger->log_printf ("rejecting: inhibiting notes");
!       return false;
!     }
  
    /* If the user requested that warnings be treated as errors, so be
       it.  Note that we do this before the next block so that
*************** context::report_diagnostic (diagnostic_i
*** 1322,1327 ****
--- 1385,1392 ----
       stack.  .  */
    if (!diagnostic_enabled (diagnostic))
      {
+       if (m_logger)
+ 	m_logger->log_printf ("rejecting: diagnostic not enabled");
        inhibit_notes_in_group ();
        return false;
      }
*************** context::report_diagnostic (diagnostic_i
*** 1330,1342 ****
        && ((!m_warn_system_headers
  	   && diagnostic->m_iinfo.m_allsyslocs)
  	  || m_inhibit_warnings))
!     /* Bail if the warning is not to be reported because all locations in the
!        inlining stack (if there is one) are in system headers.  */
!     return false;
  
    if (diagnostic->m_kind == kind::note && notes_inhibited_in_group ())
!     /* Bail for all the notes in the diagnostic_group that started to inhibit notes.  */
!     return false;
  
    if (diagnostic->m_kind != kind::note && diagnostic->m_kind != kind::ice)
      check_max_errors (false);
--- 1395,1415 ----
        && ((!m_warn_system_headers
  	   && diagnostic->m_iinfo.m_allsyslocs)
  	  || m_inhibit_warnings))
!     {
!       /* Bail if the warning is not to be reported because all locations in the
! 	 inlining stack (if there is one) are in system headers.  */
!       if (m_logger)
! 	m_logger->log_printf ("rejecting: warning in system header");
!       return false;
!     }
  
    if (diagnostic->m_kind == kind::note && notes_inhibited_in_group ())
!     {
!       /* Bail for all the notes in the diagnostic_group that started to inhibit notes.  */
!       if (m_logger)
! 	m_logger->log_printf ("rejecting: notes inhibited within group");
!       return false;
!     }
  
    if (diagnostic->m_kind != kind::note && diagnostic->m_kind != kind::ice)
      check_max_errors (false);
*************** context::report_diagnostic (diagnostic_i
*** 1397,1404 ****
  
    /* Is this the initial diagnostic within the stack of groups?  */
    if (m_diagnostic_groups.m_emission_count == 0)
!     for (auto sink_ : m_sinks)
!       sink_->on_begin_group ();
    m_diagnostic_groups.m_emission_count++;
  
    va_list *orig_args = diagnostic->m_message.m_args_ptr;
--- 1470,1482 ----
  
    /* Is this the initial diagnostic within the stack of groups?  */
    if (m_diagnostic_groups.m_emission_count == 0)
!     {
!       DIAGNOSTICS_LOG_SCOPE_PRINTF0
! 	(get_logger (),
! 	 "diagnostics::context: beginning group");
!       for (auto sink_ : m_sinks)
! 	sink_->on_begin_group ();
!     }
    m_diagnostic_groups.m_emission_count++;
  
    va_list *orig_args = diagnostic->m_message.m_args_ptr;
*************** context::diagnostic_impl (rich_location
*** 1557,1562 ****
--- 1635,1647 ----
  			  const char *gmsgid,
  			  va_list *ap, enum kind kind)
  {
+   logging::log_function_params
+     (m_logger, "diagnostics::context::diagnostic_impl")
+     .log_param_option_id ("option_id", opt_id)
+     .log_param_kind ("kind", kind)
+     .log_param_string ("gmsgid", gmsgid);
+   logging::auto_inc_depth depth_sentinel (m_logger);
+ 
    diagnostic_info diagnostic;
    if (kind == diagnostics::kind::permerror)
      {
*************** context::diagnostic_impl (rich_location
*** 1574,1580 ****
  	diagnostic.m_option_id = opt_id;
      }
    diagnostic.m_metadata = metadata;
!   return report_diagnostic (&diagnostic);
  }
  
  /* Implement inform_n, warning_n, and error_n, as documented and
--- 1659,1669 ----
  	diagnostic.m_option_id = opt_id;
      }
    diagnostic.m_metadata = metadata;
! 
!   bool ret = report_diagnostic (&diagnostic);
!   if (m_logger)
!     m_logger->log_bool_return ("diagnostics::context::diagnostic_impl", ret);
!   return ret;
  }
  
  /* Implement inform_n, warning_n, and error_n, as documented and
*************** context::diagnostic_n_impl (rich_locatio
*** 1588,1593 ****
--- 1677,1689 ----
  			    const char *plural_gmsgid,
  			    va_list *ap, enum kind kind)
  {
+   logging::log_function_params
+     (m_logger, "diagnostics::context::diagnostic_n_impl")
+     .log_param_option_id ("option_id", opt_id)
+     .log_param_kind ("kind", kind)
+     .log_params_n_gmsgids (n, singular_gmsgid, plural_gmsgid);
+   logging::auto_inc_depth depth_sentinel (m_logger);
+ 
    diagnostic_info diagnostic;
    unsigned long gtn;
  
*************** context::diagnostic_n_impl (rich_locatio
*** 1604,1610 ****
    if (kind == diagnostics::kind::warning)
      diagnostic.m_option_id = opt_id;
    diagnostic.m_metadata = metadata;
!   return report_diagnostic (&diagnostic);
  }
  
  
--- 1700,1710 ----
    if (kind == diagnostics::kind::warning)
      diagnostic.m_option_id = opt_id;
    diagnostic.m_metadata = metadata;
! 
!   bool ret = report_diagnostic (&diagnostic);
!   if (m_logger)
!     m_logger->log_bool_return ("diagnostics::context::diagnostic_n_impl", ret);
!   return ret;
  }
  
  
*************** context::end_group ()
*** 1706,1713 ****
  	 If any diagnostics were emitted, give the context a chance
  	 to do something.  */
        if (m_diagnostic_groups.m_emission_count > 0)
! 	for (auto sink_ : m_sinks)
! 	  sink_->on_end_group ();
        m_diagnostic_groups.m_emission_count = 0;
      }
    /* We're popping one level, so might need to stop inhibiting notes.  */
--- 1806,1818 ----
  	 If any diagnostics were emitted, give the context a chance
  	 to do something.  */
        if (m_diagnostic_groups.m_emission_count > 0)
! 	{
! 	  DIAGNOSTICS_LOG_SCOPE_PRINTF0
! 	    (get_logger (),
! 	     "diagnostics::context::end_group: ending group");
! 	  for (auto sink_ : m_sinks)
! 	    sink_->on_end_group ();
! 	}
        m_diagnostic_groups.m_emission_count = 0;
      }
    /* We're popping one level, so might need to stop inhibiting notes.  */
diff -Nrcpad gcc-16-20250824/gcc/diagnostics/context.h gcc-16-20250831/gcc/diagnostics/context.h
*** gcc-16-20250824/gcc/diagnostics/context.h	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/diagnostics/context.h	Sun Aug 31 22:32:12 2025
*************** along with GCC; see the file COPYING3.
*** 28,33 ****
--- 28,34 ----
  #include "diagnostics/source-printing-options.h"
  #include "diagnostics/column-options.h"
  #include "diagnostics/counters.h"
+ #include "diagnostics/logging.h"
  
  namespace diagnostics {
  
*************** public:
*** 275,282 ****
  
    void finish ();
  
!   void dump (FILE *out) const;
!   void DEBUG_FUNCTION dump () const { dump (stderr); }
  
    bool execution_failed_p () const;
  
--- 276,285 ----
  
    void finish ();
  
!   void dump (FILE *out, int indent) const;
!   void DEBUG_FUNCTION dump () const { dump (stderr, 0); }
! 
!   logging::logger *get_logger () { return m_logger; }
  
    bool execution_failed_p () const;
  
*************** public:
*** 335,352 ****
  		       enum kind new_kind,
  		       location_t where)
    {
      return m_option_classifier.classify_diagnostic (this,
  						    opt_id,
  						    new_kind,
  						    where);
    }
  
!   void push_diagnostics (location_t where ATTRIBUTE_UNUSED)
    {
      m_option_classifier.push ();
    }
    void pop_diagnostics (location_t where)
    {
      m_option_classifier.pop (where);
    }
  
--- 338,372 ----
  		       enum kind new_kind,
  		       location_t where)
    {
+     logging::log_function_params
+       (m_logger, "diagnostics::context::classify_diagnostics")
+       .log_param_option_id ("option_id", opt_id)
+       .log_param_kind ("new_kind", new_kind)
+       .log_param_location_t ("where", where);
+     logging::auto_inc_depth depth_sentinel (m_logger);
+ 
      return m_option_classifier.classify_diagnostic (this,
  						    opt_id,
  						    new_kind,
  						    where);
    }
  
!   void push_diagnostics (location_t where)
    {
+     logging::log_function_params
+       (m_logger, "diagnostics::context::push_diagnostics")
+       .log_param_location_t ("where", where);
+     logging::auto_inc_depth depth_sentinel (m_logger);
+ 
      m_option_classifier.push ();
    }
    void pop_diagnostics (location_t where)
    {
+     logging::log_function_params
+       (m_logger, "diagnostics::context::pop_diagnostics")
+       .log_param_location_t ("where", where);
+     logging::auto_inc_depth depth_sentinel (m_logger);
+ 
      m_option_classifier.pop (where);
    }
  
*************** private:
*** 826,831 ****
--- 846,856 ----
       later (if the buffer is flushed), moved to other buffers, or
       discarded (if the buffer is cleared).  */
    buffer *m_diagnostic_buffer;
+ 
+   /* Owned by the context.
+      Debugging option: if non-NULL, report information to the logger
+      on what the context is doing.  */
+   logging::logger *m_logger;
  };
  
  /* Client supplied function to announce a diagnostic
diff -Nrcpad gcc-16-20250824/gcc/diagnostics/html-sink.cc gcc-16-20250831/gcc/diagnostics/html-sink.cc
*** gcc-16-20250824/gcc/diagnostics/html-sink.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/diagnostics/html-sink.cc	Sun Aug 31 22:32:12 2025
*************** along with GCC; see the file COPYING3.
*** 34,39 ****
--- 34,40 ----
  #include "diagnostics/buffering.h"
  #include "diagnostics/paths.h"
  #include "diagnostics/dumping.h"
+ #include "diagnostics/logging.h"
  #include "diagnostics/client-data-hooks.h"
  #include "selftest.h"
  #include "diagnostics/selftest-context.h"
*************** html_builder::end_group ()
*** 1320,1325 ****
--- 1321,1328 ----
  void
  html_builder::flush_to_file (FILE *outf)
  {
+   DIAGNOSTICS_LOG_SCOPE_PRINTF0 (m_context.get_logger (),
+ 				 "diagnostics::html_builder::flush_to_file");
    if (m_html_gen_opts.m_javascript)
      {
        gcc_assert (m_head_element);
*************** public:
*** 1389,1394 ****
--- 1392,1400 ----
    on_report_diagnostic (const diagnostic_info &diagnostic,
  			enum kind orig_diag_kind) final override
    {
+     DIAGNOSTICS_LOG_SCOPE_PRINTF0
+       (get_logger (),
+        "diagnostics::html_sink::on_report_diagnostic");
      m_builder.on_report_diagnostic (diagnostic, orig_diag_kind, m_buffer);
    }
    void on_diagram (const diagram &d) final override
diff -Nrcpad gcc-16-20250824/gcc/diagnostics/kinds.h gcc-16-20250831/gcc/diagnostics/kinds.h
*** gcc-16-20250824/gcc/diagnostics/kinds.h	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/diagnostics/kinds.h	Sun Aug 31 22:32:12 2025
*************** enum class kind
*** 38,43 ****
--- 38,44 ----
  };
  
  extern const char *get_text_for_kind (enum diagnostics::kind);
+ extern const char *get_debug_string_for_kind (enum diagnostics::kind);
  extern const char *get_color_for_kind (enum diagnostics::kind);
  
  } // namespace diagnostics
diff -Nrcpad gcc-16-20250824/gcc/diagnostics/logging.cc gcc-16-20250831/gcc/diagnostics/logging.cc
*** gcc-16-20250824/gcc/diagnostics/logging.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/diagnostics/logging.cc	Sun Aug 31 22:32:12 2025
***************
*** 0 ****
--- 1,72 ----
+ /* Utilities for implementing "dump" functions for the diagnostics subsystem.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+ 
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "diagnostics/logging.h"
+ 
+ namespace diagnostics {
+ namespace logging {
+ 
+ logger::logger (output_file outfile)
+ : m_outfile (std::move (outfile)),
+   m_log_depth (0)
+ {
+ }
+ 
+ void
+ logger::log_printf (const char *fmt, ...)
+ {
+   emit_indent ();
+ 
+   va_list ap;
+   va_start (ap, fmt);
+   vfprintf (get_stream (), fmt, ap);
+   va_end (ap);
+ 
+   emit_newline ();
+ }
+ 
+ void
+ logger::log_bool_return (const char *function_name, bool retval)
+ {
+   log_printf ("%s <- %s",
+ 	      retval ? "true" : "false",
+ 	      function_name);
+ }
+ 
+ /* Emit indentation to OUTFILE for the start of a log line.  */
+ 
+ void
+ logger::emit_indent () const
+ {
+   fprintf (get_stream (), "%*s", get_indent (), "");
+ }
+ 
+ void
+ logger::emit_newline () const
+ {
+   fputc ('\n', get_stream ());
+ }
+ 
+ } // namespace logging {
+ } // namespace diagnostics
diff -Nrcpad gcc-16-20250824/gcc/diagnostics/logging.h gcc-16-20250831/gcc/diagnostics/logging.h
*** gcc-16-20250824/gcc/diagnostics/logging.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/diagnostics/logging.h	Sun Aug 31 22:32:12 2025
***************
*** 0 ****
--- 1,230 ----
+ /* Debugging code for logging what the diagnostics subsystem is doing.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+ 
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_DIAGNOSTICS_LOGGING_H
+ #define GCC_DIAGNOSTICS_LOGGING_H
+ 
+ #include "diagnostics/output-file.h"
+ #include "diagnostics/option-id.h"
+ #include "diagnostics/kinds.h"
+ 
+ namespace diagnostics {
+ 
+ namespace logging {
+ 
+ /* A class for emitting a temporal log of what the diagnostics subsystem
+    is doing, for debugging.
+    We can't use pretty_printer here as we could potentially be debugging
+    pretty-printing itself.  */
+ 
+ class logger
+ {
+ public:
+   logger (output_file outfile);
+ 
+   /* High-level functions that emit a line of text.  */
+   void log_printf (const char *fmt, ...)
+     __attribute__ ((__format__ (printf, 2, 3)));
+   void log_bool_return (const char *function_name, bool retval);
+ 
+   /* Lower-level functions for building up a line of text.  */
+   void emit_indent () const;
+   void emit_newline () const;
+ 
+   FILE *get_stream () const
+   {
+     return m_outfile.get_open_file ();
+   }
+ 
+   int get_indent () const { return m_log_depth * 2; }
+ 
+   void inc_depth () { m_log_depth++; }
+   void dec_depth () { m_log_depth--; }
+ 
+ private:
+   output_file m_outfile;
+   int m_log_depth;
+ };
+ 
+ /* RAII class for pushing/popping depth within a logger.  */
+ 
+ class auto_inc_depth
+ {
+ public:
+   auto_inc_depth (logger *log)
+   : m_logger (log)
+   {
+     if (m_logger)
+       m_logger->inc_depth ();
+   }
+   ~auto_inc_depth ()
+   {
+     if (m_logger)
+       m_logger->dec_depth ();
+   }
+ 
+ private:
+   logger *m_logger;
+ };
+ 
+ /* Class for debugging function call parameters.  */
+ 
+ class log_function_params
+ {
+ public:
+   log_function_params (logger *logger_, const char *name)
+   : m_logger (logger_),
+     m_first_param (true)
+   {
+     if (m_logger)
+       {
+ 	m_logger->emit_indent ();
+ 	fprintf (m_logger->get_stream (), "%s (", name);
+       }
+   }
+   ~log_function_params ()
+   {
+     if (m_logger)
+       {
+ 	fprintf (m_logger->get_stream (), ")");
+ 	m_logger->emit_newline ();
+       }
+   }
+ 
+   log_function_params &
+   log_param_string (const char *name, const char *value)
+   {
+     if (m_logger)
+       {
+ 	add_any_comma ();
+ 	fprintf (m_logger->get_stream (), "%s: \"%s\"", name, value);
+       }
+     return *this;
+   }
+ 
+   log_function_params &
+   log_param_location_t (const char *name, location_t value)
+   {
+     if (m_logger)
+       {
+ 	add_any_comma ();
+ 	fprintf (m_logger->get_stream (),
+ 		 "%s: " HOST_SIZE_T_PRINT_HEX,
+ 		 name, (size_t)value);
+       }
+     return *this;
+   }
+ 
+   log_function_params &
+   log_param_rich_location (const char *name, const rich_location *richloc)
+   {
+     if (m_logger)
+       {
+ 	add_any_comma ();
+ 	fprintf (m_logger->get_stream (),
+ 		 "%s: %p",
+ 		 name, const_cast<void *> ((const void *)richloc));
+       }
+     return *this;
+   }
+ 
+   log_function_params &
+   log_param_option_id (const char *name, diagnostics::option_id value)
+   {
+     if (m_logger)
+       {
+ 	add_any_comma ();
+ 	fprintf (m_logger->get_stream (), "%s: %i", name, value.m_idx);
+       }
+     return *this;
+   }
+ 
+   log_function_params &
+   log_param_kind (const char *name, enum diagnostics::kind value)
+   {
+     if (m_logger)
+       {
+ 	add_any_comma ();
+ 	fprintf (m_logger->get_stream (), "%s: %s",
+ 		 name, get_debug_string_for_kind (value));
+       }
+     return *this;
+   }
+ 
+   log_function_params &
+   log_param_uhwi (const char *name, unsigned HOST_WIDE_INT value)
+   {
+     if (m_logger)
+       {
+ 	add_any_comma ();
+ 	fprintf (m_logger->get_stream (),
+ 		 "%s: " HOST_WIDE_INT_PRINT_DEC,
+ 		 name, value);
+       }
+     return *this;
+   }
+ 
+   log_function_params &
+   log_params_n_gmsgids (unsigned HOST_WIDE_INT n,
+ 			const char *singular_gmsgid,
+ 			const char *plural_gmsgid)
+   {
+     return log_param_uhwi ("n", n)
+       .log_param_string ("singular_gmsgid", singular_gmsgid)
+       .log_param_string ("plural_gmsgid", plural_gmsgid);
+   }
+ 
+ private:
+   void
+   add_any_comma ()
+   {
+     gcc_assert (m_logger);
+     if (m_first_param)
+       m_first_param = false;
+     else
+       fprintf (m_logger->get_stream (), ", ");
+   }
+ 
+   logger *m_logger;
+   bool m_first_param;
+ };
+ 
+ } // namespace logging
+ } // namespace diagnostics
+ 
+ /* Various macros for logging a formatted line, and indenting
+    further log messages within a scope.  */
+ 
+ #define DIAGNOSTICS_LOG_SCOPE_PRINTF0(LOGGER, FMT) \
+   if (LOGGER)							\
+     (LOGGER)->log_printf ((FMT));				\
+   diagnostics::logging::auto_inc_depth depth_sentinel (LOGGER);
+ 
+ #define DIAGNOSTICS_LOG_SCOPE_PRINTF1(LOGGER, FMT, ARG0)	\
+   if (LOGGER)							\
+     (LOGGER)->log_printf ((FMT), (ARG0));			\
+   diagnostics::logging::auto_inc_depth depth_sentinel (LOGGER);
+ 
+ #define DIAGNOSTICS_LOG_SCOPE_PRINTF2(LOGGER, FMT, ARG0, ARG1) \
+   if (LOGGER)							\
+     (LOGGER)->log_printf ((FMT), (ARG0), (ARG1));		\
+   diagnostics::logging::auto_inc_depth depth_sentinel (LOGGER);
+ 
+ #endif /* ! GCC_DIAGNOSTICS_LOGGING_H */
diff -Nrcpad gcc-16-20250824/gcc/diagnostics/output-file.h gcc-16-20250831/gcc/diagnostics/output-file.h
*** gcc-16-20250824/gcc/diagnostics/output-file.h	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/diagnostics/output-file.h	Sun Aug 31 22:32:12 2025
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,28 ----
  #ifndef GCC_DIAGNOSTICS_OUTPUT_FILE_H
  #define GCC_DIAGNOSTICS_OUTPUT_FILE_H
  
+ #include "label-text.h"
+ 
  namespace diagnostics {
  
  /* RAII class for wrapping a FILE * that could be borrowed or owned,
diff -Nrcpad gcc-16-20250824/gcc/diagnostics/sarif-sink.cc gcc-16-20250831/gcc/diagnostics/sarif-sink.cc
*** gcc-16-20250824/gcc/diagnostics/sarif-sink.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/diagnostics/sarif-sink.cc	Sun Aug 31 22:32:12 2025
*************** along with GCC; see the file COPYING3.
*** 34,39 ****
--- 34,40 ----
  #include "diagnostics/sink.h"
  #include "diagnostics/buffering.h"
  #include "diagnostics/dumping.h"
+ #include "diagnostics/logging.h"
  #include "json.h"
  #include "cpplib.h"
  #include "diagnostics/logical-locations.h"
*************** report_global_digraph (const lazily_crea
*** 1944,1949 ****
--- 1945,1952 ----
  std::unique_ptr<sarif_log>
  sarif_builder::flush_to_object ()
  {
+   DIAGNOSTICS_LOG_SCOPE_PRINTF0 (m_context.get_logger (),
+ 				 "diagnostics::sarif_builder::flush_to_object");
    m_invocation_obj->prepare_to_flush (*this);
    std::unique_ptr<sarif_log> top
      = make_top_level_object (std::move (m_invocation_obj),
*************** sarif_builder::flush_to_object ()
*** 1959,1964 ****
--- 1962,1969 ----
  void
  sarif_builder::flush_to_file (FILE *outf)
  {
+   DIAGNOSTICS_LOG_SCOPE_PRINTF0 (m_context.get_logger (),
+ 				 "diagnostics::sarif_builder::flush_to_file");
    std::unique_ptr<sarif_log> top = flush_to_object ();
    m_serialization_format->write_to_file (outf, *top);
  }
*************** public:
*** 3940,3945 ****
--- 3945,3953 ----
    on_report_diagnostic (const diagnostic_info &diagnostic,
  			enum kind orig_diag_kind) final override
    {
+     DIAGNOSTICS_LOG_SCOPE_PRINTF0
+       (get_logger (),
+        "diagnostics::sarif_sink::on_report_diagnostic");
      m_builder.on_report_diagnostic (diagnostic, orig_diag_kind, m_buffer);
    }
    void on_diagram (const diagram &d) final override
diff -Nrcpad gcc-16-20250824/gcc/diagnostics/sink.h gcc-16-20250831/gcc/diagnostics/sink.h
*** gcc-16-20250824/gcc/diagnostics/sink.h	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/diagnostics/sink.h	Sun Aug 31 22:32:12 2025
*************** public:
*** 90,95 ****
--- 90,97 ----
  
    void DEBUG_FUNCTION dump () const { dump (stderr, 0); }
  
+   logging::logger *get_logger () { return m_context.get_logger (); }
+ 
  protected:
    sink (context &dc)
    : m_context (dc),
diff -Nrcpad gcc-16-20250824/gcc/diagnostics/text-sink.cc gcc-16-20250831/gcc/diagnostics/text-sink.cc
*** gcc-16-20250824/gcc/diagnostics/text-sink.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/diagnostics/text-sink.cc	Sun Aug 31 22:32:12 2025
*************** along with GCC; see the file COPYING3.
*** 34,39 ****
--- 34,40 ----
  #include "diagnostics/text-sink.h"
  #include "diagnostics/buffering.h"
  #include "diagnostics/dumping.h"
+ #include "diagnostics/logging.h"
  #include "text-art/theme.h"
  
  /* Disable warnings about quoting issues in the pp_xxx calls below
*************** void
*** 205,210 ****
--- 206,216 ----
  text_sink::on_report_diagnostic (const diagnostic_info &diagnostic,
  				 enum kind orig_diag_kind)
  {
+   auto logger = get_logger ();
+   DIAGNOSTICS_LOG_SCOPE_PRINTF0
+     (logger,
+      "diagnostics::text_sink::on_report_diagnostic");
+ 
    pretty_printer *pp = get_printer ();
  
    (*text_starter (&m_context)) (*this, &diagnostic);
diff -Nrcpad gcc-16-20250824/gcc/doc/extend.texi gcc-16-20250831/gcc/doc/extend.texi
*** gcc-16-20250824/gcc/doc/extend.texi	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/doc/extend.texi	Sun Aug 31 22:32:12 2025
*************** invoke undefined behavior at run time.
*** 16523,16530 ****
  accesses for vector subscription can be enabled with
  @option{-Warray-bounds}.
  
! Vector comparison is supported with standard comparison
! operators: @code{==, !=, <, <=, >, >=}. Comparison operands can be
  vector expressions of integer-type or real-type. Comparison between
  integer-type vectors and real-type vectors are not supported.  The
  result of the comparison is a vector of the same width and number of
--- 16523,16531 ----
  accesses for vector subscription can be enabled with
  @option{-Warray-bounds}.
  
! Vector comparison is supported with standard comparison operators:
! @code{==}, @code{!=}, @code{<}, @code{<=}, @code{>}, and
! @code{>=}. Comparison operands can be
  vector expressions of integer-type or real-type. Comparison between
  integer-type vectors and real-type vectors are not supported.  The
  result of the comparison is a vector of the same width and number of
diff -Nrcpad gcc-16-20250824/gcc/doc/gm2.texi gcc-16-20250831/gcc/doc/gm2.texi
*** gcc-16-20250824/gcc/doc/gm2.texi	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/doc/gm2.texi	Sun Aug 31 22:32:12 2025
*************** available and access to assembly program
*** 143,153 ****
  same syntax as that used by GCC.
  
  The gm2 driver allows third party libraries to be installed alongside
! gm2 libraries.  For example if the user specifies library @code{foo}
! using @code{-flibs=foo} the driver will check the standard GCC install
! directory for a sub directory @code{foo} containing the library
! contents.  The library module search path is altered accordingly
! for compile and link.
  
  @node Development, Features, Why use GNU Modula-2, Overview
  @section How to get source code using git
--- 143,149 ----
  same syntax as that used by GCC.
  
  The gm2 driver allows third party libraries to be installed alongside
! gm2 libraries.  @xref{Module Search Path}.
  
  @node Development, Features, Why use GNU Modula-2, Overview
  @section How to get source code using git
*************** such as the AVR and the ARM).
*** 229,234 ****
--- 225,231 ----
  * Standard procedures::   Permanently accessible base procedures.
  * High procedure function:: Behavior of the high procedure function.
  * Dialect::               GNU Modula-2 supported dialects.
+ * Module Search Path::    How to add library modules.
  * Exceptions::            Exception implementation
  * Semantic checking::     How to detect run time problems at compile time.
  * Extensions::            GNU Modula-2 language extensions.
*************** following include paths.
*** 525,530 ****
--- 522,536 ----
  for internal use only: used by the driver to copy the user facing @samp{-I}
  option.
  
+ @item -fm2-pathname-root=@file{pathroot}
+ add search paths derived from the specified @file{pathroot}.
+ @xref{Module Search Path} for examples.
+ 
+ @item -fm2-pathname-rootI
+ for internal use only: used by the driver to copy every user
+ @samp{-fm2-pathname-root=} facing option in order with all other
+ @samp{-I} options.
+ 
  @item -fm2-plugin
  insert plugin to identify run time errors at compile time (default on).
  
*************** Actual parameter | HIGH (a) | a[HIGH (a)
*** 1379,1385 ****
   str3            | 3        | TRUE
  @end example
  
! @node Dialect, Exceptions, High procedure function, Using
  @section GNU Modula-2 supported dialects
  
  This section describes the dialects understood by GNU Modula-2.
--- 1385,1391 ----
   str3            | 3        | TRUE
  @end example
  
! @node Dialect, Module Search Path, High procedure function, Using
  @section GNU Modula-2 supported dialects
  
  This section describes the dialects understood by GNU Modula-2.
*************** implemented as above, apart from the exc
*** 1444,1449 ****
--- 1450,1492 ----
  dialect.  Instead of exception handling the results are the same as the
  PIM4 dialect.  This is a temporary implementation situation.
  
+ @node Module Search Path, Exceptions, Dialect, Using
+ @section Module Search Path
+ 
+ This section describes the default module search path and how this
+ might be changed.  By default the compiler will search the current
+ directory, local include dir, prefix include dir, gcc version specific
+ modules and lastly native system header dir.  The exact location and
+ whether all these directories are used depends upon the configuration
+ options used when building GCC.
+ 
+ The @samp{-I} option option can be used to introduce new directories
+ in the module search path and for convenience the options @samp{-flibs=}
+ and @samp{-fm2-pathname-root=} are also provided.
+ 
+ The site wide modules are typically located at
+ @var{prefix}@file{/include/m2}
+ whereas the version specific modules are located in
+ @var{libsubdir}@file{/m2}.  Both of these @file{/m2} directories
+ are organized such that the non dialect specific modules are at the
+ top and dialect specific modules are in subdirectories.
+ 
+ The @samp{-fm2-pathname-root=} option is equivalent to adding a
+ @samp{-I} path for every library dialect.  For example if the library
+ dialect order is selected by @samp{-flibs=pim,iso,log} and
+ @samp{-fm2-pathname-root=foo} is supplied then this is equivalent to
+ the following pairs of options:
+ 
+ @example
+ -fm2-pathname=m2pim -I@file{foo/m2/m2pim}
+ -fm2-pathname=m2iso -I@file{foo/m2/m2iso}
+ -fm2-pathname=m2log -I@file{foo/m2/m2log}
+ -fm2-pathname=- -I@file{foo/m2}
+ @end example
+ 
+ The option @samp{-fsources} will show the source module, path and
+ pathname for each module parsed.
+ 
  @node Exceptions, Semantic checking, Dialect, Using
  @section Exception implementation
  
*************** CONST
*** 2023,2029 ****
  
  VAR
     head: List ;
! @end group   
  @end example
  
  @example
--- 2066,2072 ----
  
  VAR
     head: List ;
! @end group
  @end example
  
  @example
*************** VAR
*** 2034,2046 ****
  BEGIN
     p := head^.next ;
     printf ("\nunique data\n");
!    printf ("===========\n");   
     WHILE p # NIL DO
        printf ("%d\n", p^.value);
        p := p^.next
     END
  END Display ;
! @end group   
  @end example
  
  @example
--- 2077,2089 ----
  BEGIN
     p := head^.next ;
     printf ("\nunique data\n");
!    printf ("===========\n");
     WHILE p # NIL DO
        printf ("%d\n", p^.value);
        p := p^.next
     END
  END Display ;
! @end group
  @end example
  
  @example
*************** BEGIN
*** 2053,2059 ****
        next := NIL
     END
  END Add ;
! @end group   
  @end example
  
  @example
--- 2096,2102 ----
        next := NIL
     END
  END Add ;
! @end group
  @end example
  
  @example
*************** EXCEPT
*** 2075,2091 ****
     THEN
        printf ("list was empty, add sentinal\n");
        Add (head, -1) ;
!       RETRY  (* Jump back to the begin statement.  *)      
     ELSIF p^.next = NIL
     THEN
        printf ("growing the list\n");
        Add (p^.next, val) ;
        RETRY  (* Jump back to the begin statement.  *)
     ELSE
!       printf ("should never reach here!\n");   
     END
  END Unique ;
! @end group   
  @end example
  
  @example
--- 2118,2134 ----
     THEN
        printf ("list was empty, add sentinal\n");
        Add (head, -1) ;
!       RETRY  (* Jump back to the begin statement.  *)
     ELSIF p^.next = NIL
     THEN
        printf ("growing the list\n");
        Add (p^.next, val) ;
        RETRY  (* Jump back to the begin statement.  *)
     ELSE
!       printf ("should never reach here!\n");
     END
  END Unique ;
! @end group
  @end example
  
  @example
*************** BEGIN
*** 2104,2110 ****
     head := NIL ;
     unique
  END lazyunique.
! @end group   
  @end example
  
  @example
--- 2147,2153 ----
     head := NIL ;
     unique
  END lazyunique.
! @end group
  @end example
  
  @example
*************** unique data
*** 2127,2133 ****
  0
  2
  1
! @end group   
  @end example
  
  @node Unbounded by reference, Building a shared library, Exception handling, Using
--- 2170,2176 ----
  0
  2
  1
! @end group
  @end example
  
  @node Unbounded by reference, Building a shared library, Exception handling, Using
diff -Nrcpad gcc-16-20250824/gcc/doc/install.texi gcc-16-20250831/gcc/doc/install.texi
*** gcc-16-20250824/gcc/doc/install.texi	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/doc/install.texi	Sun Aug 31 22:32:12 2025
*************** Microsoft Windows:
*** 3803,3810 ****
  @item
  The @uref{https://sourceware.org/cygwin/,,Cygwin} project;
  @item
! The @uref{https://osdn.net/projects/mingw/,,MinGW} and
! @uref{https://www.mingw-w64.org/,,mingw-w64} projects.
  @end itemize
  
  @item
--- 3803,3809 ----
  @item
  The @uref{https://sourceware.org/cygwin/,,Cygwin} project;
  @item
! the @uref{https://www.mingw-w64.org/,,mingw-w64} project.
  @end itemize
  
  @item
*************** AMD GCN GPU target.
*** 4065,4073 ****
  Instead of GNU Binutils, you need to install LLVM and copy
  @file{bin/llvm-mc} to @file{amdgcn-amdhsa/bin/as},
  @file{bin/lld} to @file{amdgcn-amdhsa/bin/ld},
  @file{bin/llvm-nm} to @file{amdgcn-amdhsa/bin/nm}, and
  @file{bin/llvm-ar} to both @file{bin/amdgcn-amdhsa-ar} and
! @file{bin/amdgcn-amdhsa-ranlib}.
  
  The required version of LLVM depends on the devices that you want to support.
  As the list of ISAs is long, GCC by default only builds a subset of the
--- 4064,4078 ----
  Instead of GNU Binutils, you need to install LLVM and copy
  @file{bin/llvm-mc} to @file{amdgcn-amdhsa/bin/as},
  @file{bin/lld} to @file{amdgcn-amdhsa/bin/ld},
+ @file{bin/llvm-objdump} to @file{amdgcn-amdhsa/bin/objdump},
  @file{bin/llvm-nm} to @file{amdgcn-amdhsa/bin/nm}, and
  @file{bin/llvm-ar} to both @file{bin/amdgcn-amdhsa-ar} and
! @file{bin/amdgcn-amdhsa-ranlib}.  The LLVM version is required for the
! assembler (llvm-mc) and linker (lld); however, for the others, the respective
! GNU Binutils counterpart can be used instead.  While all mentioned programs are
! required when building GCC, the installed GCC compiler only needs the assembler
! and linker; @code{nm}, @code{ar}, and @code{ranlib} are required when installing
! @code{gcc-nm}, @code{gcc-ar}, and @code{gcc-ranlib}.
  
  The required version of LLVM depends on the devices that you want to support.
  As the list of ISAs is long, GCC by default only builds a subset of the
*************** ISA targets @code{gfx9-generic}, @code{g
*** 4091,4098 ****
  @code{gfx11-generic} reduce the number of required multilibs but note
  that @code{gfx9-generic} does not include @code{gfx908} or @code{gfx90a},
  that linking specific ISA code with generic code is currently not supported,
! and that only a future ROCm release (newer than 6.3.3) will be able to execute
! generic code.
  
  Use Newlib (4.3.0 or newer; 4.4.0 contains some improvements and 4.5.0 fixes
  the device console output for GFX10 and GFX11 devices; post-4.5.0
--- 4096,4102 ----
  @code{gfx11-generic} reduce the number of required multilibs but note
  that @code{gfx9-generic} does not include @code{gfx908} or @code{gfx90a},
  that linking specific ISA code with generic code is currently not supported,
! and that only ROCm 6.4.0 or newer is able to execute generic code.
  
  Use Newlib (4.3.0 or newer; 4.4.0 contains some improvements and 4.5.0 fixes
  the device console output for GFX10 and GFX11 devices; post-4.5.0
diff -Nrcpad gcc-16-20250824/gcc/doc/invoke.texi gcc-16-20250831/gcc/doc/invoke.texi
*** gcc-16-20250824/gcc/doc/invoke.texi	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/doc/invoke.texi	Sun Aug 31 22:32:12 2025
*************** Instructions number above which STFL sta
*** 17872,17877 ****
--- 17872,17880 ----
  The maximum number of use and def visits when discovering a STV chain before
  the discovery is aborted.
  
+ @item ix86-vect-unroll-limit
+ Limit how much the autovectorizer may unroll a loop.
+ 
  @end table
  
  @end table
*************** Compile for the CDNA3 gfx950 devices. (E
*** 22937,22943 ****
  
  @item gfx9-generic
  Compile generic code for Vega devices, executable on the following subset of
! GFX9 devices: gfx900, gfx902, gfx904, gfx906, gfx909 and gfx90c. (Experimental)
  
  @item gfx9-4-generic
  Compile generic code for CDNA3 devices, executable on the following subset of
--- 22940,22946 ----
  
  @item gfx9-generic
  Compile generic code for Vega devices, executable on the following subset of
! GFX9 devices: gfx900, gfx902, gfx904, gfx906, gfx909 and gfx90c.
  
  @item gfx9-4-generic
  Compile generic code for CDNA3 devices, executable on the following subset of
*************** Compile for RDNA2 gfx1036 devices (GFX10
*** 22966,22972 ****
  
  @item gfx10-3-generic
  Compile generic code for GFX10-3 devices, executable on gfx1030,
! gfx1031, gfx1032, gfx1033, gfx1034, gfx1035, and gfx1036. (Experimental)
  
  @item gfx1100
  Compile for RDNA3 gfx1100 devices (GFX11 series).
--- 22969,22975 ----
  
  @item gfx10-3-generic
  Compile generic code for GFX10-3 devices, executable on gfx1030,
! gfx1031, gfx1032, gfx1033, gfx1034, gfx1035, and gfx1036.
  
  @item gfx1100
  Compile for RDNA3 gfx1100 devices (GFX11 series).
*************** Compile for RDNA3 gfx1153 devices (GFX11
*** 22994,23000 ****
  
  @item gfx11-generic
  Compile generic code for GFX11 devices, executable on gfx1100, gfx1101,
! gfx1102, gfx1103, gfx1150, gfx1151, gfx1152, and gfx1153. (Experimental)
  @end table
  
  @opindex msram-ecc
--- 22997,23003 ----
  
  @item gfx11-generic
  Compile generic code for GFX11 devices, executable on gfx1100, gfx1101,
! gfx1102, gfx1103, gfx1150, gfx1151, gfx1152, and gfx1153.
  @end table
  
  @opindex msram-ecc
*************** compilation which is to be used as input
*** 37904,37909 ****
--- 37907,37922 ----
  the output of the preprocessor, which is the input to the compiler
  proper.
  
+ @vindex GCC_DIAGNOSTICS_LOG
+ @item GCC_DIAGNOSTICS_LOG
+ If @env{GCC_DIAGNOSTICS_LOG} is set, then additional information
+ about the diagnostics subsystem will be emitted.  If it is set to an empty
+ value, then the information will be written to stderr; otherwise, GCC will
+ attempt to open that file and write the information there.
+ 
+ The precise content and format of the information is subject to change;
+ it is intended for use by GCC developers, rather than end-users.
+ 
  @vindex GCC_COMPARE_DEBUG
  @item GCC_COMPARE_DEBUG
  Setting @env{GCC_COMPARE_DEBUG} is nearly equivalent to passing
diff -Nrcpad gcc-16-20250824/gcc/doc/md.texi gcc-16-20250831/gcc/doc/md.texi
*** gcc-16-20250824/gcc/doc/md.texi	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/doc/md.texi	Sun Aug 31 22:32:12 2025
*************** If this pattern is not defined, a call t
*** 8595,8601 ****
  
  @cindex @code{spaceship@var{m}4} instruction pattern
  @item @samp{spaceship@var{m}4}
! Initialize output operand 0 with mode of integer type to -1, 0, 1 or 2
  if operand 1 with mode @var{m} compares less than operand 2, equal to
  operand 2, greater than operand 2 or is unordered with operand 2.
  Operand 3 should be @code{const0_rtx} if the result is used in comparisons,
--- 8595,8601 ----
  
  @cindex @code{spaceship@var{m}4} instruction pattern
  @item @samp{spaceship@var{m}4}
! Initialize output operand 0 with mode of integer type to -1, 0, 1 or -128
  if operand 1 with mode @var{m} compares less than operand 2, equal to
  operand 2, greater than operand 2 or is unordered with operand 2.
  Operand 3 should be @code{const0_rtx} if the result is used in comparisons,
*************** Operand 3 should be @code{const0_rtx} if
*** 8603,8609 ****
  is integral unsigned, @code{constm1_rtx} if the result is used as integer
  value and the comparison is integral signed and some other @code{CONST_INT}
  if the result is used as integer value and the comparison is floating point.
! In the last case, instead of setting output operand 0 to 2 for unordered,
  set it to operand 3.
  @var{m} should be a scalar floating point mode.
  
--- 8603,8609 ----
  is integral unsigned, @code{constm1_rtx} if the result is used as integer
  value and the comparison is integral signed and some other @code{CONST_INT}
  if the result is used as integer value and the comparison is floating point.
! In the last case, instead of setting output operand 0 to -128 for unordered,
  set it to operand 3.
  @var{m} should be a scalar floating point mode.
  
diff -Nrcpad gcc-16-20250824/gcc/doc/standards.texi gcc-16-20250831/gcc/doc/standards.texi
*** gcc-16-20250824/gcc/doc/standards.texi	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/doc/standards.texi	Sun Aug 31 22:32:12 2025
*************** works with the Apple/NeXT Objective-C ru
*** 314,322 ****
  
  There is no formal written standard for Objective-C or Objective-C++@.
  The authoritative manual on traditional Objective-C (1.0) is
! ``Object-Oriented Programming and the Objective-C Language'':
! @uref{https://gnustep.github.io/@/resources/@/documentation/@/ObjectivCBook.pdf}
! is the original NeXTstep document.
  
  The Objective-C exception and synchronization syntax (that is, the
  keywords @code{@@try}, @code{@@throw}, @code{@@catch},
--- 314,321 ----
  
  There is no formal written standard for Objective-C or Objective-C++@.
  The authoritative manual on traditional Objective-C (1.0) is
! ``Object-Oriented Programming and the Objective-C Language''
! (@uref{https://www.gnustep.org/@/resources/@/documentation/@/ObjectivCBook.pdf}).
  
  The Objective-C exception and synchronization syntax (that is, the
  keywords @code{@@try}, @code{@@throw}, @code{@@catch},
diff -Nrcpad gcc-16-20250824/gcc/doc/tm.texi gcc-16-20250831/gcc/doc/tm.texi
*** gcc-16-20250824/gcc/doc/tm.texi	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/doc/tm.texi	Sun Aug 31 22:32:12 2025
*************** At preset, this feature does not support
*** 12881,12887 ****
  @code{Pmode} to be the same as @code{ptr_mode}.
  @end deftypefn
  
! @deftypefn {Target Hook} uint8_t TARGET_MEMTAG_TAG_SIZE ()
  Return the size of a tag (in bits) for this platform.
  
  The default returns 8.
--- 12881,12887 ----
  @code{Pmode} to be the same as @code{ptr_mode}.
  @end deftypefn
  
! @deftypefn {Target Hook} uint8_t TARGET_MEMTAG_TAG_BITSIZE ()
  Return the size of a tag (in bits) for this platform.
  
  The default returns 8.
diff -Nrcpad gcc-16-20250824/gcc/doc/tm.texi.in gcc-16-20250831/gcc/doc/tm.texi.in
*** gcc-16-20250824/gcc/doc/tm.texi.in	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/doc/tm.texi.in	Sun Aug 31 22:32:12 2025
*************** maintainer is familiar with.
*** 8136,8142 ****
  
  @hook TARGET_MEMTAG_CAN_TAG_ADDRESSES
  
! @hook TARGET_MEMTAG_TAG_SIZE
  
  @hook TARGET_MEMTAG_GRANULE_SIZE
  
--- 8136,8142 ----
  
  @hook TARGET_MEMTAG_CAN_TAG_ADDRESSES
  
! @hook TARGET_MEMTAG_TAG_BITSIZE
  
  @hook TARGET_MEMTAG_GRANULE_SIZE
  
diff -Nrcpad gcc-16-20250824/gcc/dwarf2ctf.cc gcc-16-20250831/gcc/dwarf2ctf.cc
*** gcc-16-20250824/gcc/dwarf2ctf.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/dwarf2ctf.cc	Sun Aug 31 22:32:12 2025
*************** gen_ctf_subrange_type (ctf_container_ref
*** 361,367 ****
  
    dw_attr_node *upper_bound_at;
    dw_die_ref array_index_type;
!   uint32_t array_num_elements;
  
    if (dw_get_die_tag (c) == DW_TAG_subrange_type)
      {
--- 361,367 ----
  
    dw_attr_node *upper_bound_at;
    dw_die_ref array_index_type;
!   unsigned HOST_WIDE_INT array_num_elements;
  
    if (dw_get_die_tag (c) == DW_TAG_subrange_type)
      {
*************** gen_ctf_subrange_type (ctf_container_ref
*** 376,384 ****
        if (upper_bound_at
  	  && AT_class (upper_bound_at) == dw_val_class_unsigned_const)
  	/* This is the upper bound index.  */
! 	array_num_elements = get_AT_unsigned (c, DW_AT_upper_bound) + 1;
        else if (get_AT (c, DW_AT_count))
! 	array_num_elements = get_AT_unsigned (c, DW_AT_count);
        else
  	{
  	  /* This is a VLA of some kind.  */
--- 376,384 ----
        if (upper_bound_at
  	  && AT_class (upper_bound_at) == dw_val_class_unsigned_const)
  	/* This is the upper bound index.  */
! 	array_num_elements = AT_unsigned (get_AT (c, DW_AT_upper_bound)) + 1;
        else if (get_AT (c, DW_AT_count))
! 	array_num_elements = AT_unsigned (get_AT (c, DW_AT_count));
        else
  	{
  	  /* This is a VLA of some kind.  */
*************** gen_ctf_subrange_type (ctf_container_ref
*** 388,393 ****
--- 388,399 ----
    else
      gcc_unreachable ();
  
+   if (array_num_elements > UINT32_MAX)
+     {
+       /* The array cannot be encoded in CTF.  TBD_CTF_REPRESENTATION_LIMIT.  */
+       return gen_ctf_unknown_type (ctfc);
+     }
+ 
    /* Ok, mount and register the array type.  Note how the array
       type we register here is the type of the elements in
       subsequent "dimensions", if there are any.  */
diff -Nrcpad gcc-16-20250824/gcc/dwarf2out.cc gcc-16-20250831/gcc/dwarf2out.cc
*** gcc-16-20250824/gcc/dwarf2out.cc	Sun Aug 24 22:32:20 2025
--- gcc-16-20250831/gcc/dwarf2out.cc	Sun Aug 31 22:32:12 2025
*************** output_one_line_info_table (dw_line_info
*** 12997,13005 ****
  
  	    view++;
  
! 	    dw2_asm_output_data (1, DW_LNS_fixed_advance_pc, "fixed advance PC, increment view to %i", view);
! 	    dw2_asm_output_delta (2, line_label, prev_label,
! 				  "from %s to %s", prev_label, line_label);
  
  	    prev_addr = ent;
  	    break;
--- 12997,13021 ----
  
  	    view++;
  
! 	    if (HAVE_AS_LEB128)
! 	      {
! 		/* Using DW_LNS_advance_pc with label delta is only valid if
! 		   Minimum Instruction Length in the header is 1, but that is
! 		   what we use on all targets.  */
! 		dw2_asm_output_data (1, DW_LNS_advance_pc,
! 				     "advance PC, increment view to %i", view);
! 		dw2_asm_output_delta_uleb128 (line_label, prev_label,
! 					      "from %s to %s", prev_label,
! 					      line_label);
! 	      }
! 	    else
! 	      {
! 		dw2_asm_output_data (1, DW_LNS_fixed_advance_pc,
! 				     "fixed advance PC, increment view to %i",
! 				     view);
! 		dw2_asm_output_delta (2, line_label, prev_label,
! 				      "from %s to %s", prev_label, line_label);
! 	      }
  
  	    prev_addr = ent;
  	    break;
diff -Nrcpad gcc-16-20250824/gcc/fortran/ChangeLog gcc-16-20250831/gcc/fortran/ChangeLog
*** gcc-16-20250824/gcc/fortran/ChangeLog	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/fortran/ChangeLog	Sun Aug 31 22:32:12 2025
***************
*** 1,3 ****
--- 1,65 ----
+ 2025-08-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/93330
+ 	* interface.cc (get_sym_storage_size): Add argument size_known to
+ 	indicate that the storage size could be successfully determined.
+ 	(get_expr_storage_size): Likewise.
+ 	(gfc_compare_actual_formal): Use them to handle zero-sized dummy
+ 	and actual arguments.
+ 	If a character formal argument has the pointer or allocatable
+ 	attribute, or is an array that is not assumed or explicit size,
+ 	we generate an error by default unless -std=legacy is specified,
+ 	which falls back to just giving a warning.
+ 	If -Wcharacter-truncation is given, warn on a character actual
+ 	argument longer than the dummy.  Generate an error for too short
+ 	scalar character arguments if -std=f* is given instead of just a
+ 	warning.
+ 
+ 2025-08-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/82843
+ 	* intrinsic.cc (gfc_convert_type_warn): If the 'from_ts' is a
+ 	PDT instance, copy the derived type to the target ts.
+ 	* resolve.cc (gfc_resolve_ref): A PDT component in a component
+ 	reference can be that of the pdt_template. Unconditionally use
+ 	component of the PDT instance to ensure that the backend_decl
+ 	is set during translation. Likewise if a component is
+ 	encountered that is a PDT template type, use the component
+ 	parmeters to convert to the correct PDT instance.
+ 
+ 2025-08-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/82205
+ 	* decl.cc (gfc_get_pdt_instance): Copy the default initializer
+ 	for components that are not PDT parameters or parameterized. If
+ 	any component is a pointer or allocatable set the attributes
+ 	'pointer_comp' or 'alloc_comp' of the new PDT instance.
+ 	* primary.cc (gfc_match_rvalue): Implement the correct form of
+ 	PDT constructors with 'name (type parms)(component values)'.
+ 	* trans-array.cc (structure_alloc_comps): Apply scalar default
+ 	initializers. Array initializers await the coming change in PDT
+ 	representation.
+ 	* trans-io.cc (transfer_expr): Do not output the type parms of
+ 	a PDT in list directed output.
+ 
+ 2025-08-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/114611
+ 	* io.cc: Issue an error on use of the H descriptor in
+ 	a format with -std=f95 or higher. Otherwise, issue a
+ 	warning.
+ 
+ 2025-08-26  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR middle-end/118839
+ 	* trans-openmp.cc (gfc_trans_omp_declare_variant): Error if variant
+ 	is the same as base.
+ 
+ 2025-08-26  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* openmp.cc (gfc_match_omp_declare_variant): Make check for a
+ 	missing "match" clause unconditional.
+ 
  2025-08-21  Steven G. Kargl  <kargl@gcc.gnu.org>
  
  	PR fortran/121627
diff -Nrcpad gcc-16-20250824/gcc/fortran/decl.cc gcc-16-20250831/gcc/fortran/decl.cc
*** gcc-16-20250824/gcc/fortran/decl.cc	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/fortran/decl.cc	Sun Aug 31 22:32:12 2025
*************** gfc_get_pdt_instance (gfc_actual_arglist
*** 3870,3875 ****
--- 3870,3877 ----
    bool assumed_seen = false;
    bool deferred_seen = false;
    bool spec_error = false;
+   bool alloc_seen = false;
+   bool ptr_seen = false;
    int kind_value, i;
    gfc_expr *kind_expr;
    gfc_component *c1, *c2;
*************** gfc_get_pdt_instance (gfc_actual_arglist
*** 4201,4206 ****
--- 4203,4214 ----
        if (c1->ts.type == BT_CLASS)
  	CLASS_DATA (c2)->as = gfc_copy_array_spec (CLASS_DATA (c1)->as);
  
+       if (c1->attr.allocatable)
+ 	alloc_seen = true;
+ 
+       if (c1->attr.pointer)
+ 	ptr_seen = true;
+ 
        /* Determine if an array spec is parameterized. If so, substitute
  	 in the parameter expressions for the bounds and set the pdt_array
  	 attribute. Notice that this attribute must be unconditionally set
*************** gfc_get_pdt_instance (gfc_actual_arglist
*** 4271,4278 ****
--- 4279,4295 ----
  	  if (c2->attr.allocatable)
  	    instance->attr.alloc_comp = 1;
  	}
+       else if (!(c2->attr.pdt_kind || c2->attr.pdt_len || c2->attr.pdt_string
+ 		 || c2->attr.pdt_array) && c1->initializer)
+ 	c2->initializer = gfc_copy_expr (c1->initializer);
      }
  
+   if (alloc_seen)
+     instance->attr.alloc_comp = 1;
+   if (ptr_seen)
+     instance->attr.pointer_comp = 1;
+ 
+ 
    gfc_commit_symbol (instance);
    if (ext_param_list)
      *ext_param_list = type_param_spec_list;
diff -Nrcpad gcc-16-20250824/gcc/fortran/interface.cc gcc-16-20250831/gcc/fortran/interface.cc
*** gcc-16-20250824/gcc/fortran/interface.cc	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/fortran/interface.cc	Sun Aug 31 22:32:12 2025
*************** compare_parameter (gfc_symbol *formal, g
*** 3007,3021 ****
  }
  
  
! /* Returns the storage size of a symbol (formal argument) or
!    zero if it cannot be determined.  */
  
  static unsigned long
! get_sym_storage_size (gfc_symbol *sym)
  {
    int i;
    unsigned long strlen, elements;
  
    if (sym->ts.type == BT_CHARACTER)
      {
        if (sym->ts.u.cl && sym->ts.u.cl->length
--- 3007,3023 ----
  }
  
  
! /* Returns the storage size of a symbol (formal argument) or sets argument
!    size_known to false if it cannot be determined.  */
  
  static unsigned long
! get_sym_storage_size (gfc_symbol *sym, bool *size_known)
  {
    int i;
    unsigned long strlen, elements;
  
+   *size_known = false;
+ 
    if (sym->ts.type == BT_CHARACTER)
      {
        if (sym->ts.u.cl && sym->ts.u.cl->length
*************** get_sym_storage_size (gfc_symbol *sym)
*** 3029,3035 ****
      strlen = 1;
  
    if (symbol_rank (sym) == 0)
!     return strlen;
  
    elements = 1;
    if (sym->as->type != AS_EXPLICIT)
--- 3031,3040 ----
      strlen = 1;
  
    if (symbol_rank (sym) == 0)
!     {
!       *size_known = true;
!       return strlen;
!     }
  
    elements = 1;
    if (sym->as->type != AS_EXPLICIT)
*************** get_sym_storage_size (gfc_symbol *sym)
*** 3046,3062 ****
  		  - mpz_get_si (sym->as->lower[i]->value.integer) + 1L;
      }
  
    return strlen*elements;
  }
  
  
! /* Returns the storage size of an expression (actual argument) or
!    zero if it cannot be determined. For an array element, it returns
!    the remaining size as the element sequence consists of all storage
     units of the actual argument up to the end of the array.  */
  
  static unsigned long
! get_expr_storage_size (gfc_expr *e)
  {
    int i;
    long int strlen, elements;
--- 3051,3069 ----
  		  - mpz_get_si (sym->as->lower[i]->value.integer) + 1L;
      }
  
+   *size_known = true;
+ 
    return strlen*elements;
  }
  
  
! /* Returns the storage size of an expression (actual argument) or sets argument
!    size_known to false if it cannot be determined.  For an array element, it
!    returns the remaining size as the element sequence consists of all storage
     units of the actual argument up to the end of the array.  */
  
  static unsigned long
! get_expr_storage_size (gfc_expr *e, bool *size_known)
  {
    int i;
    long int strlen, elements;
*************** get_expr_storage_size (gfc_expr *e)
*** 3064,3069 ****
--- 3071,3078 ----
    bool is_str_storage = false;
    gfc_ref *ref;
  
+   *size_known = false;
+ 
    if (e == NULL)
      return 0;
  
*************** get_expr_storage_size (gfc_expr *e)
*** 3083,3089 ****
      strlen = 1; /* Length per element.  */
  
    if (e->rank == 0 && !e->ref)
!     return strlen;
  
    elements = 1;
    if (!e->ref)
--- 3092,3101 ----
      strlen = 1; /* Length per element.  */
  
    if (e->rank == 0 && !e->ref)
!     {
!       *size_known = true;
!       return strlen;
!     }
  
    elements = 1;
    if (!e->ref)
*************** get_expr_storage_size (gfc_expr *e)
*** 3092,3098 ****
  	return 0;
        for (i = 0; i < e->rank; i++)
  	elements *= mpz_get_si (e->shape[i]);
!       return elements*strlen;
      }
  
    for (ref = e->ref; ref; ref = ref->next)
--- 3104,3113 ----
  	return 0;
        for (i = 0; i < e->rank; i++)
  	elements *= mpz_get_si (e->shape[i]);
!       {
! 	*size_known = true;
! 	return elements*strlen;
!       }
      }
  
    for (ref = e->ref; ref; ref = ref->next)
*************** get_expr_storage_size (gfc_expr *e)
*** 3231,3236 ****
--- 3246,3253 ----
  	}
      }
  
+   *size_known = true;
+ 
    if (substrlen)
      return (is_str_storage) ? substrlen + (elements-1)*strlen
  			    : elements*strlen;
*************** gfc_compare_actual_formal (gfc_actual_ar
*** 3331,3337 ****
    gfc_array_spec *fas, *aas;
    bool pointer_dummy, pointer_arg, allocatable_arg;
    bool procptr_dummy, optional_dummy, allocatable_dummy;
! 
    bool ok = true;
  
    actual = *ap;
--- 3348,3355 ----
    gfc_array_spec *fas, *aas;
    bool pointer_dummy, pointer_arg, allocatable_arg;
    bool procptr_dummy, optional_dummy, allocatable_dummy;
!   bool actual_size_known = false;
!   bool formal_size_known = false;
    bool ok = true;
  
    actual = *ap;
*************** gfc_compare_actual_formal (gfc_actual_ar
*** 3584,3603 ****
  	  && (mpz_cmp (a->expr->ts.u.cl->length->value.integer,
  		       f->sym->ts.u.cl->length->value.integer) != 0))
  	{
  	  if (where && (f->sym->attr.pointer || f->sym->attr.allocatable))
! 	    gfc_warning (0, "Character length mismatch (%ld/%ld) between actual "
! 			 "argument and pointer or allocatable dummy argument "
! 			 "%qs at %L",
! 			 mpz_get_si (a->expr->ts.u.cl->length->value.integer),
! 			 mpz_get_si (f->sym->ts.u.cl->length->value.integer),
! 			 f->sym->name, &a->expr->where);
  	  else if (where)
! 	    gfc_warning (0, "Character length mismatch (%ld/%ld) between actual "
! 			 "argument and assumed-shape dummy argument %qs "
! 			 "at %L",
! 			 mpz_get_si (a->expr->ts.u.cl->length->value.integer),
! 			 mpz_get_si (f->sym->ts.u.cl->length->value.integer),
! 			 f->sym->name, &a->expr->where);
  	  ok = false;
  	  goto match;
  	}
--- 3602,3640 ----
  	  && (mpz_cmp (a->expr->ts.u.cl->length->value.integer,
  		       f->sym->ts.u.cl->length->value.integer) != 0))
  	{
+ 	  long actual_len, formal_len;
+ 	  actual_len = mpz_get_si (a->expr->ts.u.cl->length->value.integer);
+ 	  formal_len = mpz_get_si (f->sym->ts.u.cl->length->value.integer);
+ 
  	  if (where && (f->sym->attr.pointer || f->sym->attr.allocatable))
! 	    {
! 	      /* Emit a warning for -std=legacy and an error otherwise. */
! 	      if (gfc_option.warn_std == 0)
! 		gfc_warning (0, "Character length mismatch (%ld/%ld) between "
! 			     "actual argument and pointer or allocatable "
! 			     "dummy argument %qs at %L", actual_len, formal_len,
! 			     f->sym->name, &a->expr->where);
! 	      else
! 		gfc_error ("Character length mismatch (%ld/%ld) between "
! 			   "actual argument and pointer or allocatable "
! 			   "dummy argument %qs at %L", actual_len, formal_len,
! 			   f->sym->name, &a->expr->where);
! 	    }
  	  else if (where)
! 	    {
! 	      /* Emit a warning for -std=legacy and an error otherwise. */
! 	      if (gfc_option.warn_std == 0)
! 		gfc_warning (0, "Character length mismatch (%ld/%ld) between "
! 			     "actual argument and assumed-shape dummy argument "
! 			     "%qs at %L", actual_len, formal_len,
! 			     f->sym->name, &a->expr->where);
! 	      else
! 		gfc_error ("Character length mismatch (%ld/%ld) between "
! 			   "actual argument and assumed-shape dummy argument "
! 			   "%qs at %L", actual_len, formal_len,
! 			   f->sym->name, &a->expr->where);
! 
! 	    }
  	  ok = false;
  	  goto match;
  	}
*************** gfc_compare_actual_formal (gfc_actual_ar
*** 3622,3642 ****
        if (a->expr->expr_type == EXPR_NULL && a->expr->ts.type == BT_UNKNOWN)
  	goto skip_size_check;
  
!       actual_size = get_expr_storage_size (a->expr);
!       formal_size = get_sym_storage_size (f->sym);
!       if (actual_size != 0 && actual_size < formal_size
! 	  && a->expr->ts.type != BT_PROCEDURE
  	  && f->sym->attr.flavor != FL_PROCEDURE)
  	{
! 	  if (a->expr->ts.type == BT_CHARACTER && !f->sym->as && where)
  	    {
! 	      gfc_warning (0, "Character length of actual argument shorter "
! 			   "than of dummy argument %qs (%lu/%lu) at %L",
! 			   f->sym->name, actual_size, formal_size,
! 			   &a->expr->where);
  	      goto skip_size_check;
  	    }
!           else if (where)
  	    {
  	      /* Emit a warning for -std=legacy and an error otherwise. */
  	      if (gfc_option.warn_std == 0)
--- 3659,3732 ----
        if (a->expr->expr_type == EXPR_NULL && a->expr->ts.type == BT_UNKNOWN)
  	goto skip_size_check;
  
!       actual_size = get_expr_storage_size (a->expr, &actual_size_known);
!       formal_size = get_sym_storage_size (f->sym, &formal_size_known);
! 
!       if (actual_size_known && formal_size_known
! 	  && actual_size != formal_size
! 	  && a->expr->ts.type == BT_CHARACTER
  	  && f->sym->attr.flavor != FL_PROCEDURE)
  	{
! 	  /* F2018:15.5.2.4:
! 	     (3) "The length type parameter values of a present actual argument
! 	     shall agree with the corresponding ones of the dummy argument that
! 	     are not assumed, except for the case of the character length
! 	     parameter of an actual argument of type character with default
! 	     kind or C character kind associated with a dummy argument that is
! 	     not assumed-shape or assumed-rank."
! 
! 	     (4) "If a present scalar dummy argument is of type character with
! 	     default kind or C character kind, the length len of the dummy
! 	     argument shall be less than or equal to the length of the actual
! 	     argument.  The dummy argument becomes associated with the leftmost
! 	     len characters of the actual argument.  If a present array dummy
! 	     argument is of type character with default kind or C character
! 	     kind and is not assumed-shape or assumed-rank, it becomes
! 	     associated with the leftmost characters of the actual argument
! 	     element sequence."
! 
! 	     As an extension we treat kind=4 character similarly to kind=1.  */
! 
! 	  if (actual_size > formal_size)
  	    {
! 	      if (a->expr->ts.type == BT_CHARACTER && where
! 		  && (!f->sym->as || f->sym->as->type == AS_EXPLICIT))
! 		gfc_warning (OPT_Wcharacter_truncation,
! 			     "Character length of actual argument longer "
! 			     "than of dummy argument %qs (%lu/%lu) at %L",
! 			     f->sym->name, actual_size, formal_size,
! 			     &a->expr->where);
  	      goto skip_size_check;
  	    }
! 
! 	  if (a->expr->ts.type == BT_CHARACTER && where && !f->sym->as)
! 	    {
! 	      /* Emit warning for -std=legacy/gnu and an error otherwise. */
! 	      if (gfc_notification_std (GFC_STD_LEGACY) == ERROR)
! 		{
! 		  gfc_error ("Character length of actual argument shorter "
! 			     "than of dummy argument %qs (%lu/%lu) at %L",
! 			     f->sym->name, actual_size, formal_size,
! 			     &a->expr->where);
! 		  ok = false;
! 		  goto match;
! 		}
! 	      else
! 		gfc_warning (0, "Character length of actual argument shorter "
! 			     "than of dummy argument %qs (%lu/%lu) at %L",
! 			     f->sym->name, actual_size, formal_size,
! 			     &a->expr->where);
! 	      goto skip_size_check;
! 	    }
! 	}
! 
!       if (actual_size_known && formal_size_known
! 	  && actual_size < formal_size
! 	  && f->sym->as
! 	  && a->expr->ts.type != BT_PROCEDURE
! 	  && f->sym->attr.flavor != FL_PROCEDURE)
! 	{
! 	  if (where)
  	    {
  	      /* Emit a warning for -std=legacy and an error otherwise. */
  	      if (gfc_option.warn_std == 0)
diff -Nrcpad gcc-16-20250824/gcc/fortran/intrinsic.cc gcc-16-20250831/gcc/fortran/intrinsic.cc
*** gcc-16-20250824/gcc/fortran/intrinsic.cc	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/fortran/intrinsic.cc	Sun Aug 31 22:32:12 2025
*************** gfc_convert_type_warn (gfc_expr *expr, g
*** 5466,5471 ****
--- 5466,5474 ----
    if (ts->type == BT_UNKNOWN)
      goto bad;
  
+   if (from_ts.type == BT_DERIVED && from_ts.u.derived->attr.pdt_type)
+     *ts = from_ts;
+ 
    expr->do_not_warn = ! wflag;
  
    /* NULL and zero size arrays get their type here, unless they already have a
diff -Nrcpad gcc-16-20250824/gcc/fortran/io.cc gcc-16-20250831/gcc/fortran/io.cc
*** gcc-16-20250824/gcc/fortran/io.cc	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/fortran/io.cc	Sun Aug 31 22:32:12 2025
*************** data_desc:
*** 1129,1141 ****
        break;
  
      case FMT_H:
!       if (!(gfc_option.allow_std & GFC_STD_GNU) && !inhibit_warnings)
  	{
! 	  if (mode != MODE_FORMAT)
! 	    format_locus.nextc += format_string_pos;
! 	  gfc_warning (0, "The H format specifier at %L is"
! 		       " a Fortran 95 deleted feature", &format_locus);
  	}
        if (mode == MODE_STRING)
  	{
  	  format_string += value;
--- 1129,1144 ----
        break;
  
      case FMT_H:
!       if (!(gfc_option.allow_std & GFC_STD_LEGACY))
  	{
! 	  error = G_("The H format specifier at %L is a Fortran 95 deleted"
! 		     " feature");
! 	  goto syntax;
  	}
+       if (mode != MODE_FORMAT)
+ 	format_locus.nextc += format_string_pos;
+       gfc_warning (0, "The H format specifier at %L is"
+ 		   " a Fortran 95 deleted feature", &format_locus);
        if (mode == MODE_STRING)
  	{
  	  format_string += value;
*************** data_desc:
*** 1144,1150 ****
  	}
        else
  	{
! 	  while (repeat >0)
  	   {
  	     next_char (INSTRING_WARN);
  	     repeat -- ;
--- 1147,1153 ----
  	}
        else
  	{
! 	  while (repeat > 0)
  	   {
  	     next_char (INSTRING_WARN);
  	     repeat -- ;
diff -Nrcpad gcc-16-20250824/gcc/fortran/openmp.cc gcc-16-20250831/gcc/fortran/openmp.cc
*** gcc-16-20250824/gcc/fortran/openmp.cc	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/fortran/openmp.cc	Sun Aug 31 22:32:12 2025
*************** gfc_match_omp_declare_variant (void)
*** 6982,6994 ****
        return MATCH_ERROR;
      }
  
!   if ((has_adjust_args || has_append_args) && !has_match)
      {
!       gfc_error ("the %qs clause at %L can only be specified if the "
! 		 "%<dispatch%> selector of the construct selector set appears "
! 		 "in the %<match%> clause",
! 		 has_adjust_args ? "adjust_args" : "append_args",
! 		 has_adjust_args ?  &adjust_args_loc : &append_args_loc);
        return MATCH_ERROR;
      }
  
--- 6982,6990 ----
        return MATCH_ERROR;
      }
  
!   if (!has_match)
      {
!       gfc_error ("expected %<match%> clause at %C");
        return MATCH_ERROR;
      }
  
diff -Nrcpad gcc-16-20250824/gcc/fortran/primary.cc gcc-16-20250831/gcc/fortran/primary.cc
*** gcc-16-20250824/gcc/fortran/primary.cc	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/fortran/primary.cc	Sun Aug 31 22:32:12 2025
*************** gfc_match_rvalue (gfc_expr **result)
*** 4055,4060 ****
--- 4055,4121 ----
  	  break;
  	}
  
+       /* Check to see if this is a PDT constructor.  The format of these
+ 	 constructors is rather unusual:
+ 		name (type_params)(component_values)
+ 	 where, component_values excludes the type_params. With the present
+ 	 gfortran representation this is rather awkward because the two are not
+ 	 distinguished, other than by their attributes.  */
+       if (sym->attr.generic)
+ 	{
+ 	  gfc_symtree *pdt_st;
+ 	  gfc_symbol *pdt_sym;
+ 	  gfc_actual_arglist *ctr_arglist, *tmp;
+ 	  gfc_component *c;
+ 
+ 	  /* Obtain the template.  */
+ 	  gfc_find_sym_tree (gfc_dt_upper_string (name), NULL, 1, &pdt_st);
+ 	  if (pdt_st && pdt_st->n.sym && pdt_st->n.sym->attr.pdt_template)
+ 	    {
+ 	      pdt_sym = pdt_st->n.sym;
+ 
+ 	      /* Generate this instance using the type parameters from the
+ 		 first argument list and return the parameter list in
+ 		 ctr_arglist.  */
+ 	      m = gfc_get_pdt_instance (actual_arglist, &pdt_sym, &ctr_arglist);
+ 	      if (m != MATCH_YES)
+ 		{
+ 		  m = MATCH_ERROR;
+ 		  break;
+ 		}
+ 	      /* Now match the component_values.  */
+ 	      m = gfc_match_actual_arglist (0, &actual_arglist);
+ 	      if (m != MATCH_YES)
+ 		{
+ 		  m = MATCH_ERROR;
+ 		  break;
+ 		}
+ 
+ 	      /* Make sure that the component names are in place so that this
+ 		 list can be safely appended to the type parameters.  */
+ 	      tmp = actual_arglist;
+ 	      for (c = pdt_sym->components; c && tmp; c = c->next)
+ 		{
+ 		  if (c->attr.pdt_kind || c->attr.pdt_len)
+ 		    continue;
+ 		  tmp->name = c->name;
+ 		  tmp = tmp->next;
+ 		}
+ 
+ 	      gfc_get_ha_sym_tree (gfc_dt_lower_string (pdt_sym->name) ,
+ 				   &symtree);
+ 	      symtree->n.sym = pdt_sym;
+ 	      symtree->n.sym->ts.u.derived = pdt_sym;
+ 	      symtree->n.sym->ts.type = BT_DERIVED;
+ 
+ 	      /* Do the appending.  */
+ 	      for (tmp = ctr_arglist; tmp && tmp->next;)
+ 		tmp = tmp->next;
+ 	      tmp->next = actual_arglist;
+ 	      actual_arglist = ctr_arglist;
+ 	    }
+ 	}
+ 
        gfc_get_ha_sym_tree (name, &symtree);	/* Can't fail */
        sym = symtree->n.sym;
  
diff -Nrcpad gcc-16-20250824/gcc/fortran/resolve.cc gcc-16-20250831/gcc/fortran/resolve.cc
*** gcc-16-20250824/gcc/fortran/resolve.cc	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/fortran/resolve.cc	Sun Aug 31 22:32:12 2025
*************** gfc_resolve_ref (gfc_expr *expr)
*** 5880,5885 ****
--- 5880,5886 ----
    int current_part_dimension, n_components, seen_part_dimension, dim;
    gfc_ref *ref, **prev, *array_ref;
    bool equal_length;
+   gfc_symbol *last_pdt = NULL;
  
    for (ref = expr->ref; ref; ref = ref->next)
      if (ref->type == REF_ARRAY && ref->u.ar.as == NULL)
*************** gfc_resolve_ref (gfc_expr *expr)
*** 5927,5932 ****
--- 5928,5938 ----
    n_components = 0;
    array_ref = NULL;
  
+   if (expr->expr_type == EXPR_VARIABLE
+       && expr->symtree->n.sym->ts.type == BT_DERIVED
+       && expr->symtree->n.sym->ts.u.derived->attr.pdt_type)
+     last_pdt = expr->symtree->n.sym->ts.u.derived;
+ 
    for (ref = expr->ref; ref; ref = ref->next)
      {
        switch (ref->type)
*************** gfc_resolve_ref (gfc_expr *expr)
*** 5984,5989 ****
--- 5990,6027 ----
  		}
  	    }
  
+ 	  /* Sometimes the component in a component reference is that of the
+ 	     pdt_template. Point to the component of pdt_type instead. This
+ 	     ensures that the component gets a backend_decl in translation.  */
+ 	  if (last_pdt)
+ 	    {
+ 	      gfc_component *cmp = last_pdt->components;
+ 	      for (; cmp; cmp = cmp->next)
+ 		if (!strcmp (cmp->name, ref->u.c.component->name))
+ 		  {
+ 		    ref->u.c.component = cmp;
+ 		    break;
+ 		  }
+ 	      ref->u.c.sym = last_pdt;
+ 	    }
+ 
+ 	  /* Convert pdt_templates, if necessary, and update 'last_pdt'.  */
+ 	  if (ref->u.c.component->ts.type == BT_DERIVED)
+ 	    {
+ 	      if (ref->u.c.component->ts.u.derived->attr.pdt_template)
+ 		{
+ 		  if (gfc_get_pdt_instance (ref->u.c.component->param_list,
+ 					    &ref->u.c.component->ts.u.derived,
+ 					    NULL) != MATCH_YES)
+ 		    return false;
+ 		  last_pdt = ref->u.c.component->ts.u.derived;
+ 		}
+ 	      else if (ref->u.c.component->ts.u.derived->attr.pdt_type)
+ 		last_pdt = ref->u.c.component->ts.u.derived;
+ 	      else
+ 		last_pdt = NULL;
+ 	    }
+ 
  	  n_components++;
  	  break;
  
diff -Nrcpad gcc-16-20250824/gcc/fortran/trans-array.cc gcc-16-20250831/gcc/fortran/trans-array.cc
*** gcc-16-20250824/gcc/fortran/trans-array.cc	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/fortran/trans-array.cc	Sun Aug 31 22:32:12 2025
*************** structure_alloc_comps (gfc_symbol * der_
*** 10710,10715 ****
--- 10710,10724 ----
  				  cdecl, NULL_TREE);
  	  dcmp = fold_convert (TREE_TYPE (comp), dcmp);
  
+ 	  if (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.pdt_type
+ 	      && !c->attr.allocatable)
+ 	    {
+ 	      tmp = gfc_copy_alloc_comp (c->ts.u.derived, comp, dcmp,
+ 					 0, 0);
+ 	      gfc_add_expr_to_block (&fnblock, tmp);
+ 	      continue;
+ 	    }
+ 
  	  if (c->ts.type == BT_CLASS && CLASS_DATA (c)->attr.allocatable)
  	    {
  	      tree ftn_tree;
*************** structure_alloc_comps (gfc_symbol * der_
*** 10829,10835 ****
  					   false, false, size, NULL_TREE);
  	      gfc_add_expr_to_block (&fnblock, tmp);
  	    }
! 	  else if (c->attr.pdt_array)
  	    {
  	      tmp = duplicate_allocatable (dcmp, comp, ctype,
  					   c->as ? c->as->rank : 0,
--- 10838,10845 ----
  					   false, false, size, NULL_TREE);
  	      gfc_add_expr_to_block (&fnblock, tmp);
  	    }
! 	  else if (c->attr.pdt_array
! 		   && !c->attr.allocatable && !c->attr.pointer)
  	    {
  	      tmp = duplicate_allocatable (dcmp, comp, ctype,
  					   c->as ? c->as->rank : 0,
*************** structure_alloc_comps (gfc_symbol * der_
*** 10896,10901 ****
--- 10906,10921 ----
  		  gfc_add_modify (&fnblock, comp, tse.expr);
  		}
  	    }
+ 	  else if (c->initializer && !c->attr.pdt_string && !c->attr.pdt_array
+ 		   && !c->as && !(c->ts.type == BT_DERIVED
+ 				  && c->ts.u.derived->attr.pdt_type))   /* Take care of arrays.  */
+ 	    {
+ 	      gfc_se tse;
+ 	      gfc_expr *c_expr;
+ 	      c_expr = c->initializer;
+ 	      gfc_conv_expr_type (&tse, c_expr, TREE_TYPE (comp));
+ 	      gfc_add_modify (&fnblock, comp, tse.expr);
+ 	    }
  
  	  if (c->attr.pdt_string)
  	    {
diff -Nrcpad gcc-16-20250824/gcc/fortran/trans-expr.cc gcc-16-20250831/gcc/fortran/trans-expr.cc
*** gcc-16-20250824/gcc/fortran/trans-expr.cc	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/fortran/trans-expr.cc	Sun Aug 31 22:32:12 2025
*************** conv_dummy_value (gfc_se * parmse, gfc_e
*** 6520,6525 ****
--- 6520,6539 ----
  
    gcc_assert (fsym && fsym->attr.value && !fsym->attr.dimension);
  
+   if (e && e->ts.type == BT_DERIVED && e->ts.u.derived->attr.pdt_type)
+     {
+       tmp = gfc_create_var (TREE_TYPE (parmse->expr), "PDT");
+       gfc_add_modify (&parmse->pre, tmp, parmse->expr);
+       gfc_add_expr_to_block (&parmse->pre,
+ 			     gfc_copy_alloc_comp (e->ts.u.derived,
+ 						  parmse->expr, tmp,
+ 						  e->rank, 0));
+       parmse->expr = tmp;
+       tmp = gfc_deallocate_pdt_comp (e->ts.u.derived, tmp, e->rank);
+       gfc_add_expr_to_block (&parmse->post, tmp);
+       return;
+     }
+ 
    /* Absent actual argument for optional scalar dummy.  */
    if ((e == NULL || e->expr_type == EXPR_NULL) && fsym->attr.optional)
      {
diff -Nrcpad gcc-16-20250824/gcc/fortran/trans-io.cc gcc-16-20250831/gcc/fortran/trans-io.cc
*** gcc-16-20250824/gcc/fortran/trans-io.cc	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/fortran/trans-io.cc	Sun Aug 31 22:32:13 2025
*************** transfer_expr (gfc_se * se, gfc_typespec
*** 2499,2505 ****
  	      for (c = ts->u.derived->components; c; c = c->next)
  		{
  		  /* Ignore hidden string lengths.  */
! 		  if (c->name[0] == '_')
  		    continue;
  
  		  field = c->backend_decl;
--- 2499,2506 ----
  	      for (c = ts->u.derived->components; c; c = c->next)
  		{
  		  /* Ignore hidden string lengths.  */
! 		  if (c->name[0] == '_'
! 		      || c->attr.pdt_kind || c->attr.pdt_len)
  		    continue;
  
  		  field = c->backend_decl;
diff -Nrcpad gcc-16-20250824/gcc/fortran/trans-openmp.cc gcc-16-20250831/gcc/fortran/trans-openmp.cc
*** gcc-16-20250824/gcc/fortran/trans-openmp.cc	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/fortran/trans-openmp.cc	Sun Aug 31 22:32:13 2025
*************** gfc_trans_omp_declare_variant (gfc_names
*** 9735,9740 ****
--- 9735,9746 ----
  			 variant_proc_name, &odv->where);
  	      variant_proc_sym = NULL;
  	    }
+ 	  else if (variant_proc_sym == ns->proc_name)
+ 	    {
+ 	      gfc_error ("variant %qs at %L is the same as base function",
+ 			 variant_proc_name, &odv->where);
+ 	      variant_proc_sym = NULL;
+ 	    }
  	  else if (omp_get_context_selector (set_selectors,
  					     OMP_TRAIT_SET_CONSTRUCT,
  					     OMP_TRAIT_CONSTRUCT_SIMD)
diff -Nrcpad gcc-16-20250824/gcc/gimple-fold.cc gcc-16-20250831/gcc/gimple-fold.cc
*** gcc-16-20250824/gcc/gimple-fold.cc	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/gimple-fold.cc	Sun Aug 31 22:32:13 2025
*************** gimple_needing_rewrite_undefined (gimple
*** 10520,10525 ****
--- 10520,10539 ----
        && !POINTER_TYPE_P (lhs_type))
      return false;
    tree rhs = gimple_assign_rhs1 (stmt);
+   /* Boolean loads need special handling as they are treated as a full MODE load
+      and don't mask off the bits for the precision.  */
+   if (gimple_assign_load_p (stmt)
+       /* Booleans are the integral type which has this non-masking issue. */
+       && TREE_CODE (lhs_type) == BOOLEAN_TYPE
+       /* Only non mode precision booleans are need the masking.  */
+       && !type_has_mode_precision_p (lhs_type)
+       /* BFR should be the correct thing and just grab the precision.  */
+       && TREE_CODE (rhs) != BIT_FIELD_REF
+       /* Bit-fields loads don't need a rewrite as the masking
+ 	 happens for them.  */
+       && (TREE_CODE (rhs) != COMPONENT_REF
+ 	  || !DECL_BIT_FIELD (TREE_OPERAND (rhs, 1))))
+     return true;
    /* VCE from integral types to a integral types but with
       a smaller precision need to be changed into casts
       to be well defined. */
*************** rewrite_to_defined_unconditional (gimple
*** 10558,10563 ****
--- 10572,10628 ----
        print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
      }
    gimple_seq stmts = NULL;
+   tree lhs = gimple_assign_lhs (stmt);
+ 
+   /* Boolean loads need to be rewritten to be a load from the same mode
+      and then a cast to the other type so the other bits are masked off
+      correctly since the load was done conditionally. It is similar to the VCE
+      case below.  */
+   if (gimple_assign_load_p (stmt)
+       && TREE_CODE (TREE_TYPE (lhs)) == BOOLEAN_TYPE)
+     {
+       tree rhs = gimple_assign_rhs1 (stmt);
+ 
+       /* Double check that gimple_needing_rewrite_undefined was called.  */
+       /* Bit-fields loads will do the masking so don't need the rewriting.  */
+       gcc_assert (TREE_CODE (rhs) != COMPONENT_REF
+ 		  || !DECL_BIT_FIELD (TREE_OPERAND (rhs, 1)));
+       /* BFR is like a bit field load and will do the correct thing.  */
+       gcc_assert (TREE_CODE (lhs) != BIT_FIELD_REF);
+       /* Complex boolean types are not valid so REAL/IMAG part will
+ 	 never show up. */
+       gcc_assert (TREE_CODE (rhs) != REALPART_EXPR
+ 		  && TREE_CODE (lhs) != IMAGPART_EXPR);
+ 
+       auto bits = GET_MODE_BITSIZE (SCALAR_TYPE_MODE (TREE_TYPE (rhs)));
+       tree new_type = build_nonstandard_integer_type (bits, true);
+       location_t loc = gimple_location (stmt);
+       tree mem_ref = fold_build1_loc (loc, VIEW_CONVERT_EXPR, new_type, rhs);
+       /* Replace the original load with a new load and a new lhs. */
+       tree new_lhs = make_ssa_name (new_type);
+       gimple_assign_set_rhs1 (stmt, mem_ref);
+       gimple_assign_set_lhs (stmt, new_lhs);
+ 
+       if (in_place)
+ 	  update_stmt (stmt);
+       else
+ 	{
+ 	  gimple_set_modified (stmt, true);
+ 	  gimple_seq_add_stmt (&stmts, stmt);
+ 	}
+ 
+       /* Build the conversion statement.  */
+       gimple *cvt = gimple_build_assign (lhs, NOP_EXPR, new_lhs);
+       if (in_place)
+ 	{
+ 	  gsi_insert_after (gsi, cvt, GSI_SAME_STMT);
+ 	  update_stmt (stmt);
+ 	}
+       else
+ 	gimple_seq_add_stmt (&stmts, cvt);
+       return stmts;
+     }
+ 
    /* VCE from integral types to another integral types but with
       smaller precisions need to be changed into casts
       to be well defined. */
*************** rewrite_to_defined_unconditional (gimple
*** 10579,10585 ****
  	}
        return stmts;
      }
-   tree lhs = gimple_assign_lhs (stmt);
    tree type = unsigned_type_for (TREE_TYPE (lhs));
    if (gimple_assign_rhs_code (stmt) == ABS_EXPR)
      gimple_assign_set_rhs_code (stmt, ABSU_EXPR);
--- 10644,10649 ----
diff -Nrcpad gcc-16-20250824/gcc/ifcvt.cc gcc-16-20250831/gcc/ifcvt.cc
*** gcc-16-20250824/gcc/ifcvt.cc	Sun Aug 24 22:32:21 2025
--- gcc-16-20250831/gcc/ifcvt.cc	Sun Aug 31 22:32:13 2025
*************** noce_try_sign_bit_splat (struct noce_if_
*** 1283,1295 ****
  	 one with smaller cost.  */
        rtx and_form = gen_rtx_AND (mode, temp, GEN_INT (val_a));
        rtx shift_left = gen_rtx_ASHIFT (mode, temp, GEN_INT (ctz_hwi (val_a)));
!       rtx shift_right = gen_rtx_LSHIFTRT (mode, temp, GEN_INT (ctz_hwi (~val_a)));
        bool speed_p = optimize_insn_for_speed_p ();
        if (exact_log2 (val_a + 1) >= 0
  	  && (rtx_cost (shift_right, mode, SET, 1, speed_p)
  	      <= rtx_cost (and_form, mode, SET, 1, speed_p)))
  	temp = expand_simple_binop (mode, LSHIFTRT, temp,
! 				    GEN_INT (ctz_hwi (~val_a)),
  				    if_info->x, false, OPTAB_WIDEN);
        else if (exact_log2 (~val_a + 1) >= 0
  	       && (rtx_cost (shift_left, mode, SET, 1, speed_p)
--- 1283,1297 ----
  	 one with smaller cost.  */
        rtx and_form = gen_rtx_AND (mode, temp, GEN_INT (val_a));
        rtx shift_left = gen_rtx_ASHIFT (mode, temp, GEN_INT (ctz_hwi (val_a)));
!       HOST_WIDE_INT rshift_count
! 	= (clz_hwi (val_a) & (GET_MODE_PRECISION (mode).to_constant() - 1));
!       rtx shift_right = gen_rtx_LSHIFTRT (mode, temp, GEN_INT (rshift_count));
        bool speed_p = optimize_insn_for_speed_p ();
        if (exact_log2 (val_a + 1) >= 0
  	  && (rtx_cost (shift_right, mode, SET, 1, speed_p)
  	      <= rtx_cost (and_form, mode, SET, 1, speed_p)))
  	temp = expand_simple_binop (mode, LSHIFTRT, temp,
! 				    GEN_INT (rshift_count),
  				    if_info->x, false, OPTAB_WIDEN);
        else if (exact_log2 (~val_a + 1) >= 0
  	       && (rtx_cost (shift_left, mode, SET, 1, speed_p)
*************** noce_try_sign_bit_splat (struct noce_if_
*** 1333,1345 ****
  	 one with smaller cost.  */
        rtx and_form = gen_rtx_AND (mode, temp, GEN_INT (val_b));
        rtx shift_left = gen_rtx_ASHIFT (mode, temp, GEN_INT (ctz_hwi (val_b)));
!       rtx shift_right = gen_rtx_LSHIFTRT (mode, temp, GEN_INT (ctz_hwi (~val_b)));
        bool speed_p = optimize_insn_for_speed_p ();
        if (exact_log2 (val_b + 1) >= 0
  	  && (rtx_cost (shift_right, mode, SET, 1, speed_p)
  	      <= rtx_cost (and_form, mode, SET, 1, speed_p)))
  	temp = expand_simple_binop (mode, LSHIFTRT, temp,
! 				    GEN_INT (ctz_hwi (~val_b)),
  				    if_info->x, false, OPTAB_WIDEN);
        else if (exact_log2 (~val_b + 1) >= 0
  	       && (rtx_cost (shift_left, mode, SET, 1, speed_p)
--- 1335,1349 ----
  	 one with smaller cost.  */
        rtx and_form = gen_rtx_AND (mode, temp, GEN_INT (val_b));
        rtx shift_left = gen_rtx_ASHIFT (mode, temp, GEN_INT (ctz_hwi (val_b)));
!       HOST_WIDE_INT rshift_count
! 	= (clz_hwi (val_b) & (GET_MODE_PRECISION (mode).to_constant() - 1));
!       rtx shift_right = gen_rtx_LSHIFTRT (mode, temp, GEN_INT (rshift_count));
        bool speed_p = optimize_insn_for_speed_p ();
        if (exact_log2 (val_b + 1) >= 0
  	  && (rtx_cost (shift_right, mode, SET, 1, speed_p)
  	      <= rtx_cost (and_form, mode, SET, 1, speed_p)))
  	temp = expand_simple_binop (mode, LSHIFTRT, temp,
! 				    GEN_INT (rshift_count),
  				    if_info->x, false, OPTAB_WIDEN);
        else if (exact_log2 (~val_b + 1) >= 0
  	       && (rtx_cost (shift_left, mode, SET, 1, speed_p)
diff -Nrcpad gcc-16-20250824/gcc/m2/ChangeLog gcc-16-20250831/gcc/m2/ChangeLog
*** gcc-16-20250824/gcc/m2/ChangeLog	Sun Aug 24 22:32:22 2025
--- gcc-16-20250831/gcc/m2/ChangeLog	Sun Aug 31 22:32:13 2025
***************
*** 1,3 ****
--- 1,43 ----
+ 2025-08-29  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/121709
+ 	* gm2-lang.cc (concat_component): New function.
+ 	(find_cpp_entry): Ditto.
+ 	(lookup_cpp_default): Ditto.
+ 	(add_default_include_paths): Rewrite.
+ 	(m2_pathname_root): Remove.
+ 
+ 2025-08-28  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/121629
+ 	* gm2-compiler/PathName.mod: Add copyright notice.
+ 	* gm2-lang.cc (named_path): Add field lib_root.
+ 	(push_back_Ipath): Set lib_root false.
+ 	(push_back_lib_root): New function.
+ 	(get_dir_sep_size): Ditto.
+ 	(add_path_component): Ditto.
+ 	(add_one_import_path): Ditto.
+ 	(add_non_dialect_specific_path): Ditto.
+ 	(foreach_lib_gen_import_path): Ditto.
+ 	(get_module_source_dir): Ditto.
+ 	(add_default_include_paths): Ditto.
+ 	(assign_flibs): Ditto.
+ 	(m2_pathname_root): Ditto.
+ 	(add_m2_import_paths): Remove function.
+ 	(gm2_langhook_post_options): Call assign_flibs.
+ 	Check np.lib_root and call foreach_lib_gen_import_path.
+ 	Replace call to add_m2_import_paths with a call to
+ 	add_default_include_paths.
+ 	(gm2_langhook_handle_option): Add case OPT_fm2_pathname_rootI_.
+ 	* gm2spec.cc (named_path): Add field lib_root.
+ 	(push_back_Ipath): Set lib_root false.
+ 	(push_back_lib_root): New function.
+ 	(add_m2_I_path): Add OPT_fm2_pathname_rootI_ option
+ 	if np.lib_root.
+ 	(lang_specific_driver): Add case OPT_fm2_pathname_root_.
+ 	* lang.opt (fm2-pathname-root=): New option.
+ 	(fm2-pathname-rootI=): Ditto.
+ 
  2025-08-01  Gaius Mulley  <gaiusmod2@gmail.com>
  
  	PR modula2/121354
diff -Nrcpad gcc-16-20250824/gcc/m2/gm2-compiler/PathName.mod gcc-16-20250831/gcc/m2/gm2-compiler/PathName.mod
*** gcc-16-20250824/gcc/m2/gm2-compiler/PathName.mod	Sun Aug 24 22:32:22 2025
--- gcc-16-20250831/gcc/m2/gm2-compiler/PathName.mod	Sun Aug 31 22:32:13 2025
***************
*** 1,3 ****
--- 1,24 ----
+ (* M2PathName.mod maintain a dictionary of named paths.
+ 
+ Copyright (C) 2023-2025 Free Software Foundation, Inc.
+ Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
+ 
+ This file is part of GNU Modula-2.
+ 
+ GNU Modula-2 is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GNU Modula-2 is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GNU Modula-2; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  *)
+ 
  IMPLEMENTATION MODULE PathName ;
  
  FROM Storage IMPORT ALLOCATE, DEALLOCATE ;
diff -Nrcpad gcc-16-20250824/gcc/m2/gm2-lang.cc gcc-16-20250831/gcc/m2/gm2-lang.cc
*** gcc-16-20250824/gcc/m2/gm2-lang.cc	Sun Aug 24 22:32:22 2025
--- gcc-16-20250831/gcc/m2/gm2-lang.cc	Sun Aug 31 22:32:13 2025
*************** along with GCC; see the file COPYING3.
*** 40,45 ****
--- 40,46 ----
  #include "m2-tree.h"
  #include "convert.h"
  #include "rtegraph.h"
+ #include "cppdefault.h"
  
  static void write_globals (void);
  
*************** static bool iso = false;
*** 51,56 ****
--- 52,58 ----
  typedef struct named_path_s {
    std::vector<const char*>path;
    const char *name;
+   bool lib_root;
  } named_path;
  
  
*************** static bool allow_libraries = true;
*** 59,64 ****
--- 61,67 ----
  static const char *flibs = nullptr;
  static const char *iprefix = nullptr;
  static const char *imultilib = nullptr;
+ static const char *target_system_root = nullptr;
  static std::vector<named_path>Ipaths;
  static std::vector<const char*>isystem;
  static std::vector<const char*>iquote;
*************** push_back_Ipath (const char *arg)
*** 372,377 ****
--- 375,381 ----
        named_path np;
        np.path.push_back (arg);
        np.name = xstrdup (M2Options_GetM2PathName ());
+       np.lib_root = false;
        Ipaths.push_back (np);
      }
    else
*************** push_back_Ipath (const char *arg)
*** 384,394 ****
--- 388,641 ----
  	  named_path np;
  	  np.path.push_back (arg);
  	  np.name = xstrdup (M2Options_GetM2PathName ());
+ 	  np.lib_root = false;
  	  Ipaths.push_back (np);
  	}
      }
  }
  
+ /* push_back_lib_root pushes a lib_root onto the Ipaths vector.
+    The ordering of the -fm2_add_lib_root=, -I and named paths
+    must be preserved.  */
+ 
+ static void
+ push_back_lib_root (const char *arg)
+ {
+   named_path np;
+   np.name = arg;
+   np.lib_root = true;
+   Ipaths.push_back (np);
+ }
+ 
+ /* get_dir_sep_size return the length of the DIR_SEPARATOR string.  */
+ 
+ static size_t
+ get_dir_sep_size (void)
+ {
+   const char dir_sep[] = {DIR_SEPARATOR, (char)0};
+   size_t dir_sep_size = strlen (dir_sep);
+   return dir_sep_size;
+ }
+ 
+ /* add_path_component strcats src into dest and adds a directory seperator
+    if necessary.  */
+ 
+ static void
+ add_path_component (char *dest, const char *src)
+ {
+   size_t len = strlen (dest);
+   const char dir_sep[] = {DIR_SEPARATOR, (char)0};
+   size_t dir_sep_size = strlen (dir_sep);
+ 
+   if (len > 0)
+     {
+       /* Only add a seperator if dest is not empty and does not end
+ 	 with a seperator.  */
+       if (len >= dir_sep_size
+ 	  && (strcmp (&dest[len-dir_sep_size], dir_sep) != 0))
+ 	strcat (dest, dir_sep);
+     }
+   strcat (dest, src);
+ }
+ 
+ /* This prefixes LIBNAME with the current compiler prefix (if it has been
+    relocated) or the LIBSUBDIR, if not.  */
+ 
+ static void
+ add_one_import_path (const char *libpath, const char *libname)
+ {
+   size_t dir_sep_size = get_dir_sep_size ();
+   size_t mlib_len = 0;
+ 
+   if (imultilib)
+     {
+       mlib_len = strlen (imultilib);
+       mlib_len += dir_sep_size;
+     }
+ 
+   char *lib = (char *)alloca (strlen (libpath) + dir_sep_size
+ 			      + strlen ("m2") + dir_sep_size
+ 			      + strlen (libname) + 1
+ 			      + mlib_len + 1);
+   strcpy (lib, libpath);
+   if (imultilib)
+     add_path_component (lib, imultilib);
+   add_path_component (lib, "m2");
+   add_path_component (lib, libname);
+   M2Options_SetM2PathName (libname);
+   M2Options_SetSearchPath (lib);
+ }
+ 
+ /* add_non_dialect_specific_path add non dialect specific includes
+    given a base libpath.  */
+ 
+ static void
+ add_non_dialect_specific_path (const char *libpath)
+ {
+   char *incpath = (char *)alloca (strlen (libpath)
+ 				  + strlen ("m2")
+ 				  + get_dir_sep_size ()
+ 				  + 1);
+   strcpy (incpath, libpath);
+   add_path_component (incpath, "m2");
+   M2Options_SetM2PathName ("");   /* No pathname for non dialect specific libs.  */
+   M2Options_SetSearchPath (incpath);
+ }
+ 
+ /* For each comma-separated standard library name in LIBLIST, add the
+    corresponding include path.  */
+ 
+ static void
+ foreach_lib_gen_import_path (const char *liblist, const char *libpath)
+ {
+   while (*liblist != 0 && *liblist != '-')
+     {
+       const char *comma = strstr (liblist, ",");
+       size_t len;
+       if (comma)
+ 	len = comma - liblist;
+       else
+ 	len = strlen (liblist);
+       char *libname = (char *) alloca (len+1);
+       strncpy (libname, liblist, len);
+       libname[len] = 0;
+       add_one_import_path (libpath, libname);
+       liblist += len;
+       if (*liblist == ',')
+ 	liblist++;
+     }
+   add_non_dialect_specific_path (libpath);
+ }
+ 
+ /* get_module_source_dir return the libpath/{multilib/} as a malloc'd
+    string.  */
+ 
+ static const char *
+ get_module_source_dir (void)
+ {
+   const char *libpath = iprefix ? iprefix : LIBSUBDIR;
+   const char dir_sep[] = {DIR_SEPARATOR, (char)0};
+   size_t dir_sep_size = strlen (dir_sep);
+   unsigned int mlib_len = 0;
+ 
+   if (imultilib)
+     {
+       mlib_len = strlen (imultilib);
+       mlib_len += strlen (dir_sep);
+     }
+   char *lib = (char *) xmalloc (strlen (libpath)
+ 				+ dir_sep_size
+ 				+ mlib_len + 1);
+   strcpy (lib, libpath);
+   /* iprefix has a trailing dir separator, LIBSUBDIR does not.  */
+   if (!iprefix)
+     strcat (lib, dir_sep);
+ 
+   if (imultilib)
+     {
+       strcat (lib, imultilib);
+       strcat (lib, dir_sep);
+     }
+   return lib;
+ }
+ 
+ /* concat_component returns a string containing the path left/right.
+    Pre-requisite, left and right are null terminated strings.  The contents of
+    left and right are held on the heap.  Post-requisite, left and right are
+    freed and a new combined string is malloced.  */
+ 
+ static char *
+ concat_component (char *left, char *right)
+ {
+   size_t len = strlen (left)
+     + strlen (right)
+     + get_dir_sep_size ()
+     + 1;
+   char *new_str = (char *) xmalloc (len);
+   strcpy (new_str, left);
+   add_path_component (new_str, right);
+   free (left);
+   free (right);
+   return new_str;
+ }
+ 
+ /* find_cpp_entry return the element of the cpp_include_defaults array
+    whose fname matches name.  */
+ 
+ static const struct default_include *
+ find_cpp_entry (const char *name)
+ {
+   const struct default_include *p;
+ 
+   for (p = cpp_include_defaults; p->fname; p++)
+     if (strcmp (p->fname, name) == 0)
+       return p;
+   return NULL;
+ }
+ 
+ /* lookup_cpp_default lookup the entry in cppdefault then add the directory to
+    the m2 search path.  It also honours sysroot, imultilib and imultiarch.  */
+ 
+ static void
+ lookup_cpp_default (const char *sysroot, const char *flibs, const char *name)
+ {
+   const struct default_include *p = find_cpp_entry (name);
+ 
+   if (p != NULL)
+     {
+       char *full_str = xstrdup (p->fname);
+ 
+       /* Should this directory start with the sysroot?  */
+       if (sysroot && p->add_sysroot)
+ 	full_str = concat_component (xstrdup (sysroot), full_str);
+       /* Should we append the imultilib component?  */
+       if (p->multilib == 1 && imultilib)
+ 	full_str = concat_component (full_str, xstrdup (imultilib));
+       /* Or append the imultiarch component?  */
+       else if (p->multilib == 2 && imultiarch)
+ 	full_str = concat_component (full_str, xstrdup (imultiarch));
+       else
+ 	full_str = xstrdup (p->fname);
+       foreach_lib_gen_import_path (flibs, full_str);
+       free (full_str);
+     }
+ }
+ 
+ /* add_default_include_paths add include paths for site wide definition modules
+    and also gcc version specific definition modules.  */
+ 
+ static void
+ add_default_include_paths (const char *flibs)
+ {
+   /* Follow the order found in cppdefaults.cc.  */
+ #ifdef LOCAL_INCLUDE_DIR
+   lookup_cpp_default (target_system_root, flibs, LOCAL_INCLUDE_DIR);
+ #endif
+ #ifdef PREFIX_INCLUDE_DIR
+   lookup_cpp_default (target_system_root, flibs, PREFIX_INCLUDE_DIR);
+ #endif
+   /* Add the gcc version specific include path.  */
+   foreach_lib_gen_import_path (flibs, get_module_source_dir ());
+ #ifdef NATIVE_SYSTEM_HEADER_DIR
+   lookup_cpp_default (target_system_root, flibs, NATIVE_SYSTEM_HEADER_DIR);
+ #endif
+ }
+ 
+ /* assign_flibs assign flibs to a default providing that allow_libraries
+    is true and flibs has not been set.  */
+ 
+ static void
+ assign_flibs (void)
+ {
+   if (allow_libraries && (flibs == NULL))
+     {
+       if (iso)
+ 	flibs = "m2iso,m2cor,m2pim,m2log";
+       else
+ 	flibs = "m2pim,m2iso,m2cor,m2log";
+     }
+ }
+ 
  /* Handle gm2 specific options.  Return 0 if we didn't do anything.  */
  
  bool
*************** gm2_langhook_handle_option (
*** 435,440 ****
--- 682,690 ----
      case OPT_fpositive_mod_floor_div:
        M2Options_SetPositiveModFloor (value);
        return 1;
+     case OPT_fm2_pathname_rootI_:
+       push_back_lib_root (arg);
+       return 1;
      case OPT_flibs_:
        allow_libraries = value;
        flibs = arg;
*************** gm2_langhook_handle_option (
*** 659,665 ****
        return 1;
        break;
      case OPT_isysroot:
!       /* Otherwise, ignored, at least for now. */
        return 1;
        break;
      case OPT_fm2_whole_program:
--- 909,915 ----
        return 1;
        break;
      case OPT_isysroot:
!       target_system_root = arg;
        return 1;
        break;
      case OPT_fm2_whole_program:
*************** gm2_langhook_handle_option (
*** 710,775 ****
    return 0;
  }
  
- /* This prefixes LIBNAME with the current compiler prefix (if it has been
-    relocated) or the LIBSUBDIR, if not.  */
- static void
- add_one_import_path (const char *libname)
- {
-   const char *libpath = iprefix ? iprefix : LIBSUBDIR;
-   const char dir_sep[] = {DIR_SEPARATOR, (char)0};
-   size_t dir_sep_size = strlen (dir_sep);
-   unsigned int mlib_len = 0;
- 
-   if (imultilib)
-     {
-       mlib_len = strlen (imultilib);
-       mlib_len += strlen (dir_sep);
-     }
- 
-   char *lib = (char *)alloca (strlen (libpath) + dir_sep_size
- 			      + strlen ("m2") + dir_sep_size
- 			      + strlen (libname) + 1
- 			      + mlib_len + 1);
-   strcpy (lib, libpath);
-   /* iprefix has a trailing dir separator, LIBSUBDIR does not.  */
-   if (!iprefix)
-     strcat (lib, dir_sep);
- 
-   if (imultilib)
-     {
-       strcat (lib, imultilib);
-       strcat (lib, dir_sep);
-     }
-   strcat (lib, "m2");
-   strcat (lib, dir_sep);
-   strcat (lib, libname);
-   M2Options_SetM2PathName (libname);
-   M2Options_SetSearchPath (lib);
- }
- 
- /* For each comma-separated standard library name in LIBLIST, add the
-    corresponding include path.  */
- static void
- add_m2_import_paths (const char *liblist)
- {
-   while (*liblist != 0 && *liblist != '-')
-     {
-       const char *comma = strstr (liblist, ",");
-       size_t len;
-       if (comma)
- 	len = comma - liblist;
-       else
- 	len = strlen (liblist);
-       char *libname = (char *) alloca (len+1);
-       strncpy (libname, liblist, len);
-       libname[len] = 0;
-       add_one_import_path (libname);
-       liblist += len;
-       if (*liblist == ',')
- 	liblist++;
-     }
- }
- 
  /* Run after parsing options.  */
  
  static bool
--- 960,965 ----
*************** gm2_langhook_post_options (const char **
*** 784,799 ****
    /* Add the include paths as per the libraries specified.
       NOTE: This assumes that the driver has validated the input and makes
       no attempt to be defensive of nonsense input in flibs=.  */
!   if (allow_libraries)
!     {
!       if (!flibs)
! 	{
! 	  if (iso)
! 	    flibs = "m2iso,m2cor,m2pim,m2log";
! 	  else
! 	    flibs = "m2pim,m2iso,m2cor,m2log";
! 	}
!     }
  
    /* Add search paths.
       We are not handling all of the cases yet (e.g idirafter).
--- 974,980 ----
    /* Add the include paths as per the libraries specified.
       NOTE: This assumes that the driver has validated the input and makes
       no attempt to be defensive of nonsense input in flibs=.  */
!   assign_flibs ();
  
    /* Add search paths.
       We are not handling all of the cases yet (e.g idirafter).
*************** gm2_langhook_post_options (const char **
*** 807,815 ****
    iquote.clear();
    for (auto np : Ipaths)
      {
!       M2Options_SetM2PathName (np.name);
!       for (auto *s : np.path)
! 	M2Options_SetSearchPath (s);
      }
    Ipaths.clear();
    for (auto *s : isystem)
--- 988,1001 ----
    iquote.clear();
    for (auto np : Ipaths)
      {
!       if (np.lib_root)
! 	foreach_lib_gen_import_path (flibs, np.name);
!       else
! 	{
! 	  M2Options_SetM2PathName (np.name);
! 	  for (auto *s : np.path)
! 	    M2Options_SetSearchPath (s);
! 	}
      }
    Ipaths.clear();
    for (auto *s : isystem)
*************** gm2_langhook_post_options (const char **
*** 818,824 ****
    /* FIXME: this is not a good way to suppress the addition of the import
       paths.  */
    if (allow_libraries)
!     add_m2_import_paths (flibs);
  
    /* Returning false means that the backend should be used.  */
    return M2Options_GetPPOnly ();
--- 1004,1010 ----
    /* FIXME: this is not a good way to suppress the addition of the import
       paths.  */
    if (allow_libraries)
!     add_default_include_paths (flibs);
  
    /* Returning false means that the backend should be used.  */
    return M2Options_GetPPOnly ();
diff -Nrcpad gcc-16-20250824/gcc/m2/gm2spec.cc gcc-16-20250831/gcc/m2/gm2spec.cc
*** gcc-16-20250824/gcc/m2/gm2spec.cc	Sun Aug 24 22:32:22 2025
--- gcc-16-20250831/gcc/m2/gm2spec.cc	Sun Aug 31 22:32:13 2025
*************** static const char *m2_path_name = "";
*** 158,167 ****
--- 158,169 ----
  typedef struct named_path_s {
    std::vector<const char*>path;
    const char *name;
+   bool lib_root;
  } named_path;
  
  static std::vector<named_path>Ipaths;
  
+ /* push_back_Ipath pushes a named path to the Ipaths global variable.  */
  
  static void
  push_back_Ipath (const char *arg)
*************** push_back_Ipath (const char *arg)
*** 171,176 ****
--- 173,179 ----
        named_path np;
        np.path.push_back (arg);
        np.name = m2_path_name;
+       np.lib_root = false;
        Ipaths.push_back (np);
      }
    else
*************** push_back_Ipath (const char *arg)
*** 183,193 ****
--- 186,210 ----
  	  named_path np;
  	  np.path.push_back (arg);
  	  np.name = m2_path_name;
+ 	  np.lib_root = false;
  	  Ipaths.push_back (np);
  	}
      }
  }
  
+ /* push_back_lib_root pushes a lib_root onto the Ipaths vector.
+    The ordering of the -fm2_add_lib_root=, -I and named paths
+    must be preserved.  */
+ 
+ static void
+ push_back_lib_root (const char *arg)
+ {
+   named_path np;
+   np.name = arg;
+   np.lib_root = true;
+   Ipaths.push_back (np);
+ }
+ 
  /* Return whether strings S1 and S2 are both NULL or both the same
     string.  */
  
*************** convert_abbreviations (const char *libra
*** 379,393 ****
    return full_libraries;
  }
  
! /* add_m2_I_path appends -fm2-pathname and -fm2-pathnameI options to
!    the command line which are contructed in the saved Ipaths.  */
  
  static void
  add_m2_I_path (void)
  {
    for (auto np : Ipaths)
      {
!       if (strcmp (np.name, "") == 0)
  	append_option (OPT_fm2_pathname_, safe_strdup ("-"), 1);
        else
  	append_option (OPT_fm2_pathname_, safe_strdup (np.name), 1);
--- 396,413 ----
    return full_libraries;
  }
  
! /* add_m2_I_path appends -fm2-pathname, -fm2-pathnameI and -fm2-add-lib-root
!    options to the command line which are contructed in the saved Ipaths.
!    The order of these options must be maintained.  */
  
  static void
  add_m2_I_path (void)
  {
    for (auto np : Ipaths)
      {
!       if (np.lib_root)
! 	append_option (OPT_fm2_pathname_rootI_, safe_strdup (np.name), 1);
!       else if (strcmp (np.name, "") == 0)
  	append_option (OPT_fm2_pathname_, safe_strdup ("-"), 1);
        else
  	append_option (OPT_fm2_pathname_, safe_strdup (np.name), 1);
*************** lang_specific_driver (struct cl_decoded_
*** 576,581 ****
--- 596,605 ----
  	  args[i] |= SKIPOPT; /* We will add the option if it is needed.  */
  	  m2_path_name = decoded_options[i].arg;
  	  break;
+ 	case OPT_fm2_pathname_root_:
+ 	  args[i] |= SKIPOPT; /* We will add the option if it is needed.  */
+ 	  push_back_lib_root (decoded_options[i].arg);
+ 	  break;
  	case OPT__help:
  	case OPT__help_:
  	  /* Let gcc.cc handle this, as it has a really
*************** lang_specific_driver (struct cl_decoded_
*** 739,745 ****
  	       "-fgen-module-list=", "-fuse-list=");
      }
  
- 
    /* There's no point adding -shared-libgcc if we don't have a shared
       libgcc.  */
  #ifndef ENABLE_SHARED_LIBGCC
--- 763,768 ----
diff -Nrcpad gcc-16-20250824/gcc/m2/lang.opt gcc-16-20250831/gcc/m2/lang.opt
*** gcc-16-20250824/gcc/m2/lang.opt	Sun Aug 24 22:32:22 2025
--- gcc-16-20250831/gcc/m2/lang.opt	Sun Aug 31 22:32:13 2025
*************** specify the module mangled prefix name f
*** 172,178 ****
  
  fm2-pathnameI
  Modula-2 Joined
! ; For internal use only: used by the driver to copy the user facing -I option
  
  fm2-plugin
  Modula-2
--- 172,186 ----
  
  fm2-pathnameI
  Modula-2 Joined
! ; For internal use only: used by the driver to copy the user facing -I option in order
! 
! fm2-pathname-root=
! Modula-2 Joined
! add include paths for all the library names in -flibs= to this directory root
! 
! fm2-pathname-rootI=
! Modula-2 Joined
! ; For internal use only: used by the driver to copy the user facing -I option in order
  
  fm2-plugin
  Modula-2
diff -Nrcpad gcc-16-20250824/gcc/omp-expand.cc gcc-16-20250831/gcc/omp-expand.cc
*** gcc-16-20250824/gcc/omp-expand.cc	Sun Aug 24 22:32:22 2025
--- gcc-16-20250831/gcc/omp-expand.cc	Sun Aug 31 22:32:14 2025
*************** expand_omp_for_init_counts (struct omp_f
*** 1895,1900 ****
--- 1895,1901 ----
  	}
      }
    bool rect_count_seen = false;
+   bool init_n2 = SSA_VAR_P (fd->loop.n2) && zero_iter1_bb;
    for (i = 0; i < (fd->ordered ? fd->ordered : fd->collapse); i++)
      {
        tree itype = TREE_TYPE (fd->loops[i].v);
*************** expand_omp_for_init_counts (struct omp_f
*** 1919,1924 ****
--- 1920,1940 ----
  	{
  	  gcond *cond_stmt;
  	  tree n1, n2;
+ 	  if (init_n2 && i < fd->collapse && !rect_count_seen)
+ 	    {
+ 	      /* When called with non-NULL zero_iter1_bb, we won't clear
+ 		 fd->loop.n2 in the if (zero_iter_bb == NULL) code below
+ 		 and if it is prior to storing fd->loop.n2 where
+ 		 rect_count_seen is set, it could be used uninitialized.
+ 		 As zero_iter1_bb in that case can be reached also if there
+ 		 are non-zero iterations, the clearing can't be emitted
+ 		 to the zero_iter1_bb, but needs to be done before the
+ 		 condition.  */
+ 	      gassign *assign_stmt
+ 		= gimple_build_assign (fd->loop.n2, build_zero_cst (type));
+ 	      gsi_insert_before (gsi, assign_stmt, GSI_SAME_STMT);
+ 	      init_n2 = false;
+ 	    }
  	  n1 = fold_convert (itype, unshare_expr (fd->loops[i].n1));
  	  n1 = force_gimple_operand_gsi (gsi, n1, true, NULL_TREE,
  					 true, GSI_SAME_STMT);
diff -Nrcpad gcc-16-20250824/gcc/opts-diagnostic.cc gcc-16-20250831/gcc/opts-diagnostic.cc
*** gcc-16-20250824/gcc/opts-diagnostic.cc	Sun Aug 24 22:32:22 2025
--- gcc-16-20250831/gcc/opts-diagnostic.cc	Sun Aug 31 22:32:14 2025
*************** along with GCC; see the file COPYING3.
*** 32,37 ****
--- 32,38 ----
  #include "intl.h"
  #include "diagnostic.h"
  #include "diagnostics/output-spec.h"
+ #include "diagnostics/logging.h"
  #include "opts.h"
  #include "options.h"
  
*************** handle_OPT_fdiagnostics_add_output_ (con
*** 78,83 ****
--- 79,86 ----
    gcc_assert (line_table);
  
    const char *const option_name = "-fdiagnostics-add-output=";
+   DIAGNOSTICS_LOG_SCOPE_PRINTF2 (dc.get_logger (),
+ 				 "handling: %s%s", option_name, arg);
    opt_spec_context ctxt (opts, dc, line_table, loc, option_name);
    auto sink = ctxt.parse_and_make_sink (arg, dc);
    if (!sink)
*************** handle_OPT_fdiagnostics_set_output_ (con
*** 97,102 ****
--- 100,107 ----
    gcc_assert (line_table);
  
    const char *const option_name = "-fdiagnostics-set-output=";
+   DIAGNOSTICS_LOG_SCOPE_PRINTF2 (dc.get_logger (),
+ 				 "handling: %s%s", option_name, arg);
    opt_spec_context ctxt (opts, dc, line_table, loc, option_name);
    auto sink = ctxt.parse_and_make_sink (arg, dc);
    if (!sink)
diff -Nrcpad gcc-16-20250824/gcc/passes.def gcc-16-20250831/gcc/passes.def
*** gcc-16-20250824/gcc/passes.def	Sun Aug 24 22:32:22 2025
--- gcc-16-20250831/gcc/passes.def	Sun Aug 31 22:32:14 2025
*************** along with GCC; see the file COPYING3.
*** 97,106 ****
            NEXT_PASS (pass_dse);
  	  NEXT_PASS (pass_cd_dce, false /* update_address_taken_p */, true /* remove_unused_locals */);
  	  NEXT_PASS (pass_phiopt, true /* early_p */);
  	  NEXT_PASS (pass_tail_recursion);
  	  NEXT_PASS (pass_if_to_switch);
  	  NEXT_PASS (pass_convert_switch);
- 	  NEXT_PASS (pass_cleanup_eh);
  	  NEXT_PASS (pass_sccopy);
  	  NEXT_PASS (pass_profile);
  	  NEXT_PASS (pass_local_pure_const);
--- 97,108 ----
            NEXT_PASS (pass_dse);
  	  NEXT_PASS (pass_cd_dce, false /* update_address_taken_p */, true /* remove_unused_locals */);
  	  NEXT_PASS (pass_phiopt, true /* early_p */);
+ 	  /* Cleanup eh is done before tail recusision to remove empty (only clobbers)
+ 	     finally blocks which would block tail recursion.  */
+ 	  NEXT_PASS (pass_cleanup_eh);
  	  NEXT_PASS (pass_tail_recursion);
  	  NEXT_PASS (pass_if_to_switch);
  	  NEXT_PASS (pass_convert_switch);
  	  NEXT_PASS (pass_sccopy);
  	  NEXT_PASS (pass_profile);
  	  NEXT_PASS (pass_local_pure_const);
diff -Nrcpad gcc-16-20250824/gcc/po/ChangeLog gcc-16-20250831/gcc/po/ChangeLog
*** gcc-16-20250824/gcc/po/ChangeLog	Sun Aug 24 22:32:22 2025
--- gcc-16-20250831/gcc/po/ChangeLog	Sun Aug 31 22:32:14 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-08-24  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* de.po: Update.
+ 
  2025-08-11  Joseph Myers  <josmyers@redhat.com>
  
  	* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
diff -Nrcpad gcc-16-20250824/gcc/target.def gcc-16-20250831/gcc/target.def
*** gcc-16-20250824/gcc/target.def	Sun Aug 24 22:32:22 2025
--- gcc-16-20250831/gcc/target.def	Sun Aug 31 22:32:15 2025
*************** At preset, this feature does not support
*** 7475,7485 ****
   bool, (), default_memtag_can_tag_addresses)
  
  DEFHOOK
! (tag_size,
   "Return the size of a tag (in bits) for this platform.\n\
  \n\
  The default returns 8.",
!   uint8_t, (), default_memtag_tag_size)
  
  DEFHOOK
  (granule_size,
--- 7475,7485 ----
   bool, (), default_memtag_can_tag_addresses)
  
  DEFHOOK
! (tag_bitsize,
   "Return the size of a tag (in bits) for this platform.\n\
  \n\
  The default returns 8.",
!   uint8_t, (), default_memtag_tag_bitsize)
  
  DEFHOOK
  (granule_size,
diff -Nrcpad gcc-16-20250824/gcc/targhooks.cc gcc-16-20250831/gcc/targhooks.cc
*** gcc-16-20250824/gcc/targhooks.cc	Sun Aug 24 22:32:22 2025
--- gcc-16-20250831/gcc/targhooks.cc	Sun Aug 31 22:32:15 2025
*************** default_memtag_can_tag_addresses ()
*** 2808,2814 ****
  }
  
  uint8_t
! default_memtag_tag_size ()
  {
    return 8;
  }
--- 2808,2814 ----
  }
  
  uint8_t
! default_memtag_tag_bitsize ()
  {
    return 8;
  }
diff -Nrcpad gcc-16-20250824/gcc/targhooks.h gcc-16-20250831/gcc/targhooks.h
*** gcc-16-20250824/gcc/targhooks.h	Sun Aug 24 22:32:22 2025
--- gcc-16-20250831/gcc/targhooks.h	Sun Aug 31 22:32:15 2025
*************** extern bool speculation_safe_value_not_n
*** 310,316 ****
  extern rtx default_speculation_safe_value (machine_mode, rtx, rtx, rtx);
  
  extern bool default_memtag_can_tag_addresses ();
! extern uint8_t default_memtag_tag_size ();
  extern uint8_t default_memtag_granule_size ();
  extern rtx default_memtag_insert_random_tag (rtx, rtx);
  extern rtx default_memtag_add_tag (rtx, poly_int64, uint8_t);
--- 310,316 ----
  extern rtx default_speculation_safe_value (machine_mode, rtx, rtx, rtx);
  
  extern bool default_memtag_can_tag_addresses ();
! extern uint8_t default_memtag_tag_bitsize ();
  extern uint8_t default_memtag_granule_size ();
  extern rtx default_memtag_insert_random_tag (rtx, rtx);
  extern rtx default_memtag_add_tag (rtx, poly_int64, uint8_t);
diff -Nrcpad gcc-16-20250824/gcc/testsuite/ChangeLog gcc-16-20250831/gcc/testsuite/ChangeLog
*** gcc-16-20250824/gcc/testsuite/ChangeLog	Sun Aug 24 22:32:22 2025
--- gcc-16-20250831/gcc/testsuite/ChangeLog	Sun Aug 31 22:32:15 2025
***************
*** 1,3 ****
--- 1,501 ----
+ 2025-08-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/121698
+ 	* gcc.dg/pr94589-2.c: Adjust for expected unordered value -128
+ 	rather than 2 and negations in unsigned char instead of and with
+ 	~1 and comparison against original value.
+ 	* gcc.dg/pr94589-4.c: Likewise.
+ 	* gcc.dg/pr94589-5.c: Likewise.
+ 	* gcc.dg/pr94589-6.c: Likewise.
+ 
+ 2025-08-30  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/121725
+ 	* gcc.target/i386/pr121725-1a.c: New test.
+ 	* gcc.target/i386/pr121725-1b.c: Likewise.
+ 
+ 2025-08-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/116651
+ 	PR tree-optimization/93265
+ 	PR tree-optimization/103647
+ 	PR tree-optimization/52171
+ 	* gcc.target/i386/pr44130.c: Add an inline-asm clobber.
+ 	* g++.dg/tree-ssa/vector-compare-1.C: New test.
+ 
+ 2025-08-30  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	Revert:
+ 	2025-08-30  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/pr120691.c: New test.
+ 
+ 2025-08-29  Sirui Mu  <msrlancern@gmail.com>
+ 
+ 	* g++.dg/cpp1z/array-condition-expr.C: New test.
+ 
+ 2025-08-29  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* gcc.target/xtensa/bswap-SSAI8.c: New.
+ 
+ 2025-08-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/93330
+ 	* gfortran.dg/argument_checking_15.f90: Adjust dg-pattern.
+ 	* gfortran.dg/bounds_check_strlen_7.f90: Add dg-pattern.
+ 	* gfortran.dg/char_length_3.f90: Adjust options.
+ 	* gfortran.dg/whole_file_24.f90: Add dg-pattern.
+ 	* gfortran.dg/whole_file_29.f90: Likewise.
+ 	* gfortran.dg/argument_checking_27.f90: New test.
+ 
+ 2025-08-29  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c: Add vfmin.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f64.c: New test.
+ 
+ 2025-08-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/121096
+ 	* gcc.target/i386/memcpy-strategy-14.c: New test.
+ 	* gcc.target/i386/memcpy-strategy-15.c: Likewise.
+ 	* gcc.target/i386/memset-strategy-10.c: Likewise.
+ 	* gcc.target/i386/memset-strategy-11.c: Likewise.
+ 	* gcc.target/i386/memset-strategy-12.c: Likewise.
+ 	* gcc.target/i386/memset-strategy-13.c: Likewise.
+ 	* gcc.target/i386/memset-strategy-14.c: Likewise.
+ 	* gcc.target/i386/memset-strategy-15.c: Likewise.
+ 
+ 2025-08-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/121108
+ 	* gcc.target/i386/memset-strategy-16.c: New test.
+ 
+ 2025-08-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/121694
+ 	* gcc.target/i386/pr121668-1b.c: New test.
+ 	* gcc.target/i386/pr121694-1a.c: Likewise.
+ 	* gcc.target/i386/pr121694-1b.c: Likewise.
+ 
+ 2025-08-29  Jason Merrill  <jason@redhat.com>
+ 
+ 	* g++.dg/cpp26/decomp26.C: Add -fimplicit-constexpr.
+ 
+ 2025-08-29  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR testsuite/120643
+ 	* gcc.target/i386/vect-pragma-target-1.c: Add `-mno-sse3 -mtune=generic`
+ 	to the options.
+ 	* gcc.target/i386/vect-pragma-target-2.c: Likewise.
+ 
+ 2025-08-29  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR testsuite/121713
+ 	* gcc.target/aarch64/vld2-1.c: Update the number of "after previous"
+ 	checks.
+ 
+ 2025-08-29  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c: Add asm check
+ 	for vnmsac.vx.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u8.c: New test.
+ 
+ 2025-08-29  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c: Add asm check
+ 	for vnmsac.vx.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary.h: Add test
+ 	helper macros.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_data.h: Add test
+ 	data for run test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i8.c: New test.
+ 
+ 2025-08-29  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/pr120691.c: New test.
+ 
+ 2025-08-28  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/107953
+ 	* g++.dg/cpp2a/lambda-targ18.C: New test.
+ 
+ 2025-08-28  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vls/floating-point-min-2.c: Adjust scan
+ 	dump.
+ 	* gcc.target/riscv/rvv/autovec/vls/floating-point-min-4.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfmin.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h: Add support for
+ 	function variants.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h: Add data for
+ 	vfmin.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f64.c: New test.
+ 
+ 2025-08-28  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	PR middle-end/66462
+ 	* gcc.target/aarch64/pr66462.c: Add new test.
+ 
+ 2025-08-28  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/119844
+ 	* g++.dg/modules/pr119844_a.C: New test.
+ 	* g++.dg/modules/pr119844_b.C: New test.
+ 	* g++.dg/template/incomplete13.C: New file.
+ 
+ 2025-08-28  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/121629
+ 	* gm2/switches/pathnameroot/pass/switches-pathnameroot-pass.exp: New test.
+ 	* gm2/switches/pathnameroot/pass/test.mod: New test.
+ 	* gm2/switches/pathnameroot/pass/testlib/m2/foo.def: New test.
+ 	* gm2/switches/pathnameroot/pass/testlib/m2/foo.mod: New test.
+ 
+ 2025-08-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/121583
+ 	* g++.dg/cpp26/expansion-stmt23.C: New test.
+ 	* g++.dg/cpp26/expansion-stmt24.C: New test.
+ 
+ 2025-08-28  Jakub Jelinek  <jakub@redhat.com>
+ 	    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/121575
+ 	* g++.dg/cpp26/expansion-stmt20.C: New test.
+ 
+ 2025-08-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/82843
+ 	* gfortran.dg/pdt_40.f03: New test.
+ 
+ 2025-08-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/82205
+ 	* gfortran.dg/pdt_22.f03: Use the correct for PDT constructors.
+ 	* gfortran.dg/pdt_23.f03: Likewise.
+ 	* gfortran.dg/pdt_3.f03: Likewise.
+ 
+ 2025-08-27  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* gcc.target/riscv/nozicond-2.c: Remove xfails.
+ 
+ 2025-08-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/114611
+ 	* gfortran.dg/aliasing_dummy_1.f90: Accommodate errors
+ 	and warnings as needed.
+ 	* gfortran.dg/eoshift_8.f90: Likewise.
+ 	* gfortran.dg/g77/f77-edit-h-out.f: Likewise.
+ 	* gfortran.dg/hollerith_1.f90: Likewise.
+ 	* gfortran.dg/io_constraints_1.f90: Likewise.
+ 	* gfortran.dg/io_constraints_2.f90: Likewise.
+ 	* gfortran.dg/longline.f: Likewise.
+ 	* gfortran.dg/pr20086.f90: Likewise.
+ 	* gfortran.dg/unused_artificial_dummies_1.f90: Likewise.
+ 	* gfortran.dg/x_slash_1.f: Likewise.
+ 
+ 2025-08-27  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/121695
+ 	* gcc.dg/torture/pr121695-1.c: New test.
+ 
+ 2025-08-27  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f64.c: Fix type.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f32.c: Remove
+ 	useless dg directives.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f64.c: Likewise.
+ 
+ 2025-08-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121686
+ 	* gcc.dg/vect/pr121686.c: New testcase.
+ 
+ 2025-08-27  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR testsuite/121684
+ 	* c-c++-common/hwasan/unprotected-allocas-0.c: Mark
+ 	using_vararray and using_alloca as noclone too.
+ 
+ 2025-08-27  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/121668
+ 	* gcc.target/i386/pr121668-1a.c: New test.
+ 
+ 2025-08-27  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR tree-optimization/121656
+ 	* gcc.dg/pr121656.c: Moved to ...
+ 	* gcc.dg/torture/pr121656.c: Here.
+ 	(dg-options): Removed.
+ 	(foo): Replace weak attribute with noipa attribute.
+ 
+ 2025-08-27  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* gcc.target/riscv/mcpu-xt-c908v.c: Drop xtheadvdot.
+ 	* gcc.target/riscv/mcpu-xt-c920v2.c: Drop xtheadvdot.
+ 
+ 2025-08-26  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR middle-end/118839
+ 	* gcc.dg/gomp/declare-variant-3.c: New.
+ 	* gfortran.dg/gomp/declare-variant-22.f90: New.
+ 
+ 2025-08-26  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* c-c++-common/gomp/append-args-1.c: Adjust expected output.
+ 	* g++.dg/gomp/adjust-args-1.C: Likewise.
+ 	* g++.dg/gomp/adjust-args-3.C: Likewise.
+ 	* gcc.dg/gomp/adjust-args-1.c: Likewise:
+ 	* gcc.dg/gomp/append-args-1.c: Likewise.
+ 	* gcc.dg/gomp/unprototyped-variant.c: New.
+ 	* gfortran.dg/gomp/adjust-args-1.f90: Adjust expected output.
+ 	* gfortran.dg/gomp/append_args-1.f90: Likewise.
+ 
+ 2025-08-26  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* gcc.target/riscv/arch-25.c: Use wildcards to simplify/eliminate
+ 	dg-error directives.
+ 	* gcc.target/riscv/arch-ss-2.c: Similarly.
+ 	* gcc.target/riscv/arch-zilsd-2.c: Similarly.
+ 	* gcc.target/riscv/arch-zilsd-3.c: Similarly.
+ 
+ 2025-08-26  David Faust  <david.faust@oracle.com>
+ 
+ 	PR debug/121411
+ 	* gcc.dg/debug/ctf/ctf-array-7.c: Restrict to lp64,llp64
+ 	targets.
+ 
+ 2025-08-26  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* gcc.target/arm/unsigned-extend-2.c: Disable sched2 and sched3
+ 	and update function body to match.
+ 
+ 2025-08-26  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/vect_unroll-1.c: New test.
+ 	* gcc.target/i386/vect_unroll-2.c: New test.
+ 	* gcc.target/i386/vect_unroll-3.c: New test.
+ 	* gcc.target/i386/vect_unroll-4.c: New test.
+ 	* gcc.target/i386/vect_unroll-5.c: New test.
+ 	* gcc.target/i386/vect_unroll-6.c: New file.
+ 
+ 2025-08-26  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfrdiv.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h: Add support for reverse
+ 	variants.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h: Add data for
+ 	reverse variants.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f64.c: New test.
+ 
+ 2025-08-26  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/121290
+ 	* gcc.target/aarch64/pr121290.c: New test.
+ 
+ 2025-08-26  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfmul.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_run.h: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vls/floating-point-mul-2.c: Adjust scan
+ 	dump.
+ 	* gcc.target/riscv/rvv/autovec/vls/floating-point-mul-3.c: Likewise.
+ 
+ 2025-08-26  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* gcc.target/arm/bics_3.c: Add some additional tests that
+ 	cannot be folded to a bit manipulation.
+ 
+ 2025-08-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121659
+ 	* gcc.dg/vect/pr121659.c: New testcase.
+ 
+ 2025-08-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/121658
+ 	* gcc.target/i386/pr121658.c: New test.
+ 
+ 2025-08-26  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c: Add asm check
+ 	for vx combine.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u8.c: New test.
+ 
+ 2025-08-26  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c: Add asm check
+ 	for vx combine.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary.h: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_data.h: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_run.h: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i8.c: New test.
+ 
+ 2025-08-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121453
+ 	* gcc.dg/gomp/pr121453.c: New test.
+ 
+ 2025-08-25  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR tree-optimization/121656
+ 	* gcc.dg/pr121656.c: New file.
+ 
+ 2025-08-25  David Faust  <david.faust@oracle.com>
+ 
+ 	PR debug/121411
+ 	* gcc.dg/debug/ctf/ctf-array-7.c: New test.
+ 
+ 2025-08-25  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/121279
+ 	* gcc.dg/torture/pr121279-1.c: New test.
+ 
+ 2025-08-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* g++.dg/cpp26/expansion-stmt15.C: Don't expect error on
+ 	destructuring expansion stmts with structured binding size 0.
+ 	* g++.dg/cpp26/expansion-stmt21.C: New test.
+ 	* g++.dg/cpp26/expansion-stmt22.C: New test.
+ 
+ 2025-08-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/121601
+ 	* g++.dg/cpp26/constexpr-eh16.C: New test.
+ 
+ 2025-08-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121638
+ 	* gcc.dg/vect/pr121638.c: New testcase.
+ 
+ 2025-08-25  Andi Kleen  <ak@gcc.gnu.org>
+ 
+ 	* gcc.target/i386/shift-gf2p8affine-1.c: New test
+ 	* gcc.target/i386/shift-gf2p8affine-2.c: New test
+ 	* gcc.target/i386/shift-gf2p8affine-3.c: New test
+ 	* gcc.target/i386/shift-v16qi-4.c: New test
+ 	* gcc.target/i386/shift-gf2p8affine-5.c: New test
+ 	* gcc.target/i386/shift-gf2p8affine-6.c: New test
+ 	* gcc.target/i386/shift-gf2p8affine-7.c: New test
+ 
+ 2025-08-25  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/121634
+ 	* gcc.target/loongarch/pr121634.c: New test.
+ 
+ 2025-08-25  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* gcc.target/arm/bics_3.c: Adjust expected output
+ 
  2025-08-23  Eczbek  <eczbek.void@gmail.com>
  
  	PR c++/116928
diff -Nrcpad gcc-16-20250824/gcc/testsuite/c-c++-common/gomp/append-args-1.c gcc-16-20250831/gcc/testsuite/c-c++-common/gomp/append-args-1.c
*** gcc-16-20250824/gcc/testsuite/c-c++-common/gomp/append-args-1.c	Sun Aug 24 22:32:24 2025
--- gcc-16-20250831/gcc/testsuite/c-c++-common/gomp/append-args-1.c	Sun Aug 31 22:32:19 2025
*************** float repl4(short, short, omp_interop_t,
*** 42,48 ****
  float base4(short, short);
  /* { dg-error "variant 'repl4' and base 'base4' have incompatible types" "" { target c } .-2 }  */
  /* { dg-error "too few arguments to function 'float repl4\\(short int, short int, omp_interop_t, short int\\)'" "" { target c++ } .-3 }  */
! /* { dg-note "declared here" "" { target c++ } .-5 } */
  
  
  float repl5(short, short, omp_interop_t, short);
--- 42,48 ----
  float base4(short, short);
  /* { dg-error "variant 'repl4' and base 'base4' have incompatible types" "" { target c } .-2 }  */
  /* { dg-error "too few arguments to function 'float repl4\\(short int, short int, omp_interop_t, short int\\)'" "" { target c++ } .-3 }  */
! /* { dg-note "declared here" "" { target *-*-*} .-5 } */
  
  
  float repl5(short, short, omp_interop_t, short);
*************** float repl6(short, short, omp_interop_t,
*** 58,64 ****
  float base6(short, short);
  /* { dg-error "variant 'repl6' and base 'base6' have incompatible types" "" { target c } .-2 }  */
  /* { dg-error "too few arguments to function 'float repl6\\(short int, short int, omp_interop_t, short int\\)'" "" { target c++ } .-3 }  */
! /* { dg-note "declared here" "" { target c++ } .-5 } */
  
  
  float
--- 58,64 ----
  float base6(short, short);
  /* { dg-error "variant 'repl6' and base 'base6' have incompatible types" "" { target c } .-2 }  */
  /* { dg-error "too few arguments to function 'float repl6\\(short int, short int, omp_interop_t, short int\\)'" "" { target c++ } .-3 }  */
! /* { dg-note "declared here" "" { target *-*-*} .-5 } */
  
  
  float
diff -Nrcpad gcc-16-20250824/gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-0.c gcc-16-20250831/gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-0.c
*** gcc-16-20250824/gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-0.c	Sun Aug 24 22:32:25 2025
--- gcc-16-20250831/gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-0.c	Sun Aug 31 22:32:19 2025
***************
*** 12,18 ****
  
  char tag_of (void * x) { return ((unsigned long long)x) >> 56; }
  
! int __attribute__ ((noinline))
  using_alloca (int num)
  {
    int retval = 0;
--- 12,18 ----
  
  char tag_of (void * x) { return ((unsigned long long)x) >> 56; }
  
! int __attribute__ ((noinline,noclone))
  using_alloca (int num)
  {
    int retval = 0;
*************** using_alloca (int num)
*** 25,31 ****
    return retval;
  }
  
! int __attribute__ ((noinline))
  using_vararray (int num)
  {
    int retval = 0;
--- 25,31 ----
    return retval;
  }
  
! int __attribute__ ((noinline,noclone))
  using_vararray (int num)
  {
    int retval = 0;
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/cpp1z/array-condition-expr.C gcc-16-20250831/gcc/testsuite/g++.dg/cpp1z/array-condition-expr.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/cpp1z/array-condition-expr.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/g++.dg/cpp1z/array-condition-expr.C	Sun Aug 31 22:32:22 2025
***************
*** 0 ****
--- 1,26 ----
+ // { dg-do run { target c++17 } }
+ 
+ int x[10];
+ int y[10];
+ bool c() { return true; }
+ 
+ void f(int i, int v)
+ {
+   (c() ? x : y)[i] = v;
+ }
+ 
+ void g(int i, int v)
+ {
+   i[c() ? x : y] = v;
+ }
+ 
+ int main()
+ {
+   f(0, 1);
+   if (x[0] != 1)
+     __builtin_abort();
+ 
+   g(0, 2);
+   if (x[0] != 2)
+     __builtin_abort();
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/constexpr-eh16.C gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/constexpr-eh16.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/constexpr-eh16.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/constexpr-eh16.C	Sun Aug 31 22:32:22 2025
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/121601
+ // { dg-do compile { target c++11 } }
+ // { dg-options "" }
+ 
+ struct A {
+   constexpr const char *data () const noexcept { return "abc"; }
+   constexpr unsigned size () const noexcept { return 3; }
+ };
+ 
+ constexpr A
+ foo ()
+ {
+   return true ? throw 42 : A {}; // { dg-warning "expression '<throw-expression>' is not a constant expression" "" { target c++20_down } }
+ }				 // { dg-error "expression '<throw-expression>' is not a constant expression" "" { target c++23_only } .-1 }
+ 
+ static_assert (false, foo ());	 // { dg-warning "'static_assert' with non-string message only available with" "" { target c++23_down } }
+ // { dg-error "'constexpr A foo\\\(\\\)' called in a constant expression" "" { target c++23_down } .-1 }
+ // { dg-error "constexpr string 'size\\\(\\\)' must be a constant expression" "" { target *-*-* } .-2 }
+ // { dg-error "uncaught exception '42'" "" { target c++26 } .-3 }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/decomp26.C gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/decomp26.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/decomp26.C	Sun Aug 24 22:32:30 2025
--- gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/decomp26.C	Sun Aug 31 22:32:22 2025
***************
*** 1,6 ****
  // P1061R10 - Structured Bindings can introduce a Pack
  // { dg-do compile { target c++11 } }
! // { dg-options "" }
  // { dg-final { scan-assembler "_ZZ3fooI1AEivE1a:" } }
  // { dg-final { scan-assembler "_ZZ3fooI1AEivE1b:" } }
  // { dg-final { scan-assembler "_ZZ3fooI1AEivE1c:" } }
--- 1,6 ----
  // P1061R10 - Structured Bindings can introduce a Pack
  // { dg-do compile { target c++11 } }
! // { dg-options "-fno-implicit-constexpr" }
  // { dg-final { scan-assembler "_ZZ3fooI1AEivE1a:" } }
  // { dg-final { scan-assembler "_ZZ3fooI1AEivE1b:" } }
  // { dg-final { scan-assembler "_ZZ3fooI1AEivE1c:" } }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/expansion-stmt15.C gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/expansion-stmt15.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/expansion-stmt15.C	Sun Aug 24 22:32:30 2025
--- gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/expansion-stmt15.C	Sun Aug 31 22:32:22 2025
*************** foo (int n)
*** 27,37 ****
    int e = 42;
    d[0] = 42;
    template for (auto a : A {})		// { dg-warning "'template for' only available with" "" { target c++23_down } }
!     ;					// { dg-error "empty structured binding" "" { target *-*-* } .-1 }
    template for (int b : B {})		// { dg-warning "'template for' only available with" "" { target c++23_down } }
      ;
    template for (int i : c)		// { dg-warning "'template for' only available with" "" { target c++23_down } }
!     ;					// { dg-error "empty structured binding" "" { target *-*-* } .-1 }
    template for (int i : d)		// { dg-warning "'template for' only available with" "" { target c++23_down } }
      ;					// { dg-error "cannot decompose variable length array" "" { target *-*-* } .-1 }
    template for (auto a : C {})		// { dg-warning "'template for' only available with" "" { target c++23_down } }
--- 27,37 ----
    int e = 42;
    d[0] = 42;
    template for (auto a : A {})		// { dg-warning "'template for' only available with" "" { target c++23_down } }
!     ;
    template for (int b : B {})		// { dg-warning "'template for' only available with" "" { target c++23_down } }
      ;
    template for (int i : c)		// { dg-warning "'template for' only available with" "" { target c++23_down } }
!     ;
    template for (int i : d)		// { dg-warning "'template for' only available with" "" { target c++23_down } }
      ;					// { dg-error "cannot decompose variable length array" "" { target *-*-* } .-1 }
    template for (auto a : C {})		// { dg-warning "'template for' only available with" "" { target c++23_down } }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/expansion-stmt20.C gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/expansion-stmt20.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/expansion-stmt20.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/expansion-stmt20.C	Sun Aug 31 22:32:22 2025
***************
*** 0 ****
--- 1,59 ----
+ // PR c++/121575
+ // { dg-do run { target c++11 } }
+ // { dg-options "" }
+ 
+ struct A { int x, y; };
+ int c;
+ 
+ void
+ qux (A p)
+ {
+   if (p.x != 1 || p.y != 3)
+     __builtin_abort ();
+   ++c;
+ }
+ 
+ void
+ foo ()
+ {
+   A p { 1, 3 };
+   template for (auto _ : {})			// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     qux (p);
+   template for (auto _ : { 0 })			// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     qux (p);
+ }
+ 
+ void
+ bar (A p)
+ {
+   template for (auto _ : {})			// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     qux (p);
+   template for (auto _ : { 0, 1 })		// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     qux (p);
+ }
+ 
+ A
+ baz ()
+ {
+   A p { 1, 3 };
+   template for (auto _ : {})			// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     qux (p);
+   template for (auto _ : { 0, 1, 2 })		// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     qux (p);
+   return p;
+ }
+ 
+ int
+ main ()
+ {
+   foo ();
+   if (c != 1)
+     __builtin_abort ();
+   bar ({ 1, 3 });
+   if (c != 3)
+     __builtin_abort ();
+   if (baz ().x != 1 || baz ().y != 3)
+     __builtin_abort ();
+   if (c != 9)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/expansion-stmt21.C gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/expansion-stmt21.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/expansion-stmt21.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/expansion-stmt21.C	Sun Aug 31 22:32:22 2025
***************
*** 0 ****
--- 1,24 ----
+ // DR3048 - Empty destructuring expansion statements
+ // { dg-do run { target c++11 } }
+ // { dg-options "" }
+ 
+ struct A {};
+ 
+ int
+ foo ()
+ {
+   int c[0] = {};
+   int r = 0;
+   template for (auto a : A {})		// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     ++r;
+   template for (int i : c)		// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     ++r;
+   return r;
+ }
+ 
+ int
+ main ()
+ {
+   if (foo () != 0)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/expansion-stmt22.C gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/expansion-stmt22.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/expansion-stmt22.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/expansion-stmt22.C	Sun Aug 31 22:32:23 2025
***************
*** 0 ****
--- 1,16 ----
+ // DR3048 - Empty destructuring expansion statements
+ // { dg-do compile { target c++11 } }
+ // { dg-options "" }
+ 
+ struct A {};
+ 
+ void
+ foo ()
+ {
+   static constexpr A b {};
+   template for (constexpr auto a : b)	// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     ;
+   A c {};
+   template for (constexpr auto a : c)	// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     ;					// { dg-error "'c' is not a constant expression" "" { target *-*-* } .-1 }
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/expansion-stmt23.C gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/expansion-stmt23.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/expansion-stmt23.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/expansion-stmt23.C	Sun Aug 31 22:32:23 2025
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/121583
+ // { dg-do compile { target c++14 } }
+ // { dg-options "" }
+ 
+ auto
+ foo ()
+ {
+   template for (int i : { 0 })		// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     return i;
+ }
+ 
+ auto
+ bar ()
+ {
+   template for (auto i : { 0 })		// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     return i;
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/expansion-stmt24.C gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/expansion-stmt24.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/cpp26/expansion-stmt24.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/g++.dg/cpp26/expansion-stmt24.C	Sun Aug 31 22:32:23 2025
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/121583
+ // { dg-do compile { target c++14 } }
+ // { dg-options "" }
+ 
+ auto
+ foo ()
+ {
+   template for (auto i : { 0, 1, 2LL })		// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     return i;					// { dg-error "inconsistent deduction for auto return type: 'int' and then 'long long int'" }
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/cpp2a/lambda-targ18.C gcc-16-20250831/gcc/testsuite/g++.dg/cpp2a/lambda-targ18.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/cpp2a/lambda-targ18.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/g++.dg/cpp2a/lambda-targ18.C	Sun Aug 31 22:32:23 2025
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/107953
+ // { dg-do compile { target c++20 } }
+ 
+ template<auto F>
+ struct Foo {};
+ 
+ Foo<[](){ return 1 >= 0; }> foo1{};
+ 
+ Foo<[](){ return (1 > 0); }> foo2{};
+ 
+ Foo<[](){ return 1 > 0; }> foo3{};
+ 
+ Foo<[g = 1 > 0]{ return g; }> foo4{};
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/gomp/adjust-args-1.C gcc-16-20250831/gcc/testsuite/g++.dg/gomp/adjust-args-1.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/gomp/adjust-args-1.C	Sun Aug 24 22:32:31 2025
--- gcc-16-20250831/gcc/testsuite/g++.dg/gomp/adjust-args-1.C	Sun Aug 31 22:32:24 2025
*************** int f2b (void *a);
*** 17,23 ****
  int f2c (void *a);
  #pragma omp declare variant (f1) match (construct={dispatch}) adjust_args (other: a) /* { dg-error "expected 'nothing' or 'need_device_ptr'" } */
  int f3 (int a);
! #pragma omp declare variant (f0) adjust_args (nothing: a) /* { dg-error "an 'adjust_args' clause requires a 'match' clause" } */
  int f4 (void *a);
  #pragma omp declare variant (f1) match (construct={dispatch}) adjust_args () /* { dg-error "expected 'nothing' or 'need_device_ptr' followed by ':'" } */
  int f5 (int a);
--- 17,23 ----
  int f2c (void *a);
  #pragma omp declare variant (f1) match (construct={dispatch}) adjust_args (other: a) /* { dg-error "expected 'nothing' or 'need_device_ptr'" } */
  int f3 (int a);
! #pragma omp declare variant (f0) adjust_args (nothing: a) /* { dg-error "expected 'match' clause" } */
  int f4 (void *a);
  #pragma omp declare variant (f1) match (construct={dispatch}) adjust_args () /* { dg-error "expected 'nothing' or 'need_device_ptr' followed by ':'" } */
  int f5 (int a);
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/gomp/adjust-args-3.C gcc-16-20250831/gcc/testsuite/g++.dg/gomp/adjust-args-3.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/gomp/adjust-args-3.C	Sun Aug 24 22:32:31 2025
--- gcc-16-20250831/gcc/testsuite/g++.dg/gomp/adjust-args-3.C	Sun Aug 31 22:32:24 2025
***************
*** 2,6 ****
  // clause is missing.
  
  void f(int *, int *, int *);
! #pragma omp declare variant(f) adjust_args(need_device_ptr: xxx)  /* { dg-error "an 'adjust_args' clause requires a 'match' clause" } */
  void g(int *xxx, int *yyy, int *zzz);
--- 2,6 ----
  // clause is missing.
  
  void f(int *, int *, int *);
! #pragma omp declare variant(f) adjust_args(need_device_ptr: xxx)  /* { dg-error "expected 'match' clause" } */
  void g(int *xxx, int *yyy, int *zzz);
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/modules/pr119844_a.C gcc-16-20250831/gcc/testsuite/g++.dg/modules/pr119844_a.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/modules/pr119844_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/g++.dg/modules/pr119844_a.C	Sun Aug 31 22:32:24 2025
***************
*** 0 ****
--- 1,27 ----
+ // PR c++/119844
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi M }
+ 
+ export module M;
+ 
+ struct S { int value; };
+ 
+ export struct A { int value; };
+ export using B = S;  // typedef, shouldn't correspond
+ export template <typename T> struct C { int value; };  // template vs. non-template
+ 
+ // we use static_assert(false) to ensure we don't try to complete the body
+ // and get unrelated errors while reporting
+ export template <typename T> struct D { static_assert(false); };
+ export template <typename T> using E = S;  // typedef, shouldn't correspond
+ 
+ export template <typename T> struct F;
+ template <> struct F<int> { int value; };
+ 
+ export template <typename T> struct G { static_assert(false); };
+ 
+ export template <typename T> struct H;
+ template <typename T> struct H<const T> { static_assert(false); };
+ #if __cpp_concepts >= 201907L
+ template <typename T> requires true struct H<const T> { static_assert(false); };
+ #endif
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/modules/pr119844_b.C gcc-16-20250831/gcc/testsuite/g++.dg/modules/pr119844_b.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/modules/pr119844_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/g++.dg/modules/pr119844_b.C	Sun Aug 31 22:32:24 2025
***************
*** 0 ****
--- 1,57 ----
+ // PR c++/119844
+ // { dg-additional-options "-fmodules" }
+ 
+ struct A; // { dg-message "declaration" }
+ struct B; // { dg-message "declaration" }
+ struct C; // { dg-message "declaration" }
+ 
+ template <typename T> struct D; // { dg-message "declaration" }
+ template <typename T> struct E; // { dg-message "declaration" }
+ 
+ template <typename T> struct F; // { dg-message "declaration" }
+ 
+ template <typename T> struct G { int value; };  // { dg-bogus "module" }
+ template <> struct G<int>; // { dg-message "declaration" }
+ // { dg-bogus "module" "" { target *-*-* } .-1 }
+ 
+ template <typename T> struct H { int value; };  // { dg-bogus "module" }
+ template <typename T> struct H<const T>;  // { dg-message "declaration" }
+ // { dg-bogus "module" "" { target *-*-* } .-1 }
+ 
+ struct MainWindow {
+   A* a;
+   B* b;
+   C* c;
+ 
+   D<int>* d;
+   E<int>* e;
+   F<int>* f;
+ 
+   G<int>* g;
+   H<const int>* h;
+ };
+ 
+ import M;
+ 
+ int foo(MainWindow m) {
+   int result = 0;
+   result += m.a->value; // { dg-error "incomplete" }
+   result += m.b->value; // { dg-error "incomplete" }
+   result += m.c->value; // { dg-error "incomplete" }
+   result += m.d->value; // { dg-error "incomplete" }
+   result += m.e->value; // { dg-error "incomplete" }
+   result += m.f->value; // { dg-error "incomplete" }
+   result += m.g->value; // { dg-error "incomplete" }
+   result += m.h->value; // { dg-error "incomplete" }
+   return result;
+ }
+ 
+ // { dg-message "A@M" "" { target *-*-* } 0 }
+ // { dg-bogus   "B@M" "" { target *-*-* } 0 }
+ // { dg-bogus   "C@M" "" { target *-*-* } 0 }
+ // { dg-message "D@M" "" { target *-*-* } 0 }
+ // { dg-bogus   "E@M" "" { target *-*-* } 0 }
+ // { dg-message "F@M" "" { target *-*-* } 0 }
+ // { dg-message "G@M" "" { target *-*-* } 0 }
+ // { dg-message "H@M" "" { target *-*-* } 0 }
+ 
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/template/incomplete13.C gcc-16-20250831/gcc/testsuite/g++.dg/template/incomplete13.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/template/incomplete13.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/g++.dg/template/incomplete13.C	Sun Aug 31 22:32:27 2025
***************
*** 0 ****
--- 1,17 ----
+ // { dg-do compile }
+ 
+ template <typename T> struct A {};  // { dg-bogus "declaration" }
+ template <typename T> struct A<T*> {  // { dg-message "closing brace" }
+   A<int*> a;  // { dg-error "incomplete" }
+ };
+ 
+ template <typename T> struct B;
+ template <typename T> struct B {  // { dg-message "closing brace" }
+   B<int*> b;  // { dg-error "incomplete" }
+ };
+ 
+ template <typename T> struct C { int value; };  // { dg-bogus "declaration" }
+ template <typename T> struct C<T*>;  // { dg-message "declaration" }
+ int test(C<int*>& b) {
+   return b.value;  // { dg-error "incomplete" }
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/g++.dg/tree-ssa/vector-compare-1.C gcc-16-20250831/gcc/testsuite/g++.dg/tree-ssa/vector-compare-1.C
*** gcc-16-20250824/gcc/testsuite/g++.dg/tree-ssa/vector-compare-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/g++.dg/tree-ssa/vector-compare-1.C	Sun Aug 31 22:32:28 2025
***************
*** 0 ****
--- 1,24 ----
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-O2 -fdump-tree-optimized" }
+ 
+ // PR tree-optimization/116651
+ 
+ #include <vector>
+ 
+ bool test1(const std::vector<int>& in) {
+     return in == std::vector<int>{24};
+ }
+ 
+ /* We should be to optimize this to:
+    int *b = in.bptr;
+    int *e = in.eptr;
+    auto size = e - b;
+    if (size != 4)
+      return false;
+    int v = *b;
+    return v == 24;
+ 
+ */
+ 
+ // { dg-final { scan-tree-dump-times "== 24" 1 "optimized" } } */
+ // { dg-final { scan-tree-dump-times "== 4" 1 "optimized"  { target int32 } } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/debug/ctf/ctf-array-7.c gcc-16-20250831/gcc/testsuite/gcc.dg/debug/ctf/ctf-array-7.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/debug/ctf/ctf-array-7.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.dg/debug/ctf/ctf-array-7.c	Sun Aug 31 22:32:31 2025
***************
*** 0 ****
--- 1,24 ----
+ /* PR debug/121411
+    CTF generation for array which cannot be encoded in CTF.
+ 
+    CTF encoding uses a uint32 for number of elements in an array which
+    means there is a hard upper limit on sizes of arrays which can be
+    represented.  Arrays with too many elements are encoded with
+    CTF_K_UNKNOWN to indicate that they cannot be represented.  */
+ 
+ /* { dg-do compile { target { lp64 || llp64 } } } */
+ /* { dg-options "-O0 -gctf -dA" } */
+ 
+ int   rep[0xffffffff];
+ int unrep[0x100000000];
+ 
+ /* One dimension can be represented, other cannot.
+    Result is a (representable) array with unknown element type.  */
+ int unrepdim [0xab][0x100000007];
+ 
+ /* Two CTF_K_ARRAY, one (shared) CTF_K_UNKNOWN.  */
+ /* { dg-final { scan-assembler-times "0x12000000\[\t \]+\[^\n\]*ctt_info" 2 } } */
+ /* { dg-final { scan-assembler-times "0x2000000\[\t \]+\[^\n\]*ctt_info" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\[\t \]+0xffffffff\[\t \]+\[^\n\]*cta_nelems" 1 } } */
+ /* { dg-final { scan-assembler-times "\[\t \]+0xab\[\t \]+\[^\n\]*cta_nelems" 1 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/gomp/adjust-args-1.c gcc-16-20250831/gcc/testsuite/gcc.dg/gomp/adjust-args-1.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/gomp/adjust-args-1.c	Sun Aug 24 22:32:40 2025
--- gcc-16-20250831/gcc/testsuite/gcc.dg/gomp/adjust-args-1.c	Sun Aug 31 22:32:31 2025
*************** int f1 (int);
*** 11,17 ****
  int f2 (void *a);
  #pragma omp declare variant (f1) match (construct={dispatch}) adjust_args (other: a) /* { dg-error "expected 'nothing' or 'need_device_ptr'" } */
  int f3 (int a);
! #pragma omp declare variant (f0) adjust_args (nothing: a) /* { dg-error "an 'adjust_args' clause requires a 'match' clause" } */
  int f4 (void *a);
  #pragma omp declare variant (f1) match (construct={dispatch}) adjust_args () /* { dg-error "expected 'nothing' or 'need_device_ptr' followed by ':'" } */
  int f5 (int a);
--- 11,17 ----
  int f2 (void *a);
  #pragma omp declare variant (f1) match (construct={dispatch}) adjust_args (other: a) /* { dg-error "expected 'nothing' or 'need_device_ptr'" } */
  int f3 (int a);
! #pragma omp declare variant (f0) adjust_args (nothing: a) /* { dg-error "expected 'match' clause" } */
  int f4 (void *a);
  #pragma omp declare variant (f1) match (construct={dispatch}) adjust_args () /* { dg-error "expected 'nothing' or 'need_device_ptr' followed by ':'" } */
  int f5 (int a);
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/gomp/append-args-1.c gcc-16-20250831/gcc/testsuite/gcc.dg/gomp/append-args-1.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/gomp/append-args-1.c	Sun Aug 24 22:32:40 2025
--- gcc-16-20250831/gcc/testsuite/gcc.dg/gomp/append-args-1.c	Sun Aug 31 22:32:31 2025
*************** typedef enum omp_interop_t
*** 15,70 ****
  } omp_interop_t;
  
  
! /* (A) No prototype for the variant but for the base function.  */
  
  void variant_fn1();
  #pragma omp declare variant(variant_fn1) match(construct={dispatch}) append_args(interop(target)) \
                                           adjust_args(need_device_ptr: x,y)
  void bar1(int *x, int *y);
- /* { dg-error "variant 'variant_fn1' and base 'bar1' have incompatible types" "" { target *-*-* } .-3 }  */
  
  
  void variant_fn2();
  #pragma omp declare variant(variant_fn2) match(construct={dispatch}) append_args(interop(target))
  void bar2(int *x, int *y);
- /* { dg-error "variant 'variant_fn2' and base 'bar2' have incompatible types" "" { target *-*-* } .-2 }  */
  
  
  
! /* (B) No prototype for the variant nor for the base function.  */
  
! void variant_fn3();  /* { dg-error "argument 1 of 'variant_fn3' must be of 'omp_interop_t'" }  */
  #pragma omp declare variant(variant_fn3) match(construct={dispatch}) append_args(interop(target)) \
                                           adjust_args(need_device_ptr: x,y)
  void bar3();
  /* { dg-error "'x' undeclared here \\(not in a function\\)" "" { target *-*-* } .-2 }  */
  /* { dg-error "'y' undeclared here \\(not in a function\\)" "" { target *-*-* } .-3 }  */
! /* { dg-note "'append_args' specified here" "" { target *-*-* } .-5 }  */
  
  
! void variant_fn4();  /* { dg-error "argument 1 of 'variant_fn4' must be of 'omp_interop_t'" }  */
  #pragma omp declare variant(variant_fn4) match(construct={dispatch}) append_args(interop(target))
  void bar4();
! /* { dg-note "'append_args' specified here" "" { target *-*-* } .-2 }  */
  
  
  
! /* (C) Only a prototype on the variant-function side.  */
  
  void variant_fn5(omp_interop_t, omp_interop_t);
  #pragma omp declare variant(variant_fn5) match(construct={dispatch}) append_args(interop(target)) \
                                           adjust_args(need_device_ptr: x,y)
  void bar5();
! /* { dg-error "variant 'variant_fn5' and base 'bar5' have incompatible types" "" { target *-*-* } .-3 }  */
  
  
  void variant_fn6(omp_interop_t, omp_interop_t);
  #pragma omp declare variant(variant_fn6) match(construct={dispatch}) append_args(interop(target))
  void bar6();
! /* { dg-error "variant 'variant_fn6' and base 'bar6' have incompatible types" "" { target *-*-* } .-2 }  */
  
  
  void variant_fn7(int *, int, omp_interop_t, omp_interop_t);
  #pragma omp declare variant(variant_fn7) match(construct={dispatch}) append_args(interop(target))
  void bar7();
! /* { dg-error "variant 'variant_fn7' and base 'bar7' have incompatible types" "" { target *-*-* } .-2 }  */
--- 15,74 ----
  } omp_interop_t;
  
  
! /* (A) No prototype for the variant but for the base function.
!    This is OK, the unprototyped decl is compatible with the modified
!    argument list.  */
  
  void variant_fn1();
  #pragma omp declare variant(variant_fn1) match(construct={dispatch}) append_args(interop(target)) \
                                           adjust_args(need_device_ptr: x,y)
  void bar1(int *x, int *y);
  
  
  void variant_fn2();
  #pragma omp declare variant(variant_fn2) match(construct={dispatch}) append_args(interop(target))
  void bar2(int *x, int *y);
  
  
  
! /* (B) No prototype for the variant nor for the base function.
!    The declarations are compatible, but adjust_args requires a prototyped
!    base function so that we know where in the arglist to insert the additional
!    omp_interop_t arguments.  */
  
! void variant_fn3();
  #pragma omp declare variant(variant_fn3) match(construct={dispatch}) append_args(interop(target)) \
                                           adjust_args(need_device_ptr: x,y)
  void bar3();
  /* { dg-error "'x' undeclared here \\(not in a function\\)" "" { target *-*-* } .-2 }  */
  /* { dg-error "'y' undeclared here \\(not in a function\\)" "" { target *-*-* } .-3 }  */
! /* { dg-message "'append_args' with unprototyped base function" "" { target *-*-* } .-5 }  */
  
  
! void variant_fn4();
  #pragma omp declare variant(variant_fn4) match(construct={dispatch}) append_args(interop(target))
  void bar4();
! /* { dg-message "'append_args' with unprototyped base function" "" { target *-*-* } .-2 }  */
  
  
  
! /* (C) Only a prototype on the variant-function side.  Again, the base
!    function requires a prototype with append_args.  */
  
  void variant_fn5(omp_interop_t, omp_interop_t);
  #pragma omp declare variant(variant_fn5) match(construct={dispatch}) append_args(interop(target)) \
                                           adjust_args(need_device_ptr: x,y)
  void bar5();
! /* { dg-message "'append_args' with unprototyped base function" "" { target *-*-* } .-3 }  */
  
  
  void variant_fn6(omp_interop_t, omp_interop_t);
  #pragma omp declare variant(variant_fn6) match(construct={dispatch}) append_args(interop(target))
  void bar6();
! /* { dg-message "'append_args' with unprototyped base function" "" { target *-*-* } .-2 }  */
  
  
  void variant_fn7(int *, int, omp_interop_t, omp_interop_t);
  #pragma omp declare variant(variant_fn7) match(construct={dispatch}) append_args(interop(target))
  void bar7();
! /* { dg-message "'append_args' with unprototyped base function" "" { target *-*-* } .-2 }  */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/gomp/declare-variant-3.c gcc-16-20250831/gcc/testsuite/gcc.dg/gomp/declare-variant-3.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/gomp/declare-variant-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.dg/gomp/declare-variant-3.c	Sun Aug 31 22:32:31 2025
***************
*** 0 ****
--- 1,18 ----
+ /* PR118839: Check that error is diagnosed when the variant is the same as
+    the base function.  */
+ 
+ /* No previous declaration.  */
+ #pragma omp declare variant(f) match(user={condition(1)})  /* { dg-error "variant 'f' is the same as base function" } */
+ void f(int *x);
+ 
+ /* Previous declaration.  */
+ void g(int *x)
+ {
+   *x = 42;
+ }
+ 
+ #pragma omp declare variant(g) match(user={condition(1)})  /* { dg-error "variant 'g' is the same as base function" } */
+ void g(int *x);
+ 
+ 
+ 
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/gomp/pr121453.c gcc-16-20250831/gcc/testsuite/gcc.dg/gomp/pr121453.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/gomp/pr121453.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.dg/gomp/pr121453.c	Sun Aug 31 22:32:31 2025
***************
*** 0 ****
--- 1,18 ----
+ /* PR middle-end/121453 */
+ /* { dg-do compile } */
+ /* { dg-options "-fopenmp -O2 -Wuninitialized" } */
+ 
+ void bar (int, int, int);
+ int v[40][40][40];
+ 
+ void
+ foo (int x, int y, int z)
+ {
+   int i, j, k;
+ #pragma omp parallel for simd collapse(3)
+   for (k = 1; k <= z; ++k)
+     for (j = 2; j <= y - 1; ++j)
+       for (i = 1; i <= x; ++i)
+ 	v[i][j][k] = 0;
+   bar (i, j, k);
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/gomp/unprototyped-variant.c gcc-16-20250831/gcc/testsuite/gcc.dg/gomp/unprototyped-variant.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/gomp/unprototyped-variant.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.dg/gomp/unprototyped-variant.c	Sun Aug 31 22:32:31 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-additional-options "-std=gnu90" } */
+ 
+ /* This test case used to ICE in the gimplifier after issuing a 
+    different diagnostic message.  */
+ 
+ #if __cplusplus >= 201103L
+ # define __GOMP_UINTPTR_T_ENUM : __UINTPTR_TYPE__
+ #else
+ # define __GOMP_UINTPTR_T_ENUM
+ #endif
+ 
+ typedef enum omp_interop_t __GOMP_UINTPTR_T_ENUM
+ {
+   omp_interop_none = 0,
+   __omp_interop_t_max__ = __UINTPTR_MAX__
+ } omp_interop_t;
+ 
+ 
+ void g2();
+ #pragma omp declare variant(g2) match(construct={dispatch}) append_args(interop(target,targetsync))  /* { dg-message "'append_args' with unprototyped base function" } */
+ void f2();
+ 
+ void foo()
+ {
+   omp_interop_t obj6 = omp_interop_none;
+   const char *cp = 0L;
+ 
+   #pragma omp dispatch interop(obj6)
+      f2(5, cp);
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/pr94589-2.c gcc-16-20250831/gcc/testsuite/gcc.dg/pr94589-2.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/pr94589-2.c	Sun Aug 24 22:32:41 2025
--- gcc-16-20250831/gcc/testsuite/gcc.dg/pr94589-2.c	Sun Aug 31 22:32:32 2025
***************
*** 1,35 ****
  /* PR tree-optimization/94589 */
  /* { dg-do compile } */
  /* { dg-options "-O2 -g0 -ffast-math -fdump-tree-optimized" } */
! /* { dg-final { scan-tree-dump-times "\[ij]_\[0-9]+\\(D\\) (?:<|<=|==|!=|>|>=) \[ij]_\[0-9]+\\(D\\)" 14 "optimized" } } */
! /* { dg-final { scan-tree-dump-times "i_\[0-9]+\\(D\\) (?:<|<=|==|!=|>|>=) 5\\.0" 14 "optimized" } } */
  
  #define A __attribute__((noipa))
! A int f1 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c == 0; }
! A int f2 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c != 0; }
! A int f3 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c > 0; }
! A int f4 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c < 0; }
! A int f5 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c >= 0; }
! A int f6 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c <= 0; }
! A int f7 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c == -1; }
! A int f8 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c != -1; }
! A int f9 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c > -1; }
! A int f10 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c <= -1; }
! A int f11 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c == 1; }
! A int f12 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c != 1; }
! A int f13 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c < 1; }
! A int f14 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c >= 1; }
! A int f15 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c == 0; }
! A int f16 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c != 0; }
! A int f17 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c > 0; }
! A int f18 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c < 0; }
! A int f19 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c >= 0; }
! A int f20 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c <= 0; }
! A int f21 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c == -1; }
! A int f22 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c != -1; }
! A int f23 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c > -1; }
! A int f24 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c <= -1; }
! A int f25 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c == 1; }
! A int f26 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c != 1; }
! A int f27 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c < 1; }
! A int f28 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c >= 1; }
--- 1,63 ----
  /* PR tree-optimization/94589 */
  /* { dg-do compile } */
  /* { dg-options "-O2 -g0 -ffast-math -fdump-tree-optimized" } */
! /* { dg-final { scan-tree-dump-times "\[ij]_\[0-9]+\\(D\\) (?:<|<=|==|!=|>|>=) \[ij]_\[0-9]+\\(D\\)" 28 "optimized" } } */
! /* { dg-final { scan-tree-dump-times "i_\[0-9]+\\(D\\) (?:<|<=|==|!=|>|>=) 5\\.0" 28 "optimized" } } */
  
  #define A __attribute__((noipa))
! A int f1 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c == 0; }
! A int f2 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c != 0; }
! A int f3 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c > 0; }
! A int f4 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c < 0; }
! A int f5 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c >= 0; }
! A int f6 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c <= 0; }
! A int f7 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c == -1; }
! A int f8 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c != -1; }
! A int f9 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c > -1; }
! A int f10 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c <= -1; }
! A int f11 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c == 1; }
! A int f12 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c != 1; }
! A int f13 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c < 1; }
! A int f14 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c >= 1; }
! A int f15 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c == 0; }
! A int f16 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c != 0; }
! A int f17 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c > 0; }
! A int f18 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c < 0; }
! A int f19 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c >= 0; }
! A int f20 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c <= 0; }
! A int f21 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c == -1; }
! A int f22 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c != -1; }
! A int f23 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c > -1; }
! A int f24 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c <= -1; }
! A int f25 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c == 1; }
! A int f26 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c != 1; }
! A int f27 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c < 1; }
! A int f28 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c >= 1; }
! A int f29 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f == 0; }
! A signed char f30 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f != 0; }
! A signed char f31 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f < 0; }
! A signed char f32 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f > 0; }
! A signed char f33 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f <= 0; }
! A signed char f34 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f >= 0; }
! A signed char f35 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f == 1; }
! A signed char f36 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f != 1; }
! A signed char f37 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f < 1; }
! A signed char f38 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f >= 1; }
! A signed char f39 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f == -1; }
! A signed char f40 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f != -1; }
! A signed char f41 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f > -1; }
! A signed char f42 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f <= -1; }
! A signed char f43 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f == 0; }
! A signed char f44 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f != 0; }
! A signed char f45 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f < 0; }
! A signed char f46 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f > 0; }
! A signed char f47 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f <= 0; }
! A signed char f48 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f >= 0; }
! A signed char f49 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f == 1; }
! A signed char f50 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f != 1; }
! A signed char f51 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f < 1; }
! A signed char f52 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f >= 1; }
! A signed char f53 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f == -1; }
! A signed char f54 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f != -1; }
! A signed char f55 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f > -1; }
! A signed char f56 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f <= -1; }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/pr94589-4.c gcc-16-20250831/gcc/testsuite/gcc.dg/pr94589-4.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/pr94589-4.c	Sun Aug 24 22:32:41 2025
--- gcc-16-20250831/gcc/testsuite/gcc.dg/pr94589-4.c	Sun Aug 31 22:32:32 2025
*************** main ()
*** 93,97 ****
--- 93,181 ----
    D (f28, 4.0, 0);
    D (f28, 5.0, 0);
    D (f28, 6.0, 1);
+   C (f29, 7.0, 8.0, 0);
+   C (f29, 8.0, 8.0, 1);
+   C (f29, 9.0, 8.0, 0);
+   C (f30, 7.0, 8.0, 1);
+   C (f30, 8.0, 8.0, 0);
+   C (f30, 9.0, 8.0, 1);
+   C (f31, 7.0, 8.0, 0);
+   C (f31, 8.0, 8.0, 0);
+   C (f31, 9.0, 8.0, 1);
+   C (f32, 7.0, 8.0, 1);
+   C (f32, 8.0, 8.0, 0);
+   C (f32, 9.0, 8.0, 0);
+   C (f33, 7.0, 8.0, 0);
+   C (f33, 8.0, 8.0, 1);
+   C (f33, 9.0, 8.0, 1);
+   C (f34, 7.0, 8.0, 1);
+   C (f34, 8.0, 8.0, 1);
+   C (f34, 9.0, 8.0, 0);
+   C (f35, 7.0, 8.0, 1);
+   C (f35, 8.0, 8.0, 0);
+   C (f35, 9.0, 8.0, 0);
+   C (f36, 7.0, 8.0, 0);
+   C (f36, 8.0, 8.0, 1);
+   C (f36, 9.0, 8.0, 1);
+   C (f37, 7.0, 8.0, 0);
+   C (f37, 8.0, 8.0, 1);
+   C (f37, 9.0, 8.0, 1);
+   C (f38, 7.0, 8.0, 1);
+   C (f38, 8.0, 8.0, 0);
+   C (f38, 9.0, 8.0, 0);
+   C (f39, 7.0, 8.0, 0);
+   C (f39, 8.0, 8.0, 0);
+   C (f39, 9.0, 8.0, 1);
+   C (f40, 7.0, 8.0, 1);
+   C (f40, 8.0, 8.0, 1);
+   C (f40, 9.0, 8.0, 0);
+   C (f41, 7.0, 8.0, 1);
+   C (f41, 8.0, 8.0, 1);
+   C (f41, 9.0, 8.0, 0);
+   C (f42, 7.0, 8.0, 0);
+   C (f42, 8.0, 8.0, 0);
+   C (f42, 9.0, 8.0, 1);
+   D (f43, 4.0, 0);
+   D (f43, 5.0, 1);
+   D (f43, 6.0, 0);
+   D (f44, 4.0, 1);
+   D (f44, 5.0, 0);
+   D (f44, 6.0, 1);
+   D (f45, 4.0, 0);
+   D (f45, 5.0, 0);
+   D (f45, 6.0, 1);
+   D (f46, 4.0, 1);
+   D (f46, 5.0, 0);
+   D (f46, 6.0, 0);
+   D (f47, 4.0, 0);
+   D (f47, 5.0, 1);
+   D (f47, 6.0, 1);
+   D (f48, 4.0, 1);
+   D (f48, 5.0, 1);
+   D (f48, 6.0, 0);
+   D (f49, 4.0, 1);
+   D (f49, 5.0, 0);
+   D (f49, 6.0, 0);
+   D (f50, 4.0, 0);
+   D (f50, 5.0, 1);
+   D (f50, 6.0, 1);
+   D (f51, 4.0, 0);
+   D (f51, 5.0, 1);
+   D (f51, 6.0, 1);
+   D (f52, 4.0, 1);
+   D (f52, 5.0, 0);
+   D (f52, 6.0, 0);
+   D (f53, 4.0, 0);
+   D (f53, 5.0, 0);
+   D (f53, 6.0, 1);
+   D (f54, 4.0, 1);
+   D (f54, 5.0, 1);
+   D (f54, 6.0, 0);
+   D (f55, 4.0, 1);
+   D (f55, 5.0, 1);
+   D (f55, 6.0, 0);
+   D (f56, 4.0, 0);
+   D (f56, 5.0, 0);
+   D (f56, 6.0, 1);
    return 0;
  }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/pr94589-5.c gcc-16-20250831/gcc/testsuite/gcc.dg/pr94589-5.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/pr94589-5.c	Sun Aug 24 22:32:41 2025
--- gcc-16-20250831/gcc/testsuite/gcc.dg/pr94589-5.c	Sun Aug 31 22:32:32 2025
***************
*** 1,35 ****
  /* PR tree-optimization/94589 */
  /* { dg-do compile { target inf } } */
  /* { dg-options "-O2 -g0 -fdump-tree-optimized" } */
! /* { dg-final { scan-tree-dump-times "\[ij]_\[0-9]+\\(D\\) (?:<|<=|>|>=) \[ij]_\[0-9]+\\(D\\)" 14 "optimized" } } */
! /* { dg-final { scan-tree-dump-times "i_\[0-9]+\\(D\\) (?:<|<=|>|>=) 5\\.0" 14 "optimized" } } */
  
  #define A __attribute__((noipa))
! A int f3 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c > 0; }
! A int f4 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c < 0; }
! A int f5 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c >= 0; }
! A int f6 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c <= 0; }
! A int f7 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c == -1; }
! A int f8 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c != -1; }
! A int f9 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c > -1; }
! A int f10 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c <= -1; }
! A int f11 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c == 1; }
! A int f12 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c != 1; }
! A int f13 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c < 1; }
! A int f14 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c >= 1; }
! A int f17 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c > 0; }
! A int f18 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c < 0; }
! A int f19 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c >= 0; }
! A int f20 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c <= 0; }
! A int f21 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c == -1; }
! A int f22 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c != -1; }
! A int f23 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c > -1; }
! A int f24 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c <= -1; }
! A int f25 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c == 1; }
! A int f26 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c != 1; }
! A int f27 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c < 1; }
! A int f28 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c >= 1; }
! A int f29 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return (c & ~1) == 0; }
! A int f30 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return (c & ~1) != 0; }
! A int f31 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return (c & ~1) == 0; }
! A int f32 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return (c & ~1) != 0; }
--- 1,55 ----
  /* PR tree-optimization/94589 */
  /* { dg-do compile { target inf } } */
  /* { dg-options "-O2 -g0 -fdump-tree-optimized" } */
! /* { dg-final { scan-tree-dump-times "\[ij]_\[0-9]+\\(D\\) (?:<|<=|>|>=) \[ij]_\[0-9]+\\(D\\)" 24 "optimized" } } */
! /* { dg-final { scan-tree-dump-times "i_\[0-9]+\\(D\\) (?:<|<=|>|>=) 5\\.0" 24 "optimized" } } */
  
  #define A __attribute__((noipa))
! A int f3 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c > 0; }
! A int f4 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c < 0; }
! A int f5 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c >= 0; }
! A int f6 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c <= 0; }
! A int f7 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c == -1; }
! A int f8 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c != -1; }
! A int f9 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c > -1; }
! A int f10 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c <= -1; }
! A int f11 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c == 1; }
! A int f12 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c != 1; }
! A int f13 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c < 1; }
! A int f14 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c >= 1; }
! A int f17 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c > 0; }
! A int f18 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c < 0; }
! A int f19 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c >= 0; }
! A int f20 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c <= 0; }
! A int f21 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c == -1; }
! A int f22 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c != -1; }
! A int f23 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c > -1; }
! A int f24 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c <= -1; }
! A int f25 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c == 1; }
! A int f26 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c != 1; }
! A int f27 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c < 1; }
! A int f28 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c >= 1; }
! A signed char f31 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f < 0; }
! A signed char f32 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f > 0; }
! A signed char f33 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f <= 0; }
! A signed char f34 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f >= 0; }
! A signed char f35 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f == 1; }
! A signed char f36 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f != 1; }
! A signed char f37 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f < 1; }
! A signed char f38 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f >= 1; }
! A signed char f39 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f == -1; }
! A signed char f40 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f != -1; }
! A signed char f41 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f > -1; }
! A signed char f42 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f <= -1; }
! A signed char f45 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f < 0; }
! A signed char f46 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f > 0; }
! A signed char f47 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f <= 0; }
! A signed char f48 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f >= 0; }
! A signed char f49 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f == 1; }
! A signed char f50 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f != 1; }
! A signed char f51 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f < 1; }
! A signed char f52 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f >= 1; }
! A signed char f53 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f == -1; }
! A signed char f54 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f != -1; }
! A signed char f55 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f > -1; }
! A signed char f56 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f <= -1; }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/pr94589-6.c gcc-16-20250831/gcc/testsuite/gcc.dg/pr94589-6.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/pr94589-6.c	Sun Aug 24 22:32:41 2025
--- gcc-16-20250831/gcc/testsuite/gcc.dg/pr94589-6.c	Sun Aug 31 22:32:32 2025
***************
*** 3,15 ****
  
  #include "pr94589-5.c"
  
! A int f1 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c == 0; }
! A int f2 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = 2; return c != 0; }
! A int f15 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c == 0; }
! A int f16 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = 2; return c != 0; }
  
! #define C(fn, i, j, r) if (fn (i, j) != r) __builtin_abort ()
! #define D(fn, i, r) if (fn (i) != r) __builtin_abort ()
  
  int
  main ()
--- 3,21 ----
  
  #include "pr94589-5.c"
  
! A int f1 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c == 0; }
! A int f2 (double i, double j) { int c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; return c != 0; }
! A int f15 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c == 0; }
! A int f16 (double i) { int c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; return c != 0; }
! A int f29 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f == 0; }
! A int f30 (double i, double j) { signed char c; if (i == j) c = 0; else if (i < j) c = -1; else if (i > j) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f != 0; }
! A int f43 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f == 0; }
! A int f44 (double i) { signed char c; if (i == 5.0) c = 0; else if (i < 5.0) c = -1; else if (i > 5.0) c = 1; else c = -128; unsigned char d = c; unsigned char e = -d; signed char f = e; return f != 0; }
  
! //#define C(fn, i, j, r) if (fn (i, j) != r) __builtin_abort ()
! //#define D(fn, i, r) if (fn (i) != r) __builtin_abort ()
! #define C(fn, i, j, r) if (fn (i, j) != r) __builtin_printf ("%d\n", __LINE__)
! #define D(fn, i, r) if (fn (i) != r) __builtin_printf ("%d\n", __LINE__)
  
  int
  main ()
*************** main ()
*** 25,43 ****
    C (f3, 7.0, 8.0, 0);
    C (f3, 8.0, 8.0, 0);
    C (f3, 9.0, 8.0, 1);
!   C (f3, __builtin_nan (""), 8.0, 1);
    C (f4, 7.0, 8.0, 1);
    C (f4, 8.0, 8.0, 0);
    C (f4, 9.0, 8.0, 0);
!   C (f4, __builtin_nan (""), 8.0, 0);
    C (f5, 7.0, 8.0, 0);
    C (f5, 8.0, 8.0, 1);
    C (f5, 9.0, 8.0, 1);
!   C (f5, __builtin_nan (""), 8.0, 1);
    C (f6, 7.0, 8.0, 1);
    C (f6, 8.0, 8.0, 1);
    C (f6, 9.0, 8.0, 0);
!   C (f6, __builtin_nan (""), 8.0, 0);
    C (f7, 7.0, 8.0, 1);
    C (f7, 8.0, 8.0, 0);
    C (f7, 9.0, 8.0, 0);
--- 31,49 ----
    C (f3, 7.0, 8.0, 0);
    C (f3, 8.0, 8.0, 0);
    C (f3, 9.0, 8.0, 1);
!   C (f3, __builtin_nan (""), 8.0, 0);
    C (f4, 7.0, 8.0, 1);
    C (f4, 8.0, 8.0, 0);
    C (f4, 9.0, 8.0, 0);
!   C (f4, __builtin_nan (""), 8.0, 1);
    C (f5, 7.0, 8.0, 0);
    C (f5, 8.0, 8.0, 1);
    C (f5, 9.0, 8.0, 1);
!   C (f5, __builtin_nan (""), 8.0, 0);
    C (f6, 7.0, 8.0, 1);
    C (f6, 8.0, 8.0, 1);
    C (f6, 9.0, 8.0, 0);
!   C (f6, __builtin_nan (""), 8.0, 1);
    C (f7, 7.0, 8.0, 1);
    C (f7, 8.0, 8.0, 0);
    C (f7, 9.0, 8.0, 0);
*************** main ()
*** 49,59 ****
    C (f9, 7.0, 8.0, 0);
    C (f9, 8.0, 8.0, 1);
    C (f9, 9.0, 8.0, 1);
!   C (f9, __builtin_nan (""), 8.0, 1);
    C (f10, 7.0, 8.0, 1);
    C (f10, 8.0, 8.0, 0);
    C (f10, 9.0, 8.0, 0);
!   C (f10, __builtin_nan (""), 8.0, 0);
    C (f11, 7.0, 8.0, 0);
    C (f11, 8.0, 8.0, 0);
    C (f11, 9.0, 8.0, 1);
--- 55,65 ----
    C (f9, 7.0, 8.0, 0);
    C (f9, 8.0, 8.0, 1);
    C (f9, 9.0, 8.0, 1);
!   C (f9, __builtin_nan (""), 8.0, 0);
    C (f10, 7.0, 8.0, 1);
    C (f10, 8.0, 8.0, 0);
    C (f10, 9.0, 8.0, 0);
!   C (f10, __builtin_nan (""), 8.0, 1);
    C (f11, 7.0, 8.0, 0);
    C (f11, 8.0, 8.0, 0);
    C (f11, 9.0, 8.0, 1);
*************** main ()
*** 65,75 ****
    C (f13, 7.0, 8.0, 1);
    C (f13, 8.0, 8.0, 1);
    C (f13, 9.0, 8.0, 0);
!   C (f13, __builtin_nan (""), 8.0, 0);
    C (f14, 7.0, 8.0, 0);
    C (f14, 8.0, 8.0, 0);
    C (f14, 9.0, 8.0, 1);
!   C (f14, __builtin_nan (""), 8.0, 1);
    D (f15, 4.0, 0);
    D (f15, 5.0, 1);
    D (f15, 6.0, 0);
--- 71,81 ----
    C (f13, 7.0, 8.0, 1);
    C (f13, 8.0, 8.0, 1);
    C (f13, 9.0, 8.0, 0);
!   C (f13, __builtin_nan (""), 8.0, 1);
    C (f14, 7.0, 8.0, 0);
    C (f14, 8.0, 8.0, 0);
    C (f14, 9.0, 8.0, 1);
!   C (f14, __builtin_nan (""), 8.0, 0);
    D (f15, 4.0, 0);
    D (f15, 5.0, 1);
    D (f15, 6.0, 0);
*************** main ()
*** 81,99 ****
    D (f17, 4.0, 0);
    D (f17, 5.0, 0);
    D (f17, 6.0, 1);
!   D (f17, __builtin_nan (""), 1);
    D (f18, 4.0, 1);
    D (f18, 5.0, 0);
    D (f18, 6.0, 0);
!   D (f18, __builtin_nan (""), 0);
    D (f19, 4.0, 0);
    D (f19, 5.0, 1);
    D (f19, 6.0, 1);
!   D (f19, __builtin_nan (""), 1);
    D (f20, 4.0, 1);
    D (f20, 5.0, 1);
    D (f20, 6.0, 0);
!   D (f20, __builtin_nan (""), 0);
    D (f21, 4.0, 1);
    D (f21, 5.0, 0);
    D (f21, 6.0, 0);
--- 87,105 ----
    D (f17, 4.0, 0);
    D (f17, 5.0, 0);
    D (f17, 6.0, 1);
!   D (f17, __builtin_nan (""), 0);
    D (f18, 4.0, 1);
    D (f18, 5.0, 0);
    D (f18, 6.0, 0);
!   D (f18, __builtin_nan (""), 1);
    D (f19, 4.0, 0);
    D (f19, 5.0, 1);
    D (f19, 6.0, 1);
!   D (f19, __builtin_nan (""), 0);
    D (f20, 4.0, 1);
    D (f20, 5.0, 1);
    D (f20, 6.0, 0);
!   D (f20, __builtin_nan (""), 1);
    D (f21, 4.0, 1);
    D (f21, 5.0, 0);
    D (f21, 6.0, 0);
*************** main ()
*** 105,115 ****
    D (f23, 4.0, 0);
    D (f23, 5.0, 1);
    D (f23, 6.0, 1);
!   D (f23, __builtin_nan (""), 1);
    D (f24, 4.0, 1);
    D (f24, 5.0, 0);
    D (f24, 6.0, 0);
!   D (f24, __builtin_nan (""), 0);
    D (f25, 4.0, 0);
    D (f25, 5.0, 0);
    D (f25, 6.0, 1);
--- 111,121 ----
    D (f23, 4.0, 0);
    D (f23, 5.0, 1);
    D (f23, 6.0, 1);
!   D (f23, __builtin_nan (""), 0);
    D (f24, 4.0, 1);
    D (f24, 5.0, 0);
    D (f24, 6.0, 0);
!   D (f24, __builtin_nan (""), 1);
    D (f25, 4.0, 0);
    D (f25, 5.0, 0);
    D (f25, 6.0, 1);
*************** main ()
*** 121,146 ****
    D (f27, 4.0, 1);
    D (f27, 5.0, 1);
    D (f27, 6.0, 0);
!   D (f27, __builtin_nan (""), 0);
    D (f28, 4.0, 0);
    D (f28, 5.0, 0);
    D (f28, 6.0, 1);
!   D (f28, __builtin_nan (""), 1);
    C (f29, 7.0, 8.0, 0);
    C (f29, 8.0, 8.0, 1);
!   C (f29, 9.0, 8.0, 1);
    C (f29, __builtin_nan (""), 8.0, 0);
    C (f30, 7.0, 8.0, 1);
    C (f30, 8.0, 8.0, 0);
!   C (f30, 9.0, 8.0, 0);
    C (f30, __builtin_nan (""), 8.0, 1);
!   D (f31, 4.0, 0);
!   D (f31, 5.0, 1);
!   D (f31, 6.0, 1);
!   D (f31, __builtin_nan (""), 0);
!   D (f32, 4.0, 1);
!   D (f32, 5.0, 0);
!   D (f32, 6.0, 0);
!   D (f32, __builtin_nan (""), 1);
    return 0;
  }
--- 127,248 ----
    D (f27, 4.0, 1);
    D (f27, 5.0, 1);
    D (f27, 6.0, 0);
!   D (f27, __builtin_nan (""), 1);
    D (f28, 4.0, 0);
    D (f28, 5.0, 0);
    D (f28, 6.0, 1);
!   D (f28, __builtin_nan (""), 0);
    C (f29, 7.0, 8.0, 0);
    C (f29, 8.0, 8.0, 1);
!   C (f29, 9.0, 8.0, 0);
    C (f29, __builtin_nan (""), 8.0, 0);
    C (f30, 7.0, 8.0, 1);
    C (f30, 8.0, 8.0, 0);
!   C (f30, 9.0, 8.0, 1);
    C (f30, __builtin_nan (""), 8.0, 1);
!   C (f31, 7.0, 8.0, 0);
!   C (f31, 8.0, 8.0, 0);
!   C (f31, 9.0, 8.0, 1);
!   C (f31, __builtin_nan (""), 8.0, 1);
!   C (f32, 7.0, 8.0, 1);
!   C (f32, 8.0, 8.0, 0);
!   C (f32, 9.0, 8.0, 0);
!   C (f32, __builtin_nan (""), 8.0, 0);
!   C (f33, 7.0, 8.0, 0);
!   C (f33, 8.0, 8.0, 1);
!   C (f33, 9.0, 8.0, 1);
!   C (f33, __builtin_nan (""), 8.0, 1);
!   C (f34, 7.0, 8.0, 1);
!   C (f34, 8.0, 8.0, 1);
!   C (f34, 9.0, 8.0, 0);
!   C (f34, __builtin_nan (""), 8.0, 0);
!   C (f35, 7.0, 8.0, 1);
!   C (f35, 8.0, 8.0, 0);
!   C (f35, 9.0, 8.0, 0);
!   C (f35, __builtin_nan (""), 8.0, 0);
!   C (f36, 7.0, 8.0, 0);
!   C (f36, 8.0, 8.0, 1);
!   C (f36, 9.0, 8.0, 1);
!   C (f36, __builtin_nan (""), 8.0, 1);
!   C (f37, 7.0, 8.0, 0);
!   C (f37, 8.0, 8.0, 1);
!   C (f37, 9.0, 8.0, 1);
!   C (f37, __builtin_nan (""), 8.0, 1);
!   C (f38, 7.0, 8.0, 1);
!   C (f38, 8.0, 8.0, 0);
!   C (f38, 9.0, 8.0, 0);
!   C (f38, __builtin_nan (""), 8.0, 0);
!   C (f39, 7.0, 8.0, 0);
!   C (f39, 8.0, 8.0, 0);
!   C (f39, 9.0, 8.0, 1);
!   C (f39, __builtin_nan (""), 8.0, 0);
!   C (f40, 7.0, 8.0, 1);
!   C (f40, 8.0, 8.0, 1);
!   C (f40, 9.0, 8.0, 0);
!   C (f40, __builtin_nan (""), 8.0, 1);
!   C (f41, 7.0, 8.0, 1);
!   C (f41, 8.0, 8.0, 1);
!   C (f41, 9.0, 8.0, 0);
!   C (f41, __builtin_nan (""), 8.0, 0);
!   C (f42, 7.0, 8.0, 0);
!   C (f42, 8.0, 8.0, 0);
!   C (f42, 9.0, 8.0, 1);
!   C (f42, __builtin_nan (""), 8.0, 1);
!   D (f43, 4.0, 0);
!   D (f43, 5.0, 1);
!   D (f43, 6.0, 0);
!   D (f43, __builtin_nan (""), 0);
!   D (f44, 4.0, 1);
!   D (f44, 5.0, 0);
!   D (f44, 6.0, 1);
!   D (f44, __builtin_nan (""), 1);
!   D (f45, 4.0, 0);
!   D (f45, 5.0, 0);
!   D (f45, 6.0, 1);
!   D (f45, __builtin_nan (""), 1);
!   D (f46, 4.0, 1);
!   D (f46, 5.0, 0);
!   D (f46, 6.0, 0);
!   D (f46, __builtin_nan (""), 0);
!   D (f47, 4.0, 0);
!   D (f47, 5.0, 1);
!   D (f47, 6.0, 1);
!   D (f47, __builtin_nan (""), 1);
!   D (f48, 4.0, 1);
!   D (f48, 5.0, 1);
!   D (f48, 6.0, 0);
!   D (f48, __builtin_nan (""), 0);
!   D (f49, 4.0, 1);
!   D (f49, 5.0, 0);
!   D (f49, 6.0, 0);
!   D (f49, __builtin_nan (""), 0);
!   D (f50, 4.0, 0);
!   D (f50, 5.0, 1);
!   D (f50, 6.0, 1);
!   D (f50, __builtin_nan (""), 1);
!   D (f51, 4.0, 0);
!   D (f51, 5.0, 1);
!   D (f51, 6.0, 1);
!   D (f51, __builtin_nan (""), 1);
!   D (f52, 4.0, 1);
!   D (f52, 5.0, 0);
!   D (f52, 6.0, 0);
!   D (f52, __builtin_nan (""), 0);
!   D (f53, 4.0, 0);
!   D (f53, 5.0, 0);
!   D (f53, 6.0, 1);
!   D (f53, __builtin_nan (""), 0);
!   D (f54, 4.0, 1);
!   D (f54, 5.0, 1);
!   D (f54, 6.0, 0);
!   D (f54, __builtin_nan (""), 1);
!   D (f55, 4.0, 1);
!   D (f55, 5.0, 1);
!   D (f55, 6.0, 0);
!   D (f55, __builtin_nan (""), 0);
!   D (f56, 4.0, 0);
!   D (f56, 5.0, 0);
!   D (f56, 6.0, 1);
!   D (f56, __builtin_nan (""), 1);
    return 0;
  }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/torture/pr121279-1.c gcc-16-20250831/gcc/testsuite/gcc.dg/torture/pr121279-1.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/torture/pr121279-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.dg/torture/pr121279-1.c	Sun Aug 31 22:32:33 2025
***************
*** 0 ****
--- 1,49 ----
+ /* { dg-do run } */
+ /* PR tree-optimization/121279 */
+ 
+ #include <stdbool.h>
+ 
+ struct Value {
+     int type;
+     union {
+         bool boolean;
+         long long t;
+     };
+ };
+ 
+ static struct Value s_item_mem;
+ 
+ /* truthy was being miscompiled for the value.type==2 case,
+    because the bool load from the union is pulled out of the
+    loop but that was conditional before and now it is not,
+    so turns it into  `s_item_mem.type == 1 | bool` which is
+    not valid if `s_item_mem.type == 2` . */
+ static bool truthy(void) __attribute__((noipa));
+ static bool
+ truthy(void)
+ {
+     bool tt = false;
+     for(int i = 0; i < 10; i++)
+     {
+       if (s_item_mem.type == 0)
+         tt = tt | 0;
+       else if (s_item_mem.type == 1)
+         tt = tt | s_item_mem.boolean;
+       else
+         tt = tt |  1;
+     }
+     return tt;
+ }
+ 
+ int
+ main(void)
+ {
+     s_item_mem.type = 2;
+     s_item_mem.t = -1;
+     bool b1 = !truthy();
+     s_item_mem.type = 1;
+     s_item_mem.boolean = b1;
+     bool b = truthy();
+     if (b1 != b)  __builtin_abort();
+     if (b) __builtin_abort();
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/torture/pr121656.c gcc-16-20250831/gcc/testsuite/gcc.dg/torture/pr121656.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/torture/pr121656.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.dg/torture/pr121656.c	Sun Aug 31 22:32:33 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do run } */
+ 
+ /* This test fails to run at -O1 and above.  This is caused by
+ 
+    ebbeaf490c5 [PR rtl-optimization/120553] Improve selecting between constants based on sign bit test
+ 
+    and has been fixed by
+ 
+    56ca14c4c4f Fix invalid right shift count with recent ifcvt changes
+ 
+  */
+ 
+ __attribute__ ((noipa))
+ void
+ foo (int b)
+ {
+   if (b != 3)
+     __builtin_abort ();
+ }
+ 
+ int a;
+ int
+ main ()
+ {
+   int b = 0;
+   if (a >= 0)
+     b += 3;
+   foo (b);
+   return 0;
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/torture/pr121695-1.c gcc-16-20250831/gcc/testsuite/gcc.dg/torture/pr121695-1.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/torture/pr121695-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.dg/torture/pr121695-1.c	Sun Aug 31 22:32:33 2025
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* PR tree-optimization/121695 */
+ 
+ int ac;
+ char p;
+ int *r;
+ static unsigned t = 7;
+ int q() {
+   int v;
+ af: {
+   int ag[3];
+   int *ah = &ag[1];
+   for (; ac;) {
+     int ai = 3971866093;
+     if (0 >= *ah && (*r = 1))
+       *ah &= ai;
+     else {
+       if (p)
+         goto af;
+       *ah &= t;
+     }
+   }
+ }
+   return v;
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/vect/pr121638.c gcc-16-20250831/gcc/testsuite/gcc.dg/vect/pr121638.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/vect/pr121638.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.dg/vect/pr121638.c	Sun Aug 31 22:32:33 2025
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-additional-options "-fgimple -fno-tree-scev-cprop" } */
+ 
+ #include "tree-vect.h"
+ 
+ int a, b, f, j, i, *m, n, o, p = 1, q;
+ 
+ int __GIMPLE (ssa,guessed_local(1073741824),startwith("loop"))
+ main ()
+ {
+   int D_3005;
+   int D_3003;
+   int d;
+   int * e;
+   long unsigned int _9;
+   long unsigned int _10;
+   int * _11;
+   int _15;
+   int _32;
+ 
+   __BB(2,guessed_local(1073741824)):
+   check_vect ();
+   e_6 = __builtin_malloc (64ul);
+   goto __BB3(precise(134217728));
+ 
+   __BB(3,loop_header(2),guessed_local(8687547538)):
+   d_29 = __PHI (__BB3: d_8, __BB2: 0);
+   d_8 = d_29 + 1;
+   _9 = (long unsigned int) d_29;
+   _10 = _9 * 4ul;
+   _11 = e_6 + _10;
+   __MEM <int> (_11) = d_29;
+   if (d_8 <= 15)
+     goto __BB3(guessed(119453778));
+   else
+     goto __BB4(guessed(14763950));
+ 
+   __BB(4,guessed_local(955630224)):
+   if (d_8 != 16)
+     goto __BB9(guessed(58814510));
+   else
+     goto __BB5(guessed(75403218));
+ 
+   __BB(5,guessed_local(536870912)):
+   a = 0;
+   if (d_8 > 0)
+     goto __BB6(guessed(119453778));
+   else
+     goto __BB8(guessed(14763950));
+ 
+   __BB(6,loop_header(1),guessed_local(4343773769)):
+   _32 = __PHI (__BB6: _15, __BB5: 0);
+   _15 = _32 + 1;
+   if (d_29 > _32)
+     goto __BB6(guessed(119453778));
+   else
+     goto __BB7(guessed(14763950));
+ 
+   __BB(7,guessed_local(477815112)):
+   a = _15;
+   goto __BB8(precise(134217728));
+ 
+   __BB(8,guessed_local(1073741824)):
+   __builtin_free (e_6);
+   f = 0;
+   return 0;
+ 
+   __BB(9,precise(0)):
+   a = d_8;
+   f = 1;
+   __builtin_abort ();
+ 
+ }
+ 
+ 
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/vect/pr121659.c gcc-16-20250831/gcc/testsuite/gcc.dg/vect/pr121659.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/vect/pr121659.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.dg/vect/pr121659.c	Sun Aug 31 22:32:33 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ 
+ _Bool a;
+ void b(_Bool c[][3])
+ {
+   for (short d = 0; d < 100; d++)
+     for (int e = 1; e < 21; e += 4)
+       a ^= !c[1][1];
+   for (;;)
+     ;
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.dg/vect/pr121686.c gcc-16-20250831/gcc/testsuite/gcc.dg/vect/pr121686.c
*** gcc-16-20250824/gcc/testsuite/gcc.dg/vect/pr121686.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.dg/vect/pr121686.c	Sun Aug 31 22:32:33 2025
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-additional-options "-O3" } */
+ 
+ #include "tree-vect.h"
+ 
+ signed char a, b, c, f;
+ int d, e, g, h;
+ 
+ int main()
+ {
+   int j, k;
+   signed char m;
+   check_vect ();
+   while (f < 4) {
+     k = b = 3;
+     for (; b >= 0; b--) {
+       j = a < 0 ? a : a >> h;
+       g = k;
+       e = j;
+       k = 0;
+       while (1) {
+         if (j)
+           break;
+         k = f == 0;
+         break;
+       }
+     }
+     m = g * 87;
+     if (m < 70)
+       __builtin_abort();
+     return 0;
+   }
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/aarch64/pr121290.c gcc-16-20250831/gcc/testsuite/gcc.target/aarch64/pr121290.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/aarch64/pr121290.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/aarch64/pr121290.c	Sun Aug 31 22:32:34 2025
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O3 -mcpu=neoverse-v2 -fdump-tree-vect-all -std=c99" } */
+ 
+ void
+ f (int *restrict x, int *restrict y, int *restrict z, int n)
+ {
+   for (int i = 0; i < 4; ++i)
+     {
+       int res = 0;
+       for (int j = 0; j < 100; ++j)
+         res += y[j] * z[i];
+       x[i] = res;
+     }
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "OUTER LOOP VECTORIZED" "vect" } } */
+ /* { dg-final { scan-tree-dump "low throughput of per iteration due to splats" "vect" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/aarch64/pr66462.c gcc-16-20250831/gcc/testsuite/gcc.target/aarch64/pr66462.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/aarch64/pr66462.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/aarch64/pr66462.c	Sun Aug 31 22:32:34 2025
***************
*** 0 ****
--- 1,45 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -fsignaling-nans -fno-inline" } */
+ /* { dg-require-effective-target fenv_exceptions } */
+ 
+ #include <fenv.h>
+ 
+ static void t_inff (float x, bool res)
+ {
+   if (__builtin_isinff (x) != res)
+     __builtin_abort ();
+   if (__builtin_isinff (-x) != res)
+     __builtin_abort ();
+   if (fetestexcept (FE_INVALID))
+     __builtin_abort ();
+ }
+ 
+ static void t_inf (double x, bool res)
+ {
+   if (__builtin_isinf (x) != res)
+     __builtin_abort ();
+   if (__builtin_isinf (-x) != res)
+     __builtin_abort ();
+   if (fetestexcept (FE_INVALID))
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   feclearexcept (FE_INVALID);
+ 
+   t_inff (0.0f, 0);
+   t_inff (1.0f, 0);
+   t_inff (__builtin_inff (), 1);
+   t_inff (__builtin_nansf (""), 0);
+   t_inff (__builtin_nanf (""), 0);
+ 
+   t_inf (0.0, 0);
+   t_inf (1.0, 0);
+   t_inf (__builtin_inf (), 1);
+   t_inf (__builtin_nans (""), 0);
+   t_inf (__builtin_nan (""), 0);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/aarch64/vld2-1.c gcc-16-20250831/gcc/testsuite/gcc.target/aarch64/vld2-1.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/aarch64/vld2-1.c	Sun Aug 24 22:32:43 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/aarch64/vld2-1.c	Sun Aug 31 22:32:50 2025
*************** void func3(float32x2x2_t *p, const float
*** 42,45 ****
      *p = vld2_lane_f32(p2, v, 1);
  }
  
! /* { dg-final { scan-tree-dump-times "after previous" 3 "forwprop1" } } */
--- 42,46 ----
      *p = vld2_lane_f32(p2, v, 1);
  }
  
! /* 2 copy props for each function  */
! /* { dg-final { scan-tree-dump-times "after previous" 6 "forwprop1" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/arm/bics_3.c gcc-16-20250831/gcc/testsuite/gcc.target/arm/bics_3.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/arm/bics_3.c	Sun Aug 24 22:32:44 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/arm/bics_3.c	Sun Aug 31 22:32:53 2025
***************
*** 2,12 ****
  /* { dg-options "-O2 --save-temps -fno-inline" } */
  /* { dg-require-effective-target arm32 } */
  
  int
  bics_si_test (int a, int b)
  {
    if ((a & ~b) >= 0)
!     return 3;
    else
      return 0;
  }
--- 2,15 ----
  /* { dg-options "-O2 --save-temps -fno-inline" } */
  /* { dg-require-effective-target arm32 } */
  
+ volatile int three = 3;
+ 
+ /* The following need a BICS, rather than BIC+CMP.  */
  int
  bics_si_test (int a, int b)
  {
    if ((a & ~b) >= 0)
!     return three;
    else
      return 0;
  }
*************** int
*** 15,20 ****
--- 18,42 ----
  bics_si_test2 (int a, int b)
  {
    if ((a & ~ (b << 2)) >= 0)
+     return three;
+   else
+     return 0;
+ }
+ 
+ /* The following no-longer need a BICS and conditional execution.  */
+ int
+ bics_si_test3 (int a, int b)
+ {
+   if ((a & ~b) >= 0)
+     return 3;
+   else
+     return 0;
+ }
+ 
+ int
+ bics_si_test4 (int a, int b)
+ {
+   if ((a & ~ (b << 2)) >= 0)
      return 3;
    else
      return 0;
*************** main (void)
*** 30,37 ****
--- 52,66 ----
      __builtin_abort ();
    if (bics_si_test2 (c, b) != 3)
      __builtin_abort ();
+   if (bics_si_test3 (a, b) != 3)
+     __builtin_abort ();
+   if (bics_si_test4 (c, b) != 3)
+     __builtin_abort ();
    return 0;
  }
  
  /* { dg-final { scan-assembler-times "bics\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+" 2 } } */
  /* { dg-final { scan-assembler-times "bics\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+, .sl #2" 1 } } */
+ /* { dg-final { scan-assembler-times "bic\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+" 2 } } */
+ /* { dg-final { scan-assembler-times "bic\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+, .sl #2" 1 } } */
+ /* { dg-final { scan-assembler-not "cmp\tr\[0-9]+, #0" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/arm/unsigned-extend-2.c gcc-16-20250831/gcc/testsuite/gcc.target/arm/unsigned-extend-2.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/arm/unsigned-extend-2.c	Sun Aug 24 22:32:45 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/arm/unsigned-extend-2.c	Sun Aug 31 22:32:53 2025
***************
*** 1,26 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target arm_thumb2_ok } */
! /* { dg-options "-O2 -mthumb" } */
  /* { dg-final { check-function-bodies "**" "" } } */
  
  /*
  ** foo:
- ** 	movs	(r[0-9]+), #8
  ** (
! ** 	subs	\1, \1, #1
! ** 	ands	\1, \1, #255
  ** 	and	r0, r1, r0, lsr #1
- ** 	bne	.L[0-9]+
- ** 	bx	lr
- ** |
  ** 	subs	\1, \1, #1
- ** 	and	r0, r1, r0, lsr #1
  ** 	ands	\1, \1, #255
  ** 	bne	.L[0-9]+
  ** 	bx	lr
  ** |
  ** 	push	{lr}
! ** 	dls	lr, \1
  ** 	and	r0, r1, r0, lsr #1
  ** 	le	lr, .L[0-9]+
  ** 	pop	{pc}
--- 1,21 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target arm_thumb2_ok } */
! /* { dg-options "-O2 -mthumb  -fno-schedule-insns -fno-schedule-insns2" } */
  /* { dg-final { check-function-bodies "**" "" } } */
  
  /*
  ** foo:
  ** (
! ** 	movs	(r[0-9]+), #8
  ** 	and	r0, r1, r0, lsr #1
  ** 	subs	\1, \1, #1
  ** 	ands	\1, \1, #255
  ** 	bne	.L[0-9]+
  ** 	bx	lr
  ** |
  ** 	push	{lr}
! ** 	movs	(r[0-9]+), #8
! ** 	dls	lr, \2
  ** 	and	r0, r1, r0, lsr #1
  ** 	le	lr, .L[0-9]+
  ** 	pop	{pc}
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/memcpy-strategy-14.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/memcpy-strategy-14.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/memcpy-strategy-14.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/memcpy-strategy-14.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -mno-avx -msse2 -mtune=generic -minline-all-stringops -mstringop-strategy=vector_loop" } */
+ /* { dg-final { scan-assembler-times "movaps" 8 } } */
+ 
+ char a[2048];
+ char b[2048];
+ void t (void)
+ {
+   __builtin_memcpy (a, b, 2048);
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/memcpy-strategy-15.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/memcpy-strategy-15.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/memcpy-strategy-15.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/memcpy-strategy-15.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -mno-avx -msse2 -mtune=generic -minline-all-stringops -mstringop-strategy=vector_loop" } */
+ /* { dg-final { scan-assembler-times "movups" 8 } } */
+ 
+ char *a;
+ char *b;
+ void t (void)
+ {
+   __builtin_memcpy (a, b, 2048);
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-10.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-10.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-10.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-10.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -march=x86-64 -mstringop-strategy=vector_loop" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
+ 
+ /*
+ **foo:
+ **.LFB[0-9]+:
+ **	.cfi_startproc
+ **	xorps	%xmm0, %xmm0
+ **	xorl	%eax, %eax
+ **	movq	%rax, 48\(%(e|r)di\)
+ **	movups	%xmm0, \(%(e|r)di\)
+ **	movups	%xmm0, 16\(%(e|r)di\)
+ **	movups	%xmm0, 32\(%(e|r)di\)
+ **	ret
+ **...
+ */
+ 
+ void
+ foo (char *a)
+ {
+   __builtin_memset (a, 0, 56);
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-11.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-11.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-11.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-11.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -mno-avx -msse2 -mtune=generic -minline-all-stringops -mstringop-strategy=vector_loop" } */
+ /* { dg-final { scan-assembler-times "movaps" 4 } } */
+ 
+ char a[2048];
+ void t (void)
+ {
+   __builtin_memset (a, 0, 2048);
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-12.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-12.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-12.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-12.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -mno-sse -mstringop-strategy=vector_loop" } */
+ 
+ void
+ foo (char *a)
+ {
+   __builtin_memset (a, 0, 56);
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-13.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-13.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-13.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-13.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -mno-sse -mstringop-strategy=unrolled_loop" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
+ 
+ /*
+ **foo:
+ **.LFB[0-9]+:
+ **	.cfi_startproc
+ **	xorl	%eax, %eax
+ **	movq	%rax, \(%(e|r)di\)
+ **	movq	%rax, 8\(%(e|r)di\)
+ **	movq	%rax, 16\(%(e|r)di\)
+ **	movq	%rax, 24\(%(e|r)di\)
+ **	movq	%rax, 32\(%(e|r)di\)
+ **	movq	%rax, 40\(%(e|r)di\)
+ **	movq	%rax, 48\(%(e|r)di\)
+ **	ret
+ **...
+ */
+ 
+ void
+ foo (char *a)
+ {
+   __builtin_memset (a, 0, 56);
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-14.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-14.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-14.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-14.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -march=x86-64 -mstringop-strategy=vector_loop" } */
+ 
+ void
+ foo (char *a, int c)
+ {
+   __builtin_memset (a, c, 56);
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-15.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-15.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-15.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-15.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -mno-avx -msse2 -mtune=generic -mstringop-strategy=vector_loop" } */
+ /* { dg-final { scan-assembler-times "movups" 4} } */
+ 
+ char *a;
+ void t (void)
+ {
+   __builtin_memset (a, 0, 2048);
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-16.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/memset-strategy-16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/memset-strategy-16.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mstringop-strategy=rep_4byte" } */
+ 
+ extern unsigned x[];
+ void 
+ foo (void)
+ {
+   __builtin_memset(x, 0, 847);
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121658.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121658.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121658.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121658.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,11 ----
+ /* PR target/121658 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx512f -mgfni" } */
+ 
+ __attribute__((__vector_size__(64))) unsigned char v;
+ 
+ void
+ foo (void)
+ {
+   v = (v << 7) | (v >> 1);
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121668-1a.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121668-1a.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121668-1a.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121668-1a.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile { target *-*-linux* } } */
+ /* { dg-options "-Og -g -fpic -fplt -mtls-dialect=gnu" } */
+ 
+ typedef int caml_domain_state;
+ thread_local caml_domain_state caml_state;
+ void
+ caml_empty_mark_stack ()
+ {
+   while (caml_state)
+     caml_state = 0;
+ }
+ 
+ /* { dg-final { scan-assembler-times "call\[ \t\]__tls_get_addr@PLT" 1 { target { ! ia32 } } } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121668-1b.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121668-1b.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121668-1b.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121668-1b.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile { target *-*-linux* } } */
+ /* { dg-options "-Og -g -fpic -fplt -mtls-dialect=gnu2" } */
+ 
+ #include "pr121668-1a.c"
+ 
+ /* { dg-final { scan-assembler-times "call\[ \t\]\\*caml_state@TLSCALL\\(%(?:r|e)ax\\)" 1 { target { ! ia32 } } } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121694-1a.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121694-1a.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121694-1a.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121694-1a.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile { target *-*-linux* } } */
+ /* { dg-options "-Og -fpic -fplt -mtls-dialect=gnu" } */
+ 
+ extern void func1 (long *);
+ extern int func2 (void);
+ extern void func3 (void);
+ static __thread long foo;
+ static __thread long bar;
+ long
+ func (void)
+ {
+   func1 (&foo);
+   func1 (&bar);
+   if (func2 ())
+     func3 ();
+   return foo + bar;
+ }
+ 
+ /* { dg-final { scan-assembler-times "call\[ \t\]__tls_get_addr@PLT" 1 { target { ! ia32 } } } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121694-1b.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121694-1b.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121694-1b.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121694-1b.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile { target *-*-linux* } } */
+ /* { dg-options "-Og -fpic -fplt -mtls-dialect=gnu2" } */
+ 
+ #include "pr121694-1a.c"
+ 
+ /* { dg-final { scan-assembler-times "call\[ \t\]\\*_TLS_MODULE_BASE_@TLSCALL\\(%(?:r|e)ax\\)" 1 { target { ! ia32 } } } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121725-1a.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121725-1a.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121725-1a.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121725-1a.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-do compile { target *-*-linux* } } */
+ /* { dg-options "-O3 -fpic -fplt -mtls-dialect=gnu" } */
+ 
+ typedef enum
+ {
+   bfd_error_invalid_error_code
+ } bfd_error_type;
+ static thread_local bfd_error_type bfd_error;
+ extern int sections;
+ extern void *bfd_alloc_ret;
+ extern int bfd_alloc___o;
+ extern long bfd_alloc_size;
+ 
+ extern void _objalloc_alloc (int *, long);
+ 
+ bfd_error_type
+ bfd_get_error ()
+ {
+   return bfd_error;
+ }
+ 
+ bool
+ s7_bfd_score_elf_late_size_sections ()
+ {
+   for (; sections;)
+     {
+       if (bfd_alloc_size)
+         {
+           bfd_error_type error_tag;
+           bfd_error = error_tag;
+         }
+       _objalloc_alloc (&bfd_alloc___o, 0);
+       if (bfd_alloc_ret)
+         {
+           bfd_error_type error_tag;
+           bfd_error = error_tag;
+         }
+     }
+ }
+ 
+ /* { dg-final { scan-assembler-times "call\[ \t\]__tls_get_addr@PLT" 2 { target { ! ia32 } } } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121725-1b.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121725-1b.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr121725-1b.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr121725-1b.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile { target *-*-linux* } } */
+ /* { dg-options "-O3 -fpic -fplt -mtls-dialect=gnu2" } */
+ 
+ #include "pr121725-1a.c"
+ 
+ /* { dg-final { scan-assembler-times "call\[ \t\]\\*bfd_error@TLSCALL\\(%(?:r|e)ax\\)" 2 { target { ! ia32 } } } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr44130.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr44130.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/pr44130.c	Sun Aug 24 22:32:51 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/pr44130.c	Sun Aug 31 22:32:56 2025
*************** void testf (void)
*** 21,26 ****
--- 21,28 ----
    xxxxx[5] = __builtin_copysignf (-0.0, Yf[5]);
    xxxxx[6] = __builtin_copysignf (__builtin_inff (), Yf[6]);
    xxxxx[7] = __builtin_copysignf (-__builtin_nanf (""), Yf[7]);
+ 
+   asm("":"=m"(xxxxx));
    for (i = 0; i < 8; ++i)
      if (__builtin_memcmp (xxxxx+i, Zf+i, sizeof(float)) != 0)
        abort ();
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-1.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-1.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-1.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,64 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mgfni -mavx512vl -mavx512bw -mavx512f -O3" } */
+ /* { dg-final { scan-assembler-times "vgf2p8affineqb" 14 } } */
+ 
+ #ifndef N
+ #define N 5
+ #endif
+ 
+ void
+ ubyteshiftl (unsigned char *a, int len)
+ {
+   int i;
+   for (i = 0; i < len; i++)
+     a[i] <<= N;
+ }
+ 
+ void
+ ubyteshiftr (unsigned char *a, int len)
+ {
+   int i;
+   for (i = 0; i < len; i++)
+     a[i] >>= N;
+ }
+ 
+ void
+ ubyteshiftl_mask (unsigned char *a, int len)
+ {
+   int i;
+   for (i = 0; i < len; i++)
+     if (a[i] & 1)
+       a[i] <<= N;
+ }
+ 
+ void
+ sbyteshiftl (signed char *a, int len)
+ {
+   int i;
+   for (i = 0; i < len; i++)
+     a[i] <<= N;
+ }
+ 
+ void
+ sbyteshiftr (signed char *a, int len)
+ {
+   int i;
+   for (i = 0; i < len; i++)
+     a[i] >>= N;
+ }
+ 
+ void
+ ubyteror (unsigned char *a, int len)
+ {
+   int i;
+   for (i = 0; i < len; i++)
+     a[i] = a[i] << N | a[i] >> (8 - N);
+ }
+ 
+ void
+ ubyterol (unsigned char *a, int len)
+ {
+   int i;
+   for (i = 0; i < len; i++)
+     a[i] = a[i] >> N | a[i] << (8 - N);
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-2.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-2.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-2.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,196 ----
+ /* { dg-do run } */
+ /* { dg-options "-mgfni -mavx512vl -mavx512bw -mavx512f -O3 -Wno-shift-count-negative" } */
+ 
+ #include <string.h>
+ 
+ #ifndef N1
+ #define N1 5
+ #endif
+ 
+ #ifndef N2
+ #define N2 3
+ #endif
+ 
+ #ifndef N3
+ #define N3 1
+ #endif
+ 
+ #ifndef N4
+ #define N4 7
+ #endif
+ 
+ #ifndef N5
+ #define N5 -3
+ #endif
+ 
+ #ifndef FILLER
+ #define FILLER 0xab
+ #endif
+ 
+ #define FUNC(N)							\
+   void ubyteshiftl##N(unsigned char *a, int len)		\
+   {								\
+     int i;							\
+     for (i = 0; i < len; i++)					\
+       a[i] <<= N;						\
+   }								\
+ 								\
+   void ubyteshiftr##N(unsigned char *a, int len)		\
+   {								\
+     int i;							\
+     for (i = 0; i < len; i++)					\
+       a[i] >>= N;						\
+   }								\
+ 								\
+   void ubyteshiftl_mask##N(unsigned char *a, int len)		\
+   {								\
+     int i;							\
+     for (i = 0; i < len; i++)					\
+       if (a[i] & 1)						\
+ 	a[i] <<= N;						\
+   }								\
+ 								\
+   void sbyteshiftl##N(signed char *a, int len)			\
+   {								\
+     int i;							\
+     for (i = 0; i < len; i++)					\
+       a[i] <<= N;						\
+   }								\
+ 								\
+   void sbyteshiftr##N(signed char *a, int len)			\
+   {								\
+     int i;							\
+     for (i = 0; i < len; i++)					\
+       a[i] >>= N;						\
+   }								\
+ 								\
+   void ubyteror##N(unsigned char *a, int len)			\
+   {								\
+     int i;							\
+     for (i = 0; i < len; i++)					\
+       a[i] = a[i] << N | a[i] >> (8-N);				\
+   }								\
+ 								\
+   void ubyterol##N(unsigned char *a, int len)			\
+   {								\
+     int i;							\
+     for (i = 0; i < len; i++)					\
+       a[i] = a[i] >> N | a[i] << (8-N);				\
+   }								\
+   void ubyteshiftl##N##ref(unsigned char *a, int len)		\
+   {								\
+     int i;							\
+     _Pragma("GCC novector")					\
+       for (i = 0; i < len; i++)					\
+ 	a[i] <<= N;						\
+   }								\
+ 								\
+   void ubyteshiftr##N##ref(unsigned char *a, int len)		\
+   {								\
+     int i;							\
+     _Pragma("GCC novector")					\
+       for (i = 0; i < len; i++)					\
+ 	a[i] >>= N;						\
+   }								\
+ 								\
+   void ubyteshiftl_mask##N##ref(unsigned char *a, int len)	\
+   {								\
+     int i;							\
+     _Pragma("GCC novector")					\
+       for (i = 0; i < len; i++)					\
+ 	if (a[i] & 1)						\
+ 	  a[i] <<= N;						\
+   }								\
+ 								\
+   void sbyteshiftl##N##ref(signed char *a, int len)		\
+   {								\
+     int i;							\
+     _Pragma("GCC novector")					\
+       for (i = 0; i < len; i++)					\
+ 	a[i] <<= N;						\
+   }								\
+ 								\
+   void sbyteshiftr##N##ref(signed char *a, int len)		\
+   {								\
+     int i;							\
+     _Pragma("GCC novector")					\
+       for (i = 0; i < len; i++)					\
+ 	a[i] >>= N;						\
+   }								\
+ 								\
+   void ubyteror##N##ref(unsigned char *a, int len)		\
+   {								\
+     int i;							\
+     _Pragma("GCC novector")					\
+       for (i = 0; i < len; i++)					\
+ 	a[i] = a[i] << N | a[i] >> (8-N);			\
+   }								\
+ 								\
+   void ubyterol##N##ref(unsigned char *a, int len)		\
+   {								\
+     int i;							\
+     _Pragma("GCC novector")					\
+       for (i = 0; i < len; i++)					\
+ 	a[i] = a[i] >> N | a[i] << (8-N);			\
+   }
+ 
+ FUNC (N1)
+ FUNC (N2)
+ FUNC (N3)
+ FUNC (N4)
+ FUNC (N5)
+ 
+ #define TEST(N, func)					\
+   memset (array, filler, len);				\
+   func##N (array, len);					\
+   memset (array2, filler, len);				\
+   func##N##ref (array2, len);				\
+   if (memcmp (array, array2, len)) __builtin_abort ()
+ 
+ int main ()
+ {
+   __builtin_cpu_init ();
+   if (!__builtin_cpu_supports ("gfni"))
+     return 0;
+ 
+   const unsigned long len = 256;
+   char array[len], array2[len];
+   unsigned char filler = FILLER;
+ 
+   TEST (N1, ubyteshiftl);
+   TEST (N1, ubyteshiftl_mask);
+   TEST (N1, sbyteshiftl);
+   TEST (N1, sbyteshiftr);
+   TEST (N1, ubyteror);
+   TEST (N1, ubyterol);
+ 
+   TEST (N2, ubyteshiftl);
+   TEST (N2, ubyteshiftl_mask);
+   TEST (N2, sbyteshiftl);
+   TEST (N2, sbyteshiftr);
+   TEST (N2, ubyteror);
+   TEST (N2, ubyterol);
+ 
+   TEST (N3, ubyteshiftl);
+   TEST (N3, ubyteshiftl_mask);
+   TEST (N3, sbyteshiftl);
+   TEST (N3, sbyteshiftr);
+   TEST (N3, ubyteror);
+   TEST (N3, ubyterol);
+ 
+   TEST (N4, ubyteshiftl);
+   TEST (N4, ubyteshiftl_mask);
+   TEST (N4, sbyteshiftl);
+   TEST (N4, sbyteshiftr);
+   TEST (N4, ubyteror);
+   TEST (N4, ubyterol);
+ 
+   TEST (N5, ubyteshiftl);
+   TEST (N5, ubyteshiftl_mask);
+   TEST (N5, sbyteshiftl);
+   TEST (N5, sbyteshiftr);
+   TEST (N5, ubyteror);
+   TEST (N5, ubyterol);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-3.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-3.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-3.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,85 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mgfni -mavx512bw -mavx512f -O3" } */
+ /* { dg-final { scan-assembler-times "vgf2p8affineqb" 12 } } */
+ 
+ /* Based on a test case from Andrew Pinski */
+ 
+ #ifndef N
+ #define N 5
+ #endif
+ 
+ void
+ ubyteshiftl (unsigned char *restrict a, unsigned char *restrict b, unsigned char *restrict c, int len)
+ {
+   int i;
+   for (i = 0; i < len; i++)
+     {
+       a[i] = c[i] ? (a[i] | b[i]) << N : a[i];
+       a[i] = (!c[i]) ? (a[i] ^ b[i]) << N : a[i];
+     }
+ }
+ 
+ void
+ ubyteshiftr (unsigned char *restrict a, unsigned char *restrict b, unsigned char *restrict c, int len)
+ {
+   int i;
+   for (i = 0; i < len; i++)
+     {
+       a[i] = c[i] ? (a[i] | b[i]) >> N : a[i];
+       a[i] = (!c[i]) ? (a[i] ^ b[i]) >> N : a[i];
+     }
+ }
+ 
+ void
+ sbyteshiftl (signed char *restrict a, signed char *restrict b, signed char *restrict c, int len)
+ {
+   int i;
+   for (i = 0; i < len; i++)
+     {
+       a[i] = c[i] ? (a[i] | b[i]) << N : a[i];
+       a[i] = (!c[i]) ? (a[i] ^ b[i]) << N : a[i];
+     }
+ }
+ 
+ void
+ sbyteshiftr (signed char *restrict a, signed char *restrict b, signed char *restrict c, int len)
+ {
+   int i;
+   for (i = 0; i < len; i++)
+     {
+       a[i] = c[i] ? (a[i] | b[i]) >> N : a[i];
+       a[i] = (!c[i]) ? (a[i] ^ b[i]) >> N : a[i];
+     }
+ }
+ 
+ static inline unsigned char rol8(unsigned char v, int c)
+ {
+   return (v >> c) | (v << (8-c));
+ }
+ 
+ static inline unsigned char ror8(unsigned char v, int c)
+ {
+   return (v << c) | (v >> (8-c));
+ }
+ 
+ void
+ ubyterol (unsigned char *restrict a, unsigned char *restrict b, unsigned char *restrict c, int len)
+ {
+   int i;
+   for (i = 0; i < len; i++)
+     {
+       a[i] = c[i] ? rol8(a[i] | b[i], N) : a[i];
+       a[i] = (!c[i]) ? rol8(a[i] ^ b[i], N) : a[i];
+     }
+ }
+ 
+ void
+ ubyteror (unsigned char *restrict a, unsigned char *restrict b, unsigned char *restrict c, int len)
+ {
+   int i;
+   for (i = 0; i < len; i++)
+     {
+       a[i] = c[i] ? ror8(a[i] | b[i], N) : a[i];
+       a[i] = (!c[i]) ? ror8(a[i] ^ b[i], N) : a[i];
+     }
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-5.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-5.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-5.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mgfni -mavx -O3 -Wno-shift-count-negative" } */
+ /* { dg-final { scan-assembler-times "vgf2p8affineqb" 31 } } */
+ 
+ #include "shift-gf2p8affine-2.c"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-6.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-6.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-6.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-6.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mgfni -O3 -Wno-shift-count-negative" } */
+ /* { dg-final { scan-assembler-times "vgf2p8affineqb" 0 } } */
+ 
+ #include "shift-gf2p8affine-2.c"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-7.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-7.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-7.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-7.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mgfni -mavx512vl -mavx512bw -mavx512f -O3 -Wno-shift-count-negative" } */
+ /* { dg-final { scan-assembler-times "vgf2p8affineqb" 53 } } */
+ 
+ #include "shift-gf2p8affine-2.c"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-v16qi-4.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-v16qi-4.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/shift-v16qi-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/shift-v16qi-4.c	Sun Aug 31 22:32:56 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mgfni -mavx512vl -mavx512bw -mavx512f -O2" } */
+ /* { dg-final { scan-assembler-times "vpcmpgtb" 1 } } */
+ 
+ typedef char v16qi __attribute__((vector_size(16)));
+ 
+ v16qi
+ foo (v16qi a)
+ {
+   return a >> 7;
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect-pragma-target-1.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect-pragma-target-1.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect-pragma-target-1.c	Sun Aug 24 22:32:59 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect-pragma-target-1.c	Sun Aug 31 22:32:56 2025
***************
*** 1,5 ****
  /* { dg-do compile { target { i?86-*-* x86_64-*-* } } }                 */
! /* { dg-options "-O0" }                                                 */
  /* { dg-final { scan-assembler-times "paddd.+xmm\[0-9]+"        1 } }   */
  /* { dg-final { scan-assembler-times "vfmadd132ps.+ymm\[0-9]+"  1 } }   */
  /* { dg-final { scan-assembler-times "vpaddw.+zmm\[0-9]+"       1 } }   */
--- 1,5 ----
  /* { dg-do compile { target { i?86-*-* x86_64-*-* } } }                 */
! /* { dg-options "-O0 -mno-sse3 -mtune=generic" }                        */
  /* { dg-final { scan-assembler-times "paddd.+xmm\[0-9]+"        1 } }   */
  /* { dg-final { scan-assembler-times "vfmadd132ps.+ymm\[0-9]+"  1 } }   */
  /* { dg-final { scan-assembler-times "vpaddw.+zmm\[0-9]+"       1 } }   */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect-pragma-target-2.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect-pragma-target-2.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect-pragma-target-2.c	Sun Aug 24 22:32:59 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect-pragma-target-2.c	Sun Aug 31 22:32:56 2025
***************
*** 1,5 ****
  /* { dg-do compile { target { i?86-*-* x86_64-*-* } } }                 */
! /* { dg-options "-O0" }                                                 */
  /* { dg-final { scan-assembler-times "paddd.+xmm\[0-9]+"        1 } }   */
  /* { dg-final { scan-assembler-times "vfmadd132ps.+ymm\[0-9]+"  1 } }   */
  /* { dg-final { scan-assembler-times "vpaddw.+zmm\[0-9]+"       1 } }   */
--- 1,5 ----
  /* { dg-do compile { target { i?86-*-* x86_64-*-* } } }                 */
! /* { dg-options "-O0 -mno-sse3 -mtune=generic" }                        */
  /* { dg-final { scan-assembler-times "paddd.+xmm\[0-9]+"        1 } }   */
  /* { dg-final { scan-assembler-times "vfmadd132ps.+ymm\[0-9]+"  1 } }   */
  /* { dg-final { scan-assembler-times "vpaddw.+zmm\[0-9]+"       1 } }   */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect_unroll-1.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect_unroll-1.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect_unroll-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect_unroll-1.c	Sun Aug 31 22:32:57 2025
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=x86-64-v3 -Ofast" } */
+ /* { dg-final { scan-assembler-times {(?n)vfmadd[1-3]*ps[^\n]*ymm} 4 } } */
+ 
+ float
+ foo (float* a, float* b, int n)
+ {
+   float sum = 0;
+   for (int i = 0; i != n; i++)
+     sum += a[i] * b[i];
+   return sum;
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect_unroll-2.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect_unroll-2.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect_unroll-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect_unroll-2.c	Sun Aug 31 22:32:57 2025
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=x86-64-v3 -Ofast" } */
+ /* { dg-final { scan-assembler-times {(?n)vfnmadd[1-3]*ps[^\n]*ymm} 4 } } */
+ 
+ float
+ foo (float* a, float* b, int n)
+ {
+   float sum = 0;
+   for (int i = 0; i != n; i++)
+     sum -= a[i] * b[i];
+   return sum;
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect_unroll-3.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect_unroll-3.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect_unroll-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect_unroll-3.c	Sun Aug 31 22:32:57 2025
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mavxvnni -O3" } */
+ /* { dg-final { scan-assembler-times {(?n)vpdpbusd[^\n]*ymm} 4 } } */
+ 
+ int
+ foo (unsigned char* a, char* b, int n)
+ {
+   int sum = 0;
+   for (int i = 0; i != n; i++)
+     sum += a[i] * b[i];
+   return sum;
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect_unroll-4.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect_unroll-4.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect_unroll-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect_unroll-4.c	Sun Aug 31 22:32:57 2025
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=x86-64-v3 -O3 -mno-avxvnni" } */
+ /* { dg-final { scan-assembler-times {(?n)vpmaddwd[^\n]*ymm} 4 } } */
+ 
+ int
+ foo (unsigned char* a, char* b, int n)
+ {
+   int sum = 0;
+   for (int i = 0; i != n; i++)
+     sum += a[i] * b[i];
+   return sum;
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect_unroll-5.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect_unroll-5.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect_unroll-5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect_unroll-5.c	Sun Aug 31 22:32:57 2025
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=x86-64-v3 -Ofast -mgather" } */
+ /* { dg-final { scan-assembler-times {(?n)vfmadd[1-3]*ps[^\n]*ymm} 1 } } */
+ 
+ float
+ foo (float* a, int* b, float* c, int n)
+ {
+   float sum = 0;
+   for (int i = 0; i != n; i++)
+     sum += a[b[i]] *c[i];
+   return sum;
+ }
+ 
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect_unroll-6.c gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect_unroll-6.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/i386/vect_unroll-6.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/i386/vect_unroll-6.c	Sun Aug 31 22:32:57 2025
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=x86-64-v3 -Ofast" } */
+ /* { dg-final { scan-assembler-times {(?n)vfmadd[1-3]*ps[^\n]*ymm} 4 } } */
+ 
+ float
+ foo (float* a, float* b, int n)
+ {
+   float sum = 0;
+   for (int i = 0; i != n; i++)
+     sum = __builtin_fma (a[i], b[i], sum);
+   return sum;
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/loongarch/pr121634.c gcc-16-20250831/gcc/testsuite/gcc.target/loongarch/pr121634.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/loongarch/pr121634.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/loongarch/pr121634.c	Sun Aug 31 22:32:57 2025
***************
*** 0 ****
--- 1,15 ----
+ /* PR target/121634: ICE in highway-1.3.0 testsuite */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=la464 -mabi=lp64d" } */
+ 
+ typedef short v8i16 __attribute__ ((vector_size (16)));
+ typedef int v4i32 __attribute__ ((vector_size (16)));
+ typedef long __m128i __attribute__ ((__vector_size__ (16)));
+ __m128i x, y;
+ 
+ __m128i
+ WidenMulPairwiseAdd (__m128i a, __m128i b)
+ {
+   y = (__m128i)__builtin_lsx_vmaddwod_w_h ((v4i32)x, (v8i16){}, (v8i16){});
+   return y;
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/add-synthesis-2.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/add-synthesis-2.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/add-synthesis-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/add-synthesis-2.c	Sun Aug 31 22:32:59 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile { target rv64 } } */
+ /* { dg-options "-march=rv64gcb -mabi=lp64d" { target { rv64 } } } */
+ /* { dg-skip-if "" { *-*-* } { "-O0" } } */
+ 
+ 
+ 
+ #define T(C)  int foo_##C (int x) { return x + C; }
+ #define TM(C)  int foo_M##C (int x) { return x + -C; }
+ 
+ /* These cases were selected because they all can be synthesized
+    at expansion time without synthesizing the constant directly.
+ 
+    That makes the assembler scan testing simpler.  I've verified
+    by hand that cases that should synthesize the constant do in
+    fact still generate code that way.  */
+ T (2050)
+ T (4094)
+ 
+ TM (2049)
+ TM (4096)
+ 
+ /* We have 4/5 tests which should use shNadd insns and 4
+    which used paired addi insns.  */
+ /* { dg-final { scan-assembler-times "addiw\t" 8 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/arch-25.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/arch-25.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/arch-25.c	Sun Aug 24 22:33:02 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/arch-25.c	Sun Aug 31 22:32:59 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv64i_zcf -mabi=lp64" } */
  int foo() {}
! /* { dg-error "'-march=rv64i_zcf': zcf extension supports in rv32 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv64ic_zca_zcf': zcf extension supports in rv32 only" "" { target *-*-* } 0 } */
--- 1,4 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv64i_zcf -mabi=lp64" } */
  int foo() {}
! /* { dg-error "'-march=rv64.*zcf': zcf extension supports in rv32 only" "" { target *-*-* } 0 } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/arch-ss-2.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/arch-ss-2.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/arch-ss-2.c	Sun Aug 24 22:33:02 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/arch-ss-2.c	Sun Aug 31 22:32:59 2025
***************
*** 3,15 ****
  int foo()
  {
  }
! /* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': ssnpm extension supports in rv64 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': smnpm extension supports in rv64 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': smmpm extension supports in rv64 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': sspm extension supports in rv64 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': supm extension supports in rv64 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': ssnpm extension supports in rv64 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': smnpm extension supports in rv64 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': smmpm extension supports in rv64 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': sspm extension supports in rv64 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': supm extension supports in rv64 only" "" { target *-*-* } 0 } */
--- 3,10 ----
  int foo()
  {
  }
! /* { dg-error "'-march=rv32.\*ssnpm.*': ssnpm extension supports in rv64 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv32.\*smnpm.*': smnpm extension supports in rv64 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv32.\*smmpm.*': smmpm extension supports in rv64 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv32.\*sspm.*': sspm extension supports in rv64 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv32.\*supm.*': supm extension supports in rv64 only" "" { target *-*-* } 0 } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/arch-zilsd-2.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/arch-zilsd-2.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/arch-zilsd-2.c	Sun Aug 24 22:33:02 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/arch-zilsd-2.c	Sun Aug 31 22:32:59 2025
***************
*** 3,7 ****
  int foo()
  {
  }
! /* { dg-error "'-march=rv64gc_zilsd': zilsd extension supports in rv32 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv64imafdc_zicsr_zifencei_zilsd_zmmul_zaamo_zalrsc_zca_zcd': zilsd extension supports in rv32 only" "" { target *-*-* } 0 } */
--- 3,6 ----
  int foo()
  {
  }
! /* { dg-error "'-march=rv64g.*zilsd.*': zilsd extension supports in rv32 only" "" { target *-*-* } 0 } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/arch-zilsd-3.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/arch-zilsd-3.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/arch-zilsd-3.c	Sun Aug 24 22:33:02 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/arch-zilsd-3.c	Sun Aug 31 22:32:59 2025
***************
*** 3,9 ****
  int foo()
  {
  }
! /* { dg-error "'-march=rv64gc_zclsd': zilsd extension supports in rv32 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv64gc_zclsd': zclsd extension supports in rv32 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv64imafdc_zicsr_zifencei_zilsd_zmmul_zaamo_zalrsc_zca_zcd_zclsd': zilsd extension supports in rv32 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv64imafdc_zicsr_zifencei_zilsd_zmmul_zaamo_zalrsc_zca_zcd_zclsd': zclsd extension supports in rv32 only" "" { target *-*-* } 0 } */
--- 3,7 ----
  int foo()
  {
  }
! /* { dg-error "'-march=rv64.*zclsd.*': zilsd extension supports in rv32 only" "" { target *-*-* } 0 } */
! /* { dg-error "'-march=rv64.*zclsd.*': zclsd extension supports in rv32 only" "" { target *-*-* } 0 } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/mcpu-xt-c908v.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/mcpu-xt-c908v.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/mcpu-xt-c908v.c	Sun Aug 24 22:33:03 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/mcpu-xt-c908v.c	Sun Aug 31 22:32:59 2025
***************
*** 4,10 ****
  /* XuanTie C908v => rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicsr_zifencei_
  zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_sstc_svinval_svnapot_svpbmt_xtheadba_
  xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadmac_
! xtheadmemidx_xtheadmempair_xtheadsync_xtheadvdot */
  
  #if !((__riscv_xlen == 64)		\
        && !defined(__riscv_32e)		\
--- 4,10 ----
  /* XuanTie C908v => rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicsr_zifencei_
  zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_sstc_svinval_svnapot_svpbmt_xtheadba_
  xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadmac_
! xtheadmemidx_xtheadmempair_xtheadsync */
  
  #if !((__riscv_xlen == 64)		\
        && !defined(__riscv_32e)		\
*************** xtheadmemidx_xtheadmempair_xtheadsync_xt
*** 39,46 ****
        && defined(__riscv_xtheadmac)		\
        && defined(__riscv_xtheadmemidx)		\
        && defined(__riscv_xtheadmempair)		\
!       && defined(__riscv_xtheadsync)		\
!       && defined (__riscv__xtheadvdot))
  #error "unexpected arch"
  #endif
  
--- 39,45 ----
        && defined(__riscv_xtheadmac)		\
        && defined(__riscv_xtheadmemidx)		\
        && defined(__riscv_xtheadmempair)		\
!       && defined(__riscv_xtheadsync))
  #error "unexpected arch"
  #endif
  
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/mcpu-xt-c920v2.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/mcpu-xt-c920v2.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/mcpu-xt-c920v2.c	Sun Aug 24 22:33:03 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/mcpu-xt-c920v2.c	Sun Aug 31 22:32:59 2025
***************
*** 1,7 ****
  /* { dg-do compile { target { ! riscv_abi_e } } } */
  /* { dg-skip-if "-march given" { *-*-* } { "-march=*" } } */
  /* { dg-options "-mcpu=xt-c920v2" { target { rv64 } } } */
! /* XuanTie C920v2 => rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei _zihintntl_zihintpause_zihpm_zawrs_zfa_zfbfmin_zfh_zca_zcb_zcd_zba_zbb_zbc_zbs_zvfbfmin_zvfbfwma_zvfh_sscofpmf_sstc_svinval_svnapot_svpbmt_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadsync_xtheadvdot */
  
  #if !((__riscv_xlen == 64)		\
        && !defined(__riscv_32e)		\
--- 1,7 ----
  /* { dg-do compile { target { ! riscv_abi_e } } } */
  /* { dg-skip-if "-march given" { *-*-* } { "-march=*" } } */
  /* { dg-options "-mcpu=xt-c920v2" { target { rv64 } } } */
! /* XuanTie C920v2 => rv64imafdcv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zifencei _zihintntl_zihintpause_zihpm_zawrs_zfa_zfbfmin_zfh_zca_zcb_zcd_zba_zbb_zbc_zbs_zvfbfmin_zvfbfwma_zvfh_sscofpmf_sstc_svinval_svnapot_svpbmt_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadsync */
  
  #if !((__riscv_xlen == 64)		\
        && !defined(__riscv_32e)		\
***************
*** 45,52 ****
        && defined(__riscv_xtheadcmo)		\
        && defined(__riscv_xtheadcondmov)		\
        && defined(__riscv_xtheadfmemidx)		\
!       && defined(__riscv_xtheadsync)		\
!       && defined(__riscv_xtheadvdot))
  #error "unexpected arch"
  #endif
  
--- 45,51 ----
        && defined(__riscv_xtheadcmo)		\
        && defined(__riscv_xtheadcondmov)		\
        && defined(__riscv_xtheadfmemidx)		\
!       && defined(__riscv_xtheadsync))
  #error "unexpected arch"
  #endif
  
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/nozicond-2.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/nozicond-2.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/nozicond-2.c	Sun Aug 24 22:33:03 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/nozicond-2.c	Sun Aug 31 22:32:59 2025
*************** long foo2 (long c) { return c >= 0 ? -1
*** 9,15 ****
  /* We don't support 4->3 splitters, so this fails.  We could perhaps
     try to catch it in the expander as a special case rather than waiting
     for combine.  */
! /* { dg-final { scan-assembler-times {srai\t} 2 { xfail *-*-* } } } */
! /* { dg-final { scan-assembler-times {ori\t} 2 { xfail *-*-* } } } */
! /* { dg-final { scan-assembler-times {not\t} 2 { xfail *-*-* } } } */
  
--- 9,15 ----
  /* We don't support 4->3 splitters, so this fails.  We could perhaps
     try to catch it in the expander as a special case rather than waiting
     for combine.  */
! /* { dg-final { scan-assembler-times {srai\t} 2 } } */
! /* { dg-final { scan-assembler-times {ori\t} 2 } } */
! /* { dg-final { scan-assembler-times {not\t} 2 } } */
  
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-2.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-2.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-2.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-2.c	Sun Aug 31 22:32:59 2025
*************** DEF_MINMAX_VX (min, 128, double, <)
*** 39,43 ****
  DEF_MINMAX_VX (min, 256, double, <)
  DEF_MINMAX_VX (min, 512, double, <)
  
! /* { dg-final { scan-assembler-times {vfmin\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
--- 39,43 ----
  DEF_MINMAX_VX (min, 256, double, <)
  DEF_MINMAX_VX (min, 512, double, <)
  
! /* { dg-final { scan-assembler-times {vfmin\.vf\s+v[0-9]+,\s*v[0-9]+,\s*f[ast]?[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-4.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-4.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-4.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-min-4.c	Sun Aug 31 22:32:59 2025
*************** DEF_MINMAX_VX (min, 128, double, <=)
*** 39,43 ****
  DEF_MINMAX_VX (min, 256, double, <=)
  DEF_MINMAX_VX (min, 512, double, <=)
  
! /* { dg-final { scan-assembler-times {vfmin\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
--- 39,43 ----
  DEF_MINMAX_VX (min, 256, double, <=)
  DEF_MINMAX_VX (min, 512, double, <=)
  
! /* { dg-final { scan-assembler-times {vfmin\.vf\s+v[0-9]+,\s*v[0-9]+,\s*f[ast]?[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-2.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-2.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-2.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-2.c	Sun Aug 31 22:32:59 2025
*************** DEF_OP_VX (mul, 128, double, *)
*** 39,43 ****
  DEF_OP_VX (mul, 256, double, *)
  DEF_OP_VX (mul, 512, double, *)
  
! /* { dg-final { scan-assembler-times {vfmul\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
--- 39,43 ----
  DEF_OP_VX (mul, 256, double, *)
  DEF_OP_VX (mul, 512, double, *)
  
! /* { dg-final { scan-assembler-times {vfmul\.vf\s+v[0-9]+,\s*v[0-9]+,\s*f[ast]?[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-3.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-3.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-3.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-mul-3.c	Sun Aug 31 22:32:59 2025
*************** DEF_OP_VI_15 (mul, 128, double, *)
*** 39,43 ****
  DEF_OP_VI_15 (mul, 256, double, *)
  DEF_OP_VI_15 (mul, 512, double, *)
  
! /* { dg-final { scan-assembler-times {vfmul\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
--- 39,43 ----
  DEF_OP_VI_15 (mul, 256, double, *)
  DEF_OP_VI_15 (mul, 512, double, *)
  
! /* { dg-final { scan-assembler-times {vfmul\.vf\s+v[0-9]+,\s*v[0-9]+,\s*f[ast]?[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c	Sun Aug 31 22:32:59 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d --param=fpr2vr-cost=0" } */
  
  #include "vf_mulop.h"
+ #include "vf_binop.h"
  
  DEF_VF_MULOP_CASE_0 (_Float16, +, +, add)
  DEF_VF_MULOP_CASE_0 (_Float16, -, +, sub)
*************** DEF_VF_MULOP_WIDEN_CASE_0 (_Float16, flo
*** 15,20 ****
--- 16,25 ----
  DEF_VF_MULOP_WIDEN_CASE_0 (_Float16, float, -, +, sac)
  DEF_VF_MULOP_WIDEN_CASE_0 (_Float16, float, +, -, nacc)
  DEF_VF_MULOP_WIDEN_CASE_0 (_Float16, float, -, -, nsac)
+ DEF_VF_BINOP_CASE_0 (_Float16, *, mul)
+ DEF_VF_BINOP_REVERSE_CASE_0 (_Float16, /, rdiv)
+ DEF_VF_BINOP_CASE_2_WRAP (_Float16, MIN_FUNC_0_WRAP (_Float16), min)
+ DEF_VF_BINOP_CASE_2_WRAP (_Float16, MIN_FUNC_1_WRAP (_Float16), min)
  
  /* { dg-final { scan-assembler-times {vfmadd.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmsub.vf} 1 } } */
*************** DEF_VF_MULOP_WIDEN_CASE_0 (_Float16, flo
*** 28,30 ****
--- 33,37 ----
  /* { dg-final { scan-assembler-times {vfwmsac.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfwnmacc.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfwnmsac.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfrdiv.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfmin.vf} 2 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c	Sun Aug 31 22:32:59 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=fpr2vr-cost=0" } */
  
  #include "vf_mulop.h"
+ #include "vf_binop.h"
  
  DEF_VF_MULOP_CASE_0 (float, +, +, add)
  DEF_VF_MULOP_CASE_0 (float, -, +, sub)
*************** DEF_VF_MULOP_WIDEN_CASE_0 (float, double
*** 15,20 ****
--- 16,25 ----
  DEF_VF_MULOP_WIDEN_CASE_0 (float, double, -, +, sac)
  DEF_VF_MULOP_WIDEN_CASE_0 (float, double, +, -, nacc)
  DEF_VF_MULOP_WIDEN_CASE_0 (float, double, -, -, nsac)
+ DEF_VF_BINOP_CASE_0 (float, *, mul)
+ DEF_VF_BINOP_REVERSE_CASE_0 (float, /, rdiv)
+ DEF_VF_BINOP_CASE_2_WRAP (float, MIN_FUNC_0_WRAP (float), min)
+ DEF_VF_BINOP_CASE_2_WRAP (float, MIN_FUNC_1_WRAP (float), min)
  
  /* { dg-final { scan-assembler-times {vfmadd.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmsub.vf} 1 } } */
*************** DEF_VF_MULOP_WIDEN_CASE_0 (float, double
*** 28,30 ****
--- 33,38 ----
  /* { dg-final { scan-assembler-times {vfwmsac.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfwnmacc.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfwnmsac.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfmul.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfrdiv.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfmin.vf} 2 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c	Sun Aug 31 22:32:59 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=fpr2vr-cost=0" } */
  
  #include "vf_mulop.h"
+ #include "vf_binop.h"
  
  DEF_VF_MULOP_CASE_0 (double, +, +, add)
  DEF_VF_MULOP_CASE_0 (double, -, +, sub)
*************** DEF_VF_MULOP_ACC_CASE_0 (double, +, +, a
*** 11,16 ****
--- 12,21 ----
  DEF_VF_MULOP_ACC_CASE_0 (double, -, +, sac)
  DEF_VF_MULOP_ACC_CASE_0 (double, +, -, nacc)
  DEF_VF_MULOP_ACC_CASE_0 (double, -, -, nsac)
+ DEF_VF_BINOP_CASE_0 (double, *, mul)
+ DEF_VF_BINOP_REVERSE_CASE_0 (double, /, rdiv)
+ DEF_VF_BINOP_CASE_2_WRAP (double, MIN_FUNC_0_WRAP (double), min)
+ DEF_VF_BINOP_CASE_2_WRAP (double, MIN_FUNC_1_WRAP (double), min)
  
  /* { dg-final { scan-assembler-times {vfmadd.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmsub.vf} 1 } } */
*************** DEF_VF_MULOP_ACC_CASE_0 (double, -, -, n
*** 20,22 ****
--- 25,30 ----
  /* { dg-final { scan-assembler-times {vfmsac.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfnmacc.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfnmsac.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfmul.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfrdiv.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfmin.vf} 2 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c	Sun Aug 31 22:32:59 2025
***************
*** 15,19 ****
  /* { dg-final { scan-assembler-not {vfwmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmsac.vf} } } */
  /* { dg-final { scan-assembler-times {fcvt.s.h} 4 } } */
- /* { dg-final { scan-assembler-times {vfmv.v.f} 12 } } */
--- 15,21 ----
  /* { dg-final { scan-assembler-not {vfwmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmsac.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmin.vf} } } */
  /* { dg-final { scan-assembler-times {fcvt.s.h} 4 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c	Sun Aug 31 22:32:59 2025
***************
*** 15,19 ****
  /* { dg-final { scan-assembler-not {vfwmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmsac.vf} } } */
  /* { dg-final { scan-assembler-times {fcvt.d.s} 4 } } */
- /* { dg-final { scan-assembler-times {vfmv.v.f} 12 } } */
--- 15,21 ----
  /* { dg-final { scan-assembler-not {vfwmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmsac.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmin.vf} } } */
  /* { dg-final { scan-assembler-times {fcvt.d.s} 4 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c	Sun Aug 31 22:32:59 2025
***************
*** 11,13 ****
--- 11,16 ----
  /* { dg-final { scan-assembler-not {vfmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfnmsac.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c	Sun Aug 31 22:32:59 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d --param=fpr2vr-cost=0" } */
  
  #include "vf_mulop.h"
+ #include "vf_binop.h"
  
  DEF_VF_MULOP_CASE_1 (_Float16, +, +, add, VF_MULOP_BODY_X128)
  DEF_VF_MULOP_CASE_1 (_Float16, -, +, sub, VF_MULOP_BODY_X128)
*************** DEF_VF_MULOP_WIDEN_CASE_1 (_Float16, flo
*** 15,20 ****
--- 16,27 ----
  DEF_VF_MULOP_WIDEN_CASE_1 (_Float16, float, -, +, sac)
  DEF_VF_MULOP_WIDEN_CASE_1 (_Float16, float, +, -, nacc)
  DEF_VF_MULOP_WIDEN_CASE_1 (_Float16, float, -, -, nsac)
+ DEF_VF_BINOP_CASE_1 (_Float16, *, mul, VF_BINOP_BODY_X128)
+ DEF_VF_BINOP_REVERSE_CASE_1 (_Float16, /, rdiv, VF_BINOP_REVERSE_BODY_X128)
+ DEF_VF_BINOP_CASE_3_WRAP (_Float16, MIN_FUNC_0_WRAP (_Float16), min,
+ 			  VF_BINOP_FUNC_BODY_X128)
+ DEF_VF_BINOP_CASE_3_WRAP (_Float16, MIN_FUNC_1_WRAP (_Float16), min,
+ 			  VF_BINOP_FUNC_BODY_X128)
  
  /* { dg-final { scan-assembler {vfmadd.vf} } } */
  /* { dg-final { scan-assembler {vfmsub.vf} } } */
*************** DEF_VF_MULOP_WIDEN_CASE_1 (_Float16, flo
*** 28,30 ****
--- 35,40 ----
  /* { dg-final { scan-assembler {vfwmsac.vf} } } */
  /* { dg-final { scan-assembler {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler {vfwnmsac.vf} } } */
+ /* { dg-final { scan-assembler {vfmul.vf} } } */
+ /* { dg-final { scan-assembler {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c	Sun Aug 31 22:32:59 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=fpr2vr-cost=0" } */
  
  #include "vf_mulop.h"
+ #include "vf_binop.h"
  
  DEF_VF_MULOP_CASE_1 (float, +, +, add, VF_MULOP_BODY_X128)
  DEF_VF_MULOP_CASE_1 (float, -, +, sub, VF_MULOP_BODY_X128)
*************** DEF_VF_MULOP_WIDEN_CASE_1 (float, double
*** 15,20 ****
--- 16,27 ----
  DEF_VF_MULOP_WIDEN_CASE_1 (float, double, -, +, sac)
  DEF_VF_MULOP_WIDEN_CASE_1 (float, double, +, -, nacc)
  DEF_VF_MULOP_WIDEN_CASE_1 (float, double, -, -, nsac)
+ DEF_VF_BINOP_CASE_1 (float, *, mul, VF_BINOP_BODY_X128)
+ DEF_VF_BINOP_REVERSE_CASE_1 (float, /, rdiv, VF_BINOP_REVERSE_BODY_X128)
+ DEF_VF_BINOP_CASE_3_WRAP (float, MIN_FUNC_0_WRAP (float), min,
+ 			  VF_BINOP_FUNC_BODY_X128)
+ DEF_VF_BINOP_CASE_3_WRAP (float, MIN_FUNC_1_WRAP (float), min,
+ 			  VF_BINOP_FUNC_BODY_X128)
  
  /* { dg-final { scan-assembler {vfmadd.vf} } } */
  /* { dg-final { scan-assembler {vfmsub.vf} } } */
*************** DEF_VF_MULOP_WIDEN_CASE_1 (float, double
*** 28,30 ****
--- 35,40 ----
  /* { dg-final { scan-assembler {vfwmsac.vf} } } */
  /* { dg-final { scan-assembler {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler {vfwnmsac.vf} } } */
+ /* { dg-final { scan-assembler {vfmul.vf} } } */
+ /* { dg-final { scan-assembler {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c	Sun Aug 31 22:32:59 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=fpr2vr-cost=0" } */
  
  #include "vf_mulop.h"
+ #include "vf_binop.h"
  
  DEF_VF_MULOP_CASE_1 (double, +, +, add, VF_MULOP_BODY_X128)
  DEF_VF_MULOP_CASE_1 (double, -, +, sub, VF_MULOP_BODY_X128)
*************** DEF_VF_MULOP_ACC_CASE_1 (double, +, +, a
*** 11,16 ****
--- 12,23 ----
  DEF_VF_MULOP_ACC_CASE_1 (double, -, +, sac, VF_MULOP_ACC_BODY_X128)
  DEF_VF_MULOP_ACC_CASE_1 (double, +, -, nacc, VF_MULOP_ACC_BODY_X128)
  DEF_VF_MULOP_ACC_CASE_1 (double, -, -, nsac, VF_MULOP_ACC_BODY_X128)
+ DEF_VF_BINOP_CASE_1 (double, *, mul, VF_BINOP_BODY_X128)
+ DEF_VF_BINOP_REVERSE_CASE_1 (double, /, rdiv, VF_BINOP_REVERSE_BODY_X128)
+ DEF_VF_BINOP_CASE_3_WRAP (double, MIN_FUNC_0_WRAP (double), min,
+ 			  VF_BINOP_FUNC_BODY_X128)
+ DEF_VF_BINOP_CASE_3_WRAP (double, MIN_FUNC_1_WRAP (double), min,
+ 			  VF_BINOP_FUNC_BODY_X128)
  
  /* { dg-final { scan-assembler {vfmadd.vf} } } */
  /* { dg-final { scan-assembler {vfmsub.vf} } } */
*************** DEF_VF_MULOP_ACC_CASE_1 (double, -, -, n
*** 20,22 ****
--- 27,32 ----
  /* { dg-final { scan-assembler {vfmsac.vf} } } */
  /* { dg-final { scan-assembler {vfnmacc.vf} } } */
  /* { dg-final { scan-assembler {vfnmsac.vf} } } */
+ /* { dg-final { scan-assembler {vfmul.vf} } } */
+ /* { dg-final { scan-assembler {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c	Sun Aug 31 22:32:59 2025
***************
*** 15,18 ****
--- 15,21 ----
  /* { dg-final { scan-assembler-not {vfwmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmsac.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmin.vf} } } */
  /* { dg-final { scan-assembler {fcvt.s.h} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c	Sun Aug 31 22:32:59 2025
***************
*** 15,18 ****
--- 15,21 ----
  /* { dg-final { scan-assembler-not {vfwmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmsac.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmin.vf} } } */
  /* { dg-final { scan-assembler {fcvt.d.s} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c	Sun Aug 31 22:32:59 2025
***************
*** 11,13 ****
--- 11,16 ----
  /* { dg-final { scan-assembler-not {vfmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfnmsac.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f16.c	Sun Aug 31 22:32:59 2025
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d -fno-fast-math --param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ DEF_VF_BINOP_CASE_2_WRAP (_Float16, __builtin_fminf16, min)
+ 
+ /* { dg-final { scan-assembler-times {vfmin.vf} 1 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f32.c	Sun Aug 31 22:32:59 2025
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -fno-fast-math --param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ DEF_VF_BINOP_CASE_2_WRAP (float, __builtin_fminf, min)
+ 
+ /* { dg-final { scan-assembler-times {vfmin.vf} 1 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f64.c	Sun Aug 31 22:32:59 2025
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -fno-fast-math --param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ DEF_VF_BINOP_CASE_2_WRAP (double, __builtin_fmin, min)
+ 
+ /* { dg-final { scan-assembler-times {vfmin.vf} 1 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f16.c	Sun Aug 31 22:32:59 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d -fno-fast-math --param=fpr2vr-cost=1" } */
+ 
+ #include "vf-5-f16.c"
+ 
+ /* { dg-final { scan-assembler-not {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f32.c	Sun Aug 31 22:32:59 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -fno-fast-math --param=fpr2vr-cost=1" } */
+ 
+ #include "vf-5-f32.c"
+ 
+ /* { dg-final { scan-assembler-not {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f64.c	Sun Aug 31 22:32:59 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -fno-fast-math --param=fpr2vr-cost=1" } */
+ 
+ #include "vf-5-f64.c"
+ 
+ /* { dg-final { scan-assembler-not {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f16.c	Sun Aug 31 22:32:59 2025
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d -fno-fast-math --param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ DEF_VF_BINOP_CASE_3_WRAP (_Float16, __builtin_fminf16, min, VF_BINOP_FUNC_BODY_X128)
+ 
+ /* { dg-final { scan-assembler {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f32.c	Sun Aug 31 22:32:59 2025
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -fno-fast-math --param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ DEF_VF_BINOP_CASE_3_WRAP (float, __builtin_fminf, min, VF_BINOP_FUNC_BODY_X128)
+ 
+ /* { dg-final { scan-assembler {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f64.c	Sun Aug 31 22:32:59 2025
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -fno-fast-math --param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ DEF_VF_BINOP_CASE_3_WRAP (double, __builtin_fmin, min, VF_BINOP_FUNC_BODY_X128)
+ 
+ /* { dg-final { scan-assembler {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f16.c	Sun Aug 31 22:32:59 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d --param=fpr2vr-cost=4" } */
+ 
+ #include "vf-7-f16.c"
+ 
+ /* { dg-final { scan-assembler-not {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f32.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=fpr2vr-cost=4" } */
+ 
+ #include "vf-7-f32.c"
+ 
+ /* { dg-final { scan-assembler-not {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f64.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d --param=fpr2vr-cost=4" } */
+ 
+ #include "vf-7-f64.c"
+ 
+ /* { dg-final { scan-assembler-not {vfmin.vf} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,206 ----
+ #ifndef HAVE_DEFINED_VF_BINOP_H
+ #define HAVE_DEFINED_VF_BINOP_H
+ 
+ #include <stdint.h>
+ 
+ #define DEF_VF_BINOP_CASE_0(T, OP, NAME)                                       \
+   void test_vf_binop_##NAME##_##T##_case_0 (T *restrict out, T *restrict in,   \
+ 					    T f, unsigned n)                   \
+   {                                                                            \
+     for (unsigned i = 0; i < n; i++)                                           \
+       out[i] = in[i] OP f;                                                     \
+   }
+ #define DEF_VF_BINOP_CASE_0_WRAP(T, OP, NAME) DEF_VF_BINOP_CASE_0 (T, OP, NAME)
+ #define RUN_VF_BINOP_CASE_0(T, NAME, out, in, f, n)                            \
+   test_vf_binop_##NAME##_##T##_case_0 (out, in, f, n)
+ #define RUN_VF_BINOP_CASE_0_WRAP(T, NAME, out, in, f, n)                       \
+   RUN_VF_BINOP_CASE_0 (T, NAME, out, in, f, n)
+ 
+ #define DEF_VF_BINOP_REVERSE_CASE_0(T, OP, NAME)                               \
+   void test_vf_binop_reverse_##NAME##_##T##_case_0 (T *restrict out,           \
+ 						    T *restrict in, T f,       \
+ 						    unsigned n)                \
+   {                                                                            \
+     for (unsigned i = 0; i < n; i++)                                           \
+       out[i] = f OP in[i];                                                     \
+   }
+ #define DEF_VF_BINOP_REVERSE_CASE_0_WRAP(T, OP, NAME)                          \
+   DEF_VF_BINOP_REVERSE_CASE_0 (T, OP, NAME)
+ #define RUN_VF_BINOP_REVERSE_CASE_0(T, NAME, out, in, f, n)                    \
+   test_vf_binop_reverse_##NAME##_##T##_case_0 (out, in, f, n)
+ #define RUN_VF_BINOP_REVERSE_CASE_0_WRAP(T, NAME, out, in, f, n)               \
+   RUN_VF_BINOP_REVERSE_CASE_0 (T, NAME, out, in, f, n)
+ 
+ #define VF_BINOP_BODY(op)                                                      \
+   out[k + 0] = in[k + 0] op tmp;                                               \
+   out[k + 1] = in[k + 1] op tmp;                                               \
+   k += 2;
+ 
+ #define VF_BINOP_BODY_X4(op)                                                   \
+   VF_BINOP_BODY (op)                                                           \
+   VF_BINOP_BODY (op)
+ 
+ #define VF_BINOP_BODY_X8(op)                                                   \
+   VF_BINOP_BODY_X4 (op)                                                        \
+   VF_BINOP_BODY_X4 (op)
+ 
+ #define VF_BINOP_BODY_X16(op)                                                  \
+   VF_BINOP_BODY_X8 (op)                                                        \
+   VF_BINOP_BODY_X8 (op)
+ 
+ #define VF_BINOP_BODY_X32(op)                                                  \
+   VF_BINOP_BODY_X16 (op)                                                       \
+   VF_BINOP_BODY_X16 (op)
+ 
+ #define VF_BINOP_BODY_X64(op)                                                  \
+   VF_BINOP_BODY_X32 (op)                                                       \
+   VF_BINOP_BODY_X32 (op)
+ 
+ #define VF_BINOP_BODY_X128(op)                                                 \
+   VF_BINOP_BODY_X64 (op)                                                       \
+   VF_BINOP_BODY_X64 (op)
+ 
+ #define DEF_VF_BINOP_CASE_1(T, OP, NAME, BODY)                                 \
+   void test_vf_binop_##NAME##_##T##_case_1 (T *restrict out, T *restrict in,   \
+ 					    T f, unsigned n)                   \
+   {                                                                            \
+     unsigned k = 0;                                                            \
+     T tmp = f + 3.45;                                                          \
+                                                                                \
+     while (k < n)                                                              \
+       {                                                                        \
+ 	tmp = tmp * 0x3.fp2;                                                   \
+ 	BODY (OP)                                                              \
+       }                                                                        \
+   }
+ #define DEF_VF_BINOP_CASE_1_WRAP(T, OP, NAME, BODY)                            \
+   DEF_VF_BINOP_CASE_1 (T, OP, NAME, BODY)
+ 
+ #define VF_BINOP_REVERSE_BODY(op)                                              \
+   out[k + 0] = tmp op in[k + 0];                                               \
+   out[k + 1] = tmp op in[k + 1];                                               \
+   k += 2;
+ 
+ #define VF_BINOP_REVERSE_BODY_X4(op)                                           \
+   VF_BINOP_REVERSE_BODY (op)                                                   \
+   VF_BINOP_REVERSE_BODY (op)
+ 
+ #define VF_BINOP_REVERSE_BODY_X8(op)                                           \
+   VF_BINOP_REVERSE_BODY_X4 (op)                                                \
+   VF_BINOP_REVERSE_BODY_X4 (op)
+ 
+ #define VF_BINOP_REVERSE_BODY_X16(op)                                          \
+   VF_BINOP_REVERSE_BODY_X8 (op)                                                \
+   VF_BINOP_REVERSE_BODY_X8 (op)
+ 
+ #define VF_BINOP_REVERSE_BODY_X32(op)                                          \
+   VF_BINOP_REVERSE_BODY_X16 (op)                                               \
+   VF_BINOP_REVERSE_BODY_X16 (op)
+ 
+ #define VF_BINOP_REVERSE_BODY_X64(op)                                          \
+   VF_BINOP_REVERSE_BODY_X32 (op)                                               \
+   VF_BINOP_REVERSE_BODY_X32 (op)
+ 
+ #define VF_BINOP_REVERSE_BODY_X128(op)                                         \
+   VF_BINOP_REVERSE_BODY_X64 (op)                                               \
+   VF_BINOP_REVERSE_BODY_X64 (op)
+ 
+ #define DEF_VF_BINOP_REVERSE_CASE_1(T, OP, NAME, BODY)                         \
+   void test_vf_binop_reverse_##NAME##_##T##_case_1 (T *restrict out,           \
+ 						    T *restrict in, T f,       \
+ 						    unsigned n)                \
+   {                                                                            \
+     unsigned k = 0;                                                            \
+     T tmp = f + 3.45;                                                          \
+                                                                                \
+     while (k < n)                                                              \
+       {                                                                        \
+ 	tmp = tmp * 0x3.fp2;                                                   \
+ 	BODY (OP)                                                              \
+       }                                                                        \
+   }
+ #define DEF_VF_BINOP_REVERSE_CASE_1_WRAP(T, OP, NAME, BODY)                    \
+   DEF_VF_BINOP_REVERSE_CASE_1 (T, OP, NAME, BODY)
+ 
+ #endif
+ 
+ #define DEF_MIN_0(T)                                                           \
+   static inline T test_##T##_min_0 (T a, T b) { return a > b ? b : a; }
+ 
+ #define DEF_MIN_1(T)                                                           \
+   static inline T test_##T##_min_1 (T a, T b) { return a >= b ? b : a; }
+ 
+ DEF_MIN_0 (_Float16)
+ DEF_MIN_0 (float)
+ DEF_MIN_0 (double)
+ 
+ DEF_MIN_1 (_Float16)
+ DEF_MIN_1 (float)
+ DEF_MIN_1 (double)
+ 
+ #define MIN_FUNC_0(T) test_##T##_min_0
+ #define MIN_FUNC_0_WRAP(T) MIN_FUNC_0 (T)
+ 
+ #define MIN_FUNC_1(T) test_##T##_min_1
+ #define MIN_FUNC_1_WRAP(T) MIN_FUNC_1 (T)
+ 
+ #define DEF_VF_BINOP_CASE_2(T, FUNC, NAME)                                     \
+   void test_vf_binop_##NAME##_##FUNC##_##T##_case_2 (T *restrict out,          \
+ 						     T *restrict in, T f,      \
+ 						     unsigned n)               \
+   {                                                                            \
+     for (unsigned i = 0; i < n; i++)                                           \
+       out[i] = FUNC (in[i], f);                                                \
+   }
+ #define DEF_VF_BINOP_CASE_2_WRAP(T, FUNC, NAME)                                \
+   DEF_VF_BINOP_CASE_2 (T, FUNC, NAME)
+ #define RUN_VF_BINOP_CASE_2(T, NAME, FUNC, out, in, f, n)                      \
+   test_vf_binop_##NAME##_##FUNC##_##T##_case_2 (out, in, f, n)
+ #define RUN_VF_BINOP_CASE_2_WRAP(T, NAME, FUNC, out, in, f, n)                 \
+   RUN_VF_BINOP_CASE_2 (T, NAME, FUNC, out, in, f, n)
+ 
+ #define DEF_VF_BINOP_CASE_3(T, FUNC, NAME, BODY)                               \
+   void test_vf_binop_##NAME##_##FUNC##_##T##_case_3 (T *restrict out,          \
+ 						     T *restrict in, T f,      \
+ 						     unsigned n)               \
+   {                                                                            \
+     unsigned k = 0;                                                            \
+     T tmp = f + 3;                                                             \
+                                                                                \
+     while (k < n)                                                              \
+       {                                                                        \
+ 	tmp = tmp * 0x7.ap3;                                                   \
+ 	BODY (FUNC)                                                            \
+       }                                                                        \
+   }
+ #define DEF_VF_BINOP_CASE_3_WRAP(T, FUNC, NAME, BODY)                          \
+   DEF_VF_BINOP_CASE_3 (T, FUNC, NAME, BODY)
+ 
+ #define VF_BINOP_FUNC_BODY(func)                                               \
+   out[k + 0] = func (in[k + 0], tmp);                                          \
+   out[k + 1] = func (in[k + 1], tmp);                                          \
+   k += 2;
+ 
+ #define VF_BINOP_FUNC_BODY_X4(op)                                              \
+   VF_BINOP_FUNC_BODY (op)                                                      \
+   VF_BINOP_FUNC_BODY (op)
+ 
+ #define VF_BINOP_FUNC_BODY_X8(op)                                              \
+   VF_BINOP_FUNC_BODY_X4 (op)                                                   \
+   VF_BINOP_FUNC_BODY_X4 (op)
+ 
+ #define VF_BINOP_FUNC_BODY_X16(op)                                             \
+   VF_BINOP_FUNC_BODY_X8 (op)                                                   \
+   VF_BINOP_FUNC_BODY_X8 (op)
+ 
+ #define VF_BINOP_FUNC_BODY_X32(op)                                             \
+   VF_BINOP_FUNC_BODY_X16 (op)                                                  \
+   VF_BINOP_FUNC_BODY_X16 (op)
+ 
+ #define VF_BINOP_FUNC_BODY_X64(op)                                             \
+   VF_BINOP_FUNC_BODY_X32 (op)                                                  \
+   VF_BINOP_FUNC_BODY_X32 (op)
+ 
+ #define VF_BINOP_FUNC_BODY_X128(op)                                            \
+   VF_BINOP_FUNC_BODY_X64 (op)                                                  \
+   VF_BINOP_FUNC_BODY_X64 (op)
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,451 ----
+ #ifndef HAVE_DEFINED_VF_BINOP_DATA_H
+ #define HAVE_DEFINED_VF_BINOP_DATA_H
+ 
+ #define N 16
+ 
+ #define TEST_BINOP_DATA(T, NAME)      test_##T##_##NAME##_data
+ #define TEST_BINOP_DATA_WRAP(T, NAME) TEST_BINOP_DATA(T, NAME)
+ 
+ 
+ _Float16 TEST_BINOP_DATA(_Float16, mul)[][4][N] =
+ {
+   {
+     { 0x1.0000000000000p+0f16 },
+     {
+     0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16,
+     0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16,
+     0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16,
+     0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16,
+     },
+     {
+     0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16,
+     0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16,
+     0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16,
+     0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16,
+     },
+   },
+   {
+     { 0x1.0000000000000p+7f16 },
+     {
+     -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16,
+     0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16,
+     -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16,
+     -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16,
+     },
+     {
+     -0x1.53c0000000000p+12f16, -0x1.53c0000000000p+12f16, -0x1.53c0000000000p+12f16, -0x1.53c0000000000p+12f16,
+     0x1.c300000000000p+13f16, 0x1.c300000000000p+13f16, 0x1.c300000000000p+13f16, 0x1.c300000000000p+13f16,
+     -0x1.ffc0000000000p+14f16, -0x1.ffc0000000000p+14f16, -0x1.ffc0000000000p+14f16, -0x1.ffc0000000000p+14f16,
+     -0x1.94c0000000000p+13f16, -0x1.94c0000000000p+13f16, -0x1.94c0000000000p+13f16, -0x1.94c0000000000p+13f16,
+     },
+   },
+   {
+     { -0x1.fc00000000000p+6f16 },
+     {
+     -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16,
+     -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16,
+     0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16,
+     -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16,
+     },
+     {
+     0x1.0400000000000p+12f16, 0x1.0400000000000p+12f16, 0x1.0400000000000p+12f16, 0x1.0400000000000p+12f16,
+     0x1.e180000000000p+14f16, 0x1.e180000000000p+14f16, 0x1.e180000000000p+14f16, 0x1.e180000000000p+14f16,
+     -0x1.9380000000000p+11f16, -0x1.9380000000000p+11f16, -0x1.9380000000000p+11f16, -0x1.9380000000000p+11f16,
+     0x1.06c0000000000p+12f16, 0x1.06c0000000000p+12f16, 0x1.06c0000000000p+12f16, 0x1.06c0000000000p+12f16,
+     },
+   },
+ };
+ 
+ float TEST_BINOP_DATA(float, mul)[][4][N] =
+ {
+   {
+     { 0x1.4000000000000p+3f },
+     {
+     0x1.a022ea0000000p+60f, 0x1.a022ea0000000p+60f, 0x1.a022ea0000000p+60f, 0x1.a022ea0000000p+60f,
+     0x1.aa49660000000p+62f, 0x1.aa49660000000p+62f, 0x1.aa49660000000p+62f, 0x1.aa49660000000p+62f,
+     -0x1.ac3a220000000p+62f, -0x1.ac3a220000000p+62f, -0x1.ac3a220000000p+62f, -0x1.ac3a220000000p+62f,
+     0x1.62cc880000000p+58f, 0x1.62cc880000000p+58f, 0x1.62cc880000000p+58f, 0x1.62cc880000000p+58f,
+     },
+     {
+     0x1.0415d20000000p+64f, 0x1.0415d20000000p+64f, 0x1.0415d20000000p+64f, 0x1.0415d20000000p+64f,
+     0x1.0a6de00000000p+66f, 0x1.0a6de00000000p+66f, 0x1.0a6de00000000p+66f, 0x1.0a6de00000000p+66f,
+     -0x1.0ba4540000000p+66f, -0x1.0ba4540000000p+66f, -0x1.0ba4540000000p+66f, -0x1.0ba4540000000p+66f,
+     0x1.bb7faa0000000p+61f, 0x1.bb7faa0000000p+61f, 0x1.bb7faa0000000p+61f, 0x1.bb7faa0000000p+61f,
+     },
+   },
+   {
+     { 0x1.d1a94a0000000p+39f },
+     {
+     0x1.de3d100000000p+63f, 0x1.de3d100000000p+63f, 0x1.de3d100000000p+63f, 0x1.de3d100000000p+63f,
+     0x1.82ed340000000p+60f, 0x1.82ed340000000p+60f, 0x1.82ed340000000p+60f, 0x1.82ed340000000p+60f,
+     0x1.e4075c0000000p+63f, 0x1.e4075c0000000p+63f, 0x1.e4075c0000000p+63f, 0x1.e4075c0000000p+63f,
+     0x1.b7f1700000000p+62f, 0x1.b7f1700000000p+62f, 0x1.b7f1700000000p+62f, 0x1.b7f1700000000p+62f,
+     },
+     {
+     0x1.b2f4960000000p+103f, 0x1.b2f4960000000p+103f, 0x1.b2f4960000000p+103f, 0x1.b2f4960000000p+103f,
+     0x1.5fe85c0000000p+100f, 0x1.5fe85c0000000p+100f, 0x1.5fe85c0000000p+100f, 0x1.5fe85c0000000p+100f,
+     0x1.b838ba0000000p+103f, 0x1.b838ba0000000p+103f, 0x1.b838ba0000000p+103f, 0x1.b838ba0000000p+103f,
+     0x1.90203e0000000p+102f, 0x1.90203e0000000p+102f, 0x1.90203e0000000p+102f, 0x1.90203e0000000p+102f,
+     },
+   },
+   {
+     { 0x1.0c6f7a0000000p-20f },
+     {
+     0x1.de3d100000000p+63f, 0x1.de3d100000000p+63f, 0x1.de3d100000000p+63f, 0x1.de3d100000000p+63f,
+     0x1.82ed340000000p+60f, 0x1.82ed340000000p+60f, 0x1.82ed340000000p+60f, 0x1.82ed340000000p+60f,
+     0x1.e4075c0000000p+63f, 0x1.e4075c0000000p+63f, 0x1.e4075c0000000p+63f, 0x1.e4075c0000000p+63f,
+     0x1.b7f1700000000p+62f, 0x1.b7f1700000000p+62f, 0x1.b7f1700000000p+62f, 0x1.b7f1700000000p+62f,
+     },
+     {
+     0x1.f5782e0000000p+43f, 0x1.f5782e0000000p+43f, 0x1.f5782e0000000p+43f, 0x1.f5782e0000000p+43f,
+     0x1.95b8ce0000000p+40f, 0x1.95b8ce0000000p+40f, 0x1.95b8ce0000000p+40f, 0x1.95b8ce0000000p+40f,
+     0x1.fb8a7a0000000p+43f, 0x1.fb8a7a0000000p+43f, 0x1.fb8a7a0000000p+43f, 0x1.fb8a7a0000000p+43f,
+     0x1.cd50560000000p+42f, 0x1.cd50560000000p+42f, 0x1.cd50560000000p+42f, 0x1.cd50560000000p+42f,
+     },
+   },
+ };
+ 
+ double TEST_BINOP_DATA(double, mul)[][4][N] =
+ {
+   {
+     { 0x1.0e15635000000p+40 },
+     {
+     -0x1.1cadd278efdbap+511, -0x1.1cadd278efdbap+511, -0x1.1cadd278efdbap+511, -0x1.1cadd278efdbap+511,
+     0x1.7ba13fea68f33p+511, 0x1.7ba13fea68f33p+511, 0x1.7ba13fea68f33p+511, 0x1.7ba13fea68f33p+511,
+     -0x1.2c51d0517111ep+511, -0x1.2c51d0517111ep+511, -0x1.2c51d0517111ep+511, -0x1.2c51d0517111ep+511,
+     0x1.aca8567d5e741p+511, 0x1.aca8567d5e741p+511, 0x1.aca8567d5e741p+511, 0x1.aca8567d5e741p+511,
+     },
+     {
+     -0x1.2c571cadff9bep+551, -0x1.2c571cadff9bep+551, -0x1.2c571cadff9bep+551, -0x1.2c571cadff9bep+551,
+     0x1.9083c8e97706cp+551, 0x1.9083c8e97706cp+551, 0x1.9083c8e97706cp+551, 0x1.9083c8e97706cp+551,
+     -0x1.3cd760ed790fcp+551, -0x1.3cd760ed790fcp+551, -0x1.3cd760ed790fcp+551, -0x1.3cd760ed790fcp+551,
+     0x1.c43d5b525ff4bp+551, 0x1.c43d5b525ff4bp+551, 0x1.c43d5b525ff4bp+551, 0x1.c43d5b525ff4bp+551,
+     },
+   },
+   {
+     { -0x1.34be569fb0edfp+79 },
+     {
+     0x1.9249ee7946e55p+511, 0x1.9249ee7946e55p+511, 0x1.9249ee7946e55p+511, 0x1.9249ee7946e55p+511,
+     -0x1.581af8ca64584p+510, -0x1.581af8ca64584p+510, -0x1.581af8ca64584p+510, -0x1.581af8ca64584p+510,
+     0x1.48f04988397e9p+511, 0x1.48f04988397e9p+511, 0x1.48f04988397e9p+511, 0x1.48f04988397e9p+511,
+     -0x1.d54d7ad0a0415p+511, -0x1.d54d7ad0a0415p+511, -0x1.d54d7ad0a0415p+511, -0x1.d54d7ad0a0415p+511,
+     },
+     {
+     -0x1.e52c0de8af5f2p+590, -0x1.e52c0de8af5f2p+590, -0x1.e52c0de8af5f2p+590, -0x1.e52c0de8af5f2p+590,
+     0x1.9f004bc7dd179p+589, 0x1.9f004bc7dd179p+589, 0x1.9f004bc7dd179p+589, 0x1.9f004bc7dd179p+589,
+     -0x1.8cb5aa1c618f5p+590, -0x1.8cb5aa1c618f5p+590, -0x1.8cb5aa1c618f5p+590, -0x1.8cb5aa1c618f5p+590,
+     0x1.1aff130877303p+591, 0x1.1aff130877303p+591, 0x1.1aff130877303p+591, 0x1.1aff130877303p+591,
+     },
+   },
+   {
+     { 0x1.5aac1aa995dfbp-511 },
+     {
+     -0x1.b1dc3d62e68d9p+511, -0x1.b1dc3d62e68d9p+511, -0x1.b1dc3d62e68d9p+511, -0x1.b1dc3d62e68d9p+511,
+     0x1.1ea30828d414dp+511, 0x1.1ea30828d414dp+511, 0x1.1ea30828d414dp+511, 0x1.1ea30828d414dp+511,
+     -0x1.f88d34164cbd0p+508, -0x1.f88d34164cbd0p+508, -0x1.f88d34164cbd0p+508, -0x1.f88d34164cbd0p+508,
+     0x1.c9a81c74a1362p+510, 0x1.c9a81c74a1362p+510, 0x1.c9a81c74a1362p+510, 0x1.c9a81c74a1362p+510,
+     },
+     {
+     -0x1.25c3ac1058579p+1, -0x1.25c3ac1058579p+1, -0x1.25c3ac1058579p+1, -0x1.25c3ac1058579p+1,
+     0x1.84290c6b1a568p+0, 0x1.84290c6b1a568p+0, 0x1.84290c6b1a568p+0, 0x1.84290c6b1a568p+0,
+     -0x1.55a105e8db4bep-2, -0x1.55a105e8db4bep-2, -0x1.55a105e8db4bep-2, -0x1.55a105e8db4bep-2,
+     0x1.35e071897f867p+0, 0x1.35e071897f867p+0, 0x1.35e071897f867p+0, 0x1.35e071897f867p+0,
+     },
+   },
+ };
+ 
+ _Float16 TEST_BINOP_DATA(_Float16, rdiv)[][4][N] =
+ {
+   {
+     { 0x1.0000000000000p+0f16 },
+     {
+     0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16,
+     0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16,
+     0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16,
+     0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16,
+     },
+     {
+     0x1.4800000000000p-5f16, 0x1.4800000000000p-5f16, 0x1.4800000000000p-5f16, 0x1.4800000000000p-5f16,
+     0x1.2980000000000p-7f16, 0x1.2980000000000p-7f16, 0x1.2980000000000p-7f16, 0x1.2980000000000p-7f16,
+     0x1.3780000000000p-6f16, 0x1.3780000000000p-6f16, 0x1.3780000000000p-6f16, 0x1.3780000000000p-6f16,
+     0x1.64c0000000000p-5f16, 0x1.64c0000000000p-5f16, 0x1.64c0000000000p-5f16, 0x1.64c0000000000p-5f16,
+     },
+   },
+   {
+     { 0x1.0000000000000p+0f16 },
+     {
+     -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16,
+     0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16,
+     -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16,
+     -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16,
+     },
+     {
+     -0x1.81c0000000000p-6f16, -0x1.81c0000000000p-6f16, -0x1.81c0000000000p-6f16, -0x1.81c0000000000p-6f16,
+     0x1.2280000000000p-7f16, 0x1.2280000000000p-7f16, 0x1.2280000000000p-7f16, 0x1.2280000000000p-7f16,
+     -0x1.0040000000000p-8f16, -0x1.0040000000000p-8f16, -0x1.0040000000000p-8f16, -0x1.0040000000000p-8f16,
+     -0x1.4400000000000p-7f16, -0x1.4400000000000p-7f16, -0x1.4400000000000p-7f16, -0x1.4400000000000p-7f16,
+     },
+   },
+   {
+     { 0x1.9000000000000p+6f16 },
+     {
+     -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16,
+     -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16,
+     0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16,
+     -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16,
+     },
+     {
+     -0x1.86c0000000000p+1f16, -0x1.86c0000000000p+1f16, -0x1.86c0000000000p+1f16, -0x1.86c0000000000p+1f16,
+     -0x1.a600000000000p-2f16, -0x1.a600000000000p-2f16, -0x1.a600000000000p-2f16, -0x1.a600000000000p-2f16,
+     0x1.f7c0000000000p+1f16, 0x1.f7c0000000000p+1f16, 0x1.f7c0000000000p+1f16, 0x1.f7c0000000000p+1f16,
+     -0x1.82c0000000000p+1f16, -0x1.82c0000000000p+1f16, -0x1.82c0000000000p+1f16, -0x1.82c0000000000p+1f16,
+     },
+   },
+ };
+ 
+ float TEST_BINOP_DATA(float, rdiv)[][4][N] =
+ {
+   {
+     { 0x1.0000000000000p+0f },
+     {
+     0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f,
+     0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f,
+     0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f,
+     0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f,
+     },
+     {
+     0x1.47c7360000000p-61f, 0x1.47c7360000000p-61f, 0x1.47c7360000000p-61f, 0x1.47c7360000000p-61f,
+     0x1.2969980000000p-63f, 0x1.2969980000000p-63f, 0x1.2969980000000p-63f, 0x1.2969980000000p-63f,
+     0x1.37651e0000000p-62f, 0x1.37651e0000000p-62f, 0x1.37651e0000000p-62f, 0x1.37651e0000000p-62f,
+     0x1.647b220000000p-61f, 0x1.647b220000000p-61f, 0x1.647b220000000p-61f, 0x1.647b220000000p-61f,
+     },
+   },
+   {
+     { 0x1.fffffe0000000p+63f },
+     {
+     -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f,
+     0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f,
+     -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f,
+     -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f,
+     },
+     {
+     -0x1.81a4f80000000p+2f, -0x1.81a4f80000000p+2f, -0x1.81a4f80000000p+2f, -0x1.81a4f80000000p+2f,
+     0x1.227b0a0000000p+1f, 0x1.227b0a0000000p+1f, 0x1.227b0a0000000p+1f, 0x1.227b0a0000000p+1f,
+     -0x1.000efe0000000p+0f, -0x1.000efe0000000p+0f, -0x1.000efe0000000p+0f, -0x1.000efe0000000p+0f,
+     -0x1.43c6b20000000p+1f, -0x1.43c6b20000000p+1f, -0x1.43c6b20000000p+1f, -0x1.43c6b20000000p+1f,
+     },
+   },
+   {
+     { -0x1.d301720000000p+104f },
+     {
+     -0x1.062a340000000p+61f, -0x1.062a340000000p+61f, -0x1.062a340000000p+61f, -0x1.062a340000000p+61f,
+     -0x1.e573960000000p+63f, -0x1.e573960000000p+63f, -0x1.e573960000000p+63f, -0x1.e573960000000p+63f,
+     0x1.96d5c20000000p+60f, 0x1.96d5c20000000p+60f, 0x1.96d5c20000000p+60f, 0x1.96d5c20000000p+60f,
+     -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f,
+     },
+     {
+     0x1.c806200000000p+43f, 0x1.c806200000000p+43f, 0x1.c806200000000p+43f, 0x1.c806200000000p+43f,
+     0x1.ec8b9e0000000p+40f, 0x1.ec8b9e0000000p+40f, 0x1.ec8b9e0000000p+40f, 0x1.ec8b9e0000000p+40f,
+     -0x1.25dcbc0000000p+44f, -0x1.25dcbc0000000p+44f, -0x1.25dcbc0000000p+44f, -0x1.25dcbc0000000p+44f,
+     0x1.c348400000000p+43f, 0x1.c348400000000p+43f, 0x1.c348400000000p+43f, 0x1.c348400000000p+43f,
+     },
+   },
+ };
+ 
+ double TEST_BINOP_DATA(double, rdiv)[][4][N] =
+ {
+   {
+     { 0x1.0000000000000p+0 },
+     {
+     0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508,
+     0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510,
+     0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509,
+     0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508,
+     },
+     {
+     0x1.47c734d265b62p-509, 0x1.47c734d265b62p-509, 0x1.47c734d265b62p-509, 0x1.47c734d265b62p-509,
+     0x1.296997569d3cdp-511, 0x1.296997569d3cdp-511, 0x1.296997569d3cdp-511, 0x1.296997569d3cdp-511,
+     0x1.37651dc4c34fcp-510, 0x1.37651dc4c34fcp-510, 0x1.37651dc4c34fcp-510, 0x1.37651dc4c34fcp-510,
+     0x1.647b1ff508275p-509, 0x1.647b1ff508275p-509, 0x1.647b1ff508275p-509, 0x1.647b1ff508275p-509,
+     },
+   },
+   {
+     { 0x1.afcef51f0fb5fp+265 },
+     {
+     -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509,
+     0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510,
+     -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511,
+     -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510,
+     },
+     {
+     -0x1.453e40c97ee2ap-244, -0x1.453e40c97ee2ap-244, -0x1.453e40c97ee2ap-244, -0x1.453e40c97ee2ap-244,
+     0x1.e9f7fd1cca941p-246, 0x1.e9f7fd1cca941p-246, 0x1.e9f7fd1cca941p-246, 0x1.e9f7fd1cca941p-246,
+     -0x1.afe83ffcda969p-247, -0x1.afe83ffcda969p-247, -0x1.afe83ffcda969p-247, -0x1.afe83ffcda969p-247,
+     -0x1.1110a2fba3e0dp-245, -0x1.1110a2fba3e0dp-245, -0x1.1110a2fba3e0dp-245, -0x1.1110a2fba3e0dp-245,
+     },
+   },
+   {
+     { -0x1.ed8d34e547314p+597 },
+     {
+     -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509,
+     -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511,
+     0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508,
+     -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509,
+     },
+     {
+     0x1.e1f211cce49a8p+88, 0x1.e1f211cce49a8p+88, 0x1.e1f211cce49a8p+88, 0x1.e1f211cce49a8p+88,
+     0x1.044581e6878d3p+86, 0x1.044581e6878d3p+86, 0x1.044581e6878d3p+86, 0x1.044581e6878d3p+86,
+     -0x1.3690f29d3d5d0p+89, -0x1.3690f29d3d5d0p+89, -0x1.3690f29d3d5d0p+89, -0x1.3690f29d3d5d0p+89,
+     0x1.dcef333871e2dp+88, 0x1.dcef333871e2dp+88, 0x1.dcef333871e2dp+88, 0x1.dcef333871e2dp+88,
+     },
+   },
+ };
+ 
+ _Float16 TEST_BINOP_DATA(_Float16, min)[][4][N] =
+ {
+   {
+     { 0x1.0000000000000p+0f16 },
+     {
+     0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16,
+     0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16,
+     0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16,
+     0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16,
+     },
+     {
+     0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16,
+     0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16,
+     0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16,
+     0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16,
+     },
+   },
+   {
+     { 0x1.0000000000000p+0f16 },
+     {
+     -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16,
+     0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16,
+     -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16,
+     -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16,
+     },
+     {
+     -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16,
+     0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16, 0x1.0000000000000p+0f16,
+     -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16,
+     -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16,
+     },
+   },
+   {
+     { -0x1.0000000000000p+0f16 },
+     {
+     -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16,
+     -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16,
+     0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16,
+     -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16,
+     },
+     {
+     -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16,
+     -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16,
+     -0x1.0000000000000p+0f16, -0x1.0000000000000p+0f16, -0x1.0000000000000p+0f16, -0x1.0000000000000p+0f16,
+     -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16,
+     },
+   },
+ };
+ 
+ float TEST_BINOP_DATA(float, min)[][4][N] =
+ {
+   {
+     { 0x1.0000000000000p+0f },
+     {
+     0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f,
+     0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f,
+     0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f,
+     0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f,
+     },
+     {
+     0x1.0000000000000p+0f, 0x1.0000000000000p+0f, 0x1.0000000000000p+0f, 0x1.0000000000000p+0f,
+     0x1.0000000000000p+0f, 0x1.0000000000000p+0f, 0x1.0000000000000p+0f, 0x1.0000000000000p+0f,
+     0x1.0000000000000p+0f, 0x1.0000000000000p+0f, 0x1.0000000000000p+0f, 0x1.0000000000000p+0f,
+     0x1.0000000000000p+0f, 0x1.0000000000000p+0f, 0x1.0000000000000p+0f, 0x1.0000000000000p+0f,
+     },
+   },
+   {
+     { 0x1.0000000000000p+0f },
+     {
+     -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f,
+     0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f,
+     -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f,
+     -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f,
+     },
+     {
+     -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f,
+     0x1.0000000000000p+0f, 0x1.0000000000000p+0f, 0x1.0000000000000p+0f, 0x1.0000000000000p+0f,
+     -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f,
+     -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f,
+     },
+   },
+   {
+     { -0x1.bc16d60000000p+59f },
+     {
+     -0x1.062a340000000p+61f, -0x1.062a340000000p+61f, -0x1.062a340000000p+61f, -0x1.062a340000000p+61f,
+     -0x1.e573960000000p+63f, -0x1.e573960000000p+63f, -0x1.e573960000000p+63f, -0x1.e573960000000p+63f,
+     0x1.96d5c20000000p+60f, 0x1.96d5c20000000p+60f, 0x1.96d5c20000000p+60f, 0x1.96d5c20000000p+60f,
+     -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f,
+     },
+     {
+     -0x1.062a340000000p+61f, -0x1.062a340000000p+61f, -0x1.062a340000000p+61f, -0x1.062a340000000p+61f,
+     -0x1.e573960000000p+63f, -0x1.e573960000000p+63f, -0x1.e573960000000p+63f, -0x1.e573960000000p+63f,
+     -0x1.bc16d60000000p+59f, -0x1.bc16d60000000p+59f, -0x1.bc16d60000000p+59f, -0x1.bc16d60000000p+59f,
+     -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f,
+     },
+   },
+ };
+ 
+ double TEST_BINOP_DATA(double, min)[][4][N] =
+ {
+   {
+     { 0x1.0000000000000p+0 },
+     {
+     0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508,
+     0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510,
+     0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509,
+     0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508,
+     },
+     {
+     0x1.0000000000000p+0, 0x1.0000000000000p+0, 0x1.0000000000000p+0, 0x1.0000000000000p+0,
+     0x1.0000000000000p+0, 0x1.0000000000000p+0, 0x1.0000000000000p+0, 0x1.0000000000000p+0,
+     0x1.0000000000000p+0, 0x1.0000000000000p+0, 0x1.0000000000000p+0, 0x1.0000000000000p+0,
+     0x1.0000000000000p+0, 0x1.0000000000000p+0, 0x1.0000000000000p+0, 0x1.0000000000000p+0,
+     },
+   },
+   {
+     { 0x1.0000000000000p+0 },
+     {
+     -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509,
+     0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510,
+     -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511,
+     -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510,
+     },
+     {
+     -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509,
+     0x1.0000000000000p+0, 0x1.0000000000000p+0, 0x1.0000000000000p+0, 0x1.0000000000000p+0,
+     -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511,
+     -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510,
+     },
+   },
+   {
+     { -0x1.317e5ef3ab327p+508 },
+     {
+     -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509,
+     -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511,
+     0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508,
+     -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509,
+     },
+     {
+     -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509,
+     -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511,
+     -0x1.317e5ef3ab327p+508, -0x1.317e5ef3ab327p+508, -0x1.317e5ef3ab327p+508, -0x1.317e5ef3ab327p+508,
+     -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509,
+     },
+   },
+ };
+ 
+ #endif
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_run.h gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_run.h
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_run.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_run.h	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,42 ----
+ #ifndef HAVE_DEFINED_VF_BINOP_RUN_H
+ #define HAVE_DEFINED_VF_BINOP_RUN_H
+ 
+ #include <math.h>
+ #include <stdio.h>
+ 
+ #define TYPE_FABS(x, T)                                                        \
+   (__builtin_types_compatible_p (T, double) ? fabs (x) : fabsf (x))
+ 
+ #define MAX_RELATIVE_DIFF(T)                                                   \
+   (__builtin_types_compatible_p (T, _Float16) ? 0.1f  :                        \
+   (__builtin_types_compatible_p (T, float)    ? 0.01f : 0.01))
+ 
+ int
+ main ()
+ {
+   unsigned i, k;
+   T out[N];
+ 
+   for (i = 0; i < sizeof (TEST_DATA) / sizeof (TEST_DATA[0]); i++)
+     {
+       T f = TEST_DATA[i][0][0];
+       T *in = TEST_DATA[i][1];
+       T *expect = TEST_DATA[i][2];
+ 
+       TEST_RUN (T, NAME, out, in, f, N);
+ 
+       for (k = 0; k < N; k++)
+ 	{
+ 	  T diff = expect[k] - out[k];
+ 	  if (TYPE_FABS (diff, T)
+ 	      > MAX_RELATIVE_DIFF (T) * TYPE_FABS (expect[k], T)) {
+         printf("Mismatch at i=%u, k=%u: expect=%f, out=%f, diff=%f\n", i, k, (double)expect[k], (double)out[k], (double)diff);
+         __builtin_abort ();
+       }
+ 	}
+     }
+ 
+   return 0;
+ }
+ 
+ #endif
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f16.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-require-effective-target riscv_v_ok } */
+ /* { dg-require-effective-target riscv_zvfh_ok } */
+ /* { dg-add-options "riscv_v" } */
+ /* { dg-add-options "riscv_zvfh" } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    _Float16
+ #define FUNC MIN_FUNC_0_WRAP(T)
+ #define NAME min
+ 
+ DEF_VF_BINOP_CASE_2_WRAP (T, FUNC, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_CASE_2_WRAP(T, NAME, FUNC, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f32.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    float
+ #define FUNC MIN_FUNC_0_WRAP(T)
+ #define NAME min
+ 
+ DEF_VF_BINOP_CASE_2_WRAP (T, FUNC, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_CASE_2_WRAP(T, NAME, FUNC, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmin-run-1-f64.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    double
+ #define FUNC MIN_FUNC_0_WRAP(T)
+ #define NAME min
+ 
+ DEF_VF_BINOP_CASE_2_WRAP (T, FUNC, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_CASE_2_WRAP(T, NAME, FUNC, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f16.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-require-effective-target riscv_v_ok } */
+ /* { dg-require-effective-target riscv_zvfh_ok } */
+ /* { dg-add-options "riscv_v" } */
+ /* { dg-add-options "riscv_zvfh" } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    _Float16
+ #define NAME mul
+ 
+ DEF_VF_BINOP_CASE_0_WRAP (T, *, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f32.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    float
+ #define NAME mul
+ 
+ DEF_VF_BINOP_CASE_0_WRAP (T, *, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmul-run-1-f64.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    double
+ #define NAME mul
+ 
+ DEF_VF_BINOP_CASE_0_WRAP (T, *, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f16.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-require-effective-target riscv_v_ok } */
+ /* { dg-require-effective-target riscv_zvfh_ok } */
+ /* { dg-add-options "riscv_v" } */
+ /* { dg-add-options "riscv_zvfh" } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    _Float16
+ #define NAME rdiv
+ 
+ DEF_VF_BINOP_REVERSE_CASE_0_WRAP (T, /, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_REVERSE_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f32.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    float
+ #define NAME rdiv
+ 
+ DEF_VF_BINOP_REVERSE_CASE_0_WRAP (T, /, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_REVERSE_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f64.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    double
+ #define NAME rdiv
+ 
+ DEF_VF_BINOP_REVERSE_CASE_0_WRAP (T, /, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_REVERSE_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T int16_t
  
  TEST_BINARY_VX_SIGNED_0(T)
+ TEST_TERNARY_VX_SIGNED_0(T)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** TEST_BINARY_VX_SIGNED_0(T)
*** 21,23 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-times {vsadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vssub.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vaadd.vx} 2 } } */
+ /* { dg-final { scan-assembler-times {vmacc.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vnmsac.vx} 1 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T int32_t
  
  TEST_BINARY_VX_SIGNED_0(T)
+ TEST_TERNARY_VX_SIGNED_0(T)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** TEST_BINARY_VX_SIGNED_0(T)
*** 21,23 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-times {vsadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vssub.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vaadd.vx} 2 } } */
+ /* { dg-final { scan-assembler-times {vmacc.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vnmsac.vx} 1 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T int64_t
  
  TEST_BINARY_VX_SIGNED_0(T)
+ TEST_TERNARY_VX_SIGNED_0(T)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** TEST_BINARY_VX_SIGNED_0(T)
*** 24,26 ****
--- 26,30 ----
       "-O3 -mrvv-vector-bits=zvl -mrvv-max-lmul=m2"
       "-O3 -mrvv-vector-bits=zvl -mrvv-max-lmul=m4"
     } } } } */
+ /* { dg-final { scan-assembler-times {vmacc.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vnmsac.vx} 1 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T int8_t
  
  TEST_BINARY_VX_SIGNED_0(T)
+ TEST_TERNARY_VX_SIGNED_0(T)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** TEST_BINARY_VX_SIGNED_0(T)
*** 21,23 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-times {vsadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vssub.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vaadd.vx} 2 } } */
+ /* { dg-final { scan-assembler-times {vmacc.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vnmsac.vx} 1 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T uint16_t
  
  TEST_BINARY_VX_UNSIGNED_0(T)
+ TEST_TERNARY_VX_UNSIGNED_0(T)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** TEST_BINARY_VX_UNSIGNED_0(T)
*** 20,22 ****
--- 22,26 ----
  /* { dg-final { scan-assembler-times {vsaddu.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vssubu.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vaaddu.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmacc.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vnmsac.vx} 1 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T uint32_t
  
  TEST_BINARY_VX_UNSIGNED_0(T)
+ TEST_TERNARY_VX_UNSIGNED_0(T)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** TEST_BINARY_VX_UNSIGNED_0(T)
*** 20,22 ****
--- 22,26 ----
  /* { dg-final { scan-assembler-times {vsaddu.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vssubu.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vaaddu.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmacc.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vnmsac.vx} 1 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T uint64_t
  
  TEST_BINARY_VX_UNSIGNED_0(T)
+ TEST_TERNARY_VX_UNSIGNED_0(T)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** TEST_BINARY_VX_UNSIGNED_0(T)
*** 23,25 ****
--- 25,29 ----
       "-O3 -mrvv-vector-bits=zvl -mrvv-max-lmul=m2"
       "-O3 -mrvv-vector-bits=zvl -mrvv-max-lmul=m4"
     } } } } } */
+ /* { dg-final { scan-assembler-times {vmacc.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vnmsac.vx} 1 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=0" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T uint8_t
  
  TEST_BINARY_VX_UNSIGNED_0(T)
+ TEST_TERNARY_VX_UNSIGNED_0(T)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** TEST_BINARY_VX_UNSIGNED_0(T)
*** 20,22 ****
--- 22,26 ----
  /* { dg-final { scan-assembler-times {vsaddu.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vssubu.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vaaddu.vx} 2 } } */
+ /* { dg-final { scan-assembler-times {vmacc.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vnmsac.vx} 1 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T int16_t
  
  TEST_BINARY_VX_SIGNED_0(T)
+ TEST_TERNARY_VX_SIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_SIGNED_0(T)
*** 21,23 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vsadd.vx} } } */
  /* { dg-final { scan-assembler-not {vssub.vx} } } */
  /* { dg-final { scan-assembler-not {vaadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T int32_t
  
  TEST_BINARY_VX_SIGNED_0(T)
+ TEST_TERNARY_VX_SIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_SIGNED_0(T)
*** 21,23 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vsadd.vx} } } */
  /* { dg-final { scan-assembler-not {vssub.vx} } } */
  /* { dg-final { scan-assembler-not {vaadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T int64_t
  
  TEST_BINARY_VX_SIGNED_0(T)
+ TEST_TERNARY_VX_SIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_SIGNED_0(T)
*** 21,23 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vsadd.vx} } } */
  /* { dg-final { scan-assembler-not {vssub.vx} } } */
  /* { dg-final { scan-assembler-not {vaadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T int8_t
  
  TEST_BINARY_VX_SIGNED_0(T)
+ TEST_TERNARY_VX_SIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_SIGNED_0(T)
*** 21,23 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vsadd.vx} } } */
  /* { dg-final { scan-assembler-not {vssub.vx} } } */
  /* { dg-final { scan-assembler-not {vaadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T uint16_t
  
  TEST_BINARY_VX_UNSIGNED_0(T)
+ TEST_TERNARY_VX_UNSIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_UNSIGNED_0(T)
*** 20,22 ****
--- 22,26 ----
  /* { dg-final { scan-assembler-not {vsaddu.vx} } } */
  /* { dg-final { scan-assembler-not {vssubu.vx} } } */
  /* { dg-final { scan-assembler-not {vaaddu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T uint32_t
  
  TEST_BINARY_VX_UNSIGNED_0(T)
+ TEST_TERNARY_VX_UNSIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_UNSIGNED_0(T)
*** 20,22 ****
--- 22,26 ----
  /* { dg-final { scan-assembler-not {vsaddu.vx} } } */
  /* { dg-final { scan-assembler-not {vssubu.vx} } } */
  /* { dg-final { scan-assembler-not {vaaddu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T uint64_t
  
  TEST_BINARY_VX_UNSIGNED_0(T)
+ TEST_TERNARY_VX_UNSIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_UNSIGNED_0(T)
*** 20,22 ****
--- 22,26 ----
  /* { dg-final { scan-assembler-not {vsaddu.vx} } } */
  /* { dg-final { scan-assembler-not {vssubu.vx} } } */
  /* { dg-final { scan-assembler-not {vaaddu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=1" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T uint8_t
  
  TEST_BINARY_VX_UNSIGNED_0(T)
+ TEST_TERNARY_VX_UNSIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_UNSIGNED_0(T)
*** 20,22 ****
--- 22,26 ----
  /* { dg-final { scan-assembler-not {vsaddu.vx} } } */
  /* { dg-final { scan-assembler-not {vssubu.vx} } } */
  /* { dg-final { scan-assembler-not {vaaddu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T int16_t
  
  TEST_BINARY_VX_SIGNED_0(T)
+ TEST_TERNARY_VX_SIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_SIGNED_0(T)
*** 21,23 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vsadd.vx} } } */
  /* { dg-final { scan-assembler-not {vssub.vx} } } */
  /* { dg-final { scan-assembler-not {vaadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T int32_t
  
  TEST_BINARY_VX_SIGNED_0(T)
+ TEST_TERNARY_VX_SIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_SIGNED_0(T)
*** 21,23 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vsadd.vx} } } */
  /* { dg-final { scan-assembler-not {vssub.vx} } } */
  /* { dg-final { scan-assembler-not {vaadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T int64_t
  
  TEST_BINARY_VX_SIGNED_0(T)
+ TEST_TERNARY_VX_SIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_SIGNED_0(T)
*** 21,23 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vsadd.vx} } } */
  /* { dg-final { scan-assembler-not {vssub.vx} } } */
  /* { dg-final { scan-assembler-not {vaadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T int8_t
  
  TEST_BINARY_VX_SIGNED_0(T)
+ TEST_TERNARY_VX_SIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_SIGNED_0(T)
*** 21,23 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vsadd.vx} } } */
  /* { dg-final { scan-assembler-not {vssub.vx} } } */
  /* { dg-final { scan-assembler-not {vaadd.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T uint16_t
  
  TEST_BINARY_VX_UNSIGNED_0(T)
+ TEST_TERNARY_VX_UNSIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_UNSIGNED_0(T)
*** 20,22 ****
--- 22,26 ----
  /* { dg-final { scan-assembler-not {vsaddu.vx} } } */
  /* { dg-final { scan-assembler-not {vssubu.vx} } } */
  /* { dg-final { scan-assembler-not {vaaddu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T uint32_t
  
  TEST_BINARY_VX_UNSIGNED_0(T)
+ TEST_TERNARY_VX_UNSIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_UNSIGNED_0(T)
*** 20,22 ****
--- 22,26 ----
  /* { dg-final { scan-assembler-not {vsaddu.vx} } } */
  /* { dg-final { scan-assembler-not {vssubu.vx} } } */
  /* { dg-final { scan-assembler-not {vaaddu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T uint64_t
  
  TEST_BINARY_VX_UNSIGNED_0(T)
+ TEST_TERNARY_VX_UNSIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_UNSIGNED_0(T)
*** 20,22 ****
--- 22,26 ----
  /* { dg-final { scan-assembler-not {vsaddu.vx} } } */
  /* { dg-final { scan-assembler-not {vssubu.vx} } } */
  /* { dg-final { scan-assembler-not {vaaddu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c	Sun Aug 24 22:33:04 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c	Sun Aug 31 22:33:00 2025
***************
*** 2,11 ****
--- 2,13 ----
  /* { dg-options "-march=rv64gcv -mabi=lp64d --param=gpr2vr-cost=15" } */
  
  #include "vx_binary.h"
+ #include "vx_ternary.h"
  
  #define T uint8_t
  
  TEST_BINARY_VX_UNSIGNED_0(T)
+ TEST_TERNARY_VX_UNSIGNED_0(T)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** TEST_BINARY_VX_UNSIGNED_0(T)
*** 20,22 ****
--- 22,26 ----
  /* { dg-final { scan-assembler-not {vsaddu.vx} } } */
  /* { dg-final { scan-assembler-not {vssubu.vx} } } */
  /* { dg-final { scan-assembler-not {vaaddu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmacc.vx} } } */
+ /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary.h gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary.h
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary.h	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,37 ----
+ #ifndef HAVE_DEFINED_VX_VF_TERNARY_H
+ #define HAVE_DEFINED_VX_VF_TERNARY_H
+ 
+ #include <stdint.h>
+ 
+ #undef HAS_INT128
+ 
+ #if __riscv_xlen == 64
+ #define HAS_INT128
+ typedef unsigned __int128 uint128_t;
+ typedef signed __int128 int128_t;
+ #endif
+ 
+ #define DEF_VX_TERNARY_CASE_0(T, OP_1, OP_2, NAME)                        \
+ void                                                                      \
+ test_vx_ternary_##NAME##_##T##_case_0 (T * restrict vd, T * restrict vs2, \
+                                        T rs1, unsigned n)                 \
+ {                                                                         \
+   for (unsigned i = 0; i < n; i++)                                        \
+     vd[i] = vd[i] OP_2 vs2[i] OP_1 rs1;                                   \
+ }
+ #define DEF_VX_TERNARY_CASE_0_WRAP(T, OP_1, OP_2, NAME) \
+   DEF_VX_TERNARY_CASE_0(T, OP_1, OP_2, NAME)
+ #define RUN_VX_TERNARY_CASE_0(T, NAME, vd, vs2, rs1, n) \
+   test_vx_ternary_##NAME##_##T##_case_0 (vd, vs2, rs1, n)
+ #define RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0(T, NAME, vd, vs2, rs1, n)
+ 
+ #define TEST_TERNARY_VX_SIGNED_0(T)                                \
+   DEF_VX_TERNARY_CASE_0_WRAP(T, *, +, macc)                        \
+   DEF_VX_TERNARY_CASE_0_WRAP(T, *, -, nmsac)                       \
+ 
+ #define TEST_TERNARY_VX_UNSIGNED_0(T)                              \
+   DEF_VX_TERNARY_CASE_0_WRAP(T, *, +, macc)                        \
+   DEF_VX_TERNARY_CASE_0_WRAP(T, *, -, nmsac)                       \
+ 
+ #endif
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_data.h gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_data.h
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_data.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_data.h	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,745 ----
+ #ifndef HAVE_DEFINED_VX_TERNARY_DATA_H
+ #define HAVE_DEFINED_VX_TERNARY_DATA_H
+ 
+ #define N 16
+ 
+ #define TEST_TERNARY_DATA(T, NAME)      test_##T##_##NAME##_data
+ #define TEST_TERNARY_DATA_WRAP(T, NAME) TEST_TERNARY_DATA(T, NAME)
+ 
+ int8_t TEST_TERNARY_DATA(int8_t, macc)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+       -1, -1, -1, -1,
+     },
+     {
+        1,  1,  1,  1,
+        3,  3,  3,  3,
+       -1, -1, -1, -1,
+       -3, -3, -3, -3,
+     },
+   },
+   {
+     { 127 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        9,  9,  9,  9,
+       -8, -8, -8, -8,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        127,  127,  127,  127,
+          2,    2,    2,    2,
+          0,    0,    0,    0,
+       -128, -128, -128, -128,
+     },
+     {
+        127,  127,  127,  127,
+        121,  121,  121,  121,
+          8,    8,    8,    8,
+       -126, -126, -126, -126,
+     },
+   },
+ };
+ 
+ int16_t TEST_TERNARY_DATA(int16_t, macc)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+       -1, -1, -1, -1,
+     },
+     {
+        1,  1,  1,  1,
+        3,  3,  3,  3,
+       -1, -1, -1, -1,
+       -3, -3, -3, -3,
+     },
+   },
+   {
+     { 32767 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        9,  9,  9,  9,
+       -8, -8, -8, -8,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        32767,  32767,  32767,  32767,
+            2,      2,      2,      2,
+            0,      0,      0,      0,
+       -32768, -32768, -32768, -32768,
+     },
+     {
+        32767,  32767,  32767,  32767,
+        32761,  32761,  32761,  32761,
+            8,      8,      8,      8,
+       -32766, -32766, -32766, -32766,
+     },
+   },
+ };
+ 
+ int32_t TEST_TERNARY_DATA(int32_t, macc)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+       -1, -1, -1, -1,
+     },
+     {
+        1,  1,  1,  1,
+        3,  3,  3,  3,
+       -1, -1, -1, -1,
+       -3, -3, -3, -3,
+     },
+   },
+   {
+     { 2147483647 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        9,  9,  9,  9,
+       -8, -8, -8, -8,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        2147483647,  2147483647,  2147483647,  2147483647,
+                 2,           2,           2,           2,
+                 0,           0,           0,           0,
+       -2147483648, -2147483648, -2147483648, -2147483648,
+     },
+     {
+        2147483647,  2147483647,  2147483647,  2147483647,
+        2147483641,  2147483641,  2147483641,  2147483641,
+                 8,           8,           8,           8,
+       -2147483646, -2147483646, -2147483646, -2147483646,
+     },
+   },
+ };
+ 
+ int64_t TEST_TERNARY_DATA(int64_t, macc)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+       -1, -1, -1, -1,
+     },
+     {
+        1,  1,  1,  1,
+        3,  3,  3,  3,
+       -1, -1, -1, -1,
+       -3, -3, -3, -3,
+     },
+   },
+   {
+     { 9223372036854775807ull }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        9,  9,  9,  9,
+       -8, -8, -8, -8,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+                             2,                       2,                       2,                       2,
+                             0,                       0,                       0,                       0,
+       -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+     },
+     {
+        9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+        9223372036854775801ull,  9223372036854775801ull,  9223372036854775801ull,  9223372036854775801ull,
+                             8,                       8,                       8,                       8,
+       -9223372036854775806ull, -9223372036854775806ull, -9223372036854775806ull, -9223372036854775806ull,
+     },
+   },
+ };
+ 
+ uint8_t TEST_TERNARY_DATA(uint8_t, macc)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        6,  6,  6,  6,
+        3,  3,  3,  3,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+        4,  4,  4,  4,
+     },
+     {
+        1,  1,  1,  1,
+        3,  3,  3,  3,
+        6,  6,  6,  6,
+        7,  7,  7,  7,
+     },
+   },
+   {
+     { 255 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        5,  5,  5,  5,
+        3,  3,  3,  3,
+        1,  1,  1,  1,
+     },
+     { /* vd */
+        127,  127,  127,  127,
+        255,  255,  255,  255,
+          0,    0,    0,    0,
+        128,  128,  128,  128,
+     },
+     {
+        127,  127,  127,  127,
+        250,  250,  250,  250,
+        253,  253,  253,  253,
+        127,  127,  127,  127,
+     },
+   },
+ };
+ 
+ uint16_t TEST_TERNARY_DATA(uint16_t, macc)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        6,  6,  6,  6,
+        3,  3,  3,  3,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+        4,  4,  4,  4,
+     },
+     {
+        1,  1,  1,  1,
+        3,  3,  3,  3,
+        6,  6,  6,  6,
+        7,  7,  7,  7,
+     },
+   },
+   {
+     { 65535 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        5,  5,  5,  5,
+        3,  3,  3,  3,
+        1,  1,  1,  1,
+     },
+     { /* vd */
+        32767,  32767,  32767,  32767,
+        65535,  65535,  65535,  65535,
+            0,      0,      0,      0,
+        32768,  32768,  32768,  32768,
+     },
+     {
+        32767,  32767,  32767,  32767,
+        65530,  65530,  65530,  65530,
+        65533,  65533,  65533,  65533,
+        32767,  32767,  32767,  32767,
+     },
+   },
+ };
+ 
+ uint32_t TEST_TERNARY_DATA(uint32_t, macc)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        6,  6,  6,  6,
+        3,  3,  3,  3,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+        4,  4,  4,  4,
+     },
+     {
+        1,  1,  1,  1,
+        3,  3,  3,  3,
+        6,  6,  6,  6,
+        7,  7,  7,  7,
+     },
+   },
+   {
+     { 4294967295 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        5,  5,  5,  5,
+        3,  3,  3,  3,
+        1,  1,  1,  1,
+     },
+     { /* vd */
+        2147483647,  2147483647,  2147483647,  2147483647,
+        4294967295,  4294967295,  4294967295,  4294967295,
+                 0,           0,           0,           0,
+        2147483648,  2147483648,  2147483648,  2147483648,
+     },
+     {
+        2147483647,  2147483647,  2147483647,  2147483647,
+        4294967290,  4294967290,  4294967290,  4294967290,
+        4294967293,  4294967293,  4294967293,  4294967293,
+        2147483647,  2147483647,  2147483647,  2147483647,
+     },
+   },
+ };
+ 
+ uint64_t TEST_TERNARY_DATA(uint64_t, macc)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        6,  6,  6,  6,
+        3,  3,  3,  3,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+        4,  4,  4,  4,
+     },
+     {
+        1,  1,  1,  1,
+        3,  3,  3,  3,
+        6,  6,  6,  6,
+        7,  7,  7,  7,
+     },
+   },
+   {
+     { 18446744073709551615ull }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        5,  5,  5,  5,
+        3,  3,  3,  3,
+        1,  1,  1,  1,
+     },
+     { /* vd */
+        9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+       18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull,
+                             0,                       0,                       0,                       0,
+        9223372036854775808ull,  9223372036854775808ull,  9223372036854775808ull,  9223372036854775808ull,
+     },
+     {
+        9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+       18446744073709551610ull, 18446744073709551610ull, 18446744073709551610ull, 18446744073709551610ull,
+       18446744073709551613ull, 18446744073709551613ull, 18446744073709551613ull, 18446744073709551613ull,
+        9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+     },
+   },
+ };
+ 
+ int8_t TEST_TERNARY_DATA(int8_t, nmsac)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+       -1, -1, -1, -1,
+     },
+     {
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+     },
+   },
+   {
+     { 127 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -8, -8, -8, -8,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        127,  127,  127,  127,
+          2,    2,    2,    2,
+          0,    0,    0,    0,
+       -128, -128, -128, -128,
+     },
+     {
+        127,  127,  127,  127,
+       -125, -125, -125, -125,
+         -8,   -8,   -8,   -8,
+        126,  126,  126,  126,
+     },
+   },
+ };
+ 
+ int16_t TEST_TERNARY_DATA(int16_t, nmsac)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+       -1, -1, -1, -1,
+     },
+     {
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+     },
+   },
+   {
+     { 32767 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -8, -8, -8, -8,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        32767,  32767,  32767,  32767,
+            2,      2,      2,      2,
+            0,      0,      0,      0,
+       -32768, -32768, -32768, -32768,
+     },
+     {
+        32767,  32767,  32767,  32767,
+       -32765, -32765, -32765, -32765,
+           -8,     -8,     -8,     -8,
+        32766,  32766,  32766,  32766,
+     },
+   },
+ };
+ 
+ int32_t TEST_TERNARY_DATA(int32_t, nmsac)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+       -1, -1, -1, -1,
+     },
+     {
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+     },
+   },
+   {
+     { 2147483647 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -8, -8, -8, -8,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        2147483647,  2147483647,  2147483647,  2147483647,
+                 2,           2,           2,           2,
+                 0,           0,           0,           0,
+       -2147483648, -2147483648, -2147483648, -2147483648,
+     },
+     {
+        2147483647,  2147483647,  2147483647,  2147483647,
+       -2147483645, -2147483645, -2147483645, -2147483645,
+                -8,          -8,          -8,          -8,
+        2147483646,  2147483646,  2147483646,  2147483646,
+     },
+   },
+ };
+ 
+ int64_t TEST_TERNARY_DATA(int64_t, nmsac)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        0,  0,  0,  0,
+       -1, -1, -1, -1,
+     },
+     {
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+     },
+   },
+   {
+     { 9223372036854775807ull }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -8, -8, -8, -8,
+       -2, -2, -2, -2,
+     },
+     { /* vd */
+        9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+                             2,                       2,                       2,                       2,
+                             0,                       0,                       0,                       0,
+       -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+     },
+     {
+        9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+       -9223372036854775805ull, -9223372036854775805ull, -9223372036854775805ull, -9223372036854775805ull,
+                            -8,                      -8,                      -8,                      -8,
+        9223372036854775806ull,  9223372036854775806ull,  9223372036854775806ull,  9223372036854775806ull,
+     },
+   },
+ };
+ 
+ uint8_t TEST_TERNARY_DATA(uint8_t, nmsac)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        8,  8,  8,  8,
+        7,  7,  7,  7,
+     },
+     {
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        7,  7,  7,  7,
+        5,  5,  5,  5,
+     },
+   },
+   {
+     { 128 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        8,  8,  8,  8,
+        2,  2,  2,  2,
+     },
+     { /* vd */
+        127,  127,  127,  127,
+        255,  255,  255,  255,
+        254,  254,  254,  254,
+        252,  252,  252,  252,
+     },
+     {
+        127,  127,  127,  127,
+        127,  127,  127,  127,
+        254,  254,  254,  254,
+        252,  252,  252,  252,
+     },
+   },
+ };
+ 
+ uint16_t TEST_TERNARY_DATA(uint16_t, nmsac)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        8,  8,  8,  8,
+        7,  7,  7,  7,
+     },
+     {
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        7,  7,  7,  7,
+        5,  5,  5,  5,
+     },
+   },
+   {
+     { 32768 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        8,  8,  8,  8,
+        2,  2,  2,  2,
+     },
+     { /* vd */
+        32767,  32767,  32767,  32767,
+        65535,  65535,  65535,  65535,
+        65534,  65534,  65534,  65534,
+        65532,  65532,  65532,  65532,
+     },
+     {
+        32767,  32767,  32767,  32767,
+        32767,  32767,  32767,  32767,
+        65534,  65534,  65534,  65534,
+        65532,  65532,  65532,  65532,
+     },
+   },
+ };
+ 
+ uint32_t TEST_TERNARY_DATA(uint32_t, nmsac)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        8,  8,  8,  8,
+        7,  7,  7,  7,
+     },
+     {
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        7,  7,  7,  7,
+        5,  5,  5,  5,
+     },
+   },
+   {
+     { 2147483648 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        8,  8,  8,  8,
+        2,  2,  2,  2,
+     },
+     { /* vd */
+        2147483647,  2147483647,  2147483647,  2147483647,
+        4294967295,  4294967295,  4294967295,  4294967295,
+        4294967294,  4294967294,  4294967294,  4294967294,
+        4294967292,  4294967292,  4294967292,  4294967292,
+     },
+     {
+        2147483647,  2147483647,  2147483647,  2147483647,
+        2147483647,  2147483647,  2147483647,  2147483647,
+        4294967294,  4294967294,  4294967294,  4294967294,
+        4294967292,  4294967292,  4294967292,  4294967292,
+     },
+   },
+ };
+ 
+ uint64_t TEST_TERNARY_DATA(uint64_t, nmsac)[][4][N] =
+ {
+   {
+     { 1 }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+     },
+     { /* vd */
+        1,  1,  1,  1,
+        2,  2,  2,  2,
+        8,  8,  8,  8,
+        7,  7,  7,  7,
+     },
+     {
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        7,  7,  7,  7,
+        5,  5,  5,  5,
+     },
+   },
+   {
+     { 9223372036854775808ull }, /* rs1 */
+     { /* vs2 */
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        8,  8,  8,  8,
+        2,  2,  2,  2,
+     },
+     { /* vd */
+         9223372036854775807ull,   9223372036854775807ull,   9223372036854775807ull,   9223372036854775807ull,
+        18446744073709551615ull,  18446744073709551615ull,  18446744073709551615ull,  18446744073709551615ull,
+        18446744073709551614ull,  18446744073709551614ull,  18446744073709551614ull,  18446744073709551614ull,
+        18446744073709551612ull,  18446744073709551612ull,  18446744073709551612ull,  18446744073709551612ull,
+     },
+     {
+         9223372036854775807ull,   9223372036854775807ull,   9223372036854775807ull,   9223372036854775807ull,
+         9223372036854775807ull,   9223372036854775807ull,   9223372036854775807ull,   9223372036854775807ull,
+        18446744073709551614ull,  18446744073709551614ull,  18446744073709551614ull,  18446744073709551614ull,
+        18446744073709551612ull,  18446744073709551612ull,  18446744073709551612ull,  18446744073709551612ull,
+     },
+   },
+ };
+ 
+ #endif
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_run.h gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_run.h
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_run.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_run.h	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,26 ----
+ #ifndef HAVE_DEFINED_VX_TERNARY_RUN_H
+ #define HAVE_DEFINED_VX_TERNARY_RUN_H
+ 
+ int
+ main ()
+ {
+   unsigned i, k;
+ 
+   for (i = 0; i < sizeof (TEST_DATA) / sizeof (TEST_DATA[0]); i++)
+     {
+       T rs1 = TEST_DATA[i][0][0];
+       T *vs2 = TEST_DATA[i][1];
+       T *vd = TEST_DATA[i][2];
+       T *expect = TEST_DATA[i][3];
+ 
+       TEST_RUN (T, NAME, vd, vs2, rs1, N);
+ 
+       for (k = 0; k < N; k++)
+ 	if (vd[k] != expect[k])
+ 	  __builtin_abort ();
+     }
+ 
+   return 0;
+ }
+ 
+ #endif
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i16.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          int16_t
+ #define NAME       macc
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, +, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i32.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          int32_t
+ #define NAME       macc
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, +, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i64.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          int64_t
+ #define NAME       macc
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, +, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i8.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i8.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-i8.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          int8_t
+ #define NAME       macc
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, +, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u16.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          uint16_t
+ #define NAME       macc
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, +, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u32.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          uint32_t
+ #define NAME       macc
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, +, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u64.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          uint64_t
+ #define NAME       macc
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, +, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u8.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u8.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmacc-run-1-u8.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          uint8_t
+ #define NAME       macc
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, +, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i16.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          int16_t
+ #define NAME       nmsac
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, -, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i32.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          int32_t
+ #define NAME       nmsac
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, -, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i64.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          int64_t
+ #define NAME       nmsac
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, -, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i8.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i8.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-i8.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          int8_t
+ #define NAME       nmsac
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, -, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u16.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          uint16_t
+ #define NAME       nmsac
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, -, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u32.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          uint32_t
+ #define NAME       nmsac
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, -, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u64.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          uint64_t
+ #define NAME       nmsac
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, -, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u8.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u8.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsac-run-1-u8.c	Sun Aug 31 22:33:00 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_ternary.h"
+ #include "vx_ternary_data.h"
+ 
+ #define T          uint8_t
+ #define NAME       nmsac
+ #define TEST_DATA  TEST_TERNARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_TERNARY_CASE_0_WRAP(T, *, -, NAME)
+ 
+ #define TEST_RUN(T, NAME, vd, vs2, rs1, n) \
+   RUN_VX_TERNARY_CASE_0_WRAP(T, NAME, vd, vs2, rs1, n)
+ 
+ #include "vx_ternary_run.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h	Sun Aug 24 22:33:05 2025
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h	Sun Aug 31 22:33:00 2025
*************** sat_u_mul_##NT##_from_##WT##_fmt_3 (NT a
*** 724,727 ****
--- 724,744 ----
    sat_u_mul_##NT##_from_##WT##_fmt_3 (a, b)
  #define RUN_SAT_U_MUL_FMT_3_WRAP(NT, WT, a, b) RUN_SAT_U_MUL_FMT_3(NT, WT, a, b)
  
+ #define DEF_SAT_U_MUL_FMT_4(NT, WT)             \
+ NT __attribute__((noinline))                    \
+ sat_u_mul_##NT##_from_##WT##_fmt_4 (NT a, NT b) \
+ {                                               \
+   WT x = (WT)a * (WT)b;                         \
+   NT max = -1;                                  \
+   if (x >= (WT)(max))                           \
+     return max;                                 \
+   else                                          \
+     return (NT)x;                               \
+ }
+ 
+ #define DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT) DEF_SAT_U_MUL_FMT_4(NT, WT)
+ #define RUN_SAT_U_MUL_FMT_4(NT, WT, a, b) \
+   sat_u_mul_##NT##_from_##WT##_fmt_4 (a, b)
+ #define RUN_SAT_U_MUL_FMT_4_WRAP(NT, WT, a, b) RUN_SAT_U_MUL_FMT_4(NT, WT, a, b)
+ 
  #endif
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u128.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u128.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u128.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint16_t
+ #define WT uint128_t
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u32.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint16_t
+ #define WT uint32_t
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u64.rv32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u64.rv32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u64.rv32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u64.rv32.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32gc -mabi=ilp32 -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint16_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u64.rv64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u64.rv64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u64.rv64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u16-from-u64.rv64.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint16_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u128.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u128.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u128.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint32_t
+ #define WT uint128_t
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u64.rv32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u64.rv32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u64.rv32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u64.rv32.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32gc -mabi=ilp32 -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint32_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u64.rv64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u64.rv64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u64.rv64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u32-from-u64.rv64.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint32_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u64-from-u128.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u64-from-u128.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u64-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u64-from-u128.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint64_t
+ #define WT uint128_t
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u128.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u128.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u128.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint128_t
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u16.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint16_t
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u32.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint32_t
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u64.rv32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u64.rv32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u64.rv32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u64.rv32.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32gc -mabi=ilp32 -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u64.rv64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u64.rv64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u64.rv64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u64.rv64.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u128.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u128.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u128.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint16_t
+ #define WT               uint128_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_4_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u32.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint16_t
+ #define WT               uint32_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_4_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u16-from-u64.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint16_t
+ #define WT               uint64_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_4_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u32-from-u128.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u32-from-u128.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u32-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u32-from-u128.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint32_t
+ #define WT               uint128_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_4_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u32-from-u64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u32-from-u64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u32-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u32-from-u64.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint32_t
+ #define WT               uint64_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_4_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u64-from-u128.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u64-from-u128.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u64-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u64-from-u128.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint64_t
+ #define WT               uint128_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_4_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u128.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u128.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u128.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint128_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_4_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u16.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u16.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u16.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint16_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_4_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u32.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u32.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u32.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint32_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_4_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u64.c gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u64.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u64.c	Sun Aug 31 22:33:01 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint64_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_4_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_4_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gcc.target/xtensa/bswap-SSAI8.c gcc-16-20250831/gcc/testsuite/gcc.target/xtensa/bswap-SSAI8.c
*** gcc-16-20250824/gcc/testsuite/gcc.target/xtensa/bswap-SSAI8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gcc.target/xtensa/bswap-SSAI8.c	Sun Aug 31 22:33:02 2025
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ extern void foo(void);
+ 
+ void test_0(volatile unsigned int a[], unsigned int b)
+ {
+   a[0] = __builtin_bswap32(a[0]);
+   a[1] = a[1] >> 9;
+   a[2] = __builtin_bswap32(a[2]);
+   a[3] = a[3] << b;
+   a[4] = __builtin_bswap32(a[4]);
+   foo();
+   a[5] = __builtin_bswap32(a[5]);
+   a[6] = __builtin_stdc_rotate_left (a[6], 13);
+   a[7] = __builtin_bswap32(a[7]);
+   asm volatile ("# asm volatile");
+   a[8] = __builtin_bswap32(a[8]);
+   a[9] = (a[9] << 9) | (b >> 23);
+   a[10] = __builtin_bswap32(a[10]);
+ }
+ 
+ void test_1(volatile unsigned long long a[])
+ {
+   a[0] = __builtin_bswap64(a[0]);
+   a[1] = __builtin_bswap64(a[1]);
+ }
+ 
+ /* { dg-final { scan-assembler-times "ssai\t8" 7 } } */
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/aliasing_dummy_1.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/aliasing_dummy_1.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/aliasing_dummy_1.f90	Sun Aug 24 22:33:07 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/aliasing_dummy_1.f90	Sun Aug 31 22:33:04 2025
*************** contains
*** 48,66 ****
    subroutine foo1 (slist, i)
      character(*), dimension(*) :: slist
      integer i
!     write (slist(i), '(2hi=,i3)') i
    end subroutine foo1
  
    subroutine foo2 (slist, i)
      character(5), dimension(:) :: slist
      integer i
!     write (slist(i), '(2hi=,i3)') i
    end subroutine foo2
  
    subroutine foo3 (slist, i)
      character(5), dimension(:,:) :: slist
      integer i
!     write (slist(1,1), '(2hi=,i3)') i
    end subroutine foo3
  
  end program test_lex
--- 48,66 ----
    subroutine foo1 (slist, i)
      character(*), dimension(*) :: slist
      integer i
!     write (slist(i), '(2hi=,i3)') i ! { dg-warning "H format specifier" }
    end subroutine foo1
  
    subroutine foo2 (slist, i)
      character(5), dimension(:) :: slist
      integer i
!     write (slist(i), '(2hi=,i3)') i ! { dg-warning "H format specifier" }
    end subroutine foo2
  
    subroutine foo3 (slist, i)
      character(5), dimension(:,:) :: slist
      integer i
!     write (slist(1,1), '(2hi=,i3)') i ! { dg-warning "H format specifier" }
    end subroutine foo3
  
  end program test_lex
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/argument_checking_15.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/argument_checking_15.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/argument_checking_15.f90	Sun Aug 24 22:33:07 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/argument_checking_15.f90	Sun Aug 31 22:33:04 2025
*************** subroutine test()
*** 45,52 ****
  implicit none
  character(len=5), pointer :: c
  character(len=5) :: str(5)
! call foo(c) ! { dg-warning "Character length mismatch" }
! call bar(str) ! { dg-warning "Character length mismatch" }
  contains
    subroutine foo(a)
      character(len=3), pointer :: a
--- 45,52 ----
  implicit none
  character(len=5), pointer :: c
  character(len=5) :: str(5)
! call foo(c) ! { dg-error "Character length mismatch" }
! call bar(str) ! { dg-error "Character length mismatch" }
  contains
    subroutine foo(a)
      character(len=3), pointer :: a
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/argument_checking_27.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/argument_checking_27.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/argument_checking_27.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/argument_checking_27.f90	Sun Aug 31 22:33:04 2025
***************
*** 0 ****
--- 1,240 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-std=f2018 -Wcharacter-truncation" }
+ ! PR fortran/93330
+ !
+ ! Exercise compile-time checking of character length of dummy vs.
+ ! actual arguments.  Based on original testcase by Tobias Burnus
+ 
+ module m
+   use iso_c_binding, only: c_char
+   implicit none
+ contains
+   ! scalar dummy
+   ! character(kind=1):
+   subroutine zero(x, y)
+     character(kind=1,len=0), value :: x
+     character(kind=1,len=1), value :: y
+     print '(5a)', 'zero >', x, '< >', y, '<'
+   end
+   subroutine one(x, y)
+     character(kind=1,len=1), value :: x
+     character(kind=1,len=1), value :: y
+     print '(5a)','one >', x, '< >', y, '<'
+   end
+   subroutine two(x, y)
+     character(kind=1,len=2), value :: x
+     character(kind=1,len=1), value :: y
+     print '(5a)','two >', x, '< >', y, '<'
+   end
+   subroutine cbind(x, y) bind(C)
+     character(kind=c_char,len=1), value :: x
+     character(kind=c_char,len=1), value :: y
+     print '(5a)','cbind >', x, '< >', y, '<'
+   end
+ 
+   ! character(kind=4):
+   subroutine zero4(x, y)
+     character(kind=4,len=0), value :: x
+     character(kind=1,len=1), value :: y
+     print '(5a)', 'zero4 >', x, '< >', y, '<'
+   end
+   subroutine one4(x, y)
+     character(kind=4,len=1), value :: x
+     character(kind=1,len=1), value :: y
+     print '(5a)','one4 >', x, '< >', y, '<'
+   end
+   subroutine two4(x, y)
+     character(kind=4,len=2), value :: x
+     character(kind=1,len=1), value :: y
+     print '(5a)','two4 >', x, '< >', y, '<'
+   end
+ 
+   ! character(kind=1):
+   ! array dummy, assumed size
+   subroutine zero_0(x, y)
+     character(kind=1,len=0) :: x(*)
+     character(kind=1,len=1), value :: y
+     print '(5a)', 'zero_0 >', x(1), '< >', y, '<'
+   end
+   subroutine one_0(x, y)
+     character(kind=1,len=1) :: x(*)
+     character(kind=1,len=1), value :: y
+     print '(5a)','one_0 >', x(1), '< >', y, '<'
+   end
+   subroutine two_0(x, y)
+     character(kind=1,len=2) :: x(*)
+     character(kind=1,len=1), value :: y
+     print '(5a)','two_0 >', x(1), '< >', y, '<'
+   end
+ 
+   ! array dummy, explicit size
+   subroutine zero_1(x, y)
+     character(kind=1,len=0) :: x(1)
+     character(kind=1,len=1), value :: y
+     print '(5a)', 'zero_1 >', x(1), '< >', y, '<'
+   end
+   subroutine one_1(x, y)
+     character(kind=1,len=1) :: x(1)
+     character(kind=1,len=1), value :: y
+     print '(5a)','one_1 >', x(1), '< >', y, '<'
+   end
+   subroutine two_1(x, y)
+     character(kind=1,len=2) :: x(1)
+     character(kind=1,len=1), value :: y
+     print '(5a)','two_1 >', x(1), '< >', y, '<'
+   end
+ 
+   ! array dummy, assumed shape
+   subroutine zero_a(x, y)
+     character(kind=1,len=0) :: x(:)
+     character(kind=1,len=1), value :: y
+     if (size (x) < 1) stop 99
+     print '(5a)', 'zero_a >', x(1), '< >', y, '<'
+   end
+   subroutine one_a(x, y)
+     character(kind=1,len=1) :: x(:)
+     character(kind=1,len=1), value :: y
+     if (size (x) < 1) stop 99
+     print '(5a)','one_a >', x(1), '< >', y, '<'
+   end
+   subroutine two_a(x, y)
+     character(kind=1,len=2) :: x(:)
+     character(kind=1,len=1), value :: y
+     if (size (x) < 1) stop 99
+     print '(5a)','two_a >', x(1), '< >', y, '<'
+   end
+ 
+   ! character(kind=4):
+   ! array dummy, assumed size
+   subroutine zero4_0(x, y)
+     character(kind=4,len=0) :: x(*)
+     character(kind=4,len=1), value :: y
+     print '(5a)', 'zero4_0 >', x(1), '< >', y, '<'
+   end
+   subroutine one4_0(x, y)
+     character(kind=4,len=1) :: x(*)
+     character(kind=4,len=1), value :: y
+     print '(5a)','one4_0 >', x(1), '< >', y, '<'
+   end
+   subroutine two4_0(x, y)
+     character(kind=4,len=2) :: x(*)
+     character(kind=4,len=1), value :: y
+     print '(5a)','two4_0 >', x(1), '< >', y, '<'
+   end
+ 
+   ! array dummy, explicit size
+   subroutine zero4_1(x, y)
+     character(kind=4,len=0) :: x(1)
+     character(kind=4,len=1), value :: y
+     print '(5a)', 'zero4_1 >', x(1), '< >', y, '<'
+   end
+   subroutine one4_1(x, y)
+     character(kind=4,len=1) :: x(1)
+     character(kind=4,len=1), value :: y
+     print '(5a)','one4_1 >', x(1), '< >', y, '<'
+   end
+   subroutine two4_1(x, y)
+     character(kind=4,len=2) :: x(1)
+     character(kind=4,len=1), value :: y
+     print '(5a)','two4_1 >', x(1), '< >', y, '<'
+   end
+ 
+   ! array dummy, assumed shape
+   subroutine zero4_a(x, y)
+     character(kind=4,len=0) :: x(:)
+     character(kind=4,len=1), value :: y
+     if (size (x) < 1) stop 99
+     print '(5a)', 'zero4_a >', x(1), '< >', y, '<'
+   end
+   subroutine one4_a(x, y)
+     character(kind=4,len=1) :: x(:)
+     character(kind=4,len=1), value :: y
+     if (size (x) < 1) stop 99
+     print '(5a)','one4_a >', x(1), '< >', y, '<'
+   end
+   subroutine two4_a(x, y)
+     character(kind=4,len=2) :: x(:)
+     character(kind=4,len=1), value :: y
+     if (size (x) < 1) stop 99
+     print '(5a)','two4_a >', x(1), '< >', y, '<'
+   end
+ end
+ 
+ program p
+   use m
+   implicit none
+   call zero('', '1')
+   call one ('', '2')      ! { dg-error "length of actual argument shorter" }
+   call one ('b'(3:2),'3') ! { dg-error "length of actual argument shorter" }
+   call two ('', '4')      ! { dg-error "length of actual argument shorter" }
+   call two ('f','5')      ! { dg-error "length of actual argument shorter" }
+ 
+   call cbind('',   '6')   ! { dg-error "length of actual argument shorter" }
+   call cbind('ABC','7')   ! { dg-warning "length of actual argument longer" }
+ 
+   ! character(kind=4):
+   call zero4(4_'', '8')
+   call zero4(4_'3','9')      ! { dg-warning "length of actual argument longer" }
+   call one4 (4_'', 'A')      ! { dg-error "length of actual argument shorter" }
+   call one4 (4_'b'(3:2),'B') ! { dg-error "length of actual argument shorter" }
+   call one4 (4_'bbcd'(3:3),'C')
+   call one4 (4_'cd','D')     ! { dg-warning "length of actual argument longer" }
+   call two4 (4_'',  'E')     ! { dg-error "length of actual argument shorter" }
+   call two4 (4_'f', 'F')     ! { dg-error "length of actual argument shorter" }
+   call two4 (4_'fgh','G')    ! { dg-warning "length of actual argument longer" }
+ 
+   ! array dummy, assumed size
+   call zero_0([''],'a')
+   call zero_0(['a'],'b')
+   call one_0 ([''],'c')
+   call one_0 (['b'],'d')
+   call one_0 (['cd'],'e')
+   call two_0 ([''],'f')
+   call two_0 (['fg'],'g')
+ 
+   ! array dummy, explicit size
+   call zero_1([''],'a')
+   call zero_1(['a'],'b')  ! { dg-warning "actual argument longer" }
+   call one_1 ([''],'c')   ! { dg-error "too few elements for dummy" }
+   call one_1 (['b'],'d')
+   call one_1 (['cd'],'e') ! { dg-warning "actual argument longer" }
+   call two_1 ([''],'f')   ! { dg-error "too few elements for dummy" }
+   call two_1 (['fg'],'h')
+ 
+   ! array dummy, assumed shape
+   call zero_a([''],'a')
+   call zero_a(['a'],'b')  ! { dg-error "Character length mismatch" }
+   call one_a ([''],'c')   ! { dg-error "Character length mismatch" }
+   call one_a (['b'],'d')
+   call one_a (['cd'],'e') ! { dg-error "Character length mismatch" }
+   call two_a ([''],'f')   ! { dg-error "Character length mismatch" }
+   call two_a (['fg'],'h')
+ 
+   ! character(kind=4):
+   ! array dummy, assumed size
+   call zero4_0([4_''],4_'a')
+   call zero4_0([4_'a'],4_'b')
+   call one4_0 ([4_''],4_'c')
+   call one4_0 ([4_'b'],4_'d')
+   call one4_0 ([4_'cd'],4_'e')
+   call two4_0 ([4_''],4_'f')
+   call two4_0 ([4_'fg'],4_'g')
+ 
+   ! array dummy, explicit size
+   call zero4_1([4_''],4_'a')
+   call zero4_1([4_'a'],4_'b')  ! { dg-warning "actual argument longer" }
+   call one4_1 ([4_''],4_'c')   ! { dg-error "too few elements for dummy" }
+   call one4_1 ([4_'b'],4_'d')
+   call one4_1 ([4_'cd'],4_'e') ! { dg-warning "actual argument longer" }
+   call two4_1 ([4_''],4_'f')   ! { dg-error "too few elements for dummy" }
+   call two4_1 ([4_'fg'],4_'h')
+ 
+   ! array dummy, assumed shape
+   call zero4_a([4_''],4_'a')
+   call zero4_a([4_'a'],4_'b')  ! { dg-error "Character length mismatch" }
+   call one4_a ([4_''],4_'c')   ! { dg-error "Character length mismatch" }
+   call one4_a ([4_'b'],4_'d')
+   call one4_a ([4_'cd'],4_'e') ! { dg-error "Character length mismatch" }
+   call two4_a ([4_''],4_'f')   ! { dg-error "Character length mismatch" }
+   call two4_a ([4_'fg'],4_'h')
+ end
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/bounds_check_strlen_7.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/bounds_check_strlen_7.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/bounds_check_strlen_7.f90	Sun Aug 24 22:33:08 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/bounds_check_strlen_7.f90	Sun Aug 31 22:33:05 2025
*************** END MODULE m
*** 18,24 ****
  PROGRAM main
    USE m
    IMPLICIT NONE
!   CALL test ('') ! 0 length, but not absent argument.
  END PROGRAM main
  
  ! { dg-output "shorter than the declared one for dummy argument 'opt' \\(0/5\\)" }
--- 18,25 ----
  PROGRAM main
    USE m
    IMPLICIT NONE
!                   ! 0 length, but not absent argument.
!   CALL test ('')  ! { dg-warning "Character length of actual argument" }
  END PROGRAM main
  
  ! { dg-output "shorter than the declared one for dummy argument 'opt' \\(0/5\\)" }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/char_length_3.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/char_length_3.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/char_length_3.f90	Sun Aug 24 22:33:09 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/char_length_3.f90	Sun Aug 31 22:33:05 2025
***************
*** 1,4 ****
--- 1,5 ----
  ! { dg-do compile }
+ ! { dg-options "-std=legacy" }
  ! PR fortran/25071
  ! Check if actual argument is too short
  !
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/eoshift_8.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/eoshift_8.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/eoshift_8.f90	Sun Aug 24 22:33:09 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/eoshift_8.f90	Sun Aug 31 22:33:05 2025
*************** program main
*** 14,18 ****
    f2 = eoshift(e,shift=n,boundary=bnd2) ! { dg-error "has invalid shape" }
    f2 = eoshift(e,shift=1,boundary="x") ! { dg-error "must be of same type and kind" }
  
!   print '(*(1H",A,1H",:","))',f2
  end program main
--- 14,18 ----
    f2 = eoshift(e,shift=n,boundary=bnd2) ! { dg-error "has invalid shape" }
    f2 = eoshift(e,shift=1,boundary="x") ! { dg-error "must be of same type and kind" }
  
!   !print '(*(1H",A,1H",:","))',f2
  end program main
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/g77/f77-edit-h-out.f gcc-16-20250831/gcc/testsuite/gfortran.dg/g77/f77-edit-h-out.f
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/g77/f77-edit-h-out.f	Sun Aug 24 22:33:09 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/g77/f77-edit-h-out.f	Sun Aug 31 22:33:05 2025
*************** C Origin: David Billinghurst <David.Bill
*** 5,14 ****
  C
  C { dg-do run }
  C { dg-output "^" }
!  10   format(1H1)
!  20   format(6H     6)
        write(*,10)        ! { dg-output "1(\r*\n+)" }
        write(*,20)        ! { dg-output "     6(\r*\n+)" }
!       write(*,'(16H''apostrophe'' fun)') ! { dg-output "'apostrophe' fun(\r*\n+)" }
  C { dg-output "\$" }
        end
--- 5,16 ----
  C
  C { dg-do run }
  C { dg-output "^" }
! C { dg-options "-std=legacy"
!  10   format(1H1) ! { dg-warning "H format specifier" }
!  20   format(6H     6) ! { dg-warning "H format specifier" }
        write(*,10)        ! { dg-output "1(\r*\n+)" }
        write(*,20)        ! { dg-output "     6(\r*\n+)" }
!       write(*,'(16H''apostrophe'' fun)') ! { dg-warning "H format specifier" }
!        ! { dg-output "'apostrophe' fun(\r*\n+)" }
  C { dg-output "\$" }
        end
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/gomp/adjust-args-1.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/gomp/adjust-args-1.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/gomp/adjust-args-1.f90	Sun Aug 24 22:33:09 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/gomp/adjust-args-1.f90	Sun Aug 31 22:33:05 2025
*************** module main
*** 26,32 ****
        integer function f4 (a)
           import c_ptr
           type(c_ptr), intent(inout) :: a
!          !$omp declare variant (f0) adjust_args (nothing: a) ! { dg-error "the 'adjust_args' clause at .1. can only be specified if the 'dispatch' selector of the construct selector set appears in the 'match' clause" }
        end function
        integer function f5 (i)
           integer, intent(inout) :: i
--- 26,32 ----
        integer function f4 (a)
           import c_ptr
           type(c_ptr), intent(inout) :: a
!          !$omp declare variant (f0) adjust_args (nothing: a) ! { dg-error "expected 'match' clause at .1." } 
        end function
        integer function f5 (i)
           integer, intent(inout) :: i
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/gomp/append_args-1.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/gomp/append_args-1.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/gomp/append_args-1.f90	Sun Aug 24 22:33:09 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/gomp/append_args-1.f90	Sun Aug 31 22:33:05 2025
*************** contains
*** 56,67 ****
  
    subroutine f2b ()
      !$omp declare variant (f1c)  &
!     !$omp&     append_args ( interop ( target , targetsync) )   ! { dg-error "the 'append_args' clause at .1. can only be specified if the 'dispatch' selector of the construct selector set appears in the 'match' clause" } 
    end subroutine
  
    subroutine f2c (x,y)
      !$omp declare variant (fop) , append_args ( interop ( target, prefer_type ( "cuda", "hip" ) ) , interop(target)) , &
!     !$omp&     adjust_args (need_device_ptr : x, y )   ! { dg-error "the 'adjust_args' clause at .1. can only be specified if the 'dispatch' selector of the construct selector set appears in the 'match' clause" } 
      type(c_ptr) :: x, y
      value :: y
    end subroutine
--- 56,67 ----
  
    subroutine f2b ()
      !$omp declare variant (f1c)  &
!     !$omp&     append_args ( interop ( target , targetsync) )   ! { dg-error "expected 'match'" } 
    end subroutine
  
    subroutine f2c (x,y)
      !$omp declare variant (fop) , append_args ( interop ( target, prefer_type ( "cuda", "hip" ) ) , interop(target)) , &
!     !$omp&     adjust_args (need_device_ptr : x, y )   ! { dg-error "expected 'match' clause at .1." } 
      type(c_ptr) :: x, y
      value :: y
    end subroutine
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/gomp/declare-variant-22.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/gomp/declare-variant-22.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/gomp/declare-variant-22.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/gomp/declare-variant-22.f90	Sun Aug 31 22:33:05 2025
***************
*** 0 ****
--- 1,6 ----
+ ! PR118839:  Check that error is diagnosed when the variant is the same
+ ! as the base function.
+ 
+ subroutine f()
+   !$omp declare variant(f) match(user={condition(.true.)})  ! { dg-error "variant 'f' at .1. is the same as base function" }
+ end subroutine
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/hollerith_1.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/hollerith_1.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/hollerith_1.f90	Sun Aug 24 22:33:09 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/hollerith_1.f90	Sun Aug 31 22:33:05 2025
***************
*** 6,12 ****
  ! Also verifies the functioning of hollerith formatting.
        character*72 c
        write(c,8000)
! 8000  format(36(2H!)))
        do i = 1,72,2
           if (c(i:i+1) /= '!)') STOP 1
        end do
--- 6,12 ----
  ! Also verifies the functioning of hollerith formatting.
        character*72 c
        write(c,8000)
! 8000  format(36(2H!))) ! { dg-warning "H format specifier" }
        do i = 1,72,2
           if (c(i:i+1) /= '!)') STOP 1
        end do
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/io_constraints_1.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/io_constraints_1.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/io_constraints_1.f90	Sun Aug 24 22:33:09 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/io_constraints_1.f90	Sun Aug 31 22:33:06 2025
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-std=f95" }
  ! Part I of the test  of the IO constraints patch, which fixes PRs:
  ! PRs 25053, 25063, 25064, 25066, 25067, 25068, 25069, 25307 and 20862.
  !
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-std=legacy" }
  ! Part I of the test  of the IO constraints patch, which fixes PRs:
  ! PRs 25053, 25063, 25064, 25066, 25067, 25068, 25069, 25307 and 20862.
  !
***************
*** 7,13 ****
  !
  module fails
  
!  2000 format (1h , 2i6)                        ! { dg-error "Format statement in module" }
  
  end module fails
  
--- 7,13 ----
  !
  module fails
  
!  2000 format (2i6)  ! { dg-error "Format statement in module" }
  
  end module fails
  
*************** contains
*** 21,27 ****
    subroutine foo (i)
      integer :: i
      write (*, 100) i
!  100 format (1h , "i=", i6)                     ! { dg-warning "The H format specifier at ... is a Fortran 95 deleted feature" }
    end subroutine foo
  
  end module global
--- 21,27 ----
    subroutine foo (i)
      integer :: i
      write (*, 100) i
!  100 format ("i=", i6)
    end subroutine foo
  
  end module global
*************** end module global
*** 33,39 ****
  
  ! Appending to a USE associated namelist is an extension.
  
!  NAMELIST /NL/ a,b                              ! { dg-error "already is USE associated" }
  
   a=1 ; b=2
  
--- 33,39 ----
  
  ! Appending to a USE associated namelist is an extension.
  
!  NAMELIST /NL/ a,b 
  
   a=1 ; b=2
  
*************** end module global
*** 54,60 ****
  
  ! R912
  !Was correctly picked up before patch.
!  write(6, NML=NL, iostat = ierr)                ! { dg-error "requires default INTEGER" }
  
  ! Constraints
  !Was correctly picked up before patch.
--- 54,60 ----
  
  ! R912
  !Was correctly picked up before patch.
!  write(6, NML=NL, iostat = ierr)
  
  ! Constraints
  !Was correctly picked up before patch.
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/io_constraints_2.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/io_constraints_2.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/io_constraints_2.f90	Sun Aug 24 22:33:09 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/io_constraints_2.f90	Sun Aug 31 22:33:06 2025
*************** contains
*** 17,23 ****
    subroutine foo (i)
      integer :: i
      write (*, 100) i
!  100 format (1h , "i=", i6) ! { dg-warning "H format specifier" }
    end subroutine foo
  
  end module global
--- 17,23 ----
    subroutine foo (i)
      integer :: i
      write (*, 100) i
!  100 format ("i=", i6)
    end subroutine foo
  
  end module global
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/longline.f gcc-16-20250831/gcc/testsuite/gfortran.dg/longline.f
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/longline.f	Sun Aug 24 22:33:09 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/longline.f	Sun Aug 31 22:33:06 2025
***************
*** 6,11 ****
        character*10 cpnam
        character*4 csig
        write (34,808)  csig,ilax,cpnam
!   808 format (/9X,4HTHE ,A4,  29HTIVE MINOS ERROR OF PARAMETER,I3,   2H
!      +, ,A10)
        end
--- 6,11 ----
        character*10 cpnam
        character*4 csig
        write (34,808)  csig,ilax,cpnam
!   808 format (/9X,'THE ',A4,     'TIVE MINOS ERROR OF PARAMETER',I3,   '
!      +,' ,A10)
        end
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/pdt_22.f03 gcc-16-20250831/gcc/testsuite/gfortran.dg/pdt_22.f03
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/pdt_22.f03	Sun Aug 24 22:33:09 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/pdt_22.f03	Sun Aug 31 22:33:06 2025
***************
*** 8,16 ****
  !
  program p
     character(120) :: buffer
!    integer :: i(4)
     type t(a)
        integer, len :: a
     end type
     type t2(b)
        integer, len :: b
--- 8,17 ----
  !
  program p
     character(120) :: buffer
!    integer :: i(3)
     type t(a)
        integer, len :: a
+       integer :: z = 4
     end type
     type t2(b)
        integer, len :: b
*************** program p
*** 18,23 ****
     end type
     type(t2(3)) :: x
     write (buffer,*) x
!    read (buffer,*) i
!    if (any (i .ne. [3,1,1,1])) STOP 1
  end
--- 19,28 ----
     end type
     type(t2(3)) :: x
     write (buffer,*) x
!    read (buffer, *) i
!    if (any (i .ne. [4,4,4])) stop 1
!    x%r = [t(1)(3),t(1)(2),t(1)(1)]
!    write (buffer,*) x
!    read (buffer, *) i
!    if (any (i .ne. [3,2,1])) stop 2
  end
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/pdt_23.f03 gcc-16-20250831/gcc/testsuite/gfortran.dg/pdt_23.f03
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/pdt_23.f03	Sun Aug 24 22:33:09 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/pdt_23.f03	Sun Aug 31 22:33:06 2025
*************** program p
*** 15,33 ****
     type(t(:)), allocatable :: x
     allocate (t(2) :: x)
  
!    x = t(2,'ab')
     write (buffer, *) x%c ! Tests the fix for PR82720
     read (buffer, *) chr
     if (trim (chr) .ne. 'ab') STOP 1
  
!    x = t(3,'xyz')
     if (len (x%c) .ne. 3) STOP 2
!    write (buffer, *) x   ! Tests the fix for PR82719
!    read (buffer, *) i, chr
!    if (i .ne. 3) STOP 3
     if (chr .ne. 'xyz') STOP 4
  
!    buffer = " 3  lmn"
!    read (buffer, *) x   ! Some thought will be needed for PDT reads.
     if (x%c .ne. 'lmn') STOP 5
  end
--- 15,33 ----
     type(t(:)), allocatable :: x
     allocate (t(2) :: x)
  
!    x = t(2)('ab')
     write (buffer, *) x%c ! Tests the fix for PR82720
     read (buffer, *) chr
     if (trim (chr) .ne. 'ab') STOP 1
  
!    x = t(3)('xyz')
     if (len (x%c) .ne. 3) STOP 2
!    write (buffer, *) x   ! Tests the fix for PR82719. PDT IO was incorrect (PRs 84143/84432).
!    read (buffer, *) chr
! !   if (i .ne. 3) STOP 3
     if (chr .ne. 'xyz') STOP 4
  
!    buffer = "lmn"
!    read (buffer, *) x    ! PDT IO was incorrect (PRs 84143/84432).
     if (x%c .ne. 'lmn') STOP 5
  end
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/pdt_3.f03 gcc-16-20250831/gcc/testsuite/gfortran.dg/pdt_3.f03
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/pdt_3.f03	Sun Aug 24 22:33:09 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/pdt_3.f03	Sun Aug 31 22:33:06 2025
***************
*** 5,11 ****
  module vars
    integer :: d_dim = 4
    integer :: mat_dim = 256
!   integer, parameter :: ftype = kind(0.0d0)
  end module
  
    use vars
--- 5,11 ----
  module vars
    integer :: d_dim = 4
    integer :: mat_dim = 256
!   integer, parameter :: ftype = kind(0.0)
  end module
  
    use vars
*************** end module
*** 34,40 ****
  
    real, allocatable :: matrix (:,:)
    type(thytype(ftype, 4, 4)) :: w
!   type(x(8,4,256)) :: q
    class(mytype(ftype, :)), allocatable :: cz
  
    w%d = reshape ([(real(i), i = 1, d_dim*d_dim)],[d_dim,d_dim])
--- 34,40 ----
  
    real, allocatable :: matrix (:,:)
    type(thytype(ftype, 4, 4)) :: w
!   type(x(ftype,ftype,256)) :: q
    class(mytype(ftype, :)), allocatable :: cz
  
    w%d = reshape ([(real(i), i = 1, d_dim*d_dim)],[d_dim,d_dim])
*************** end module
*** 57,77 ****
    matrix = w%d
  
  ! TODO - for some reason, using w%d directly in the source causes a seg fault.
!   allocate (cz, source = mytype(ftype, d_dim, 0, matrix))
    select type (cz)
      type is (mytype(ftype, *))
        if (int (sum (cz%d)) .ne. 136) STOP 11
!     type is (thytype(ftype, *, 8))
        STOP 12
    end select
    deallocate (cz)
  
!   allocate (thytype(ftype, d_dim*2, 8) :: cz)
    cz%d = reshape ([(i*10, i = 1, cz%b**2)], [cz%b,cz%b])
    select type (cz)
      type is (mytype(ftype, *))
        STOP 13
!     type is (thytype(ftype, *, 8))
        if (int (sum (cz%d)) .ne. 20800) STOP 14
    end select
  
--- 57,77 ----
    matrix = w%d
  
  ! TODO - for some reason, using w%d directly in the source causes a seg fault.
!   allocate (cz, source = mytype(ftype, d_dim)( 0, matrix))
    select type (cz)
      type is (mytype(ftype, *))
        if (int (sum (cz%d)) .ne. 136) STOP 11
!     type is (thytype(ftype, *, ftype))
        STOP 12
    end select
    deallocate (cz)
  
!   allocate (thytype(ftype, d_dim*2, ftype) :: cz)
    cz%d = reshape ([(i*10, i = 1, cz%b**2)], [cz%b,cz%b])
    select type (cz)
      type is (mytype(ftype, *))
        STOP 13
!     type is (thytype(ftype, *, ftype))
        if (int (sum (cz%d)) .ne. 20800) STOP 14
    end select
  
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/pdt_40.f03 gcc-16-20250831/gcc/testsuite/gfortran.dg/pdt_40.f03
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/pdt_40.f03	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/pdt_40.f03	Sun Aug 31 22:33:06 2025
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do run }
+ !
+ ! Contributed by FortranFan at https://groups.google.com/g/comp.lang.fortran/c/NDE6JKTFbNU
+ !
+    integer, parameter :: parm = 42
+    type :: t(ell)
+       integer, len :: ell
+       integer :: i
+    end type
+ 
+    type :: u
+       type(t(ell=:)), allocatable :: x
+    end type
+ 
+    type(t(ell=:)), allocatable :: foo
+    type(u) :: bar
+ 
+    allocate( t(ell = parm) :: foo )
+    foo%i = 2 * foo%ell
+ 
+    bar = u (foo)                    ! Gave: Cannot convert TYPE(Pdtt) to TYPE(t)
+ 
+    if (bar%x%ell /= parm) stop 1    ! Then these component references failed in
+    if (bar%x%i /= 2 * parm) stop 2  ! translation.
+ end
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/pdt_41.f03 gcc-16-20250831/gcc/testsuite/gfortran.dg/pdt_41.f03
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/pdt_41.f03	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/pdt_41.f03	Sun Aug 31 22:33:06 2025
***************
*** 0 ****
--- 1,47 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for pr99709 in which the object being passed to a PDT dummy
+ ! with the value attribute was not a deep copy.
+ !
+ ! Contribute by Xiao Liu  <xiao.liu@compiler-dev.com>
+ !
+ program value_f2008
+   implicit none
+   type :: matrix(k)
+     integer, len :: k
+     integer :: elements(k, k)
+     !integer :: elements(2, 2)
+   end type matrix
+ 
+   type, extends(matrix) :: child
+   end type child
+ 
+   integer, parameter :: array_parm(2, 2) = reshape([1, 2, 3, 4], [2, 2])
+ 
+   type(child(2)) :: obj
+   obj%elements = array_parm
+ 
+   call test_value_attr(2, obj)
+   if (any (obj%elements /= array_parm)) stop 1 
+ 
+   call test(2, obj)
+   if (any (obj%elements /= 0)) stop 2 
+ 
+ contains
+ 
+   subroutine test(n,  nonconstant_length_object)
+     integer :: n
+     type(child(n)) :: nonconstant_length_object
+     if (nonconstant_length_object%k /= 2) stop 3
+     if (any (nonconstant_length_object%elements /= array_parm)) stop 4
+     nonconstant_length_object%elements = 0
+   end subroutine test
+ 
+   subroutine test_value_attr(n,  nonconstant_length_object)
+     integer :: n
+     type(child(n)), value :: nonconstant_length_object
+     if (nonconstant_length_object%k /= 2) stop 5
+     if (any (nonconstant_length_object%elements /= array_parm)) stop 6
+     nonconstant_length_object%elements = 0
+   end subroutine test_value_attr
+ end program value_f2008
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/pr20086.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/pr20086.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/pr20086.f90	Sun Aug 24 22:33:09 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/pr20086.f90	Sun Aug 31 22:33:06 2025
***************
*** 10,16 ****
        if (line.ne.'  stiffness reformed for hello hello')STOP 2
        stop
  
!  2070  format (2x,37hstiffness reformed for this high step)
!  2090  format (2x,34hstiffness reformed for hello hello)
  
        end
--- 10,16 ----
        if (line.ne.'  stiffness reformed for hello hello')STOP 2
        stop
  
!  2070  format (2x,37hstiffness reformed for this high step) ! { dg-warning "H format specifier" }
!  2090  format (2x,34hstiffness reformed for hello hello) ! { dg-warning "H format specifier" }
  
        end
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/unused_artificial_dummies_1.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/unused_artificial_dummies_1.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/unused_artificial_dummies_1.f90	Sun Aug 24 22:33:10 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/unused_artificial_dummies_1.f90	Sun Aug 31 22:33:06 2025
*************** contains
*** 32,38 ****
    subroutine foo1 (slist, i)
      character(*), dimension(*) :: slist
      integer i
!     write (slist(i), '(2hi=,i3)') i
    end subroutine foo1
  
  ! This tests the additions to the fix that prevent the dummies of entry thunks
--- 32,38 ----
    subroutine foo1 (slist, i)
      character(*), dimension(*) :: slist
      integer i
!     write (slist(i), '(2hi=,i3)') i ! { dg-warning "H format specifier" }
    end subroutine foo1
  
  ! This tests the additions to the fix that prevent the dummies of entry thunks
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/whole_file_24.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/whole_file_24.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/whole_file_24.f90	Sun Aug 24 22:33:10 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/whole_file_24.f90	Sun Aug 31 22:33:06 2025
*************** module syntax_rules
*** 27,33 ****
  contains
    subroutine syntax_init_from_ifile ()
      type(string_t) :: string
!        string = line_get_string_advance ("")
    end subroutine syntax_init_from_ifile
  end module syntax_rules
  end
--- 27,33 ----
  contains
    subroutine syntax_init_from_ifile ()
      type(string_t) :: string
!        string = line_get_string_advance ("") ! { dg-warning "Character length of actual argument shorter" }
    end subroutine syntax_init_from_ifile
  end module syntax_rules
  end
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/whole_file_29.f90 gcc-16-20250831/gcc/testsuite/gfortran.dg/whole_file_29.f90
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/whole_file_29.f90	Sun Aug 24 22:33:10 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/whole_file_29.f90	Sun Aug 31 22:33:06 2025
*************** module syntax_rules
*** 19,25 ****
  contains
    subroutine syntax_init_from_ifile ()
      type(string_t) :: string
!        string = line_get_string_advance ("")
    end subroutine syntax_init_from_ifile
  end module syntax_rules
  end
--- 19,25 ----
  contains
    subroutine syntax_init_from_ifile ()
      type(string_t) :: string
!        string = line_get_string_advance ("") ! { dg-warning "Character length of actual argument shorter" }
    end subroutine syntax_init_from_ifile
  end module syntax_rules
  end
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gfortran.dg/x_slash_1.f gcc-16-20250831/gcc/testsuite/gfortran.dg/x_slash_1.f
*** gcc-16-20250824/gcc/testsuite/gfortran.dg/x_slash_1.f	Sun Aug 24 22:33:10 2025
--- gcc-16-20250831/gcc/testsuite/gfortran.dg/x_slash_1.f	Sun Aug 31 22:33:06 2025
*************** c Line 2 has nothing but x editing, foll
*** 18,24 ****
  c Line 3 has x editing finished off by a 1h*
  
         write (10, 100)
!  100   format (1h1,58x,1h!,/,60x,/,59x,1h*,/)
         rewind (10)
  
         read (10, 200) a
--- 18,24 ----
  c Line 3 has x editing finished off by a 1h*
  
         write (10, 100)
!  100   format (1h1,58x,1h!,/,60x,/,59x,1h*,/) ! { dg-warning "H format specifier" }
         rewind (10)
  
         read (10, 200) a
*************** c Line 3 has tabs to the left of present
*** 42,48 ****
  
         write (10, 101)
   101   format (1h1,58x,1h#,/,t38,2x,1h ,tr10,9x,1h$,/,
!      >         6habcdef,tl4,2x,6hghijkl,t1,59x,1h*)
         rewind (10)
  
         read (10, 200) a
--- 42,48 ----
  
         write (10, 101)
   101   format (1h1,58x,1h#,/,t38,2x,1h ,tr10,9x,1h$,/,
!      >         6habcdef,tl4,2x,6hghijkl,t1,59x,1h*) ! { dg-warning "H format specifier" }
         rewind (10)
  
         read (10, 200) a
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gm2/switches/pathnameroot/pass/switches-pathnameroot-pass.exp gcc-16-20250831/gcc/testsuite/gm2/switches/pathnameroot/pass/switches-pathnameroot-pass.exp
*** gcc-16-20250824/gcc/testsuite/gm2/switches/pathnameroot/pass/switches-pathnameroot-pass.exp	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gm2/switches/pathnameroot/pass/switches-pathnameroot-pass.exp	Sun Aug 31 22:33:18 2025
***************
*** 0 ****
--- 1,48 ----
+ # Expect driver script for GCC Regression Tests
+ # Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3 of the License, or
+ # (at your option) any later version.
+ #
+ # This program is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING3.  If not see
+ # <http://www.gnu.org/licenses/>.
+ 
+ # This file was written by Gaius Mulley (gaius.mulley@southwales.ac.uk)
+ # for GNU Modula-2.
+ 
+ load_lib target-supports.exp
+ 
+ global TESTING_IN_BUILD_TREE
+ global ENABLE_PLUGIN
+ 
+ # The plugin testcases currently only work when the build tree is available.
+ # Also check whether the host supports plugins.
+ if { ![info exists TESTING_IN_BUILD_TREE] || ![info exists ENABLE_PLUGIN] } {
+     return
+ }
+ 
+ if $tracelevel then {
+     strace $tracelevel
+ }
+ 
+ # load support procs
+ load_lib gm2-torture.exp
+ 
+ gm2_init_pim "${srcdir}/gm2/switches/pathnameroot/pass" -fm2-pathname-root="${srcdir}/gm2/switches/pathnameroot/pass/testlib"
+ 
+ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] {
+     # If we're only testing specific files and this isn't one of them, skip it.
+     if ![runtest_file_p $runtests $testcase] then {
+ 	continue
+     }
+ 
+     gm2-torture-fail $testcase
+ }
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gm2/switches/pathnameroot/pass/test.mod gcc-16-20250831/gcc/testsuite/gm2/switches/pathnameroot/pass/test.mod
*** gcc-16-20250824/gcc/testsuite/gm2/switches/pathnameroot/pass/test.mod	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gm2/switches/pathnameroot/pass/test.mod	Sun Aug 31 22:33:18 2025
***************
*** 0 ****
--- 1,6 ----
+ MODULE test ;
+ 
+ FROM foo IMPORT SomeValue ;
+ 
+ BEGIN
+ END test.
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gm2/switches/pathnameroot/pass/testlib/m2/foo.def gcc-16-20250831/gcc/testsuite/gm2/switches/pathnameroot/pass/testlib/m2/foo.def
*** gcc-16-20250824/gcc/testsuite/gm2/switches/pathnameroot/pass/testlib/m2/foo.def	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gm2/switches/pathnameroot/pass/testlib/m2/foo.def	Sun Aug 31 22:33:18 2025
***************
*** 0 ****
--- 1,7 ----
+ DEFINITION MODULE foo ;
+ 
+ CONST
+    SomeValue = 123 ;
+ 
+ 
+ END foo.
diff -Nrcpad gcc-16-20250824/gcc/testsuite/gm2/switches/pathnameroot/pass/testlib/m2/foo.mod gcc-16-20250831/gcc/testsuite/gm2/switches/pathnameroot/pass/testlib/m2/foo.mod
*** gcc-16-20250824/gcc/testsuite/gm2/switches/pathnameroot/pass/testlib/m2/foo.mod	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/gcc/testsuite/gm2/switches/pathnameroot/pass/testlib/m2/foo.mod	Sun Aug 31 22:33:18 2025
***************
*** 0 ****
--- 1,3 ----
+ IMPLEMENTATION MODULE foo ;
+ 
+ END foo.
diff -Nrcpad gcc-16-20250824/gcc/tree-if-conv.cc gcc-16-20250831/gcc/tree-if-conv.cc
*** gcc-16-20250824/gcc/tree-if-conv.cc	Sun Aug 24 22:33:16 2025
--- gcc-16-20250831/gcc/tree-if-conv.cc	Sun Aug 31 22:33:22 2025
*************** again:
*** 2295,2301 ****
    /* Update the phi node too. */
    gimple_phi_set_result (phi, new_res);
    gimple_phi_arg (phi, 0)->def = new_arg0;
!   gimple_phi_arg (phi, 0)->def = new_arg1;
    update_stmt (phi);
  
    repeated = true;
--- 2295,2301 ----
    /* Update the phi node too. */
    gimple_phi_set_result (phi, new_res);
    gimple_phi_arg (phi, 0)->def = new_arg0;
!   gimple_phi_arg (phi, 1)->def = new_arg1;
    update_stmt (phi);
  
    repeated = true;
diff -Nrcpad gcc-16-20250824/gcc/tree-ssa-forwprop.cc gcc-16-20250831/gcc/tree-ssa-forwprop.cc
*** gcc-16-20250824/gcc/tree-ssa-forwprop.cc	Sun Aug 24 22:33:16 2025
--- gcc-16-20250831/gcc/tree-ssa-forwprop.cc	Sun Aug 31 22:33:23 2025
*************** can_propagate_from (gimple *def_stmt)
*** 329,343 ****
     NAME.  The chain is linked via the first operand of the defining statements.
     If NAME was replaced in its only use then this function can be used
     to clean up dead stmts.  The function handles already released SSA
!    names gracefully.
!    Returns true if cleanup-cfg has to run.  */
  
! static bool
  remove_prop_source_from_use (tree name)
  {
    gimple_stmt_iterator gsi;
    gimple *stmt;
-   bool cfg_changed = false;
  
    do {
      basic_block bb;
--- 329,341 ----
     NAME.  The chain is linked via the first operand of the defining statements.
     If NAME was replaced in its only use then this function can be used
     to clean up dead stmts.  The function handles already released SSA
!    names gracefully.  */
  
! static void
  remove_prop_source_from_use (tree name)
  {
    gimple_stmt_iterator gsi;
    gimple *stmt;
  
    do {
      basic_block bb;
*************** remove_prop_source_from_use (tree name)
*** 345,356 ****
      if (SSA_NAME_IN_FREE_LIST (name)
  	|| SSA_NAME_IS_DEFAULT_DEF (name)
  	|| !has_zero_uses (name))
!       return cfg_changed;
  
      stmt = SSA_NAME_DEF_STMT (name);
      if (gimple_code (stmt) == GIMPLE_PHI
  	|| gimple_has_side_effects (stmt))
!       return cfg_changed;
  
      bb = gimple_bb (stmt);
      gsi = gsi_for_stmt (stmt);
--- 343,354 ----
      if (SSA_NAME_IN_FREE_LIST (name)
  	|| SSA_NAME_IS_DEFAULT_DEF (name)
  	|| !has_zero_uses (name))
!       break;
  
      stmt = SSA_NAME_DEF_STMT (name);
      if (gimple_code (stmt) == GIMPLE_PHI
  	|| gimple_has_side_effects (stmt))
!       break;
  
      bb = gimple_bb (stmt);
      gsi = gsi_for_stmt (stmt);
*************** remove_prop_source_from_use (tree name)
*** 363,369 ****
      name = is_gimple_assign (stmt) ? gimple_assign_rhs1 (stmt) : NULL_TREE;
    } while (name && TREE_CODE (name) == SSA_NAME);
  
-   return cfg_changed;
  }
  
  /* Return the rhs of a gassign *STMT in a form of a single tree,
--- 361,366 ----
*************** forward_propagate_into_comparison_1 (gim
*** 503,517 ****
  
  /* Propagate from the ssa name definition statements of the assignment
     from a comparison at *GSI into the conditional if that simplifies it.
!    Returns 1 if the stmt was modified and 2 if the CFG needs cleanup,
!    otherwise returns 0.  */
  
! static int
  forward_propagate_into_comparison (gimple_stmt_iterator *gsi)
  {
    gimple *stmt = gsi_stmt (*gsi);
    tree tmp;
-   bool cfg_changed = false;
    tree type = TREE_TYPE (gimple_assign_lhs (stmt));
    tree rhs1 = gimple_assign_rhs1 (stmt);
    tree rhs2 = gimple_assign_rhs2 (stmt);
--- 500,512 ----
  
  /* Propagate from the ssa name definition statements of the assignment
     from a comparison at *GSI into the conditional if that simplifies it.
!    Returns true if the stmt was modified.  */
  
! static bool
  forward_propagate_into_comparison (gimple_stmt_iterator *gsi)
  {
    gimple *stmt = gsi_stmt (*gsi);
    tree tmp;
    tree type = TREE_TYPE (gimple_assign_lhs (stmt));
    tree rhs1 = gimple_assign_rhs1 (stmt);
    tree rhs2 = gimple_assign_rhs2 (stmt);
*************** forward_propagate_into_comparison (gimpl
*** 535,547 ****
        update_stmt (gsi_stmt (*gsi));
  
        if (TREE_CODE (rhs1) == SSA_NAME)
! 	cfg_changed |= remove_prop_source_from_use (rhs1);
        if (TREE_CODE (rhs2) == SSA_NAME)
! 	cfg_changed |= remove_prop_source_from_use (rhs2);
!       return cfg_changed ? 2 : 1;
      }
  
!   return 0;
  }
  
  /* Propagate from the ssa name definition statements of COND_EXPR
--- 530,542 ----
        update_stmt (gsi_stmt (*gsi));
  
        if (TREE_CODE (rhs1) == SSA_NAME)
! 	remove_prop_source_from_use (rhs1);
        if (TREE_CODE (rhs2) == SSA_NAME)
! 	remove_prop_source_from_use (rhs2);
!       return true;
      }
  
!   return false;
  }
  
  /* Propagate from the ssa name definition statements of COND_EXPR
*************** forward_propagate_into_gimple_cond (gcon
*** 554,560 ****
  {
    tree tmp;
    enum tree_code code = gimple_cond_code (stmt);
-   bool cfg_changed = false;
    tree rhs1 = gimple_cond_lhs (stmt);
    tree rhs2 = gimple_cond_rhs (stmt);
  
--- 549,554 ----
*************** forward_propagate_into_gimple_cond (gcon
*** 580,589 ****
        update_stmt (stmt);
  
        if (TREE_CODE (rhs1) == SSA_NAME)
! 	cfg_changed |= remove_prop_source_from_use (rhs1);
        if (TREE_CODE (rhs2) == SSA_NAME)
! 	cfg_changed |= remove_prop_source_from_use (rhs2);
!       return (cfg_changed || is_gimple_min_invariant (tmp)) ? 2 : 1;
      }
  
    if (canonicalize_bool_cond (stmt, gimple_bb (stmt)))
--- 574,583 ----
        update_stmt (stmt);
  
        if (TREE_CODE (rhs1) == SSA_NAME)
! 	remove_prop_source_from_use (rhs1);
        if (TREE_CODE (rhs2) == SSA_NAME)
! 	remove_prop_source_from_use (rhs2);
!       return is_gimple_min_invariant (tmp) ? 2 : 1;
      }
  
    if (canonicalize_bool_cond (stmt, gimple_bb (stmt)))
*************** simplify_gimple_switch_label_vec (gswitc
*** 1054,1060 ****
  
  static bool
  simplify_gimple_switch (gswitch *stmt,
! 			vec<std::pair<int, int> > &edges_to_remove)
  {
    /* The optimization that we really care about is removing unnecessary
       casts.  That will let us do much better in propagating the inferred
--- 1048,1055 ----
  
  static bool
  simplify_gimple_switch (gswitch *stmt,
! 			vec<std::pair<int, int> > &edges_to_remove,
! 			bitmap simple_dce_worklist)
  {
    /* The optimization that we really care about is removing unnecessary
       casts.  That will let us do much better in propagating the inferred
*************** simplify_gimple_switch (gswitch *stmt,
*** 1089,1094 ****
--- 1084,1091 ----
  	      if ((!min || int_fits_type_p (min, ti))
  		  && (!max || int_fits_type_p (max, ti)))
  		{
+ 		  bitmap_set_bit (simple_dce_worklist,
+ 				  SSA_NAME_VERSION (cond));
  		  gimple_switch_set_index (stmt, def);
  		  simplify_gimple_switch_label_vec (stmt, ti,
  						    edges_to_remove);
*************** optimize_agr_copyprop (gimple_stmt_itera
*** 1572,1577 ****
--- 1569,1642 ----
    return changed;
  }
  
+ /* Optimizes builtin memcmps for small constant sizes.
+    GSI_P is the GSI for the call. STMT is the call itself.
+    */
+ 
+ static bool
+ simplify_builtin_memcmp (gimple_stmt_iterator *gsi_p, gcall *stmt)
+ {
+   /* Make sure memcmp arguments are the correct type.  */
+   if (gimple_call_num_args (stmt) != 3)
+     return false;
+   tree arg1 = gimple_call_arg (stmt, 0);
+   tree arg2 = gimple_call_arg (stmt, 1);
+   tree len = gimple_call_arg (stmt, 2);
+ 
+   if (!POINTER_TYPE_P (TREE_TYPE (arg1)))
+     return false;
+   if (!POINTER_TYPE_P (TREE_TYPE (arg2)))
+     return false;
+   if (!INTEGRAL_TYPE_P (TREE_TYPE (len)))
+     return false;
+ 
+   /* The return value of the memcmp has to be used
+      equality comparison to zero. */
+   tree res = gimple_call_lhs (stmt);
+ 
+   if (!res || !use_in_zero_equality (res))
+     return false;
+ 
+   unsigned HOST_WIDE_INT leni;
+ 
+   if (tree_fits_uhwi_p (len)
+       && (leni = tree_to_uhwi (len)) <= GET_MODE_SIZE (word_mode)
+       && pow2p_hwi (leni))
+     {
+       leni *= CHAR_TYPE_SIZE;
+       unsigned align1 = get_pointer_alignment (arg1);
+       unsigned align2 = get_pointer_alignment (arg2);
+       unsigned align = MIN (align1, align2);
+       scalar_int_mode mode;
+       if (int_mode_for_size (leni, 1).exists (&mode)
+ 	  && (align >= leni || !targetm.slow_unaligned_access (mode, align)))
+ 	{
+ 	  location_t loc = gimple_location (stmt);
+ 	  tree type, off;
+ 	  type = build_nonstandard_integer_type (leni, 1);
+ 	  gcc_assert (known_eq (GET_MODE_BITSIZE (TYPE_MODE (type)), leni));
+ 	  tree ptrtype = build_pointer_type_for_mode (char_type_node,
+ 						      ptr_mode, true);
+ 	  off = build_int_cst (ptrtype, 0);
+ 	  arg1 = build2_loc (loc, MEM_REF, type, arg1, off);
+ 	  arg2 = build2_loc (loc, MEM_REF, type, arg2, off);
+ 	  tree tem1 = fold_const_aggregate_ref (arg1);
+ 	  if (tem1)
+ 	    arg1 = tem1;
+ 	  tree tem2 = fold_const_aggregate_ref (arg2);
+ 	  if (tem2)
+ 	    arg2 = tem2;
+ 	  res = fold_convert_loc (loc, TREE_TYPE (res),
+ 				  fold_build2_loc (loc, NE_EXPR,
+ 						   boolean_type_node,
+ 						   arg1, arg2));
+ 	  gimplify_and_update_call_from_tree (gsi_p, res);
+ 	  return true;
+ 	}
+     }
+   return false;
+ }
+ 
  /* *GSI_P is a GIMPLE_CALL to a builtin function.
     Optimize
     memcpy (p, "abcd", 4);
*************** simplify_builtin_call (gimple_stmt_itera
*** 1609,1614 ****
--- 1674,1682 ----
  
    switch (DECL_FUNCTION_CODE (callee2))
      {
+     case BUILT_IN_MEMCMP:
+     case BUILT_IN_MEMCMP_EQ:
+       return simplify_builtin_memcmp (gsi_p, as_a<gcall*>(stmt2));
      case BUILT_IN_MEMCHR:
        if (gimple_call_num_args (stmt2) == 3
  	  && (res = gimple_call_lhs (stmt2)) != nullptr
*************** is_combined_permutation_identity (tree m
*** 2980,2989 ****
    return maybe_identity1 ? 1 : maybe_identity2 ? 2 : 0;
  }
  
! /* Combine a shuffle with its arguments.  Returns 1 if there were any
!    changes made, 2 if cfg-cleanup needs to run.  Else it returns 0.  */
  
! static int
  simplify_permutation (gimple_stmt_iterator *gsi)
  {
    gimple *stmt = gsi_stmt (*gsi);
--- 3048,3057 ----
    return maybe_identity1 ? 1 : maybe_identity2 ? 2 : 0;
  }
  
! /* Combine a shuffle with its arguments.  Returns true if there were any
!    changes made.  */
  
! static bool
  simplify_permutation (gimple_stmt_iterator *gsi)
  {
    gimple *stmt = gsi_stmt (*gsi);
*************** simplify_permutation (gimple_stmt_iterat
*** 2999,3005 ****
    op2 = gimple_assign_rhs3 (stmt);
  
    if (TREE_CODE (op2) != VECTOR_CST)
!     return 0;
  
    if (TREE_CODE (op0) == VECTOR_CST)
      {
--- 3067,3073 ----
    op2 = gimple_assign_rhs3 (stmt);
  
    if (TREE_CODE (op2) != VECTOR_CST)
!     return false;
  
    if (TREE_CODE (op0) == VECTOR_CST)
      {
*************** simplify_permutation (gimple_stmt_iterat
*** 3010,3023 ****
      {
        def_stmt = get_prop_source_stmt (op0, false, &single_use_op0);
        if (!def_stmt)
! 	return 0;
        code = gimple_assign_rhs_code (def_stmt);
        if (code == VIEW_CONVERT_EXPR)
  	{
  	  tree rhs = gimple_assign_rhs1 (def_stmt);
  	  tree name = TREE_OPERAND (rhs, 0);
  	  if (TREE_CODE (name) != SSA_NAME)
! 	    return 0;
  	  if (!has_single_use (name))
  	    single_use_op0 = false;
  	  /* Here we update the def_stmt through this VIEW_CONVERT_EXPR,
--- 3078,3091 ----
      {
        def_stmt = get_prop_source_stmt (op0, false, &single_use_op0);
        if (!def_stmt)
! 	return false;
        code = gimple_assign_rhs_code (def_stmt);
        if (code == VIEW_CONVERT_EXPR)
  	{
  	  tree rhs = gimple_assign_rhs1 (def_stmt);
  	  tree name = TREE_OPERAND (rhs, 0);
  	  if (TREE_CODE (name) != SSA_NAME)
! 	    return false;
  	  if (!has_single_use (name))
  	    single_use_op0 = false;
  	  /* Here we update the def_stmt through this VIEW_CONVERT_EXPR,
*************** simplify_permutation (gimple_stmt_iterat
*** 3025,3040 ****
  	     VIEW_CONVERT_EXPR.  */
  	  def_stmt = SSA_NAME_DEF_STMT (name);
  	  if (!def_stmt || !is_gimple_assign (def_stmt))
! 	    return 0;
  	  if (gimple_assign_rhs_code (def_stmt) != CONSTRUCTOR)
! 	    return 0;
  	}
        if (!can_propagate_from (def_stmt))
! 	return 0;
        arg0 = gimple_assign_rhs1 (def_stmt);
      }
    else
!     return 0;
  
    /* Two consecutive shuffles.  */
    if (code == VEC_PERM_EXPR)
--- 3093,3108 ----
  	     VIEW_CONVERT_EXPR.  */
  	  def_stmt = SSA_NAME_DEF_STMT (name);
  	  if (!def_stmt || !is_gimple_assign (def_stmt))
! 	    return false;
  	  if (gimple_assign_rhs_code (def_stmt) != CONSTRUCTOR)
! 	    return false;
  	}
        if (!can_propagate_from (def_stmt))
! 	return false;
        arg0 = gimple_assign_rhs1 (def_stmt);
      }
    else
!     return false;
  
    /* Two consecutive shuffles.  */
    if (code == VEC_PERM_EXPR)
*************** simplify_permutation (gimple_stmt_iterat
*** 3043,3062 ****
        int ident;
  
        if (op0 != op1)
! 	return 0;
        op3 = gimple_assign_rhs3 (def_stmt);
        if (TREE_CODE (op3) != VECTOR_CST)
! 	return 0;
        ident = is_combined_permutation_identity (op3, op2);
        if (!ident)
! 	return 0;
        orig = (ident == 1) ? gimple_assign_rhs1 (def_stmt)
  			  : gimple_assign_rhs2 (def_stmt);
        gimple_assign_set_rhs1 (stmt, unshare_expr (orig));
        gimple_assign_set_rhs_code (stmt, TREE_CODE (orig));
        gimple_set_num_ops (stmt, 2);
        update_stmt (stmt);
!       return remove_prop_source_from_use (op0) ? 2 : 1;
      }
    else if (code == CONSTRUCTOR
  	   || code == VECTOR_CST
--- 3111,3131 ----
        int ident;
  
        if (op0 != op1)
! 	return false;
        op3 = gimple_assign_rhs3 (def_stmt);
        if (TREE_CODE (op3) != VECTOR_CST)
! 	return false;
        ident = is_combined_permutation_identity (op3, op2);
        if (!ident)
! 	return false;
        orig = (ident == 1) ? gimple_assign_rhs1 (def_stmt)
  			  : gimple_assign_rhs2 (def_stmt);
        gimple_assign_set_rhs1 (stmt, unshare_expr (orig));
        gimple_assign_set_rhs_code (stmt, TREE_CODE (orig));
        gimple_set_num_ops (stmt, 2);
        update_stmt (stmt);
!       remove_prop_source_from_use (op0);
!       return true;
      }
    else if (code == CONSTRUCTOR
  	   || code == VECTOR_CST
*************** simplify_permutation (gimple_stmt_iterat
*** 3065,3071 ****
        if (op0 != op1)
  	{
  	  if (TREE_CODE (op0) == SSA_NAME && !single_use_op0)
! 	    return 0;
  
  	  if (TREE_CODE (op1) == VECTOR_CST)
  	    arg1 = op1;
--- 3134,3140 ----
        if (op0 != op1)
  	{
  	  if (TREE_CODE (op0) == SSA_NAME && !single_use_op0)
! 	    return false;
  
  	  if (TREE_CODE (op1) == VECTOR_CST)
  	    arg1 = op1;
*************** simplify_permutation (gimple_stmt_iterat
*** 3073,3108 ****
  	    {
  	      gimple *def_stmt2 = get_prop_source_stmt (op1, true, NULL);
  	      if (!def_stmt2)
! 		return 0;
  	      code2 = gimple_assign_rhs_code (def_stmt2);
  	      if (code2 == VIEW_CONVERT_EXPR)
  		{
  		  tree rhs = gimple_assign_rhs1 (def_stmt2);
  		  tree name = TREE_OPERAND (rhs, 0);
  		  if (TREE_CODE (name) != SSA_NAME)
! 		    return 0;
  		  if (!has_single_use (name))
! 		    return 0;
  		  def_stmt2 = SSA_NAME_DEF_STMT (name);
  		  if (!def_stmt2 || !is_gimple_assign (def_stmt2))
! 		    return 0;
  		  if (gimple_assign_rhs_code (def_stmt2) != CONSTRUCTOR)
! 		    return 0;
  		}
  	      else if (code2 != CONSTRUCTOR && code2 != VECTOR_CST)
! 		return 0;
  	      if (!can_propagate_from (def_stmt2))
! 		return 0;
  	      arg1 = gimple_assign_rhs1 (def_stmt2);
  	    }
  	  else
! 	    return 0;
  	}
        else
  	{
  	  /* Already used twice in this statement.  */
  	  if (TREE_CODE (op0) == SSA_NAME && num_imm_uses (op0) > 2)
! 	    return 0;
  	  arg1 = arg0;
  	}
  
--- 3142,3177 ----
  	    {
  	      gimple *def_stmt2 = get_prop_source_stmt (op1, true, NULL);
  	      if (!def_stmt2)
! 		return false;
  	      code2 = gimple_assign_rhs_code (def_stmt2);
  	      if (code2 == VIEW_CONVERT_EXPR)
  		{
  		  tree rhs = gimple_assign_rhs1 (def_stmt2);
  		  tree name = TREE_OPERAND (rhs, 0);
  		  if (TREE_CODE (name) != SSA_NAME)
! 		    return false;
  		  if (!has_single_use (name))
! 		    return false;
  		  def_stmt2 = SSA_NAME_DEF_STMT (name);
  		  if (!def_stmt2 || !is_gimple_assign (def_stmt2))
! 		    return false;
  		  if (gimple_assign_rhs_code (def_stmt2) != CONSTRUCTOR)
! 		    return false;
  		}
  	      else if (code2 != CONSTRUCTOR && code2 != VECTOR_CST)
! 		return false;
  	      if (!can_propagate_from (def_stmt2))
! 		return false;
  	      arg1 = gimple_assign_rhs1 (def_stmt2);
  	    }
  	  else
! 	    return false;
  	}
        else
  	{
  	  /* Already used twice in this statement.  */
  	  if (TREE_CODE (op0) == SSA_NAME && num_imm_uses (op0) > 2)
! 	    return false;
  	  arg1 = arg0;
  	}
  
*************** simplify_permutation (gimple_stmt_iterat
*** 3127,3152 ****
  	      if (tgt_type == NULL_TREE)
  		tgt_type = arg1_type;
  	      else if (tgt_type != arg1_type)
! 		return 0;
  	    }
  
  	  if (!VECTOR_TYPE_P (tgt_type))
! 	    return 0;
  	  tree op2_type = TREE_TYPE (op2);
  
  	  /* Figure out the shrunk factor.  */
  	  poly_uint64 tgt_units = TYPE_VECTOR_SUBPARTS (tgt_type);
  	  poly_uint64 op2_units = TYPE_VECTOR_SUBPARTS (op2_type);
  	  if (maybe_gt (tgt_units, op2_units))
! 	    return 0;
  	  unsigned int factor;
  	  if (!constant_multiple_p (op2_units, tgt_units, &factor))
! 	    return 0;
  
  	  /* Build the new permutation control vector as target vector.  */
  	  vec_perm_builder builder;
  	  if (!tree_to_vec_perm_builder (&builder, op2))
! 	    return 0;
  	  vec_perm_indices indices (builder, 2, op2_units);
  	  vec_perm_indices new_indices;
  	  if (new_indices.new_shrunk_vector (indices, factor))
--- 3196,3221 ----
  	      if (tgt_type == NULL_TREE)
  		tgt_type = arg1_type;
  	      else if (tgt_type != arg1_type)
! 		return false;
  	    }
  
  	  if (!VECTOR_TYPE_P (tgt_type))
! 	    return false;
  	  tree op2_type = TREE_TYPE (op2);
  
  	  /* Figure out the shrunk factor.  */
  	  poly_uint64 tgt_units = TYPE_VECTOR_SUBPARTS (tgt_type);
  	  poly_uint64 op2_units = TYPE_VECTOR_SUBPARTS (op2_type);
  	  if (maybe_gt (tgt_units, op2_units))
! 	    return false;
  	  unsigned int factor;
  	  if (!constant_multiple_p (op2_units, tgt_units, &factor))
! 	    return false;
  
  	  /* Build the new permutation control vector as target vector.  */
  	  vec_perm_builder builder;
  	  if (!tree_to_vec_perm_builder (&builder, op2))
! 	    return false;
  	  vec_perm_indices indices (builder, 2, op2_units);
  	  vec_perm_indices new_indices;
  	  if (new_indices.new_shrunk_vector (indices, factor))
*************** simplify_permutation (gimple_stmt_iterat
*** 3162,3168 ****
  	      op2 = vec_perm_indices_to_tree (mask_type, new_indices);
  	    }
  	  else
! 	    return 0;
  
  	  /* Convert the VECTOR_CST to the appropriate vector type.  */
  	  if (tgt_type != TREE_TYPE (arg0))
--- 3231,3237 ----
  	      op2 = vec_perm_indices_to_tree (mask_type, new_indices);
  	    }
  	  else
! 	    return false;
  
  	  /* Convert the VECTOR_CST to the appropriate vector type.  */
  	  if (tgt_type != TREE_TYPE (arg0))
*************** simplify_permutation (gimple_stmt_iterat
*** 3175,3188 ****
        gcc_assert (code == CONSTRUCTOR || code == VECTOR_CST);
  
        /* Shuffle of a constructor.  */
-       bool ret = false;
        tree res_type
  	= build_vector_type (TREE_TYPE (TREE_TYPE (arg0)),
  			     TYPE_VECTOR_SUBPARTS (TREE_TYPE (op2)));
        tree opt = fold_ternary (VEC_PERM_EXPR, res_type, arg0, arg1, op2);
        if (!opt
  	  || (TREE_CODE (opt) != CONSTRUCTOR && TREE_CODE (opt) != VECTOR_CST))
! 	return 0;
        /* Found VIEW_CONVERT_EXPR before, need one explicit conversion.  */
        if (res_type != TREE_TYPE (op0))
  	{
--- 3244,3256 ----
        gcc_assert (code == CONSTRUCTOR || code == VECTOR_CST);
  
        /* Shuffle of a constructor.  */
        tree res_type
  	= build_vector_type (TREE_TYPE (TREE_TYPE (arg0)),
  			     TYPE_VECTOR_SUBPARTS (TREE_TYPE (op2)));
        tree opt = fold_ternary (VEC_PERM_EXPR, res_type, arg0, arg1, op2);
        if (!opt
  	  || (TREE_CODE (opt) != CONSTRUCTOR && TREE_CODE (opt) != VECTOR_CST))
! 	return false;
        /* Found VIEW_CONVERT_EXPR before, need one explicit conversion.  */
        if (res_type != TREE_TYPE (op0))
  	{
*************** simplify_permutation (gimple_stmt_iterat
*** 3194,3206 ****
        gimple_assign_set_rhs_from_tree (gsi, opt);
        update_stmt (gsi_stmt (*gsi));
        if (TREE_CODE (op0) == SSA_NAME)
! 	ret = remove_prop_source_from_use (op0);
        if (op0 != op1 && TREE_CODE (op1) == SSA_NAME)
! 	ret |= remove_prop_source_from_use (op1);
!       return ret ? 2 : 1;
      }
  
!   return 0;
  }
  
  /* Get the BIT_FIELD_REF definition of VAL, if any, looking through
--- 3262,3274 ----
        gimple_assign_set_rhs_from_tree (gsi, opt);
        update_stmt (gsi_stmt (*gsi));
        if (TREE_CODE (op0) == SSA_NAME)
! 	remove_prop_source_from_use (op0);
        if (op0 != op1 && TREE_CODE (op1) == SSA_NAME)
! 	remove_prop_source_from_use (op1);
!       return true;
      }
  
!   return false;
  }
  
  /* Get the BIT_FIELD_REF definition of VAL, if any, looking through
*************** pass_forwprop::execute (function *fun)
*** 5022,5046 ****
  		      }
  
  		    if (TREE_CODE_CLASS (code) == tcc_comparison)
! 		      {
! 			int did_something;
! 			did_something = forward_propagate_into_comparison (&gsi);
! 			if (did_something == 2)
! 			  cfg_changed = true;
! 			changed |= did_something != 0;
! 		      }
  		    else if ((code == PLUS_EXPR
  			      || code == BIT_IOR_EXPR
  			      || code == BIT_XOR_EXPR)
  			     && simplify_rotate (&gsi))
  		      changed = true;
  		    else if (code == VEC_PERM_EXPR)
! 		      {
! 			int did_something = simplify_permutation (&gsi);
! 			if (did_something == 2)
! 			  cfg_changed = true;
! 			changed = did_something != 0;
! 		      }
  		    else if (code == CONSTRUCTOR
  			     && TREE_CODE (TREE_TYPE (rhs1)) == VECTOR_TYPE)
  		      changed |= simplify_vector_constructor (&gsi);
--- 5090,5103 ----
  		      }
  
  		    if (TREE_CODE_CLASS (code) == tcc_comparison)
! 		      changed |= forward_propagate_into_comparison (&gsi);
  		    else if ((code == PLUS_EXPR
  			      || code == BIT_IOR_EXPR
  			      || code == BIT_XOR_EXPR)
  			     && simplify_rotate (&gsi))
  		      changed = true;
  		    else if (code == VEC_PERM_EXPR)
! 		      changed |= simplify_permutation (&gsi);
  		    else if (code == CONSTRUCTOR
  			     && TREE_CODE (TREE_TYPE (rhs1)) == VECTOR_TYPE)
  		      changed |= simplify_vector_constructor (&gsi);
*************** pass_forwprop::execute (function *fun)
*** 5051,5057 ****
  
  		case GIMPLE_SWITCH:
  		  changed |= simplify_gimple_switch (as_a <gswitch *> (stmt),
! 						     edges_to_remove);
  		  break;
  
  		case GIMPLE_COND:
--- 5108,5115 ----
  
  		case GIMPLE_SWITCH:
  		  changed |= simplify_gimple_switch (as_a <gswitch *> (stmt),
! 						     edges_to_remove,
! 						     simple_dce_worklist);
  		  break;
  
  		case GIMPLE_COND:
diff -Nrcpad gcc-16-20250824/gcc/tree-ssa-loop-im.cc gcc-16-20250831/gcc/tree-ssa-loop-im.cc
*** gcc-16-20250824/gcc/tree-ssa-loop-im.cc	Sun Aug 24 22:33:16 2025
--- gcc-16-20250831/gcc/tree-ssa-loop-im.cc	Sun Aug 31 22:33:23 2025
*************** execute_sm (class loop *loop, im_mem_ref
*** 2355,2360 ****
--- 2355,2361 ----
  	 loop entry as not to be warned for.  */
        tree uninit = create_tmp_reg (TREE_TYPE (aux->tmp_var));
        suppress_warning (uninit, OPT_Wuninitialized);
+       uninit = get_or_create_ssa_default_def (cfun, uninit);
        load = gimple_build_assign (aux->tmp_var, uninit);
      }
    lim_data = init_lim_data (load);
diff -Nrcpad gcc-16-20250824/gcc/tree-ssa-math-opts.cc gcc-16-20250831/gcc/tree-ssa-math-opts.cc
*** gcc-16-20250824/gcc/tree-ssa-math-opts.cc	Sun Aug 24 22:33:16 2025
--- gcc-16-20250831/gcc/tree-ssa-math-opts.cc	Sun Aug 31 22:33:23 2025
*************** convert_mult_to_highpart (gassign *stmt,
*** 6085,6093 ****
     conditional jump sequence.  If the
     <bb 6> [local count: 1073741824]:
     above has a single PHI like:
!    # _27 = PHI<0(2), -1(3), 2(4), 1(5)>
     then replace it with effectively
!    _1 = .SPACESHIP (a_2(D), b_3(D), 1);
     _27 = _1;  */
  
  static void
--- 6085,6093 ----
     conditional jump sequence.  If the
     <bb 6> [local count: 1073741824]:
     above has a single PHI like:
!    # _27 = PHI<0(2), -1(3), -128(4), 1(5)>
     then replace it with effectively
!    _1 = .SPACESHIP (a_2(D), b_3(D), -128);
     _27 = _1;  */
  
  static void
*************** optimize_spaceship (gcond *stmt)
*** 6218,6224 ****
       than 0 as last .SPACESHIP argument to tell backends it might
       consider different code generation and just cast the result
       of .SPACESHIP to the PHI result.  X above is some value
!      other than -1, 0, 1, for libstdc++ 2, for libc++ -127.  */
    tree arg3 = integer_zero_node;
    edge e = EDGE_SUCC (bb0, 0);
    if (e->dest == bb1)
--- 6218,6224 ----
       than 0 as last .SPACESHIP argument to tell backends it might
       consider different code generation and just cast the result
       of .SPACESHIP to the PHI result.  X above is some value
!      other than -1, 0, 1, for libstdc++ -128, for libc++ -127.  */
    tree arg3 = integer_zero_node;
    edge e = EDGE_SUCC (bb0, 0);
    if (e->dest == bb1)
*************** optimize_spaceship (gcond *stmt)
*** 6245,6251 ****
        && integer_zerop (gimple_phi_arg_def_from_edge (phi, e))
        && EDGE_COUNT (bbp->preds) == (HONOR_NANS (TREE_TYPE (arg1)) ? 4 : 3))
      {
!       HOST_WIDE_INT argval = SCALAR_FLOAT_TYPE_P (TREE_TYPE (arg1)) ? 2 : -1;
        for (unsigned i = 0; phi && i < EDGE_COUNT (bbp->preds) - 1; ++i)
  	{
  	  edge e3 = i == 0 ? e1 : i == 1 ? em1 : e2;
--- 6245,6252 ----
        && integer_zerop (gimple_phi_arg_def_from_edge (phi, e))
        && EDGE_COUNT (bbp->preds) == (HONOR_NANS (TREE_TYPE (arg1)) ? 4 : 3))
      {
!       HOST_WIDE_INT argval
! 	= SCALAR_FLOAT_TYPE_P (TREE_TYPE (arg1)) ? -128 : -1;
        for (unsigned i = 0; phi && i < EDGE_COUNT (bbp->preds) - 1; ++i)
  	{
  	  edge e3 = i == 0 ? e1 : i == 1 ? em1 : e2;
*************** optimize_spaceship (gcond *stmt)
*** 6304,6310 ****
    if (HONOR_NANS (TREE_TYPE (arg1)))
      {
        if (arg3 == integer_zero_node)
! 	wmax = wi::two (TYPE_PRECISION (integer_type_node));
        else if (tree_int_cst_sgn (arg3) < 0)
  	wmin = wi::to_wide (arg3);
        else
--- 6305,6311 ----
    if (HONOR_NANS (TREE_TYPE (arg1)))
      {
        if (arg3 == integer_zero_node)
! 	wmin = wi::shwi (-128, TYPE_PRECISION (integer_type_node));
        else if (tree_int_cst_sgn (arg3) < 0)
  	wmin = wi::to_wide (arg3);
        else
diff -Nrcpad gcc-16-20250824/gcc/tree-ssa-phiopt.cc gcc-16-20250831/gcc/tree-ssa-phiopt.cc
*** gcc-16-20250824/gcc/tree-ssa-phiopt.cc	Sun Aug 24 22:33:16 2025
--- gcc-16-20250831/gcc/tree-ssa-phiopt.cc	Sun Aug 31 22:33:23 2025
*************** minmax_replacement (basic_block cond_bb,
*** 2399,2405 ****
      <bb 5> [local count: 134217728]:  // middle_bb
  
      <bb 6> [local count: 1073741824]:  // phi_bb
!     # SR.27_4 = PHI <0(2), -1(3), 1(4), 2(5)>
      _2 = SR.27_4 > 0;  */
  
  static bool
--- 2399,2405 ----
      <bb 5> [local count: 134217728]:  // middle_bb
  
      <bb 6> [local count: 1073741824]:  // phi_bb
!     # SR.27_4 = PHI <0(2), -1(3), 1(4), -128(5)>
      _2 = SR.27_4 > 0;  */
  
  static bool
*************** spaceship_replacement (basic_block cond_
*** 2412,2419 ****
        || TYPE_UNSIGNED (TREE_TYPE (phires))
        || !tree_fits_shwi_p (arg0)
        || !tree_fits_shwi_p (arg1)
!       || !IN_RANGE (tree_to_shwi (arg0), -1, 2)
!       || !IN_RANGE (tree_to_shwi (arg1), -1, 2))
      return false;
  
    basic_block phi_bb = gimple_bb (phi);
--- 2412,2421 ----
        || TYPE_UNSIGNED (TREE_TYPE (phires))
        || !tree_fits_shwi_p (arg0)
        || !tree_fits_shwi_p (arg1)
!       || (!IN_RANGE (tree_to_shwi (arg0), -1, 1)
! 	  && tree_to_shwi (arg0) != -128)
!       || (!IN_RANGE (tree_to_shwi (arg1), -1, 1)
! 	  && tree_to_shwi (arg1) != -128))
      return false;
  
    basic_block phi_bb = gimple_bb (phi);
*************** spaceship_replacement (basic_block cond_
*** 2431,2470 ****
    tree lhs, rhs;
    gimple *orig_use_stmt = use_stmt;
    tree orig_use_lhs = NULL_TREE;
!   int prec = TYPE_PRECISION (TREE_TYPE (phires));
!   bool is_cast = false;
  
!   /* Deal with the case when match.pd has rewritten the (res & ~1) == 0
!      into res <= 1 and has left a type-cast for signed types.  */
    if (gimple_assign_cast_p (use_stmt))
      {
        orig_use_lhs = gimple_assign_lhs (use_stmt);
!       /* match.pd would have only done this for a signed type,
! 	 so the conversion must be to an unsigned one.  */
        tree ty1 = TREE_TYPE (gimple_assign_rhs1 (use_stmt));
        tree ty2 = TREE_TYPE (orig_use_lhs);
  
        if (!TYPE_UNSIGNED (ty2) || !INTEGRAL_TYPE_P (ty2))
  	return false;
!       if (TYPE_PRECISION (ty1) > TYPE_PRECISION (ty2))
  	return false;
        if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (orig_use_lhs))
  	return false;
        if (!single_imm_use (orig_use_lhs, &use_p, &use_stmt))
  	return false;
  
!       is_cast = true;
!     }
!   else if (is_gimple_assign (use_stmt)
! 	   && gimple_assign_rhs_code (use_stmt) == BIT_AND_EXPR
! 	   && TREE_CODE (gimple_assign_rhs2 (use_stmt)) == INTEGER_CST
! 	   && (wi::to_wide (gimple_assign_rhs2 (use_stmt))
! 	       == wi::shifted_mask (1, prec - 1, false, prec)))
!     {
!       /* For partial_ordering result operator>= with unspec as second
! 	 argument is (res & 1) == res, folded by match.pd into
! 	 (res & ~1) == 0.  */
        orig_use_lhs = gimple_assign_lhs (use_stmt);
        if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (orig_use_lhs))
  	return false;
        if (!single_imm_use (orig_use_lhs, &use_p, &use_stmt))
--- 2433,2480 ----
    tree lhs, rhs;
    gimple *orig_use_stmt = use_stmt;
    tree orig_use_lhs = NULL_TREE;
!   tree temps[2] = { NULL_TREE, NULL_TREE };
  
!   /* Handle std::partial_ordering::_M_reverse(), i.e.
!      _1 = (unsigned char) phires;
!      _2 = -_1;
!      _3 = (signed char) _2;
!      and uses of _3 in comparison instead of phires.  */
    if (gimple_assign_cast_p (use_stmt))
      {
        orig_use_lhs = gimple_assign_lhs (use_stmt);
!       temps[0] = orig_use_lhs;
        tree ty1 = TREE_TYPE (gimple_assign_rhs1 (use_stmt));
        tree ty2 = TREE_TYPE (orig_use_lhs);
  
        if (!TYPE_UNSIGNED (ty2) || !INTEGRAL_TYPE_P (ty2))
  	return false;
!       if (TYPE_PRECISION (ty2) != 8 || TYPE_PRECISION (ty1) < 8)
  	return false;
        if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (orig_use_lhs))
  	return false;
        if (!single_imm_use (orig_use_lhs, &use_p, &use_stmt))
  	return false;
  
!       if (!is_gimple_assign (use_stmt)
! 	  || gimple_assign_rhs_code (use_stmt) != NEGATE_EXPR)
! 	return false;
! 
        orig_use_lhs = gimple_assign_lhs (use_stmt);
+       temps[1] = orig_use_lhs;
+       if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (orig_use_lhs))
+ 	return false;
+       if (!single_imm_use (orig_use_lhs, &use_p, &use_stmt))
+ 	return false;
+ 
+       if (!gimple_assign_cast_p (use_stmt))
+ 	return false;
+ 
+       orig_use_lhs = gimple_assign_lhs (use_stmt);
+       tree ty3 = TREE_TYPE (orig_use_lhs);
+ 
+       if (!useless_type_conversion_p (ty3, ty1))
+ 	return false;
        if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (orig_use_lhs))
  	return false;
        if (!single_imm_use (orig_use_lhs, &use_p, &use_stmt))
*************** spaceship_replacement (basic_block cond_
*** 2515,2565 ****
        || !IN_RANGE (tree_to_shwi (rhs), -1, 1))
      return false;
  
-   if (is_cast)
-     {
-       if (TREE_CODE (rhs) != INTEGER_CST)
- 	return false;
-       /* As for -ffast-math we assume the 2 return to be
- 	 impossible, canonicalize (unsigned) res <= 1U or
- 	 (unsigned) res < 2U into res >= 0 and (unsigned) res > 1U
- 	 or (unsigned) res >= 2U as res < 0.  */
-       switch (cmp)
- 	{
- 	case LE_EXPR:
- 	  if (!integer_onep (rhs))
- 	    return false;
- 	  cmp = GE_EXPR;
- 	  break;
- 	case LT_EXPR:
- 	  if (wi::ne_p (wi::to_widest (rhs), 2))
- 	    return false;
- 	  cmp = GE_EXPR;
- 	  break;
- 	case GT_EXPR:
- 	  if (!integer_onep (rhs))
- 	    return false;
- 	  cmp = LT_EXPR;
- 	  break;
- 	case GE_EXPR:
- 	  if (wi::ne_p (wi::to_widest (rhs), 2))
- 	    return false;
- 	  cmp = LT_EXPR;
- 	  break;
- 	default:
- 	  return false;
- 	}
-       rhs = build_zero_cst (TREE_TYPE (phires));
-     }
-   else if (orig_use_lhs)
-     {
-       if ((cmp != EQ_EXPR && cmp != NE_EXPR) || !integer_zerop (rhs))
- 	return false;
-       /* As for -ffast-math we assume the 2 return to be
- 	 impossible, canonicalize (res & ~1) == 0 into
- 	 res >= 0 and (res & ~1) != 0 as res < 0.  */
-       cmp = cmp == EQ_EXPR ? GE_EXPR : LT_EXPR;
-     }
- 
    if (!empty_block_p (middle_bb))
      return false;
  
--- 2525,2530 ----
*************** spaceship_replacement (basic_block cond_
*** 2672,2683 ****
  	return false;
        if (e1->flags & EDGE_TRUE_VALUE)
  	{
! 	  if (tree_to_shwi (arg0) != 2
  	      || absu_hwi (tree_to_shwi (arg1)) != 1
  	      || wi::to_widest (arg1) == wi::to_widest (arg2))
  	    return false;
  	}
!       else if (tree_to_shwi (arg1) != 2
  	       || absu_hwi (tree_to_shwi (arg0)) != 1
  	       || wi::to_widest (arg0) == wi::to_widest (arg2))
  	return false;
--- 2637,2648 ----
  	return false;
        if (e1->flags & EDGE_TRUE_VALUE)
  	{
! 	  if (tree_to_shwi (arg0) != -128
  	      || absu_hwi (tree_to_shwi (arg1)) != 1
  	      || wi::to_widest (arg1) == wi::to_widest (arg2))
  	    return false;
  	}
!       else if (tree_to_shwi (arg1) != -128
  	       || absu_hwi (tree_to_shwi (arg0)) != 1
  	       || wi::to_widest (arg0) == wi::to_widest (arg2))
  	return false;
*************** spaceship_replacement (basic_block cond_
*** 2797,2809 ****
        if (integer_onep (rhs))
  	res_cmp = one_cmp == LT_EXPR ? GE_EXPR : LE_EXPR;
        else if (integer_zerop (rhs))
! 	{
! 	  if (HONOR_NANS (TREE_TYPE (lhs1)) && orig_use_lhs)
! 	    negate_p = true;
! 	  res_cmp = one_cmp == LT_EXPR ? GT_EXPR : LT_EXPR;
! 	}
        else
  	return false;
        break;
      case LE_EXPR:
        if (integer_zerop (rhs))
--- 2762,2772 ----
        if (integer_onep (rhs))
  	res_cmp = one_cmp == LT_EXPR ? GE_EXPR : LE_EXPR;
        else if (integer_zerop (rhs))
! 	res_cmp = one_cmp == LT_EXPR ? GT_EXPR : LT_EXPR;
        else
  	return false;
+       if (HONOR_NANS (TREE_TYPE (lhs1)))
+ 	negate_p = true;
        break;
      case LE_EXPR:
        if (integer_zerop (rhs))
*************** spaceship_replacement (basic_block cond_
*** 2812,2817 ****
--- 2775,2782 ----
  	res_cmp = one_cmp == LT_EXPR ? GT_EXPR : LT_EXPR;
        else
  	return false;
+       if (HONOR_NANS (TREE_TYPE (lhs1)))
+ 	negate_p = true;
        break;
      case GT_EXPR:
        if (integer_minus_onep (rhs))
*************** spaceship_replacement (basic_block cond_
*** 2820,2847 ****
  	res_cmp = one_cmp;
        else
  	return false;
-       if (HONOR_NANS (TREE_TYPE (lhs1)))
- 	negate_p = true;
        break;
      case GE_EXPR:
        if (integer_zerop (rhs))
! 	{
! 	  if (HONOR_NANS (TREE_TYPE (lhs1)) && !orig_use_lhs)
! 	    negate_p = true;
! 	  res_cmp = one_cmp == LT_EXPR ? LE_EXPR : GE_EXPR;
! 	}
        else if (integer_onep (rhs))
! 	{
! 	  if (HONOR_NANS (TREE_TYPE (lhs1)))
! 	    negate_p = true;
! 	  res_cmp = one_cmp;
! 	}
        else
  	return false;
        break;
      default:
        gcc_unreachable ();
      }
  
    tree clhs1 = lhs1, crhs1 = rhs1;
    if (negate_p)
--- 2785,2804 ----
  	res_cmp = one_cmp;
        else
  	return false;
        break;
      case GE_EXPR:
        if (integer_zerop (rhs))
! 	res_cmp = one_cmp == LT_EXPR ? LE_EXPR : GE_EXPR;
        else if (integer_onep (rhs))
! 	res_cmp = one_cmp;
        else
  	return false;
        break;
      default:
        gcc_unreachable ();
      }
+   if (orig_use_lhs)
+     res_cmp = swap_tree_comparison (res_cmp);
  
    tree clhs1 = lhs1, crhs1 = rhs1;
    if (negate_p)
*************** spaceship_replacement (basic_block cond_
*** 2883,2913 ****
        use_operand_p use_p;
        imm_use_iterator iter;
        bool has_debug_uses = false;
!       bool has_cast_debug_uses = false;
        FOR_EACH_IMM_USE_FAST (use_p, iter, phires)
  	{
  	  gimple *use_stmt = USE_STMT (use_p);
! 	  if (orig_use_lhs && use_stmt == orig_use_stmt)
! 	    continue;
! 	  gcc_assert (is_gimple_debug (use_stmt));
! 	  has_debug_uses = true;
! 	  break;
  	}
        if (orig_use_lhs)
  	{
! 	  if (!has_debug_uses || is_cast)
! 	    FOR_EACH_IMM_USE_FAST (use_p, iter, orig_use_lhs)
! 	      {
! 		gimple *use_stmt = USE_STMT (use_p);
! 		gcc_assert (is_gimple_debug (use_stmt));
! 		has_debug_uses = true;
! 		if (is_cast)
! 		  has_cast_debug_uses = true;
! 	      }
! 	  gimple_stmt_iterator gsi = gsi_for_stmt (orig_use_stmt);
! 	  tree zero = build_zero_cst (TREE_TYPE (orig_use_lhs));
! 	  gimple_assign_set_rhs_with_ops (&gsi, INTEGER_CST, zero);
! 	  update_stmt (orig_use_stmt);
  	}
  
        if (has_debug_uses)
--- 2840,2907 ----
        use_operand_p use_p;
        imm_use_iterator iter;
        bool has_debug_uses = false;
!       bool has_cast1_debug_uses = false;
!       bool has_neg_debug_uses = false;
!       bool has_cast2_debug_uses = false;
        FOR_EACH_IMM_USE_FAST (use_p, iter, phires)
  	{
  	  gimple *use_stmt = USE_STMT (use_p);
! 	  if (is_gimple_debug (use_stmt))
! 	    {
! 	      has_debug_uses = true;
! 	      break;
! 	    }
  	}
        if (orig_use_lhs)
  	{
! 	  FOR_EACH_IMM_USE_FAST (use_p, iter, temps[0])
! 	    {
! 	      gimple *use_stmt = USE_STMT (use_p);
! 	      if (is_gimple_debug (use_stmt))
! 		{
! 		  has_debug_uses = true;
! 		  has_cast1_debug_uses = true;
! 		  break;
! 		}
! 	    }
! 	  FOR_EACH_IMM_USE_FAST (use_p, iter, temps[1])
! 	    {
! 	      gimple *use_stmt = USE_STMT (use_p);
! 	      if (is_gimple_debug (use_stmt))
! 		{
! 		  has_debug_uses = true;
! 		  has_cast1_debug_uses = true;
! 		  has_neg_debug_uses = true;
! 		  break;
! 		}
! 	    }
! 	  FOR_EACH_IMM_USE_FAST (use_p, iter, orig_use_lhs)
! 	    {
! 	      gimple *use_stmt = USE_STMT (use_p);
! 	      if (is_gimple_debug (use_stmt))
! 		{
! 		  has_debug_uses = true;
! 		  has_cast1_debug_uses = true;
! 		  has_neg_debug_uses = true;
! 		  has_cast2_debug_uses = true;
! 		  break;
! 		}
! 	    }
! 	  if (has_debug_uses)
! 	    {
! 	      gimple_stmt_iterator gsi = gsi_for_stmt (orig_use_stmt);
! 	      tree zero = build_zero_cst (TREE_TYPE (temps[0]));
! 	      gimple_assign_set_rhs_with_ops (&gsi, INTEGER_CST, zero);
! 	      update_stmt (orig_use_stmt);
! 	      gsi = gsi_for_stmt (SSA_NAME_DEF_STMT (temps[1]));
! 	      zero = build_zero_cst (TREE_TYPE (temps[1]));
! 	      gimple_assign_set_rhs_with_ops (&gsi, INTEGER_CST, zero);
! 	      update_stmt (SSA_NAME_DEF_STMT (temps[1]));
! 	      gsi = gsi_for_stmt (SSA_NAME_DEF_STMT (orig_use_lhs));
! 	      zero = build_zero_cst (TREE_TYPE (orig_use_lhs));
! 	      gimple_assign_set_rhs_with_ops (&gsi, INTEGER_CST, zero);
! 	      update_stmt (SSA_NAME_DEF_STMT (orig_use_lhs));
! 	    }
  	}
  
        if (has_debug_uses)
*************** spaceship_replacement (basic_block cond_
*** 2917,2926 ****
  	     # DEBUG D#2 => i_2(D) == j_3(D) ? 0 : D#1
  	     where > stands for the comparison that yielded 1
  	     and replace debug uses of phi result with that D#2.
! 	     Ignore the value of 2 if !HONOR_NANS, because if NaNs
  	     aren't expected, all floating point numbers should be
  	     comparable.  If HONOR_NANS, emit something like:
! 	     # DEBUG D#1 => i_2(D) < j_3(D) ? -1 : 2
  	     # DEBUG D#2 => i_2(D) > j_3(D) ? 1 : D#1
  	     # DEBUG D#3 => i_2(D) == j_3(D) ? 0 : D#2
  	     instead.  */
--- 2911,2920 ----
  	     # DEBUG D#2 => i_2(D) == j_3(D) ? 0 : D#1
  	     where > stands for the comparison that yielded 1
  	     and replace debug uses of phi result with that D#2.
! 	     Ignore the value of -128 if !HONOR_NANS, because if NaNs
  	     aren't expected, all floating point numbers should be
  	     comparable.  If HONOR_NANS, emit something like:
! 	     # DEBUG D#1 => i_2(D) < j_3(D) ? -1 : -128
  	     # DEBUG D#2 => i_2(D) > j_3(D) ? 1 : D#1
  	     # DEBUG D#3 => i_2(D) == j_3(D) ? 0 : D#2
  	     instead.  */
*************** spaceship_replacement (basic_block cond_
*** 2933,2939 ****
  	      tree t = build2 (one_cmp == LT_EXPR ? GT_EXPR : LT_EXPR,
  			       boolean_type_node, lhs1, rhs2);
  	      t = build3 (COND_EXPR, type, t, minus_one,
! 			  build_int_cst (type, 2));
  	      gimple *g = gimple_build_debug_bind (temp3, t, phi);
  	      gsi_insert_before (&gsi, g, GSI_SAME_STMT);
  	      minus_one = temp3;
--- 2927,2933 ----
  	      tree t = build2 (one_cmp == LT_EXPR ? GT_EXPR : LT_EXPR,
  			       boolean_type_node, lhs1, rhs2);
  	      t = build3 (COND_EXPR, type, t, minus_one,
! 			  build_int_cst (type, -128));
  	      gimple *g = gimple_build_debug_bind (temp3, t, phi);
  	      gsi_insert_before (&gsi, g, GSI_SAME_STMT);
  	      minus_one = temp3;
*************** spaceship_replacement (basic_block cond_
*** 2950,2984 ****
  	  g = gimple_build_debug_bind (temp2, t, phi);
  	  gsi_insert_before (&gsi, g, GSI_SAME_STMT);
  	  replace_uses_by (phires, temp2);
! 	  if (orig_use_lhs)
  	    {
! 	      if (has_cast_debug_uses
! 		  || (HONOR_NANS (TREE_TYPE (lhs1)) && !is_cast))
! 		{
! 		  tree temp3 = make_node (DEBUG_EXPR_DECL);
! 		  DECL_ARTIFICIAL (temp3) = 1;
! 		  TREE_TYPE (temp3) = TREE_TYPE (orig_use_lhs);
! 		  SET_DECL_MODE (temp3, TYPE_MODE (type));
! 		  if (has_cast_debug_uses)
! 		    t = fold_convert (TREE_TYPE (temp3), temp2);
! 		  else
! 		    t = build2 (BIT_AND_EXPR, TREE_TYPE (temp3),
! 				temp2, build_int_cst (TREE_TYPE (temp3),
! 						      ~1));
! 		  g = gimple_build_debug_bind (temp3, t, phi);
! 		  gsi_insert_before (&gsi, g, GSI_SAME_STMT);
! 		  replace_uses_by (orig_use_lhs, temp3);
! 		}
! 	      else
! 		replace_uses_by (orig_use_lhs, temp2);
  	    }
  	}
      }
  
    if (orig_use_lhs)
      {
!       gimple_stmt_iterator gsi = gsi_for_stmt (orig_use_stmt);
        gsi_remove (&gsi, true);
      }
  
    gimple_stmt_iterator psi = gsi_for_stmt (phi);
--- 2944,2989 ----
  	  g = gimple_build_debug_bind (temp2, t, phi);
  	  gsi_insert_before (&gsi, g, GSI_SAME_STMT);
  	  replace_uses_by (phires, temp2);
! 	  if (has_cast1_debug_uses)
  	    {
! 	      tree temp3 = build_debug_expr_decl (TREE_TYPE (temps[0]));
! 	      t = fold_convert (TREE_TYPE (temps[0]), temp2);
! 	      g = gimple_build_debug_bind (temp3, t, phi);
! 	      gsi_insert_before (&gsi, g, GSI_SAME_STMT);
! 	      replace_uses_by (temps[0], temp3);
! 	      temp2 = temp3;
! 	    }
! 	  if (has_neg_debug_uses)
! 	    {
! 	      tree temp3 = build_debug_expr_decl (TREE_TYPE (temps[1]));
! 	      t = fold_build1 (NEGATE_EXPR, TREE_TYPE (temps[1]), temp2);
! 	      g = gimple_build_debug_bind (temp3, t, phi);
! 	      gsi_insert_before (&gsi, g, GSI_SAME_STMT);
! 	      replace_uses_by (temps[1], temp3);
! 	      temp2 = temp3;
! 	    }
! 	  if (has_cast2_debug_uses)
! 	    {
! 	      tree temp3 = build_debug_expr_decl (TREE_TYPE (orig_use_lhs));
! 	      t = fold_convert (TREE_TYPE (orig_use_lhs), temp2);
! 	      g = gimple_build_debug_bind (temp3, t, phi);
! 	      gsi_insert_before (&gsi, g, GSI_SAME_STMT);
! 	      replace_uses_by (orig_use_lhs, temp3);
  	    }
  	}
      }
  
    if (orig_use_lhs)
      {
!       gimple_stmt_iterator gsi = gsi_for_stmt (SSA_NAME_DEF_STMT (orig_use_lhs));
!       gsi_remove (&gsi, true);
!       gsi = gsi_for_stmt (SSA_NAME_DEF_STMT (temps[1]));
!       gsi_remove (&gsi, true);
!       gsi = gsi_for_stmt (orig_use_stmt);
        gsi_remove (&gsi, true);
+       release_ssa_name (orig_use_lhs);
+       release_ssa_name (temps[1]);
+       release_ssa_name (temps[0]);
      }
  
    gimple_stmt_iterator psi = gsi_for_stmt (phi);
diff -Nrcpad gcc-16-20250824/gcc/tree-vect-loop.cc gcc-16-20250831/gcc/tree-vect-loop.cc
*** gcc-16-20250824/gcc/tree-vect-loop.cc	Sun Aug 24 22:33:16 2025
--- gcc-16-20250831/gcc/tree-vect-loop.cc	Sun Aug 31 22:34:22 2025
*************** vect_analyze_loop_form (class loop *loop
*** 1729,1734 ****
--- 1729,1745 ----
  	}
      }
  
+   if (!integer_onep (info->assumptions))
+     {
+       if (dump_enabled_p ())
+ 	{
+ 	  dump_printf_loc (MSG_NOTE, vect_location,
+ 			   "Loop to be versioned with niter assumption ");
+ 	  dump_generic_expr (MSG_NOTE, TDF_SLIM, info->assumptions);
+ 	  dump_printf (MSG_NOTE, "\n");
+ 	}
+     }
+ 
    return opt_result::success ();
  }
  
*************** vect_is_emulated_mixed_dot_prod (slp_tre
*** 4798,4807 ****
    if (TYPE_SIGN (TREE_TYPE (rhs1)) == TYPE_SIGN (TREE_TYPE (rhs2)))
      return false;
  
-   gcc_assert (STMT_VINFO_REDUC_VECTYPE_IN (stmt_info));
    return !directly_supported_p (DOT_PROD_EXPR,
  				SLP_TREE_VECTYPE (slp_node),
! 				STMT_VINFO_REDUC_VECTYPE_IN (stmt_info),
  				optab_vector_mixed_sign);
  }
  
--- 4809,4818 ----
    if (TYPE_SIGN (TREE_TYPE (rhs1)) == TYPE_SIGN (TREE_TYPE (rhs2)))
      return false;
  
    return !directly_supported_p (DOT_PROD_EXPR,
  				SLP_TREE_VECTYPE (slp_node),
! 				SLP_TREE_VECTYPE
! 				  (SLP_TREE_CHILDREN (slp_node)[0]),
  				optab_vector_mixed_sign);
  }
  
*************** vectorize_fold_left_reduction (loop_vec_
*** 6501,6507 ****
  			       stmt_vec_info stmt_info,
  			       gimple_stmt_iterator *gsi,
  			       slp_tree slp_node,
- 			       gimple *reduc_def_stmt,
  			       code_helper code, internal_fn reduc_fn,
  			       int num_ops, tree vectype_in,
  			       int reduc_index, vec_loop_masks *masks,
--- 6512,6517 ----
*************** vectorize_fold_left_reduction (loop_vec_
*** 6526,6531 ****
--- 6536,6548 ----
    gcc_assert (known_eq (TYPE_VECTOR_SUBPARTS (vectype_out),
  			TYPE_VECTOR_SUBPARTS (vectype_in)));
  
+   /* ???  We should, when transforming the cycle PHI, record the existing
+      scalar def as vector def so looking up the vector def works.  This
+      would also allow generalizing this for reduction paths of length > 1
+      and/or SLP reductions.  */
+   slp_tree reduc_node = SLP_TREE_CHILDREN (slp_node)[reduc_index];
+   tree reduc_var = vect_get_slp_scalar_def (reduc_node, 0);
+ 
    /* The operands either come from a binary operation or an IFN_COND operation.
       The former is a gimple assign with binary rhs and the latter is a
       gimple call with four arguments.  */
*************** vectorize_fold_left_reduction (loop_vec_
*** 6546,6552 ****
    gimple *sdef = vect_orig_stmt (scalar_dest_def_info)->stmt;
    tree scalar_dest = gimple_get_lhs (sdef);
    tree scalar_type = TREE_TYPE (scalar_dest);
-   tree reduc_var = gimple_phi_result (reduc_def_stmt);
  
    int vec_num = vec_oprnds0.length ();
    tree vec_elem_type = TREE_TYPE (vectype_out);
--- 6563,6568 ----
*************** vectorizable_lane_reducing (loop_vec_inf
*** 6934,6941 ****
  	return false;
      }
  
!   tree vectype_in = STMT_VINFO_REDUC_VECTYPE_IN (stmt_info);
! 
    gcc_assert (vectype_in);
  
    /* Compute number of effective vector statements for costing.  */
--- 6950,6956 ----
  	return false;
      }
  
!   tree vectype_in = SLP_TREE_VECTYPE (SLP_TREE_CHILDREN (slp_node)[0]);
    gcc_assert (vectype_in);
  
    /* Compute number of effective vector statements for costing.  */
*************** vectorizable_reduction (loop_vec_info lo
*** 7207,7217 ****
  		 reduction PHI information.  */
  	      STMT_VINFO_REDUC_DEF (def) = phi_info;
  
- 	      /* Each lane-reducing operation has its own input vectype, while
- 		 reduction PHI will record the input vectype with the least
- 		 lanes.  */
- 	      STMT_VINFO_REDUC_VECTYPE_IN (vdef) = vectype_op;
- 
  	      /* To accommodate lane-reducing operations of mixed input
  		 vectypes, choose input vectype with the least lanes for the
  		 reduction PHI statement, which would result in the most
--- 7222,7227 ----
*************** vect_transform_reduction (loop_vec_info
*** 8022,8034 ****
       The last use is the reduction variable.  In case of nested cycle this
       assumption is not true: we use reduc_index to record the index of the
       reduction variable.  */
-   stmt_vec_info phi_info = STMT_VINFO_REDUC_DEF (vect_orig_stmt (stmt_info));
-   gphi *reduc_def_phi = as_a <gphi *> (phi_info->stmt);
    int reduc_index = STMT_VINFO_REDUC_IDX (stmt_info);
!   tree vectype_in = STMT_VINFO_REDUC_VECTYPE_IN (stmt_info);
! 
!   if (!vectype_in)
!     vectype_in = SLP_TREE_VECTYPE (slp_node);
  
    vec_num = vect_get_num_copies (loop_vinfo, slp_node, vectype_in);
  
--- 8032,8039 ----
       The last use is the reduction variable.  In case of nested cycle this
       assumption is not true: we use reduc_index to record the index of the
       reduction variable.  */
    int reduc_index = STMT_VINFO_REDUC_IDX (stmt_info);
!   tree vectype_in = SLP_TREE_VECTYPE (SLP_TREE_CHILDREN (slp_node)[0]);
  
    vec_num = vect_get_num_copies (loop_vinfo, slp_node, vectype_in);
  
*************** vect_transform_reduction (loop_vec_info
*** 8069,8075 ****
        internal_fn reduc_fn = STMT_VINFO_REDUC_FN (reduc_info);
        gcc_assert (code.is_tree_code () || cond_fn_p);
        return vectorize_fold_left_reduction
! 	  (loop_vinfo, stmt_info, gsi, slp_node, reduc_def_phi,
  	   code, reduc_fn, op.num_ops, vectype_in,
  	   reduc_index, masks, lens);
      }
--- 8074,8080 ----
        internal_fn reduc_fn = STMT_VINFO_REDUC_FN (reduc_info);
        gcc_assert (code.is_tree_code () || cond_fn_p);
        return vectorize_fold_left_reduction
! 	  (loop_vinfo, stmt_info, gsi, slp_node,
  	   code, reduc_fn, op.num_ops, vectype_in,
  	   reduc_index, masks, lens);
      }
*************** vect_transform_reduction (loop_vec_info
*** 8205,8211 ****
  	    }
  	}
  
!       tree reduc_vectype_in = STMT_VINFO_REDUC_VECTYPE_IN (stmt_info);
        gcc_assert (reduc_vectype_in);
  
        unsigned effec_reduc_ncopies
--- 8210,8216 ----
  	    }
  	}
  
!       tree reduc_vectype_in = vectype_in;
        gcc_assert (reduc_vectype_in);
  
        unsigned effec_reduc_ncopies
*************** vect_transform_cycle_phi (loop_vec_info
*** 8362,8369 ****
        nested_cycle = true;
      }
  
-   stmt_vec_info reduc_stmt_info = STMT_VINFO_REDUC_DEF (stmt_info);
-   reduc_stmt_info = vect_stmt_to_vectorize (reduc_stmt_info);
    stmt_vec_info reduc_info = info_for_reduction (loop_vinfo, stmt_info);
    gcc_assert (reduc_info->is_reduc_info);
  
--- 8367,8372 ----
diff -Nrcpad gcc-16-20250824/gcc/tree-vect-patterns.cc gcc-16-20250831/gcc/tree-vect-patterns.cc
*** gcc-16-20250824/gcc/tree-vect-patterns.cc	Sun Aug 24 22:33:16 2025
--- gcc-16-20250831/gcc/tree-vect-patterns.cc	Sun Aug 31 22:34:22 2025
*************** vect_synth_mult_by_constant (vec_info *v
*** 4314,4319 ****
--- 4314,4348 ----
    if (!possible)
      return NULL;
  
+   if (vect_is_reduction (stmt_vinfo))
+     {
+       int op_uses = alg.op[0] != alg_zero;
+       for (int i = 1; i < alg.ops; i++)
+ 	switch (alg.op[i])
+ 	  {
+ 	  case alg_add_t_m2:
+ 	  case alg_sub_t_m2:
+ 	    if (synth_shift_p && alg.log[i])
+ 	      return NULL;
+ 	    else
+ 	      op_uses++;
+ 	    break;
+ 	  case alg_add_t2_m:
+ 	  case alg_sub_t2_m:
+ 	    op_uses++;
+ 	    break;
+ 	  default:
+ 	    break;
+ 	  }
+       if (variant == add_variant)
+ 	op_uses++;
+       /* When we'll synthesize more than a single use of the reduction
+ 	 operand the reduction constraints are violated.  Avoid this
+ 	 situation.  */
+       if (op_uses > 1)
+ 	return NULL;
+     }
+ 
    if (!target_supports_mult_synth_alg (&alg, variant, vectype, synth_shift_p))
      return NULL;
  
*************** vect_recog_divmod_pattern (vec_info *vin
*** 4818,4824 ****
    tree q, cst;
    int prec;
  
!   if (!is_gimple_assign (last_stmt))
      return NULL;
  
    rhs_code = gimple_assign_rhs_code (last_stmt);
--- 4847,4855 ----
    tree q, cst;
    int prec;
  
!   if (!is_gimple_assign (last_stmt)
!       /* The pattern will disrupt the reduction chain with multiple uses.  */
!       || vect_is_reduction (stmt_vinfo))
      return NULL;
  
    rhs_code = gimple_assign_rhs_code (last_stmt);
diff -Nrcpad gcc-16-20250824/gcc/tree-vect-slp.cc gcc-16-20250831/gcc/tree-vect-slp.cc
*** gcc-16-20250824/gcc/tree-vect-slp.cc	Sun Aug 24 22:33:16 2025
--- gcc-16-20250831/gcc/tree-vect-slp.cc	Sun Aug 31 22:34:22 2025
*************** vect_build_slp_tree_1 (vec_info *vinfo,
*** 1389,1395 ****
  		    && (TREE_CODE_CLASS (tree_code (first_stmt_code))
  			== tcc_comparison)
  		    && (swap_tree_comparison (tree_code (first_stmt_code))
! 			== tree_code (rhs_code))))
  	      || (ldst_p
  		  && (STMT_VINFO_GROUPED_ACCESS (stmt_info)
  		      != STMT_VINFO_GROUPED_ACCESS (first_stmt_info)))
--- 1389,1397 ----
  		    && (TREE_CODE_CLASS (tree_code (first_stmt_code))
  			== tcc_comparison)
  		    && (swap_tree_comparison (tree_code (first_stmt_code))
! 			== tree_code (rhs_code))
! 		    && (first_reduc_idx == -1
! 			|| REDUC_GROUP_FIRST_ELEMENT (stmt_info))))
  	      || (ldst_p
  		  && (STMT_VINFO_GROUPED_ACCESS (stmt_info)
  		      != STMT_VINFO_GROUPED_ACCESS (first_stmt_info)))
*************** vect_build_slp_tree_1 (vec_info *vinfo,
*** 1605,1612 ****
  		}
  	    }
  
! 	  if (rhs_code.is_tree_code ()
! 	      && TREE_CODE_CLASS ((tree_code)rhs_code) == tcc_comparison
  	      && (swap_tree_comparison ((tree_code)first_stmt_code)
  		  == (tree_code)rhs_code))
  	    swap[i] = 1;
--- 1607,1617 ----
  		}
  	    }
  
! 	  if (i != 0
! 	      && first_stmt_code != rhs_code
! 	      && first_stmt_code.is_tree_code ()
! 	      && rhs_code.is_tree_code ()
! 	      && TREE_CODE_CLASS ((tree_code)first_stmt_code) == tcc_comparison
  	      && (swap_tree_comparison ((tree_code)first_stmt_code)
  		  == (tree_code)rhs_code))
  	    swap[i] = 1;
*************** vect_analyze_slp (vec_info *vinfo, unsig
*** 5307,5315 ****
  		&& ((stmt_info = vect_stmt_to_vectorize (stmt_info)), true)
  		&& STMT_VINFO_RELEVANT (stmt_info) == vect_used_only_live
  		&& STMT_VINFO_LIVE_P (stmt_info)
! 		&& (STMT_VINFO_DEF_TYPE (stmt_info) == vect_induction_def
! 		    || (STMT_VINFO_DEF_TYPE (stmt_info) == vect_internal_def
! 			&& STMT_VINFO_REDUC_IDX (stmt_info) == -1)))
  	      {
  		vec<stmt_vec_info> stmts;
  		vec<stmt_vec_info> roots = vNULL;
--- 5312,5319 ----
  		&& ((stmt_info = vect_stmt_to_vectorize (stmt_info)), true)
  		&& STMT_VINFO_RELEVANT (stmt_info) == vect_used_only_live
  		&& STMT_VINFO_LIVE_P (stmt_info)
! 		&& !VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (stmt_info))
! 		&& STMT_VINFO_REDUC_IDX (stmt_info) == -1)
  	      {
  		vec<stmt_vec_info> stmts;
  		vec<stmt_vec_info> roots = vNULL;
diff -Nrcpad gcc-16-20250824/gcc/tree-vect-stmts.cc gcc-16-20250831/gcc/tree-vect-stmts.cc
*** gcc-16-20250824/gcc/tree-vect-stmts.cc	Sun Aug 24 22:33:16 2025
--- gcc-16-20250831/gcc/tree-vect-stmts.cc	Sun Aug 31 22:34:22 2025
*************** vect_stmt_relevant_p (stmt_vec_info stmt
*** 417,423 ****
  
    /* Check if it's a not live PHI and multiple exits.  In this case
       there will be a usage later on after peeling which is needed for the
!      alternate exit.  */
    if (LOOP_VINFO_EARLY_BREAKS (loop_vinfo)
        && is_a <gphi *> (stmt)
        && gimple_bb (stmt) == LOOP_VINFO_LOOP (loop_vinfo)->header
--- 417,425 ----
  
    /* Check if it's a not live PHI and multiple exits.  In this case
       there will be a usage later on after peeling which is needed for the
!      alternate exit.
!      ???  Unless the PHI was marked live because of early
!      break, which also needs the latch def live and vectorized.  */
    if (LOOP_VINFO_EARLY_BREAKS (loop_vinfo)
        && is_a <gphi *> (stmt)
        && gimple_bb (stmt) == LOOP_VINFO_LOOP (loop_vinfo)->header
*************** process_use (stmt_vec_info stmt_vinfo, t
*** 655,668 ****
      }
    /* We are also not interested in uses on loop PHI backedges that are
       inductions.  Otherwise we'll needlessly vectorize the IV increment
!      and cause hybrid SLP for SLP inductions.  Unless the PHI is live
!      of course.  */
    else if (gimple_code (stmt_vinfo->stmt) == GIMPLE_PHI
  	   && STMT_VINFO_DEF_TYPE (stmt_vinfo) == vect_induction_def
- 	   && ! STMT_VINFO_LIVE_P (stmt_vinfo)
  	   && (PHI_ARG_DEF_FROM_EDGE (stmt_vinfo->stmt,
  				      loop_latch_edge (bb->loop_father))
! 	       == use))
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_NOTE, vect_location,
--- 657,671 ----
      }
    /* We are also not interested in uses on loop PHI backedges that are
       inductions.  Otherwise we'll needlessly vectorize the IV increment
!      and cause hybrid SLP for SLP inductions.  */
    else if (gimple_code (stmt_vinfo->stmt) == GIMPLE_PHI
  	   && STMT_VINFO_DEF_TYPE (stmt_vinfo) == vect_induction_def
  	   && (PHI_ARG_DEF_FROM_EDGE (stmt_vinfo->stmt,
  				      loop_latch_edge (bb->loop_father))
! 	       == use)
! 	   && (!LOOP_VINFO_EARLY_BREAKS (loop_vinfo)
! 	       || (gimple_bb (stmt_vinfo->stmt)
! 		   != LOOP_VINFO_LOOP (loop_vinfo)->header)))
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_NOTE, vect_location,
*************** process_use (stmt_vec_info stmt_vinfo, t
*** 670,676 ****
        return opt_result::success ();
      }
  
- 
    vect_mark_relevant (worklist, dstmt_vinfo, relevant, false);
    return opt_result::success ();
  }
--- 673,678 ----
*************** vectorizable_store (vec_info *vinfo,
*** 7889,7895 ****
      = ls.alignment_support_scheme;
    const int misalignment = ls.misalignment;
    const poly_int64 poffset = ls.poffset;
-   const internal_fn lanes_ifn = ls.lanes_ifn;
  
    if (slp_node->ldst_lanes
        && memory_access_type != VMAT_LOAD_STORE_LANES)
--- 7891,7896 ----
*************** vectorizable_store (vec_info *vinfo,
*** 8393,8398 ****
--- 8394,8401 ----
  
    if (memory_access_type == VMAT_LOAD_STORE_LANES)
      {
+       const internal_fn lanes_ifn = ls.lanes_ifn;
+ 
        if (costing_p)
  	/* Update all incoming store operand nodes, the general handling
  	   above only handles the mask and the first store operand node.  */
*************** vectorizable_load (vec_info *vinfo,
*** 9458,9464 ****
      = ls.alignment_support_scheme;
    const int misalignment = ls.misalignment;
    const poly_int64 poffset = ls.poffset;
-   const internal_fn lanes_ifn = ls.lanes_ifn;
    const vec<int> &elsvals = ls.elsvals;
  
    int maskload_elsval = 0;
--- 9461,9466 ----
*************** vectorizable_load (vec_info *vinfo,
*** 10239,10244 ****
--- 10241,10248 ----
    tree vec_els = NULL_TREE;
    if (memory_access_type == VMAT_LOAD_STORE_LANES)
      {
+       const internal_fn lanes_ifn = ls.lanes_ifn;
+ 
        gcc_assert (alignment_support_scheme == dr_aligned
  		  || alignment_support_scheme == dr_unaligned_supported);
  
diff -Nrcpad gcc-16-20250824/gcc/tree-vectorizer.h gcc-16-20250831/gcc/tree-vectorizer.h
*** gcc-16-20250824/gcc/tree-vectorizer.h	Sun Aug 24 22:33:16 2025
--- gcc-16-20250831/gcc/tree-vectorizer.h	Sun Aug 31 22:34:22 2025
*************** public:
*** 1518,1526 ****
       corresponding PHI.  */
    stmt_vec_info reduc_def;
  
-   /* The vector input type relevant for reduction vectorization.  */
-   tree reduc_vectype_in;
- 
    /* The vector type for performing the actual reduction.  */
    tree reduc_vectype;
  
--- 1518,1523 ----
*************** vect_is_reduction (stmt_vec_info stmt_in
*** 2881,2894 ****
  /* If STMT_INFO describes a reduction, return the vect_reduction_type
     of the reduction it describes, otherwise return -1.  */
  inline int
! vect_reduc_type (vec_info *vinfo, stmt_vec_info stmt_info)
  {
    if (loop_vec_info loop_vinfo = dyn_cast<loop_vec_info> (vinfo))
!     if (STMT_VINFO_REDUC_DEF (stmt_info))
!       {
! 	stmt_vec_info reduc_info = info_for_reduction (loop_vinfo, stmt_info);
! 	return int (STMT_VINFO_REDUC_TYPE (reduc_info));
!       }
    return -1;
  }
  
--- 2878,2895 ----
  /* If STMT_INFO describes a reduction, return the vect_reduction_type
     of the reduction it describes, otherwise return -1.  */
  inline int
! vect_reduc_type (vec_info *vinfo, slp_tree node)
  {
    if (loop_vec_info loop_vinfo = dyn_cast<loop_vec_info> (vinfo))
!     {
!       stmt_vec_info stmt_info = SLP_TREE_REPRESENTATIVE (node);
!       if (STMT_VINFO_REDUC_DEF (stmt_info))
! 	{
! 	  stmt_vec_info reduc_info
! 	    = info_for_reduction (loop_vinfo, stmt_info);
! 	  return int (STMT_VINFO_REDUC_TYPE (reduc_info));
! 	}
!     }
    return -1;
  }
  
diff -Nrcpad gcc-16-20250824/libgcc/config/libbid/ChangeLog gcc-16-20250831/libgcc/config/libbid/ChangeLog
*** gcc-16-20250824/libgcc/config/libbid/ChangeLog	Sun Aug 24 22:33:17 2025
--- gcc-16-20250831/libgcc/config/libbid/ChangeLog	Sun Aug 31 22:34:25 2025
***************
*** 1,3 ****
--- 1,26 ----
+ 2025-08-30  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	Revert:
+ 	2025-08-29  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/120691
+ 	* bid128_div.c: Fix _Decimal128 arithmetic error under
+ 	FE_UPWARD.
+ 	* bid128_rem.c: Ditto.
+ 	* bid128_sqrt.c: Ditto.
+ 	* bid64_div.c (bid64_div): Ditto.
+ 	* bid64_sqrt.c (bid64_sqrt): Ditto.
+ 
+ 2025-08-29  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/120691
+ 	* bid128_div.c: Fix _Decimal128 arithmetic error under
+ 	FE_UPWARD.
+ 	* bid128_rem.c: Ditto.
+ 	* bid128_sqrt.c: Ditto.
+ 	* bid64_div.c (bid64_div): Ditto.
+ 	* bid64_sqrt.c (bid64_sqrt): Ditto.
+ 
  2025-07-15  Andrew Pinski  <quic_apinski@quicinc.com>
  
  	* bid_binarydecimal.c (__mul_10x256_to_256): Mark c3 as being
diff -Nrcpad gcc-16-20250824/libstdc++-v3/ChangeLog gcc-16-20250831/libstdc++-v3/ChangeLog
*** gcc-16-20250824/libstdc++-v3/ChangeLog	Sun Aug 24 22:33:27 2025
--- gcc-16-20250831/libstdc++-v3/ChangeLog	Sun Aug 31 22:34:30 2025
***************
*** 1,3 ****
--- 1,143 ----
+ 2025-08-28  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/119670
+ 	* acinclude.m4 (GLIBCXX_CHECK_DEBUGGING): Check for facilities
+ 	needed by <debugging>.
+ 	* config.h.in: Regenerate.
+ 	* configure: Regenerate.
+ 	* configure.ac: Use GLIBCXX_CHECK_DEBUGGING.
+ 	* include/Makefile.am: Add new header.
+ 	* include/Makefile.in: Regenerate.
+ 	* include/bits/version.def (debugging): Add.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/precompiled/stdc++.h: Add new header.
+ 	* src/c++26/Makefile.am: Add new file.
+ 	* src/c++26/Makefile.in: Regenerate.
+ 	* include/std/debugging: New file.
+ 	* src/c++26/debugging.cc: New file.
+ 	* testsuite/19_diagnostics/debugging/breakpoint.cc: New test.
+ 	* testsuite/19_diagnostics/debugging/breakpoint_if_debugging.cc:
+ 	New test.
+ 	* testsuite/19_diagnostics/debugging/is_debugger_present.cc: New
+ 	test.
+ 	* testsuite/19_diagnostics/debugging/is_debugger_present-2.cc:
+ 	New test.
+ 
+ 2025-08-28  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* testsuite/18_support/comparisons/categories/zero_neg.cc: New test.
+ 
+ 2025-08-28  Weslley da Silva Pereira  <weslley.spereira@gmail.com>
+ 
+ 	* include/std/complex (polar, __complex_sqrt, pow)
+ 	(__complex_pow_unsigned): Use explicit conversions from int to
+ 	the complex value_type.
+ 
+ 2025-08-28  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/121046
+ 	* include/std/bitset (bitset(const CharT*, ...)): Add
+ 	constraints on CharT type.
+ 	* testsuite/23_containers/bitset/lwg4294.cc: New test.
+ 
+ 2025-08-28  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* libsupc++/compare (__cmp_cat::_Ord): Add unordered enumerator.
+ 	(__cmp_cat::_Ncmp): Remove.
+ 	(__cmp_cat::__ord, __cmp_cat::__make):  Define.
+ 	(partial_ordering::partial_ordering(__cmp_cat::_Ncmp)): Remove.
+ 	(operator<=>(__cmp_cat::__unspec, partial_ordering))
+ 	(partial_ordering::unordered): Replace _Ncmp with _Ord.
+ 	(std::partial_ordering, std::weak_ordering, std::strong_ordering):
+ 	Befriend __ord and __make helpers, remove friend declartions for
+ 	other orderings.
+ 	(__compare::__fp_weak_ordering): Remove unused __cat variable.
+ 	Simplify ordering conversions.
+ 
+ 2025-08-27  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* libsupc++/compare
+ 	(operator<=>(__cmp_cat::__unspec, partial_ordering)):
+ 	Implement using _M_reverse.
+ 
+ 2025-08-27  Nathan Myers  <ncm@cantrip.org>
+ 
+ 	* include/std/chrono (gps_clock::now, tai_clock::now): Remove
+ 	inline definitions.
+ 	* src/c++20/clock.cc (gps_clock::now, tai_clock::now): New file
+ 	for out-of-line now() impls.
+ 	* src/c++20/Makefile.am: Mention clock.cc.
+ 	* src/c++20/Makefile.in: Regenerate.
+ 	* config/abi/pre/gnu.ver: add mangled now() symbols.
+ 
+ 2025-08-27  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* libsupc++/compare (_Ncmp::_Unordered): Rename and change the value
+ 	to minimum value of signed char.
+ 	(_Ncomp::unordered): Renamed from _Unordered, the name is reserved
+ 	by partial_ordered::unordered.
+ 	(partial_ordering::_M_reverse()): Define.
+ 	(operator<=(partial_ordering, __cmp_cat::__unspec))
+ 	(operator>=(__cmp_cat::__unspec, partial_ordering)): Implemented
+ 	in terms of negated _M_value.
+ 	(operator>=(partial_ordering, __cmp_cat::__unspec))
+ 	(operator<=(__cmp_cat::__unspec, partial_ordering)): Directly
+ 	compare _M_value, as unordered value is negative.
+ 	(partial_ordering::unordered): Handle _Ncmp::unoredred rename.
+ 	* python/libstdcxx/v6/printers.py: Add -128 as integer value
+ 	for unordered, keeping 2 to preserve backward compatibility.
+ 
+ 2025-08-27  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/funcwrap.h (__polyfunc::_Mo_base): Reorder _M_manage
+ 	and _M_storage members. Make _M_destroy protected and remove friend
+ 	declaration.
+ 	* testsuite/20_util/copyable_function/call.cc: Add test for aliasing
+ 	base class.
+ 	* testsuite/20_util/move_only_function/call.cc: Likewise.
+ 
+ 2025-08-26  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/ranges (__detail::_CachedPosition): Remove
+ 	additional size constraint on the offset-based partial
+ 	specialization.
+ 
+ 2025-08-26  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/90192
+ 	* include/bits/stl_vector.h (vector<T>::_M_fill_append): Declare.
+ 	(vector<T>::fill): Use _M_fill_append instead of _M_fill_insert.
+ 	* include/bits/vector.tcc (vector<T>::_M_fill_append): Define
+ 	(vector<T>::_M_fill_insert): Delegate to _M_fill_append when
+ 	elements are appended.
+ 	* testsuite/23_containers/vector/modifiers/moveable.cc: Updated
+ 	copycount for inserting at the end (appending).
+ 	* testsuite/23_containers/vector/modifiers/resize.cc: New test.
+ 	* testsuite/backward/hash_set/check_construct_destroy.cc: Updated
+ 	copycount, the hash_set constructor uses insert to fill buckets
+ 	with nullptrs.
+ 
+ 2025-08-26  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/move.h (std::__like_impl, std::__like_t): Make
+ 	available in c++11.
+ 	* include/std/functional (std::_Indexed_bound_arg)
+ 	(std::_Bound_arg_storage, std::__make_bound_args): Define.
+ 	(std::_Bind_front, std::_Bind_back): Use _Bound_arg_storage.
+ 	* testsuite/20_util/function_objects/bind_back/1.cc: Expand
+ 	test to cover cases of 0, 1, many bound args.
+ 	* testsuite/20_util/function_objects/bind_back/111327.cc: Likewise.
+ 	* testsuite/20_util/function_objects/bind_front/1.cc: Likewise.
+ 	* testsuite/20_util/function_objects/bind_front/111327.cc: Likewise.
+ 
+ 2025-08-26  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/std/stop_token (__variant::_Never_valueless_alt): Declare.
+ 	(__variant::_Never_valueless_alt<std::stop_token>)
+ 	(__variant::_Never_valueless_alt<std::stop_source>): Define.
+ 	* include/std/thread: (__variant::_Never_valueless_alt): Declare.
+ 	(__variant::_Never_valueless_alt<std::jthread>): Define.
+ 
  2025-08-21  Jonathan Wakely  <jwakely@redhat.com>
  
  	PR libstdc++/121496
diff -Nrcpad gcc-16-20250824/libstdc++-v3/acinclude.m4 gcc-16-20250831/libstdc++-v3/acinclude.m4
*** gcc-16-20250824/libstdc++-v3/acinclude.m4	Sun Aug 24 22:33:27 2025
--- gcc-16-20250831/libstdc++-v3/acinclude.m4	Sun Aug 31 22:34:30 2025
*************** AC_LANG_SAVE
*** 5769,5774 ****
--- 5769,5810 ----
    AC_LANG_RESTORE
  ])
  
+ dnl
+ dnl Check whether the dependencies for std::is_debugger_present are available.
+ dnl
+ dnl Defines:
+ dnl   _GLIBCXX_USE_PTRACE if ptrace(int, pid_t, int, int) is in <sys/ptrace.h>.
+ dnl   _GLIBCXX_USE_PROC_SELF_STATUS if /proc/self/status should be used.
+ dnl
+ AC_DEFUN([GLIBCXX_CHECK_DEBUGGING], [
+   AC_LANG_SAVE
+   AC_LANG_CPLUSPLUS
+ 
+   AC_CHECK_HEADERS([sys/ptrace.h debugapi.h])
+ 
+   case "$target_os" in
+     linux*)
+       AC_DEFINE([_GLIBCXX_USE_PROC_SELF_STATUS],1,
+ 		[Define if /proc/self/status should be used for <debugging>.])
+       ;;
+   esac
+ 
+   AC_MSG_CHECKING([whether ptrace(int, pid_t, int, int) is in <sys/ptrace.h>])
+   AC_TRY_COMPILE([
+   #include <sys/ptrace.h>
+   ],[
+     int i = ptrace(PTRACE_TRACEME, (pid_t)0, 1, 0);
+   ], [ac_ptrace=yes], [ac_ptrace=no])
+   AC_MSG_RESULT($ac_ptrace)
+   if test "$ac_ptrace" = yes; then
+     AC_DEFINE_UNQUOTED(_GLIBCXX_USE_PTRACE, 1,
+       [Define if ptrace should be used for std::is_debugger_present.])
+   fi
+ 
+   AC_LANG_RESTORE
+ ])
+ 
+ 
  # Macros from the top-level gcc directory.
  m4_include([../config/gc++filt.m4])
  m4_include([../config/tls.m4])
diff -Nrcpad gcc-16-20250824/libstdc++-v3/config/abi/pre/gnu.ver gcc-16-20250831/libstdc++-v3/config/abi/pre/gnu.ver
*** gcc-16-20250824/libstdc++-v3/config/abi/pre/gnu.ver	Sun Aug 24 22:33:27 2025
--- gcc-16-20250831/libstdc++-v3/config/abi/pre/gnu.ver	Sun Aug 31 22:34:30 2025
*************** GLIBCXX_3.4.35 {
*** 2555,2560 ****
--- 2555,2564 ----
      _ZNSt8__detail17__wait_until_implEPKvRNS_16__wait_args_baseERKNSt6chrono8durationI[lx]St5ratioIL[lx]1EL[lx]1000000000EEEE;
      _ZNSt8__detail11__wait_args22_M_load_proxy_wait_valEPKv;
  
+     # std::chrono::gps_clock::now, tai_clock::now
+     _ZNSt6chrono9gps_clock3nowEv;
+     _ZNSt6chrono9tai_clock3nowEv;
+ 
      # __gnu_debug::_Safe_iterator_base and _Safe_sequence_base const
      _ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb;
      _ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb;
diff -Nrcpad gcc-16-20250824/libstdc++-v3/config.h.in gcc-16-20250831/libstdc++-v3/config.h.in
*** gcc-16-20250824/libstdc++-v3/config.h.in	Sun Aug 24 22:33:27 2025
--- gcc-16-20250831/libstdc++-v3/config.h.in	Sun Aug 31 22:34:30 2025
***************
*** 70,75 ****
--- 70,78 ----
  /* Define to 1 if you have the `cosl' function. */
  #undef HAVE_COSL
  
+ /* Define to 1 if you have the <debugapi.h> header file. */
+ #undef HAVE_DEBUGAPI_H
+ 
  /* Define to 1 if you have the declaration of `strnlen', and to 0 if you
     don't. */
  #undef HAVE_DECL_STRNLEN
***************
*** 435,440 ****
--- 438,446 ----
  /* Define to 1 if you have the <sys/param.h> header file. */
  #undef HAVE_SYS_PARAM_H
  
+ /* Define to 1 if you have the <sys/ptrace.h> header file. */
+ #undef HAVE_SYS_PTRACE_H
+ 
  /* Define to 1 if you have the <sys/resource.h> header file. */
  #undef HAVE_SYS_RESOURCE_H
  
***************
*** 846,851 ****
--- 852,860 ----
  /* Define if nl_langinfo_l should be used for std::text_encoding. */
  #undef _GLIBCXX_USE_NL_LANGINFO_L
  
+ /* Define if /proc/self/status should be used for <debugging>. */
+ #undef _GLIBCXX_USE_PROC_SELF_STATUS
+ 
  /* Define if pthreads_num_processors_np is available in <pthread.h>. */
  #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP
  
***************
*** 862,867 ****
--- 871,879 ----
  /* Define if POSIX read/write locks are available in <gthr.h>. */
  #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T
  
+ /* Define if ptrace should be used for std::is_debugger_present. */
+ #undef _GLIBCXX_USE_PTRACE
+ 
  /* Define if /dev/random and /dev/urandom are available for the random_device
     of TR1 (Chapter 5.1). */
  #undef _GLIBCXX_USE_RANDOM_TR1
diff -Nrcpad gcc-16-20250824/libstdc++-v3/configure gcc-16-20250831/libstdc++-v3/configure
*** gcc-16-20250824/libstdc++-v3/configure	Sun Aug 24 22:33:27 2025
--- gcc-16-20250831/libstdc++-v3/configure	Sun Aug 31 22:34:30 2025
*************** ac_compiler_gnu=$ac_cv_c_compiler_gnu
*** 54501,54506 ****
--- 54501,54579 ----
  
  
  
+ # For std::is_debugger_present
+ 
+ 
+   ac_ext=cpp
+ ac_cpp='$CXXCPP $CPPFLAGS'
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+ 
+ 
+   for ac_header in sys/ptrace.h debugapi.h
+ do :
+   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+ if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+   cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+ 
+ fi
+ 
+ done
+ 
+ 
+   case "$target_os" in
+     linux*)
+ 
+ $as_echo "#define _GLIBCXX_USE_PROC_SELF_STATUS 1" >>confdefs.h
+ 
+       ;;
+   esac
+ 
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ptrace(int, pid_t, int, int) is in <sys/ptrace.h>" >&5
+ $as_echo_n "checking whether ptrace(int, pid_t, int, int) is in <sys/ptrace.h>... " >&6; }
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+   #include <sys/ptrace.h>
+ 
+ int
+ main ()
+ {
+ 
+     int i = ptrace(PTRACE_TRACEME, (pid_t)0, 1, 0);
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_cxx_try_compile "$LINENO"; then :
+   ac_ptrace=yes
+ else
+   ac_ptrace=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ptrace" >&5
+ $as_echo "$ac_ptrace" >&6; }
+   if test "$ac_ptrace" = yes; then
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define _GLIBCXX_USE_PTRACE 1
+ _ACEOF
+ 
+   fi
+ 
+   ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ 
+ 
+ 
  # Define documentation rules conditionally.
  
  # See if makeinfo has been installed and is modern enough
diff -Nrcpad gcc-16-20250824/libstdc++-v3/configure.ac gcc-16-20250831/libstdc++-v3/configure.ac
*** gcc-16-20250824/libstdc++-v3/configure.ac	Sun Aug 24 22:33:27 2025
--- gcc-16-20250831/libstdc++-v3/configure.ac	Sun Aug 31 22:34:30 2025
*************** GLIBCXX_CHECK_FILEBUF_NATIVE_HANDLES
*** 587,592 ****
--- 587,595 ----
  # For std::text_encoding
  GLIBCXX_CHECK_TEXT_ENCODING
  
+ # For std::is_debugger_present
+ GLIBCXX_CHECK_DEBUGGING
+ 
  # Define documentation rules conditionally.
  
  # See if makeinfo has been installed and is modern enough
diff -Nrcpad gcc-16-20250824/libstdc++-v3/doc/html/manual/using_exceptions.html gcc-16-20250831/libstdc++-v3/doc/html/manual/using_exceptions.html
*** gcc-16-20250824/libstdc++-v3/doc/html/manual/using_exceptions.html	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/doc/html/manual/using_exceptions.html	Sun Aug 31 22:34:30 2025
*************** is called.
*** 336,342 ****
        </em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams </span>. </span><span class="publisher"><span class="publishername">
  	Boost
        . </span></span></p></div><div class="biblioentry"><a id="id-1.3.3.4.9.10.4"></a><p><span class="title"><em>
! 	<a class="link" href="https://www.boost.org/community/exception_safety.html" target="_top">
  	Exception-Safety in Generic Components
  	</a>
        </em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams</span>. </span><span class="publisher"><span class="publishername">
--- 336,342 ----
        </em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams </span>. </span><span class="publisher"><span class="publishername">
  	Boost
        . </span></span></p></div><div class="biblioentry"><a id="id-1.3.3.4.9.10.4"></a><p><span class="title"><em>
! 	<a class="link" href="https://www.boost.org/doc/user-guide/exception-safety.html" target="_top">
  	Exception-Safety in Generic Components
  	</a>
        </em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams</span>. </span><span class="publisher"><span class="publishername">
diff -Nrcpad gcc-16-20250824/libstdc++-v3/doc/xml/manual/using_exceptions.xml gcc-16-20250831/libstdc++-v3/doc/xml/manual/using_exceptions.xml
*** gcc-16-20250824/libstdc++-v3/doc/xml/manual/using_exceptions.xml	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/doc/xml/manual/using_exceptions.xml	Sun Aug 31 22:34:30 2025
*************** is called.
*** 545,551 ****
    <biblioentry>
        <title>
  	<link xmlns:xlink="http://www.w3.org/1999/xlink"
! 	      xlink:href="https://www.boost.org/community/exception_safety.html">
  	Exception-Safety in Generic Components
  	</link>
        </title>
--- 545,551 ----
    <biblioentry>
        <title>
  	<link xmlns:xlink="http://www.w3.org/1999/xlink"
! 	      xlink:href="https://www.boost.org/doc/user-guide/exception-safety.html">
  	Exception-Safety in Generic Components
  	</link>
        </title>
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/Makefile.am gcc-16-20250831/libstdc++-v3/include/Makefile.am
*** gcc-16-20250824/libstdc++-v3/include/Makefile.am	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/Makefile.am	Sun Aug 31 22:34:30 2025
*************** std_headers = \
*** 68,73 ****
--- 68,74 ----
  	${std_srcdir}/codecvt \
  	${std_srcdir}/complex \
  	${std_srcdir}/condition_variable \
+ 	${std_srcdir}/debugging \
  	${std_srcdir}/deque \
  	${std_srcdir}/execution \
  	${std_srcdir}/filesystem \
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/Makefile.in gcc-16-20250831/libstdc++-v3/include/Makefile.in
*** gcc-16-20250824/libstdc++-v3/include/Makefile.in	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/Makefile.in	Sun Aug 31 22:34:30 2025
*************** std_freestanding = \
*** 424,429 ****
--- 424,430 ----
  @GLIBCXX_HOSTED_TRUE@	${std_srcdir}/codecvt \
  @GLIBCXX_HOSTED_TRUE@	${std_srcdir}/complex \
  @GLIBCXX_HOSTED_TRUE@	${std_srcdir}/condition_variable \
+ @GLIBCXX_HOSTED_TRUE@	${std_srcdir}/debugging \
  @GLIBCXX_HOSTED_TRUE@	${std_srcdir}/deque \
  @GLIBCXX_HOSTED_TRUE@	${std_srcdir}/execution \
  @GLIBCXX_HOSTED_TRUE@	${std_srcdir}/filesystem \
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/bits/funcwrap.h gcc-16-20250831/libstdc++-v3/include/bits/funcwrap.h
*** gcc-16-20250824/libstdc++-v3/include/bits/funcwrap.h	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/bits/funcwrap.h	Sun Aug 31 22:34:30 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 419,424 ****
--- 419,427 ----
         _M_manage = _Manager::_S_empty;
       }
  
+      void _M_destroy() noexcept
+      { _M_manage(_Manager::_Op::_Destroy, _M_storage, nullptr); }
+ 
       ~_Mo_base()
       { _M_destroy(); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 434,450 ****
         std::swap(_M_manage, __x._M_manage);
       }
  
-      _Storage _M_storage;
- 
-    private:
-      void _M_destroy() noexcept
-      { _M_manage(_Manager::_Op::_Destroy, _M_storage, nullptr); }
- 
       _Manager::_Func _M_manage;
! 
! #ifdef __glibcxx_copyable_function // C++ >= 26 && HOSTED
!      friend class _Cpy_base;
! #endif // __glibcxx_copyable_function
     };
  #endif // __glibcxx_copyable_function || __glibcxx_copyable_function
  } // namespace __polyfunc
--- 437,444 ----
         std::swap(_M_manage, __x._M_manage);
       }
  
       _Manager::_Func _M_manage;
!      _Storage _M_storage;
     };
  #endif // __glibcxx_copyable_function || __glibcxx_copyable_function
  } // namespace __polyfunc
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/bits/move.h gcc-16-20250831/libstdc++-v3/include/bits/move.h
*** gcc-16-20250824/libstdc++-v3/include/bits/move.h	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/bits/move.h	Sun Aug 31 22:34:30 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 89,95 ****
        return static_cast<_Tp&&>(__t);
      }
  
- #if __glibcxx_forward_like // C++ >= 23
    template<typename _Tp, typename _Up>
    struct __like_impl; // _Tp must be a reference and _Up an lvalue reference
  
--- 89,94 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 112,117 ****
--- 111,117 ----
    template<typename _Tp, typename _Up>
      using __like_t = typename __like_impl<_Tp&&, _Up&>::type;
  
+ #if __glibcxx_forward_like // C++ >= 23
    /** @brief Forward with the cv-qualifiers and value category of another type.
     *  @tparam _Tp An lvalue reference or rvalue reference.
     *  @tparam _Up An lvalue reference type deduced from the function argument.
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/bits/stl_vector.h gcc-16-20250831/libstdc++-v3/include/bits/stl_vector.h
*** gcc-16-20250824/libstdc++-v3/include/bits/stl_vector.h	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/bits/stl_vector.h	Sun Aug 31 22:34:30 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1154,1160 ****
        resize(size_type __new_size, const value_type& __x)
        {
  	if (__new_size > size())
! 	  _M_fill_insert(end(), __new_size - size(), __x);
  	else if (__new_size < size())
  	  _M_erase_at_end(this->_M_impl._M_start + __new_size);
        }
--- 1154,1160 ----
        resize(size_type __new_size, const value_type& __x)
        {
  	if (__new_size > size())
! 	  _M_fill_append(__new_size - size(), __x);
  	else if (__new_size < size())
  	  _M_erase_at_end(this->_M_impl._M_start + __new_size);
        }
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1175,1181 ****
        resize(size_type __new_size, value_type __x = value_type())
        {
  	if (__new_size > size())
! 	  _M_fill_insert(end(), __new_size - size(), __x);
  	else if (__new_size < size())
  	  _M_erase_at_end(this->_M_impl._M_start + __new_size);
        }
--- 1175,1181 ----
        resize(size_type __new_size, value_type __x = value_type())
        {
  	if (__new_size > size())
! 	  _M_fill_append(__new_size - size(), __x);
  	else if (__new_size < size())
  	  _M_erase_at_end(this->_M_impl._M_start + __new_size);
        }
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2088,2093 ****
--- 2088,2098 ----
        void
        _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
  
+       // Called by resize(n,x), and the _M_fill_insert(end(), n, x)
+       _GLIBCXX20_CONSTEXPR
+       void
+       _M_fill_append(size_type __n, const value_type& __x);
+ 
  #if __cplusplus >= 201103L
        // Called by resize(n).
        _GLIBCXX20_CONSTEXPR
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/bits/vector.tcc gcc-16-20250831/libstdc++-v3/include/bits/vector.tcc
*** gcc-16-20250824/libstdc++-v3/include/bits/vector.tcc	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/bits/vector.tcc	Sun Aug 31 22:34:30 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 664,671 ****
      {
        if (__n != 0)
  	{
! 	  if (size_type(this->_M_impl._M_end_of_storage
! 			- this->_M_impl._M_finish) >= __n)
  	    {
  #if __cplusplus < 201103L
  	      value_type __x_copy = __x;
--- 664,673 ----
      {
        if (__n != 0)
  	{
! 	  if (__position.base() == this->_M_impl._M_finish)
! 	    _M_fill_append(__n, __x);
! 	  else if (size_type(this->_M_impl._M_end_of_storage
! 			       - this->_M_impl._M_finish) >= __n)
  	    {
  #if __cplusplus < 201103L
  	      value_type __x_copy = __x;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 760,765 ****
--- 762,821 ----
  	}
      }
  
+   template<typename _Tp, typename _Alloc>
+     _GLIBCXX20_CONSTEXPR
+     void
+     vector<_Tp, _Alloc>::
+     _M_fill_append(size_type __n, const value_type& __x)
+     {
+        if (size_type(this->_M_impl._M_end_of_storage
+ 		     - this->_M_impl._M_finish) >= __n)
+ 	 {
+ 	   _GLIBCXX_ASAN_ANNOTATE_GROW(__n);
+ 	   this->_M_impl._M_finish =
+ 	     std::__uninitialized_fill_n_a(this->_M_impl._M_finish, __n, __x,
+ 					   _M_get_Tp_allocator());
+ 	   _GLIBCXX_ASAN_ANNOTATE_GREW(__n);
+ 	 }
+        else
+ 	 {
+ 	   // Make local copies of these members because the compiler thinks
+ 	   // the allocator can alter them if 'this' is globally reachable.
+ 	   pointer __old_start = this->_M_impl._M_start;
+ 	   pointer __old_finish = this->_M_impl._M_finish;
+ 	   const size_type __old_size = __old_finish - __old_start;
+ 
+ 	   const size_type __len =
+ 	     _M_check_len(__n, "vector::_M_fill_append");
+ 	   pointer __new_start(this->_M_allocate(__len));
+ 	   pointer __new_finish(__new_start + __old_size);
+ 	   __try
+ 	     {
+ 	       // See _M_realloc_insert above.
+ 	       __new_finish = std::__uninitialized_fill_n_a(
+ 				__new_finish, __n, __x,
+ 				_M_get_Tp_allocator());
+ 	       std::__uninitialized_move_if_noexcept_a(
+ 		 __old_start, __old_finish, __new_start,
+ 		 _M_get_Tp_allocator());
+ 	     }
+ 	   __catch(...)
+ 	     {
+ 		std::_Destroy(__new_start + __old_size, __new_finish,
+ 			      _M_get_Tp_allocator());
+ 		_M_deallocate(__new_start, __len);
+ 		__throw_exception_again;
+ 	      }
+ 	   std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator());
+ 	   _GLIBCXX_ASAN_ANNOTATE_REINIT;
+ 	   _M_deallocate(__old_start,
+ 			 this->_M_impl._M_end_of_storage - __old_start);
+ 	   this->_M_impl._M_start = __new_start;
+ 	   this->_M_impl._M_finish = __new_finish;
+ 	   this->_M_impl._M_end_of_storage = __new_start + __len;
+ 	 }
+     }
+ 
  #if __cplusplus >= 201103L
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/bits/version.def gcc-16-20250831/libstdc++-v3/include/bits/version.def
*** gcc-16-20250824/libstdc++-v3/include/bits/version.def	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/bits/version.def	Sun Aug 31 22:34:30 2025
*************** ftms = {
*** 1907,1912 ****
--- 1907,1920 ----
  };
  
  ftms = {
+   name = debugging;
+   values = {
+     v = 202403;
+     cxxmin = 26;
+   };
+ };
+ 
+ ftms = {
    name = fstream_native_handle;
    values = {
      v = 202306;
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/bits/version.h gcc-16-20250831/libstdc++-v3/include/bits/version.h
*** gcc-16-20250824/libstdc++-v3/include/bits/version.h	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/bits/version.h	Sun Aug 31 22:34:37 2025
***************
*** 2134,2139 ****
--- 2134,2149 ----
  #endif /* !defined(__cpp_lib_constexpr_new) && defined(__glibcxx_want_constexpr_new) */
  #undef __glibcxx_want_constexpr_new
  
+ #if !defined(__cpp_lib_debugging)
+ # if (__cplusplus >  202302L)
+ #  define __glibcxx_debugging 202403L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_debugging)
+ #   define __cpp_lib_debugging 202403L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_debugging) && defined(__glibcxx_want_debugging) */
+ #undef __glibcxx_want_debugging
+ 
  #if !defined(__cpp_lib_fstream_native_handle)
  # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED
  #  define __glibcxx_fstream_native_handle 202306L
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/precompiled/stdc++.h gcc-16-20250831/libstdc++-v3/include/precompiled/stdc++.h
*** gcc-16-20250824/libstdc++-v3/include/precompiled/stdc++.h	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/precompiled/stdc++.h	Sun Aug 31 22:34:31 2025
***************
*** 237,242 ****
--- 237,243 ----
  #endif
  
  #if __cplusplus > 202302L
+ #include <debugging>
  #include <inplace_vector>
  #include <text_encoding>
  #include <stdbit.h>
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/std/bitset gcc-16-20250831/libstdc++-v3/include/std/bitset
*** gcc-16-20250824/libstdc++-v3/include/std/bitset	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/std/bitset	Sun Aug 31 22:34:31 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1040,1045 ****
--- 1040,1047 ----
  #endif
  
  #if __cplusplus >= 201103L
+       // _GLIBCXX_RESOLVE_LIB_DEFECTS
+       // 4294. bitset(const CharT*) constructor needs to be constrained
        /**
         *  Construct from a character %array.
         *  @param  __str  An %array of characters `__zero` and `__one`.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1049,1055 ****
         *  @throw  std::invalid_argument If a character appears in the string
         *                                which is neither `__zero` nor `__one`.
         */
!       template<typename _CharT>
  	[[__gnu__::__nonnull__]]
  	_GLIBCXX23_CONSTEXPR
          explicit
--- 1051,1061 ----
         *  @throw  std::invalid_argument If a character appears in the string
         *                                which is neither `__zero` nor `__one`.
         */
!       template<typename _CharT,
! 	       typename = _Require<is_trivially_copyable<_CharT>,
! 				   is_standard_layout<_CharT>,
! 				   is_trivially_default_constructible<_CharT>,
! 				   __not_<is_array<_CharT>>>>
  	[[__gnu__::__nonnull__]]
  	_GLIBCXX23_CONSTEXPR
          explicit
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/std/chrono gcc-16-20250831/libstdc++-v3/include/std/chrono
*** gcc-16-20250824/libstdc++-v3/include/std/chrono	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/std/chrono	Sun Aug 31 22:34:31 2025
***************
*** 22,27 ****
--- 22,29 ----
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  
+ // [time]
+ 
  /** @file include/chrono
   *  This is a Standard C++ Library header.
   *  @ingroup chrono
***************
*** 42,53 ****
  # include <bits/c++0x_warning.h>
  #else
  
  #include <bits/chrono.h>
  
! #if __cplusplus >= 202002L
  # include <bit> // __countr_zero
  #endif
! #if __cplusplus >= 202002L && _GLIBCXX_HOSTED
  # include <sstream>
  # include <string>
  # include <vector>
--- 44,59 ----
  # include <bits/c++0x_warning.h>
  #else
  
+ #define __glibcxx_want_chrono
+ #define __glibcxx_want_chrono_udls
+ #include <bits/version.h>
+ 
  #include <bits/chrono.h>
  
! #if __cpp_lib_bitops >= 201907L
  # include <bit> // __countr_zero
  #endif
! #if __cpp_lib_chrono >= 201803L && _GLIBCXX_HOSTED
  # include <sstream>
  # include <string>
  # include <vector>
***************
*** 56,65 ****
  # include <bits/unique_ptr.h>
  #endif
  
- #define __glibcxx_want_chrono
- #define __glibcxx_want_chrono_udls
- #include <bits/version.h>
- 
  namespace std _GLIBCXX_VISIBILITY(default)
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
--- 62,67 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 79,85 ****
     */
    namespace chrono
    {
! #if __cplusplus >= 202002L
      /// @addtogroup chrono
      /// @{
      struct local_t { };
--- 81,87 ----
     */
    namespace chrono
    {
! #if __cpp_lib_chrono >= 201803L
      /// @addtogroup chrono
      /// @{
      struct local_t { };
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 175,187 ****
        using period                    = system_clock::period;
        using duration                  = chrono::duration<rep, period>;
        using time_point                = chrono::time_point<tai_clock>;
!       static constexpr bool is_steady = false; // XXX true for CLOCK_TAI?
  
-       // TODO move into lib, use CLOCK_TAI on linux, add extension point.
        [[nodiscard]]
        static time_point
!       now()
!       { return from_utc(utc_clock::now()); }
  
        template<typename _Duration>
  	[[nodiscard]]
--- 177,187 ----
        using period                    = system_clock::period;
        using duration                  = chrono::duration<rep, period>;
        using time_point                = chrono::time_point<tai_clock>;
!       static constexpr bool is_steady = false;
  
        [[nodiscard]]
        static time_point
!       now();  // in src/c++20/clock.cc
  
        template<typename _Duration>
  	[[nodiscard]]
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 215,227 ****
        using period                    = system_clock::period;
        using duration                  = chrono::duration<rep, period>;
        using time_point                = chrono::time_point<gps_clock>;
!       static constexpr bool is_steady = false; // XXX
  
-       // TODO move into lib, add extension point.
        [[nodiscard]]
        static time_point
!       now()
!       { return from_utc(utc_clock::now()); }
  
        template<typename _Duration>
  	[[nodiscard]]
--- 215,225 ----
        using period                    = system_clock::period;
        using duration                  = chrono::duration<rep, period>;
        using time_point                = chrono::time_point<gps_clock>;
!       static constexpr bool is_steady = false;
  
        [[nodiscard]]
        static time_point
!       now();  // in src/c++20/clock.cc
  
        template<typename _Duration>
  	[[nodiscard]]
*************** namespace __detail
*** 3321,3327 ****
  #endif // C++20
    } // namespace chrono
  
! #if __cplusplus >= 202002L
    inline namespace literals
    {
    inline namespace chrono_literals
--- 3319,3325 ----
  #endif // C++20
    } // namespace chrono
  
! #if __cpp_lib_chrono >= 201803L
    inline namespace literals
    {
    inline namespace chrono_literals
*************** namespace __detail
*** 3350,3356 ****
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  
! #if __cplusplus >= 202002L && _GLIBCXX_HOSTED
  # include <bits/chrono_io.h>
  #endif
  
--- 3348,3354 ----
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  
! #if __cpp_lib_chrono >= 201803L && _GLIBCXX_HOSTED
  # include <bits/chrono_io.h>
  #endif
  
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/std/complex gcc-16-20250831/libstdc++-v3/include/std/complex
*** gcc-16-20250824/libstdc++-v3/include/std/complex	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/std/complex	Sun Aug 31 22:34:31 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 96,102 ****
    template<typename _Tp>
      _GLIBCXX20_CONSTEXPR complex<_Tp> conj(const complex<_Tp>&);
    ///  Return complex with magnitude @a rho and angle @a theta.
!   template<typename _Tp> complex<_Tp> polar(const _Tp&, const _Tp& = 0);
  
    // Transcendentals:
    /// Return complex cosine of @a z.
--- 96,102 ----
    template<typename _Tp>
      _GLIBCXX20_CONSTEXPR complex<_Tp> conj(const complex<_Tp>&);
    ///  Return complex with magnitude @a rho and angle @a theta.
!   template<typename _Tp> complex<_Tp> polar(const _Tp&, const _Tp& = _Tp(0));
  
    // Transcendentals:
    /// Return complex cosine of @a z.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1038,1044 ****
      inline complex<_Tp>
      polar(const _Tp& __rho, const _Tp& __theta)
      {
!       __glibcxx_assert( __rho >= 0 );
        return complex<_Tp>(__rho * cos(__theta), __rho * sin(__theta));
      }
  
--- 1038,1044 ----
      inline complex<_Tp>
      polar(const _Tp& __rho, const _Tp& __theta)
      {
!       __glibcxx_assert( __rho >= _Tp(0) );
        return complex<_Tp>(__rho * cos(__theta), __rho * sin(__theta));
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1238,1250 ****
  
        if (__x == _Tp())
          {
!           _Tp __t = sqrt(abs(__y) / 2);
            return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
          }
        else
          {
!           _Tp __t = sqrt(2 * (std::abs(__z) + abs(__x)));
!           _Tp __u = __t / 2;
            return __x > _Tp()
              ? complex<_Tp>(__u, __y / __t)
              : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
--- 1238,1250 ----
  
        if (__x == _Tp())
          {
! 	  _Tp __t = sqrt(abs(__y) / _Tp(2));
            return complex<_Tp>(__t, __y < _Tp() ? -__t : __t);
          }
        else
          {
!           _Tp __t = sqrt(_Tp(2) * (std::abs(__z) + abs(__x)));
!           _Tp __u = __t / _Tp(2);
            return __x > _Tp()
              ? complex<_Tp>(__u, __y / __t)
              : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1334,1340 ****
      complex<_Tp>
      __complex_pow_unsigned(complex<_Tp> __x, unsigned __n)
      {
!       complex<_Tp> __y = __n % 2 ? __x : complex<_Tp>(1);
  
        while (__n >>= 1)
          {
--- 1334,1340 ----
      complex<_Tp>
      __complex_pow_unsigned(complex<_Tp> __x, unsigned __n)
      {
!       complex<_Tp> __y = __n % 2 ? __x : complex<_Tp>(_Tp(1));
  
        while (__n >>= 1)
          {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1357,1363 ****
      pow(const complex<_Tp>& __z, int __n)
      {
        return __n < 0
! 	? complex<_Tp>(1) / std::__complex_pow_unsigned(__z, -(unsigned)__n)
          : std::__complex_pow_unsigned(__z, __n);
      }
  
--- 1357,1364 ----
      pow(const complex<_Tp>& __z, int __n)
      {
        return __n < 0
! 	? complex<_Tp>(_Tp(1)) / std::__complex_pow_unsigned(__z,
! 							     -(unsigned)__n)
          : std::__complex_pow_unsigned(__z, __n);
      }
  
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/std/debugging gcc-16-20250831/libstdc++-v3/include/std/debugging
*** gcc-16-20250824/libstdc++-v3/include/std/debugging	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/libstdc++-v3/include/std/debugging	Sun Aug 31 22:34:31 2025
***************
*** 0 ****
--- 1,77 ----
+ // Debugging support -*- C++ -*-
+ 
+ // Copyright The GNU Toolchain Authors.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // Under Section 7 of GPL version 3, you are granted additional
+ // permissions described in the GCC Runtime Library Exception, version
+ // 3.1, as published by the Free Software Foundation.
+ 
+ // You should have received a copy of the GNU General Public License and
+ // a copy of the GCC Runtime Library Exception along with this program;
+ // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ // <http://www.gnu.org/licenses/>.
+ 
+ /** @file include/debugging
+  *  This is a Standard C++ Library header.
+  */
+ 
+ #ifndef _GLIBCXX_DEBUGGING
+ #define _GLIBCXX_DEBUGGING 1
+ 
+ #define __glibcxx_want_debugging
+ #include <bits/version.h>
+ 
+ #if __cpp_lib_debugging // C++ >= 26
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ // N.B. _GLIBCXX_BEGIN_NAMESPACE_VERSION is not used here.
+ 
+ /** Try to determine if the program is running under control of a debugger.
+  *
+  * On GNU/Linux systems this function will only return true if the program
+  * is being traced by another program which is known to be a debugger.
+  * This is determined by checking the command name of the tracing program
+  * against a list of known debuggers, such as "gdb".
+  *
+  * On other POSIX-based systems, this function will return true if the
+  * program is being traced by any other process, which means it can return
+  * true for non-debugger utilities that use the ptrace system call.
+  *
+  * @since C++26
+  */
+ bool
+ is_debugger_present() noexcept;
+ 
+ /** Stop the program with a breakpoint or debug trap.
+  *
+  * The details of how a breakpoint is implemented are platform-specific.
+  * Some systems provide a special instruction, such as `int3` in x86.
+  * When no more appropriate mechanism is available, this will stop the
+  * program using `__builtin_trap()`. It might not be possible for the
+  * program to continue after such a breakpoint.
+  *
+  * @since C++26
+  */
+ void
+ breakpoint() noexcept;
+ 
+ /** Stop the program if it is running under control of a debugger.
+  *
+  * @since C++26
+  */
+ void
+ breakpoint_if_debugging() noexcept;
+ 
+ } // namespace std
+ #endif
+ #endif // _GLIBCXX_DEBUGGING
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/std/functional gcc-16-20250831/libstdc++-v3/include/std/functional
*** gcc-16-20250824/libstdc++-v3/include/std/functional	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/std/functional	Sun Aug 31 22:34:31 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 922,927 ****
--- 922,974 ----
      }
  
  #ifdef __cpp_lib_bind_front // C++ >= 20
+   template<size_t, typename _Tp>
+   struct _Indexed_bound_arg
+     {
+       [[no_unique_address]] _Tp _M_val;
+     };
+ 
+   template<typename... _IndexedArgs>
+     struct _Bound_arg_storage : _IndexedArgs...
+     {
+       template<typename _Fd, typename _Self, typename... _CallArgs>
+ 	static constexpr
+ 	decltype(auto)
+ 	_S_apply_front(_Fd&& __fd, _Self&& __self, _CallArgs&&... __call_args)
+ 	{
+ 	  return std::invoke(std::forward<_Fd>(__fd),
+ 			     __like_t<_Self, _IndexedArgs>(__self)._M_val...,
+ 			     std::forward<_CallArgs>(__call_args)...);
+ 	}
+ 
+       template<typename _Fd, typename _Self, typename... _CallArgs>
+ 	static constexpr
+ 	decltype(auto)
+ 	_S_apply_back(_Fd&& __fd, _Self&& __self, _CallArgs&&... __call_args)
+ 	{
+ 	  return std::invoke(std::forward<_Fd>(__fd),
+ 			     std::forward<_CallArgs>(__call_args)...,
+ 			     __like_t<_Self, _IndexedArgs>(__self)._M_val...);
+ 	}
+     };
+ 
+   template<typename... _BoundArgs, typename... _Args>
+     constexpr auto
+     __make_bound_args(_Args&&... __args)
+     {
+       if constexpr (sizeof...(_BoundArgs) == 1)
+ 	// pack has one element, so return copy of arg
+ 	return (_BoundArgs(std::forward<_Args>(__args)), ...);
+       else
+ 	{
+ 	  auto __impl = [&]<size_t... _Inds>(index_sequence<_Inds...>)
+ 	  {
+ 	    return _Bound_arg_storage<_Indexed_bound_arg<_Inds, _BoundArgs>...>
+ 		   { {_BoundArgs(std::forward<_Args>(__args))}... };
+ 	  };
+ 	  return __impl(index_sequence_for<_BoundArgs...>());
+ 	}
+     }
  
    template<typename _Fd, typename... _BoundArgs>
      struct _Bind_front
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 937,943 ****
  	noexcept(__and_<is_nothrow_constructible<_Fd, _Fn>,
  			is_nothrow_constructible<_BoundArgs, _Args>...>::value)
  	: _M_fd(std::forward<_Fn>(__fn)),
! 	  _M_bound_args(std::forward<_Args>(__args)...)
  	{ static_assert(sizeof...(_Args) == sizeof...(_BoundArgs)); }
  
  #if __cpp_explicit_this_parameter
--- 984,990 ----
  	noexcept(__and_<is_nothrow_constructible<_Fd, _Fn>,
  			is_nothrow_constructible<_BoundArgs, _Args>...>::value)
  	: _M_fd(std::forward<_Fn>(__fn)),
! 	  _M_bound_args(__make_bound_args<_BoundArgs...>(std::forward<_Args>(__args)...))
  	{ static_assert(sizeof...(_Args) == sizeof...(_BoundArgs)); }
  
  #if __cpp_explicit_this_parameter
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 948,954 ****
  	noexcept(is_nothrow_invocable_v<__like_t<_Self, _Fd>,
  					__like_t<_Self, _BoundArgs>..., _CallArgs...>)
  	{
! 	  return _S_call(__like_t<_Self, _Bind_front>(__self), _BoundIndices(),
  			 std::forward<_CallArgs>(__call_args)...);
  	}
  #else
--- 995,1001 ----
  	noexcept(is_nothrow_invocable_v<__like_t<_Self, _Fd>,
  					__like_t<_Self, _BoundArgs>..., _CallArgs...>)
  	{
! 	  return _S_call(__like_t<_Self, _Bind_front>(__self),
  			 std::forward<_CallArgs>(__call_args)...);
  	}
  #else
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 959,966 ****
  	operator()(_CallArgs&&... __call_args) &
  	noexcept(is_nothrow_invocable_v<_Fd&, _BoundArgs&..., _CallArgs...>)
  	{
! 	  return _S_call(*this, _BoundIndices(),
! 	      std::forward<_CallArgs>(__call_args)...);
  	}
  
        template<typename... _CallArgs>
--- 1006,1012 ----
  	operator()(_CallArgs&&... __call_args) &
  	noexcept(is_nothrow_invocable_v<_Fd&, _BoundArgs&..., _CallArgs...>)
  	{
! 	  return _S_call(*this, std::forward<_CallArgs>(__call_args)...);
  	}
  
        template<typename... _CallArgs>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 971,978 ****
  	noexcept(is_nothrow_invocable_v<const _Fd&, const _BoundArgs&...,
  					_CallArgs...>)
  	{
! 	  return _S_call(*this, _BoundIndices(),
! 	      std::forward<_CallArgs>(__call_args)...);
  	}
  
        template<typename... _CallArgs>
--- 1017,1023 ----
  	noexcept(is_nothrow_invocable_v<const _Fd&, const _BoundArgs&...,
  					_CallArgs...>)
  	{
! 	  return _S_call(*this, std::forward<_CallArgs>(__call_args)...);
  	}
  
        template<typename... _CallArgs>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 982,989 ****
  	operator()(_CallArgs&&... __call_args) &&
  	noexcept(is_nothrow_invocable_v<_Fd, _BoundArgs..., _CallArgs...>)
  	{
! 	  return _S_call(std::move(*this), _BoundIndices(),
! 	      std::forward<_CallArgs>(__call_args)...);
  	}
  
        template<typename... _CallArgs>
--- 1027,1034 ----
  	operator()(_CallArgs&&... __call_args) &&
  	noexcept(is_nothrow_invocable_v<_Fd, _BoundArgs..., _CallArgs...>)
  	{
! 	  return _S_call(std::move(*this),
! 			 std::forward<_CallArgs>(__call_args)...);
  	}
  
        template<typename... _CallArgs>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 994,1001 ****
  	noexcept(is_nothrow_invocable_v<const _Fd, const _BoundArgs...,
  					_CallArgs...>)
  	{
! 	  return _S_call(std::move(*this), _BoundIndices(),
! 	      std::forward<_CallArgs>(__call_args)...);
  	}
  
        template<typename... _CallArgs>
--- 1039,1046 ----
  	noexcept(is_nothrow_invocable_v<const _Fd, const _BoundArgs...,
  					_CallArgs...>)
  	{
! 	  return _S_call(std::move(*this),
! 			 std::forward<_CallArgs>(__call_args)...);
  	}
  
        template<typename... _CallArgs>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1012,1031 ****
  #endif
  
      private:
!       using _BoundIndices = index_sequence_for<_BoundArgs...>;
  
!       template<typename _Tp, size_t... _Ind, typename... _CallArgs>
  	static constexpr
  	decltype(auto)
! 	_S_call(_Tp&& __g, index_sequence<_Ind...>, _CallArgs&&... __call_args)
  	{
! 	  return std::invoke(std::forward<_Tp>(__g)._M_fd,
! 	      std::get<_Ind>(std::forward<_Tp>(__g)._M_bound_args)...,
! 	      std::forward<_CallArgs>(__call_args)...);
  	}
  
        [[no_unique_address]] _Fd _M_fd;
!       [[no_unique_address]] std::tuple<_BoundArgs...> _M_bound_args;
      };
  
    template<typename _Fn, typename... _Args>
--- 1057,1084 ----
  #endif
  
      private:
!       using _BoundArgsStorage
! 	// _BoundArgs are required to be move-constructible, so this is valid.
! 	= decltype(__make_bound_args<_BoundArgs...>(std::declval<_BoundArgs>()...));
  
!       template<typename _Tp, typename... _CallArgs>
  	static constexpr
  	decltype(auto)
! 	_S_call(_Tp&& __g, _CallArgs&&... __call_args)
  	{
! 	  if constexpr (sizeof...(_BoundArgs) == 1)
! 	    return std::invoke(std::forward<_Tp>(__g)._M_fd,
! 			       std::forward<_Tp>(__g)._M_bound_args,
! 			       std::forward<_CallArgs>(__call_args)...);
! 	  else
! 	    return _BoundArgsStorage::_S_apply_front(
! 		      std::forward<_Tp>(__g)._M_fd,
! 		      std::forward<_Tp>(__g)._M_bound_args,
! 		      std::forward<_CallArgs>(__call_args)...);
  	}
  
        [[no_unique_address]] _Fd _M_fd;
!       [[no_unique_address]] _BoundArgsStorage _M_bound_args;
      };
  
    template<typename _Fn, typename... _Args>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1066,1072 ****
  	noexcept(__and_<is_nothrow_constructible<_Fd, _Fn>,
  			is_nothrow_constructible<_BoundArgs, _Args>...>::value)
  	: _M_fd(std::forward<_Fn>(__fn)),
! 	  _M_bound_args(std::forward<_Args>(__args)...)
  	{ static_assert(sizeof...(_Args) == sizeof...(_BoundArgs)); }
  
        template<typename _Self, typename... _CallArgs>
--- 1119,1125 ----
  	noexcept(__and_<is_nothrow_constructible<_Fd, _Fn>,
  			is_nothrow_constructible<_BoundArgs, _Args>...>::value)
  	: _M_fd(std::forward<_Fn>(__fn)),
! 	  _M_bound_args(__make_bound_args<_BoundArgs...>(std::forward<_Args>(__args)...))
  	{ static_assert(sizeof...(_Args) == sizeof...(_BoundArgs)); }
  
        template<typename _Self, typename... _CallArgs>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1076,1100 ****
  	noexcept(is_nothrow_invocable_v<__like_t<_Self, _Fd>,
  					_CallArgs..., __like_t<_Self, _BoundArgs>...>)
  	{
! 	  return _S_call(__like_t<_Self, _Bind_back>(__self), _BoundIndices(),
  			 std::forward<_CallArgs>(__call_args)...);
  	}
  
      private:
!       using _BoundIndices = index_sequence_for<_BoundArgs...>;
  
!       template<typename _Tp, size_t... _Ind, typename... _CallArgs>
  	static constexpr
  	decltype(auto)
! 	_S_call(_Tp&& __g, index_sequence<_Ind...>, _CallArgs&&... __call_args)
  	{
! 	  return std::invoke(std::forward<_Tp>(__g)._M_fd,
! 	      std::forward<_CallArgs>(__call_args)...,
! 	      std::get<_Ind>(std::forward<_Tp>(__g)._M_bound_args)...);
  	}
  
        [[no_unique_address]] _Fd _M_fd;
!       [[no_unique_address]] std::tuple<_BoundArgs...> _M_bound_args;
      };
  
    template<typename _Fn, typename... _Args>
--- 1129,1161 ----
  	noexcept(is_nothrow_invocable_v<__like_t<_Self, _Fd>,
  					_CallArgs..., __like_t<_Self, _BoundArgs>...>)
  	{
! 	  return _S_call(__like_t<_Self, _Bind_back>(__self),
  			 std::forward<_CallArgs>(__call_args)...);
  	}
  
      private:
!       using _BoundArgsStorage
! 	// _BoundArgs are required to be move-constructible, so this is valid.
! 	= decltype(__make_bound_args<_BoundArgs...>(std::declval<_BoundArgs>()...));
  
!       template<typename _Tp, typename... _CallArgs>
  	static constexpr
  	decltype(auto)
! 	_S_call(_Tp&& __g, _CallArgs&&... __call_args)
  	{
! 	  if constexpr (sizeof...(_BoundArgs) == 1)
! 	    return std::invoke(std::forward<_Tp>(__g)._M_fd,
! 			       std::forward<_CallArgs>(__call_args)...,
! 			       std::forward<_Tp>(__g)._M_bound_args);
! 	  else
! 	    return _BoundArgsStorage::_S_apply_back(
! 		      std::forward<_Tp>(__g)._M_fd,
! 		      std::forward<_Tp>(__g)._M_bound_args,
! 		      std::forward<_CallArgs>(__call_args)...);
  	}
  
        [[no_unique_address]] _Fd _M_fd;
!       [[no_unique_address]] _BoundArgsStorage _M_bound_args;
      };
  
    template<typename _Fn, typename... _Args>
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/std/ranges gcc-16-20250831/libstdc++-v3/include/std/ranges
*** gcc-16-20250824/libstdc++-v3/include/std/ranges	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/std/ranges	Sun Aug 31 22:34:31 2025
*************** namespace views::__adaptor
*** 1585,1592 ****
        };
  
      template<random_access_range _Range>
-       requires (sizeof(range_difference_t<_Range>)
- 		<= sizeof(iterator_t<_Range>))
        struct _CachedPosition<_Range>
        {
        private:
--- 1585,1590 ----
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/std/stop_token gcc-16-20250831/libstdc++-v3/include/std/stop_token
*** gcc-16-20250824/libstdc++-v3/include/std/stop_token	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/std/stop_token	Sun Aug 31 22:34:31 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 648,653 ****
--- 648,672 ----
    template<typename _Callback>
      stop_callback(stop_token, _Callback) -> stop_callback<_Callback>;
  
+   /// @cond undocumented
+   namespace __detail::__variant
+   {
+     template<typename> struct _Never_valueless_alt; // see <variant>
+ 
+     // Provide the strong exception-safety guarantee when emplacing a
+     // stop_token or stop_source into a variant.
+     template<>
+       struct _Never_valueless_alt<std::stop_token>
+       : true_type
+       { };
+ 
+     template<>
+       struct _Never_valueless_alt<std::stop_source>
+       : true_type
+       { };
+   }  // namespace __detail::__variant
+   /// @endcond
+ 
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  #endif // __glibcxx_jthread
diff -Nrcpad gcc-16-20250824/libstdc++-v3/include/std/thread gcc-16-20250831/libstdc++-v3/include/std/thread
*** gcc-16-20250824/libstdc++-v3/include/std/thread	Sun Aug 24 22:33:28 2025
--- gcc-16-20250831/libstdc++-v3/include/std/thread	Sun Aug 31 22:34:31 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 294,299 ****
--- 294,313 ----
      stop_source _M_stop_source;
      thread _M_thread;
    };
+ 
+   /// @cond undocumented
+   namespace __detail::__variant
+   {
+     template<typename> struct _Never_valueless_alt; // see <variant>
+ 
+     // Provide the strong exception-safety guarantee when emplacing a
+     // jthread into a variant.
+     template<>
+       struct _Never_valueless_alt<std::jthread>
+       : true_type
+       { };
+   }  // namespace __detail::__variant
+   /// @endcond
  #endif // __cpp_lib_jthread
  
  #ifdef __cpp_lib_formatters // C++ >= 23
diff -Nrcpad gcc-16-20250824/libstdc++-v3/libsupc++/compare gcc-16-20250831/libstdc++-v3/libsupc++/compare
*** gcc-16-20250824/libstdc++-v3/libsupc++/compare	Sun Aug 24 22:33:29 2025
--- gcc-16-20250831/libstdc++-v3/libsupc++/compare	Sun Aug 31 22:34:31 2025
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 54,62 ****
    {
      using type = signed char;
  
!     enum class _Ord : type { equivalent = 0, less = -1, greater = 1 };
  
!     enum class _Ncmp : type { _Unordered = 2 };
  
      struct __unspec
      {
--- 54,77 ----
    {
      using type = signed char;
  
!     enum class _Ord : type
!     {
!       equivalent = 0, less = -1, greater = 1,
!       // value remains unchanged when negated
!       unordered = -__SCHAR_MAX__ - 1
!     };
  
!     template<typename _Ordering>
!       [[__gnu__::__always_inline__]]
!       constexpr _Ord
!       __ord(_Ordering __o) noexcept
!       { return _Ord(__o._M_value); }
! 
!     template<typename _Ordering>
!       [[__gnu__::__always_inline__]]
!       constexpr _Ordering
!       __make(_Ord __o) noexcept
!       { return _Ordering(__o); }
  
      struct __unspec
      {
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 66,72 ****
  
    class partial_ordering
    {
!     // less=0xff, equiv=0x00, greater=0x01, unordered=0x02
      __cmp_cat::type _M_value;
  
      constexpr explicit
--- 81,87 ----
  
    class partial_ordering
    {
!     // less=0xff, equiv=0x00, greater=0x01, unordered=0x80
      __cmp_cat::type _M_value;
  
      constexpr explicit
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 74,86 ****
      : _M_value(__cmp_cat::type(__v))
      { }
  
!     constexpr explicit
!     partial_ordering(__cmp_cat::_Ncmp __v) noexcept
!     : _M_value(__cmp_cat::type(__v))
!     { }
  
!     friend class weak_ordering;
!     friend class strong_ordering;
  
    public:
      // valid values
--- 89,106 ----
      : _M_value(__cmp_cat::type(__v))
      { }
  
!     [[__gnu__::__always_inline__]]
!     constexpr __cmp_cat::type
!     _M_reverse() const
!     {
!       // leaves _Ord::unordered unchanged
!       return static_cast<__cmp_cat::type>(-_M_value);
!     }
  
!     friend constexpr __cmp_cat::_Ord
!     __cmp_cat::__ord<partial_ordering>(partial_ordering) noexcept;
!     friend constexpr partial_ordering
!     __cmp_cat::__make<partial_ordering>(__cmp_cat::_Ord) noexcept;
  
    public:
      // valid values
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 112,123 ****
      [[nodiscard]]
      friend constexpr bool
      operator<=(partial_ordering __v, __cmp_cat::__unspec) noexcept
!     { return __v._M_value <= 0; }
  
      [[nodiscard]]
      friend constexpr bool
      operator>=(partial_ordering __v, __cmp_cat::__unspec) noexcept
!     { return __cmp_cat::type(__v._M_value & 1) == __v._M_value; }
  
      [[nodiscard]]
      friend constexpr bool
--- 132,143 ----
      [[nodiscard]]
      friend constexpr bool
      operator<=(partial_ordering __v, __cmp_cat::__unspec) noexcept
!     { return __v._M_reverse() >= 0; }
  
      [[nodiscard]]
      friend constexpr bool
      operator>=(partial_ordering __v, __cmp_cat::__unspec) noexcept
!     { return __v._M_value >= 0; }
  
      [[nodiscard]]
      friend constexpr bool
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 132,143 ****
      [[nodiscard]]
      friend constexpr bool
      operator<=(__cmp_cat::__unspec, partial_ordering __v) noexcept
!     { return __cmp_cat::type(__v._M_value & 1) == __v._M_value; }
  
      [[nodiscard]]
      friend constexpr bool
      operator>=(__cmp_cat::__unspec, partial_ordering __v) noexcept
!     { return 0 >= __v._M_value; }
  
      [[nodiscard]]
      friend constexpr partial_ordering
--- 152,163 ----
      [[nodiscard]]
      friend constexpr bool
      operator<=(__cmp_cat::__unspec, partial_ordering __v) noexcept
!     { return 0 <= __v._M_value; }
  
      [[nodiscard]]
      friend constexpr bool
      operator>=(__cmp_cat::__unspec, partial_ordering __v) noexcept
!     { return 0 <= __v._M_reverse(); }
  
      [[nodiscard]]
      friend constexpr partial_ordering
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 147,158 ****
      [[nodiscard]]
      friend constexpr partial_ordering
      operator<=>(__cmp_cat::__unspec, partial_ordering __v) noexcept
!     {
!       if (__v._M_value & 1)
! 	return partial_ordering(__cmp_cat::_Ord(-__v._M_value));
!       else
! 	return __v;
!     }
    };
  
    // valid values' definitions
--- 167,173 ----
      [[nodiscard]]
      friend constexpr partial_ordering
      operator<=>(__cmp_cat::__unspec, partial_ordering __v) noexcept
!     { return partial_ordering(__cmp_cat::_Ord(__v._M_reverse())); }
    };
  
    // valid values' definitions
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 166,172 ****
    partial_ordering::greater(__cmp_cat::_Ord::greater);
  
    inline constexpr partial_ordering
!   partial_ordering::unordered(__cmp_cat::_Ncmp::_Unordered);
  
    class weak_ordering
    {
--- 181,187 ----
    partial_ordering::greater(__cmp_cat::_Ord::greater);
  
    inline constexpr partial_ordering
!   partial_ordering::unordered(__cmp_cat::_Ord::unordered);
  
    class weak_ordering
    {
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 176,182 ****
      weak_ordering(__cmp_cat::_Ord __v) noexcept : _M_value(__cmp_cat::type(__v))
      { }
  
!     friend class strong_ordering;
  
    public:
      // valid values
--- 191,200 ----
      weak_ordering(__cmp_cat::_Ord __v) noexcept : _M_value(__cmp_cat::type(__v))
      { }
  
!     friend constexpr __cmp_cat::_Ord
!     __cmp_cat::__ord<weak_ordering>(weak_ordering) noexcept;
!     friend constexpr weak_ordering
!     __cmp_cat::__make<weak_ordering>(__cmp_cat::_Ord) noexcept;
  
    public:
      // valid values
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 186,192 ****
  
      [[nodiscard]]
      constexpr operator partial_ordering() const noexcept
!     { return partial_ordering(__cmp_cat::_Ord(_M_value)); }
  
      // comparisons
      [[nodiscard]]
--- 204,210 ----
  
      [[nodiscard]]
      constexpr operator partial_ordering() const noexcept
!     { return __cmp_cat::__make<partial_ordering>(__cmp_cat::_Ord(_M_value)); }
  
      // comparisons
      [[nodiscard]]
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 268,273 ****
--- 286,296 ----
      : _M_value(__cmp_cat::type(__v))
      { }
  
+     friend constexpr __cmp_cat::_Ord
+     __cmp_cat::__ord<strong_ordering>(strong_ordering) noexcept;
+     friend constexpr strong_ordering
+     __cmp_cat::__make<strong_ordering>(__cmp_cat::_Ord) noexcept;
+ 
    public:
      // valid values
      static const strong_ordering less;
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 277,287 ****
  
      [[nodiscard]]
      constexpr operator partial_ordering() const noexcept
!     { return partial_ordering(__cmp_cat::_Ord(_M_value)); }
  
      [[nodiscard]]
      constexpr operator weak_ordering() const noexcept
!     { return weak_ordering(__cmp_cat::_Ord(_M_value)); }
  
      // comparisons
      [[nodiscard]]
--- 300,310 ----
  
      [[nodiscard]]
      constexpr operator partial_ordering() const noexcept
!     { return __cmp_cat::__make<partial_ordering>(__cmp_cat::_Ord(_M_value)); }
  
      [[nodiscard]]
      constexpr operator weak_ordering() const noexcept
!     { return __cmp_cat::__make<weak_ordering>(__cmp_cat::_Ord(_M_value)); }
  
      // comparisons
      [[nodiscard]]
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 581,606 ****
        constexpr weak_ordering
        __fp_weak_ordering(_Tp __e, _Tp __f)
        {
! 	// Returns an integer with the same sign as the argument, and magnitude
! 	// indicating the classification: zero=1 subnorm=2 norm=3 inf=4 nan=5
! 	auto __cat = [](_Tp __fp) -> int {
! 	  const int __sign = __builtin_signbit(__fp) ? -1 : 1;
! 	  if (__builtin_isnormal(__fp))
! 	    return (__fp == 0 ? 1 : 3) * __sign;
! 	  if (__builtin_isnan(__fp))
! 	    return 5 * __sign;
! 	  if (int __inf = __builtin_isinf_sign(__fp))
! 	    return 4 * __inf;
! 	  return 2 * __sign;
! 	};
! 
! 	auto __po = __e <=> __f;
! 	if (is_lt(__po))
! 	  return weak_ordering::less;
! 	else if (is_gt(__po))
! 	  return weak_ordering::greater;
! 	else if (__po == partial_ordering::equivalent)
! 	  return weak_ordering::equivalent;
  	else  // unordered, at least one argument is NaN
  	  {
  	    // return -1 for negative nan, +1 for positive nan, 0 otherwise.
--- 604,612 ----
        constexpr weak_ordering
        __fp_weak_ordering(_Tp __e, _Tp __f)
        {
! 	auto __po = __cmp_cat::__ord(__e <=> __f);
! 	if (__po != __cmp_cat::_Ord::unordered)
! 	  return __cmp_cat::__make<weak_ordering>(__po);
  	else  // unordered, at least one argument is NaN
  	  {
  	    // return -1 for negative nan, +1 for positive nan, 0 otherwise.
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 609,621 ****
  		? __builtin_signbit(__fp) ? -1 : 1
  		: 0;
  	    };
! 	    auto __ord = __isnan_sign(__e) <=> __isnan_sign(__f);
! 	    if (is_eq(__ord))
! 	      return weak_ordering::equivalent;
! 	    else if (is_lt(__ord))
! 	      return weak_ordering::less;
! 	    else
! 	      return weak_ordering::greater;
  	  }
        }
  
--- 615,621 ----
  		? __builtin_signbit(__fp) ? -1 : 1
  		: 0;
  	    };
! 	    return __isnan_sign(__e) <=> __isnan_sign(__f);
  	  }
        }
  
diff -Nrcpad gcc-16-20250824/libstdc++-v3/python/libstdcxx/v6/printers.py gcc-16-20250831/libstdc++-v3/python/libstdcxx/v6/printers.py
*** gcc-16-20250824/libstdc++-v3/python/libstdcxx/v6/printers.py	Sun Aug 24 22:33:29 2025
--- gcc-16-20250831/libstdc++-v3/python/libstdcxx/v6/printers.py	Sun Aug 31 22:34:31 2025
*************** class StdCmpCatPrinter(printer_base):
*** 1749,1755 ****
          if self._typename == 'strong_ordering' and self._val == 0:
              name = 'equal'
          else:
!             names = {2: 'unordered', -1: 'less', 0: 'equivalent', 1: 'greater'}
              name = names[int(self._val)]
          return 'std::{}::{}'.format(self._typename, name)
  
--- 1749,1759 ----
          if self._typename == 'strong_ordering' and self._val == 0:
              name = 'equal'
          else:
!             names = {
!                 -1: 'less', 0: 'equivalent', 1: 'greater',
!                 # GCC 10-15 used 2 for unordered
!                 -128: 'unordered', 2: 'unordered'
!             }
              name = names[int(self._val)]
          return 'std::{}::{}'.format(self._typename, name)
  
diff -Nrcpad gcc-16-20250824/libstdc++-v3/src/c++20/Makefile.am gcc-16-20250831/libstdc++-v3/src/c++20/Makefile.am
*** gcc-16-20250824/libstdc++-v3/src/c++20/Makefile.am	Sun Aug 24 22:33:29 2025
--- gcc-16-20250831/libstdc++-v3/src/c++20/Makefile.am	Sun Aug 31 22:34:31 2025
*************** else
*** 36,42 ****
  inst_sources =
  endif
  
! sources = tzdb.cc format.cc atomic.cc
  
  vpath % $(top_srcdir)/src/c++20
  
--- 36,42 ----
  inst_sources =
  endif
  
! sources = tzdb.cc format.cc atomic.cc clock.cc
  
  vpath % $(top_srcdir)/src/c++20
  
diff -Nrcpad gcc-16-20250824/libstdc++-v3/src/c++20/Makefile.in gcc-16-20250831/libstdc++-v3/src/c++20/Makefile.in
*** gcc-16-20250824/libstdc++-v3/src/c++20/Makefile.in	Sun Aug 24 22:33:29 2025
--- gcc-16-20250831/libstdc++-v3/src/c++20/Makefile.in	Sun Aug 31 22:34:31 2025
*************** CONFIG_CLEAN_FILES =
*** 121,127 ****
  CONFIG_CLEAN_VPATH_FILES =
  LTLIBRARIES = $(noinst_LTLIBRARIES)
  libc__20convenience_la_LIBADD =
! am__objects_1 = tzdb.lo format.lo atomic.lo
  @ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_2 = sstream-inst.lo
  @GLIBCXX_HOSTED_TRUE@am_libc__20convenience_la_OBJECTS =  \
  @GLIBCXX_HOSTED_TRUE@	$(am__objects_1) $(am__objects_2)
--- 121,127 ----
  CONFIG_CLEAN_VPATH_FILES =
  LTLIBRARIES = $(noinst_LTLIBRARIES)
  libc__20convenience_la_LIBADD =
! am__objects_1 = tzdb.lo format.lo atomic.lo clock.lo
  @ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_2 = sstream-inst.lo
  @GLIBCXX_HOSTED_TRUE@am_libc__20convenience_la_OBJECTS =  \
  @GLIBCXX_HOSTED_TRUE@	$(am__objects_1) $(am__objects_2)
*************** headers =
*** 432,438 ****
  @ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
  @ENABLE_EXTERN_TEMPLATE_TRUE@	sstream-inst.cc
  
! sources = tzdb.cc format.cc atomic.cc
  @GLIBCXX_HOSTED_FALSE@libc__20convenience_la_SOURCES = 
  @GLIBCXX_HOSTED_TRUE@libc__20convenience_la_SOURCES = $(sources)  $(inst_sources)
  
--- 432,438 ----
  @ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
  @ENABLE_EXTERN_TEMPLATE_TRUE@	sstream-inst.cc
  
! sources = tzdb.cc format.cc atomic.cc clock.cc
  @GLIBCXX_HOSTED_FALSE@libc__20convenience_la_SOURCES = 
  @GLIBCXX_HOSTED_TRUE@libc__20convenience_la_SOURCES = $(sources)  $(inst_sources)
  
diff -Nrcpad gcc-16-20250824/libstdc++-v3/src/c++20/clock.cc gcc-16-20250831/libstdc++-v3/src/c++20/clock.cc
*** gcc-16-20250824/libstdc++-v3/src/c++20/clock.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/libstdc++-v3/src/c++20/clock.cc	Sun Aug 31 22:34:31 2025
***************
*** 0 ****
--- 1,52 ----
+ // std::chrono::tai_clock, gps_clock
+ 
+ // Copyright (C) 2021-2025 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // Under Section 7 of GPL version 3, you are granted additional
+ // permissions described in the GCC Runtime Library Exception, version
+ // 3.1, as published by the Free Software Foundation.
+ 
+ // You should have received a copy of the GNU General Public License and
+ // a copy of the GCC Runtime Library Exception along with this program;
+ // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ // <http://www.gnu.org/licenses/>.
+ 
+ //
+ // ISO C++ 14882:2020
+ // 27.7.4 [time.clock.tai], 27.7.5 [time.clock.gps]
+ // P0355R7
+ 
+ #include <chrono>
+ 
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+ namespace chrono
+ {
+ #if __cpp_lib_chrono >= 201803L && _GLIBCXX_HOSTED
+   // TODO use CLOCK_TAI on linux, add extension point.
+   time_point<tai_clock>
+   tai_clock::now()
+   { return from_utc(utc_clock::now()); }
+ 
+   // TODO add extension point.
+   time_point<gps_clock>
+   gps_clock::now()
+   { return from_utc(utc_clock::now()); }
+ #endif
+ }
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
+ }
diff -Nrcpad gcc-16-20250824/libstdc++-v3/src/c++26/Makefile.am gcc-16-20250831/libstdc++-v3/src/c++26/Makefile.am
*** gcc-16-20250824/libstdc++-v3/src/c++26/Makefile.am	Sun Aug 24 22:33:29 2025
--- gcc-16-20250831/libstdc++-v3/src/c++26/Makefile.am	Sun Aug 31 22:34:31 2025
*************** else
*** 35,41 ****
  inst_sources =
  endif
  
! sources = text_encoding.cc
  
  vpath % $(top_srcdir)/src/c++26
  
--- 35,43 ----
  inst_sources =
  endif
  
! sources = \
! 	  debugging.cc \
! 	  text_encoding.cc
  
  vpath % $(top_srcdir)/src/c++26
  
diff -Nrcpad gcc-16-20250824/libstdc++-v3/src/c++26/Makefile.in gcc-16-20250831/libstdc++-v3/src/c++26/Makefile.in
*** gcc-16-20250824/libstdc++-v3/src/c++26/Makefile.in	Sun Aug 24 22:33:29 2025
--- gcc-16-20250831/libstdc++-v3/src/c++26/Makefile.in	Sun Aug 31 22:34:31 2025
*************** CONFIG_CLEAN_FILES =
*** 121,127 ****
  CONFIG_CLEAN_VPATH_FILES =
  LTLIBRARIES = $(noinst_LTLIBRARIES)
  libc__26convenience_la_LIBADD =
! am__objects_1 = text_encoding.lo
  am__objects_2 =
  @GLIBCXX_HOSTED_TRUE@am_libc__26convenience_la_OBJECTS =  \
  @GLIBCXX_HOSTED_TRUE@	$(am__objects_1) $(am__objects_2)
--- 121,127 ----
  CONFIG_CLEAN_VPATH_FILES =
  LTLIBRARIES = $(noinst_LTLIBRARIES)
  libc__26convenience_la_LIBADD =
! am__objects_1 = debugging.lo text_encoding.lo
  am__objects_2 =
  @GLIBCXX_HOSTED_TRUE@am_libc__26convenience_la_OBJECTS =  \
  @GLIBCXX_HOSTED_TRUE@	$(am__objects_1) $(am__objects_2)
*************** headers =
*** 430,436 ****
  
  # XTEMPLATE_FLAGS = -fno-implicit-templates
  @ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = 
! sources = text_encoding.cc
  @GLIBCXX_HOSTED_FALSE@libc__26convenience_la_SOURCES = 
  @GLIBCXX_HOSTED_TRUE@libc__26convenience_la_SOURCES = $(sources)  $(inst_sources)
  
--- 430,439 ----
  
  # XTEMPLATE_FLAGS = -fno-implicit-templates
  @ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = 
! sources = \
! 	  debugging.cc \
! 	  text_encoding.cc
! 
  @GLIBCXX_HOSTED_FALSE@libc__26convenience_la_SOURCES = 
  @GLIBCXX_HOSTED_TRUE@libc__26convenience_la_SOURCES = $(sources)  $(inst_sources)
  
diff -Nrcpad gcc-16-20250824/libstdc++-v3/src/c++26/debugging.cc gcc-16-20250831/libstdc++-v3/src/c++26/debugging.cc
*** gcc-16-20250824/libstdc++-v3/src/c++26/debugging.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/libstdc++-v3/src/c++26/debugging.cc	Sun Aug 31 22:34:31 2025
***************
*** 0 ****
--- 1,176 ----
+ // Implementation of <debugging> -*- C++ -*-
+ 
+ // Copyright The GNU Toolchain Authors.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // Under Section 7 of GPL version 3, you are granted additional
+ // permissions described in the GCC Runtime Library Exception, version
+ // 3.1, as published by the Free Software Foundation.
+ 
+ // You should have received a copy of the GNU General Public License and
+ // a copy of the GCC Runtime Library Exception along with this program;
+ // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <debugging>
+ 
+ #if __cpp_lib_debugging
+ 
+ #include <csignal> // std::raise
+ 
+ #if _GLIBCXX_USE_PROC_SELF_STATUS
+ # include <fstream>
+ # include <string>
+ #endif
+ 
+ #if _GLIBCXX_HAVE_SYS_PTRACE_H
+ # include <sys/types.h> // for darwin ptrace
+ # include <sys/ptrace.h>
+ # include <errno.h>
+ #endif
+ 
+ #if _GLIBCXX_HAVE_DEBUGAPI_H
+ # include <debugapi.h>
+ #endif
+ 
+ #ifdef _GLIBCXX_HAVE_SYS_SDT_H
+ # include <sys/sdt.h>
+ /* We only want to use stap probes starting with v3.  Earlier versions
+    added too much startup cost.  */
+ # if defined (STAP_PROBE) && _SDT_NOTE_TYPE >= 3
+ #  define PROBE(name) STAP_PROBE(libstdcxx, name)
+ # endif
+ #endif
+ 
+ #ifndef PROBE
+ # define PROBE(name)
+ #endif
+ 
+ namespace __gnu_cxx
+ {
+   // This should be changed to non-zero by debuggers when they attach
+   // and back to zero when they detach.
+   // If the value is positive, std::breakpoint() will use it as the argument
+   // to std::raise, so it should be a valid signal number, e.g. SIGABRT or
+   // SIGTRAP.
+   // If the value is negative, std::breakpoint() will use a target-specific
+   // trap, e.g. asm("int3") or __builtin_trap().
+   volatile int debugger_signal_for_breakpoint = 0;
+ }
+ 
+ _GLIBCXX_WEAK_DEFINITION
+ bool
+ std::is_debugger_present() noexcept
+ {
+   PROBE(std::is_debugger_present);
+ 
+   if (__gnu_cxx::debugger_signal_for_breakpoint != 0)
+     return true;
+ 
+ #if _GLIBCXX_HOSTED
+ # if _GLIBCXX_USE_PROC_SELF_STATUS
+   const string_view prefix = "TracerPid:\t"; // populated since Linux 2.6.0
+   ifstream in("/proc/self/status");
+   string line;
+   while (std::getline(in, line))
+     {
+       if (!line.starts_with(prefix))
+ 	continue;
+ 
+       string_view tracer = line;
+       tracer.remove_prefix(prefix.size());
+       if (tracer.size() == 1 && tracer[0] == '0') [[likely]]
+ 	return false; // Not being traced.
+ 
+       in.close();
+       string_view cmd;
+       string proc_dir = "/proc/" + string(tracer) + '/';
+       in.open(proc_dir + "comm"); // since Linux 2.6.33
+       if (std::getline(in, line)) [[likely]]
+ 	cmd = line;
+       else
+ 	{
+ 	  in.close();
+ 	  in.open(proc_dir + "cmdline");
+ 	  if (std::getline(in, line))
+ 	    cmd = line.c_str(); // Only up to first '\0'
+ 	  else
+ 	    return false;
+ 	}
+ 
+       for (auto i : {"gdb", "gdbserver", "lldb-server"}) // known debuggers
+ 	if (cmd.ends_with(i))
+ 	  return true;
+ 
+       // We found the TracerPid line, no need to do any more work.
+       return false;
+     }
+ # elif _GLIBCXX_USE_PTRACE
+   if (::ptrace(PTRACE_TRACEME, 0, 1, 0) == -1)
+     return errno == EPERM;
+ # endif
+ # if _GLIBCXX_HAVE_DEBUGAPI_H && defined(_WIN32) && !defined(__CYGWIN__)
+   return IsDebuggerPresent();
+ # endif
+ #endif // HOSTED
+   return false;
+ }
+ 
+ void
+ std::breakpoint() noexcept
+ {
+   PROBE(std::breakpoint);
+ 
+   if (__gnu_cxx::debugger_signal_for_breakpoint > 0)
+     std::raise(__gnu_cxx::debugger_signal_for_breakpoint);
+ 
+ #if _GLIBCXX_HAVE_DEBUGAPI_H && defined(_WIN32) && !defined(__CYGWIN__)
+   DebugBreak();
+ #elif __has_builtin(__builtin_debugtrap)
+   __builtin_debugtrap(); // Clang
+ #elif defined(__i386__) || defined(__x86_64__)
+   // nop is for GDB, see https://sourceware.org/bugzilla/show_bug.cgi?id=31194
+   __asm__ volatile ("int $0x3\n\tnop");
+ #elifdef __thumb__
+   __asm__ volatile (".inst 0xde01");
+ #elifdef __aarch64__
+   __asm__ volatile (".inst 0xd4200000");
+ #elifdef __arm__
+   __asm__ volatile (".inst 0xe7f001f0");
+ #elifdef __riscv
+   /* section 2.8 in the RISC-V unprivileged ISA manual says for semi-hosted
+    * environments we want the sequence:
+    * slli x0, x0, 0x1f     # Entry NOP
+    * ebreak         # Break to debugger
+    * srai x0, x0, 7    # NOP encoding the semihosting call number 7
+    */
+   __asm__ volatile (".4byte 0x00100073");
+ #elif defined __powerpc__ && ! defined _AIX
+   __asm__ volatile(".4byte 0x7d821008");
+ #else
+   __builtin_trap();
+ #endif
+ } // If the debugger stops here, std::breakpoint() was called.
+ 
+ // This is intentionally not defined inline. A non-inline definition allows
+ // debuggers to insert a breakpoint on calls to the function, avoiding the
+ // overhead of calling `is_debugger_present()`.
+ void
+ std::breakpoint_if_debugging() noexcept
+ {
+   PROBE(std::breakpoint_if_debugging);
+ 
+   if (std::is_debugger_present()) [[unlikely]]
+     std::breakpoint();
+ }
+ 
+ #endif // __cpp_lib_debugging
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/18_support/comparisons/categories/zero_neg.cc gcc-16-20250831/libstdc++-v3/testsuite/18_support/comparisons/categories/zero_neg.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/18_support/comparisons/categories/zero_neg.cc	Sun Aug 24 22:33:29 2025
--- gcc-16-20250831/libstdc++-v3/testsuite/18_support/comparisons/categories/zero_neg.cc	Sun Aug 31 22:34:31 2025
***************
*** 23,28 ****
--- 23,38 ----
  // C++20 [cmp.categories.pre]
  // "an argument other than a literal 0 is undefined"
  
+ struct PtrConv
+ {
+   template<typename T>
+   consteval operator T*()
+   { return nullptr; }
+ 
+   consteval operator std::nullptr_t()
+   { return nullptr; }
+ };
+ 
  void
  test01()
  {
*************** test01()
*** 48,53 ****
--- 58,69 ----
    std::partial_ordering::equivalent == nullptr;
    std::weak_ordering::equivalent == nullptr;
    std::strong_ordering::equivalent == nullptr;
+ 
+   constexpr PtrConv c;
+   // requires two user-defined conversion
+   std::partial_ordering::equivalent == c; // { dg-error "no match for 'operator=='" }
+   std::weak_ordering::equivalent == c;    // { dg-error "no match for 'operator=='" }
+   std::strong_ordering::equivalent == c;  // { dg-error "no match for 'operator=='" }
  }
  
  // { dg-prune-output "reinterpret_cast.* is not a constant expression" }
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/19_diagnostics/debugging/breakpoint.cc gcc-16-20250831/libstdc++-v3/testsuite/19_diagnostics/debugging/breakpoint.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/19_diagnostics/debugging/breakpoint.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/libstdc++-v3/testsuite/19_diagnostics/debugging/breakpoint.cc	Sun Aug 31 22:34:31 2025
***************
*** 0 ****
--- 1,13 ----
+ // { dg-do run { target c++26 xfail c++26 } }
+ // { dg-options "-lstdc++exp" }
+ // { dg-require-cpp-feature-test __cpp_lib_debugging }
+ #include <debugging>
+ #include <type_traits>
+ 
+ static_assert( noexcept(std::breakpoint()) );
+ static_assert( std::is_void_v<decltype(std::breakpoint())> );
+ 
+ int main()
+ {
+   std::breakpoint();
+ }
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/19_diagnostics/debugging/breakpoint_if_debugging.cc gcc-16-20250831/libstdc++-v3/testsuite/19_diagnostics/debugging/breakpoint_if_debugging.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/19_diagnostics/debugging/breakpoint_if_debugging.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/libstdc++-v3/testsuite/19_diagnostics/debugging/breakpoint_if_debugging.cc	Sun Aug 31 22:34:31 2025
***************
*** 0 ****
--- 1,13 ----
+ // { dg-do run { target c++26 } }
+ // { dg-options "-lstdc++exp" }
+ // { dg-require-cpp-feature-test __cpp_lib_debugging }
+ #include <debugging>
+ #include <type_traits>
+ 
+ static_assert( noexcept(std::breakpoint_if_debugging()) );
+ static_assert( std::is_void_v<decltype(std::breakpoint_if_debugging())> );
+ 
+ int main()
+ {
+   std::breakpoint_if_debugging();
+ }
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/19_diagnostics/debugging/is_debugger_present-2.cc gcc-16-20250831/libstdc++-v3/testsuite/19_diagnostics/debugging/is_debugger_present-2.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/19_diagnostics/debugging/is_debugger_present-2.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/libstdc++-v3/testsuite/19_diagnostics/debugging/is_debugger_present-2.cc	Sun Aug 31 22:34:31 2025
***************
*** 0 ****
--- 1,19 ----
+ // { dg-do run { target c++26 } }
+ // { dg-options "-lstdc++exp" }
+ // { dg-require-cpp-feature-test __cpp_lib_debugging }
+ // { dg-xfail-run-if "no replaceable functions on AIX" { powerpc-ibm-aix* } }
+ 
+ // P2810R4 is_debugger_present is_replaceable
+ 
+ #include <debugging>
+ #include <testsuite_hooks.h>
+ 
+ bool called = false;
+ 
+ bool std::is_debugger_present() noexcept { called = true; return true; }
+ 
+ int main()
+ {
+   VERIFY( std::is_debugger_present() );
+   VERIFY( called );
+ }
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/19_diagnostics/debugging/is_debugger_present.cc gcc-16-20250831/libstdc++-v3/testsuite/19_diagnostics/debugging/is_debugger_present.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/19_diagnostics/debugging/is_debugger_present.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/libstdc++-v3/testsuite/19_diagnostics/debugging/is_debugger_present.cc	Sun Aug 31 22:34:31 2025
***************
*** 0 ****
--- 1,14 ----
+ // { dg-do run { target c++26 } }
+ // { dg-options "-lstdc++exp" }
+ // { dg-require-cpp-feature-test __cpp_lib_debugging }
+ #include <debugging>
+ #include <type_traits>
+ #include <testsuite_hooks.h>
+ 
+ static_assert( noexcept(std::is_debugger_present()) );
+ static_assert( std::is_same_v<decltype(std::is_debugger_present()), bool> );
+ 
+ int main()
+ {
+   VERIFY( ! std::is_debugger_present() );
+ }
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/20_util/copyable_function/call.cc gcc-16-20250831/libstdc++-v3/testsuite/20_util/copyable_function/call.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/20_util/copyable_function/call.cc	Sun Aug 24 22:33:29 2025
--- gcc-16-20250831/libstdc++-v3/testsuite/20_util/copyable_function/call.cc	Sun Aug 31 22:34:31 2025
*************** test_params()
*** 214,219 ****
--- 214,241 ----
    std::copyable_function<void(CompleteEnum)> f4;
  }
  
+ struct EmptyIdFunc
+ {
+   EmptyIdFunc* operator()()
+   { return this; }
+ };
+ 
+ struct Composed : EmptyIdFunc
+ {
+   std::move_only_function<EmptyIdFunc*()> nested;
+ };
+ 
+ void
+ test_aliasing()
+ {
+   Composed c;
+   c.nested = EmptyIdFunc{};
+ 
+   EmptyIdFunc* baseAddr = c();
+   EmptyIdFunc* nestedAddr = c.nested();
+   VERIFY( baseAddr != nestedAddr );
+ };
+ 
  int main()
  {
    test01();
*************** int main()
*** 222,225 ****
--- 244,248 ----
    test04();
    test05();
    test_params();
+   test_aliasing();
  }
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/20_util/function_objects/bind_back/1.cc gcc-16-20250831/libstdc++-v3/testsuite/20_util/function_objects/bind_back/1.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/20_util/function_objects/bind_back/1.cc	Sun Aug 24 22:33:29 2025
--- gcc-16-20250831/libstdc++-v3/testsuite/20_util/function_objects/bind_back/1.cc	Sun Aug 31 22:34:31 2025
*************** test01()
*** 48,53 ****
--- 48,63 ----
        decltype(bind_back(std::declval<const F&>(), std::declval<const int&>()))
        >);
  
+   static_assert(std::is_same_v<
+       decltype(bind_back(std::declval<F>(), std::declval<int>(), std::declval<float>())),
+       decltype(bind_back(std::declval<F&>(), std::declval<int&>(), std::declval<float&>()))
+       >);
+   static_assert(std::is_same_v<
+       decltype(bind_back(std::declval<F>(), std::declval<int>(), std::declval<float>())),
+       decltype(bind_back(std::declval<const F&>(), std::declval<const int&>(), std::declval<const float&>()))
+       >);
+ 
+ 
    // Reference wrappers should be handled:
    static_assert(!std::is_same_v<
        decltype(bind_back(std::declval<F>(), std::declval<int&>())),
*************** test01()
*** 63,91 ****
        >);
  }
  
  void
! test02()
  {
!   struct quals
    {
!     bool as_const;
!     bool as_lvalue;
    };
  
    struct F
    {
!     quals operator()() & { return { false, true }; }
!     quals operator()() const & { return { true, true }; }
!     quals operator()() && { return { false, false }; }
!     quals operator()() const && { return { true, false }; }
    };
  
    F f;
!   auto g = bind_back(f);
    const auto& cg = g;
    quals q;
  
!   // constness and value category should be forwarded to the target object:
    q = g();
    VERIFY( ! q.as_const && q.as_lvalue );
    q = std::move(g)();
--- 73,130 ----
        >);
  }
  
+ struct quals
+ {
+   bool as_const;
+   bool as_lvalue;
+ };
+ 
+ template<typename... Args>
  void
! testTarget(Args... args)
  {
!   struct F
    {
!     quals operator()(Args...) & { return { false, true }; }
!     quals operator()(Args...) const & { return { true, true }; }
!     quals operator()(Args...) && { return { false, false }; }
!     quals operator()(Args...) const && { return { true, false }; }
    };
  
+   F f;
+   auto g = bind_back(f, args...);
+   const auto& cg = g;
+   quals q;
+ 
+   // constness and value category should be forwarded to the target object:
+   q = g();
+   VERIFY( ! q.as_const && q.as_lvalue );
+   q = std::move(g)();
+   VERIFY( ! q.as_const && ! q.as_lvalue );
+   q = cg();
+   VERIFY( q.as_const && q.as_lvalue );
+   q = std::move(cg)();
+   VERIFY( q.as_const && ! q.as_lvalue );
+ }
+ 
+ template<typename... Args>
+ void
+ testBoundArgs(Args... args)
+ {
    struct F
    {
!     quals operator()(Args..., int&) const { return { false, true }; }
!     quals operator()(Args..., int const&) const { return { true, true }; }
!     quals operator()(Args..., int&&) const { return { false, false }; }
!     quals operator()(Args..., int const&&) const { return { true, false }; }
    };
  
    F f;
!   auto g = bind_back(f, args..., 10);
    const auto& cg = g;
    quals q;
  
!   // constness and value category should be forwarded to the bound objects:
    q = g();
    VERIFY( ! q.as_const && q.as_lvalue );
    q = std::move(g)();
*************** test02()
*** 94,99 ****
--- 133,202 ----
    VERIFY( q.as_const && q.as_lvalue );
    q = std::move(cg)();
    VERIFY( q.as_const && ! q.as_lvalue );
+ 
+   int i = 0;
+   auto gr = bind_back(f, args..., std::ref(i));
+   const auto& cgr = gr;
+ 
+   // bound object is reference wrapper
+   q = gr();
+   VERIFY( ! q.as_const && q.as_lvalue );
+   q = std::move(gr)();
+   VERIFY( ! q.as_const && q.as_lvalue );
+   q = cgr();
+   VERIFY( ! q.as_const && q.as_lvalue );
+   q = std::move(cgr)();
+   VERIFY( ! q.as_const && q.as_lvalue );
+ 
+   auto gcr = bind_back(f, args..., std::cref(i));
+   const auto& cgcr = gcr;
+ 
+   q = gcr();
+   VERIFY( q.as_const && q.as_lvalue );
+   q = std::move(gcr)();
+   VERIFY( q.as_const && q.as_lvalue );
+   q = cgcr();
+   VERIFY( q.as_const && q.as_lvalue );
+   q = std::move(cgcr)();
+   VERIFY( q.as_const && q.as_lvalue );
+ }
+ 
+ template<typename... Args>
+ void
+ testCallArgs(Args... args)
+ {
+   struct F
+   {
+     quals operator()(int&, Args...) const { return { false, true }; }
+     quals operator()(int const&, Args...) const { return { true, true }; }
+     quals operator()(int&&, Args...) const { return { false, false }; }
+     quals operator()(int const&&, Args...) const { return { true, false }; }
+   };
+ 
+   F f;
+   auto g = bind_back(f, args...);
+   const auto& cg = g;
+   quals q;
+   int i = 10;
+   const int ci = i;
+ 
+   q = g(i);
+   VERIFY( ! q.as_const && q.as_lvalue );
+   q = g(std::move(i));
+   VERIFY( ! q.as_const && ! q.as_lvalue );
+   q = g(ci);
+   VERIFY( q.as_const && q.as_lvalue );
+   q = g(std::move(ci));
+   VERIFY( q.as_const && ! q.as_lvalue );
+ 
+   q = cg(i);
+   VERIFY( ! q.as_const && q.as_lvalue );
+   q = cg(std::move(i));
+   VERIFY( ! q.as_const && ! q.as_lvalue );
+   q = cg(ci);
+   VERIFY( q.as_const && q.as_lvalue );
+   q = cg(std::move(ci));
+   VERIFY( q.as_const && ! q.as_lvalue );
  }
  
  void
*************** test04()
*** 168,178 ****
    return true;
  }
  
  int
  main()
  {
    test01();
-   test02();
    test03();
    static_assert(test04());
  }
--- 271,322 ----
    return true;
  }
  
+ struct CountedArg
+ {
+   CountedArg() = default;
+   CountedArg(CountedArg&& f) noexcept : counter(f.counter) { ++counter; }
+   CountedArg& operator=(CountedArg&&) = delete;
+ 
+   int counter = 0;
+ };
+ CountedArg const c;
+ 
+ void
+ testMaterialization()
+ {
+   struct F
+   {
+     int operator()(CountedArg arg, int) const
+     { return arg.counter; };
+   };
+ 
+   // CountedArg is bound to rvalue-reference thus moved
+   auto f0 = std::bind_back(F{});
+   VERIFY( f0(CountedArg(), 10) == 1 );
+ 
+   auto f1 = std::bind_back(F{}, 10);
+   VERIFY( f1(CountedArg()) == 1 );
+ }
+ 
  int
  main()
  {
    test01();
    test03();
+ 
+   testTarget();
+   testTarget(10);
+   testTarget(10, 20, 30);
+ 
+   testBoundArgs();
+   testBoundArgs(10);
+   testBoundArgs(10, 20, 30);
+ 
+   testCallArgs();
+   testCallArgs(10);
+   testCallArgs(10, 20, 30);
+ 
+   testMaterialization();
+ 
    static_assert(test04());
  }
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/20_util/function_objects/bind_back/111327.cc gcc-16-20250831/libstdc++-v3/testsuite/20_util/function_objects/bind_back/111327.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/20_util/function_objects/bind_back/111327.cc	Sun Aug 24 22:33:29 2025
--- gcc-16-20250831/libstdc++-v3/testsuite/20_util/function_objects/bind_back/111327.cc	Sun Aug 31 22:34:31 2025
*************** int main() {
*** 37,42 ****
--- 37,53 ----
    g1(); // { dg-error "deleted|no match" }
    std::move(g1)(); // { dg-error "deleted|no match" }
    std::move(std::as_const(g1))();
+ 
+   auto f2 = std::bind_back(F{}, 42, 10);
+   f2(); // { dg-error "deleted|no match" }
+   std::move(f2)();
+   std::as_const(f2)();
+   std::move(std::as_const(f2))();
+ 
+   auto g2 = std::bind_back(G{}, 42, 10);
+   g2(); // { dg-error "deleted|no match" }
+   std::move(g2)(); // { dg-error "deleted|no match" }
+   std::move(std::as_const(g2))();
  }
  
  // { dg-error "no type named 'type' in 'struct std::invoke_result" "" { target c++23 } 0 }
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc gcc-16-20250831/libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc	Sun Aug 24 22:33:29 2025
--- gcc-16-20250831/libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc	Sun Aug 31 22:34:31 2025
*************** test01()
*** 48,53 ****
--- 48,62 ----
        decltype(bind_front(std::declval<const F&>(), std::declval<const int&>()))
        >);
  
+   static_assert(std::is_same_v<
+       decltype(bind_front(std::declval<F>(), std::declval<int>(), std::declval<float>())),
+       decltype(bind_front(std::declval<F&>(), std::declval<int&>(), std::declval<float&>()))
+       >);
+   static_assert(std::is_same_v<
+       decltype(bind_front(std::declval<F>(), std::declval<int>(), std::declval<float>())),
+       decltype(bind_front(std::declval<const F&>(), std::declval<const int&>(), std::declval<const float&>()))
+       >);
+ 
    // Reference wrappers should be handled:
    static_assert(!std::is_same_v<
        decltype(bind_front(std::declval<F>(), std::declval<int&>())),
*************** test01()
*** 63,91 ****
        >);
  }
  
  void
! test02()
  {
!   struct quals
    {
!     bool as_const;
!     bool as_lvalue;
    };
  
    struct F
    {
!     quals operator()() & { return { false, true }; }
!     quals operator()() const & { return { true, true }; }
!     quals operator()() && { return { false, false }; }
!     quals operator()() const && { return { true, false }; }
    };
  
    F f;
!   auto g = bind_front(f);
    const auto& cg = g;
    quals q;
  
!   // constness and value category should be forwarded to the target object:
    q = g();
    VERIFY( ! q.as_const && q.as_lvalue );
    q = std::move(g)();
--- 72,129 ----
        >);
  }
  
+ struct quals
+ {
+   bool as_const;
+   bool as_lvalue;
+ };
+ 
+ template<typename... Args>
  void
! testTarget(Args... args)
  {
!   struct F
    {
!     quals operator()(Args...) & { return { false, true }; }
!     quals operator()(Args...) const & { return { true, true }; }
!     quals operator()(Args...) && { return { false, false }; }
!     quals operator()(Args...) const && { return { true, false }; }
    };
  
+   F f;
+   auto g = bind_front(f, args...);
+   const auto& cg = g;
+   quals q;
+ 
+   // constness and value category should be forwarded to the target object:
+   q = g();
+   VERIFY( ! q.as_const && q.as_lvalue );
+   q = std::move(g)();
+   VERIFY( ! q.as_const && ! q.as_lvalue );
+   q = cg();
+   VERIFY( q.as_const && q.as_lvalue );
+   q = std::move(cg)();
+   VERIFY( q.as_const && ! q.as_lvalue );
+ }
+ 
+ template<typename... Args>
+ void
+ testBoundArgs(Args... args)
+ {
    struct F
    {
!     quals operator()(Args..., int&) const { return { false, true }; }
!     quals operator()(Args..., int const&) const { return { true, true }; }
!     quals operator()(Args..., int&&) const { return { false, false }; }
!     quals operator()(Args..., int const&&) const { return { true, false }; }
    };
  
    F f;
!   auto g = bind_front(f, args..., 10);
    const auto& cg = g;
    quals q;
  
!   // constness and value category should be forwarded to the bound objects:
    q = g();
    VERIFY( ! q.as_const && q.as_lvalue );
    q = std::move(g)();
*************** test02()
*** 94,99 ****
--- 132,201 ----
    VERIFY( q.as_const && q.as_lvalue );
    q = std::move(cg)();
    VERIFY( q.as_const && ! q.as_lvalue );
+ 
+   int i = 0;
+   auto gr = bind_front(f, args..., std::ref(i));
+   const auto& cgr = gr;
+ 
+   // bound object is reference wrapper, converts to same type of reference
+   q = gr();
+   VERIFY( ! q.as_const && q.as_lvalue );
+   q = std::move(gr)();
+   VERIFY( ! q.as_const && q.as_lvalue );
+   q = cgr();
+   VERIFY( ! q.as_const && q.as_lvalue );
+   q = std::move(cgr)();
+   VERIFY( ! q.as_const && q.as_lvalue );
+ 
+   auto gcr = bind_front(f, args..., std::cref(i));
+   const auto& cgcr = gcr;
+ 
+   q = gcr();
+   VERIFY( q.as_const && q.as_lvalue );
+   q = std::move(gcr)();
+   VERIFY( q.as_const && q.as_lvalue );
+   q = cgcr();
+   VERIFY( q.as_const && q.as_lvalue );
+   q = std::move(cgcr)();
+   VERIFY( q.as_const && q.as_lvalue );
+ }
+ 
+ template<typename... Args>
+ void
+ testCallArgs(Args... args)
+ {
+   struct F
+   {
+     quals operator()(Args..., int&) const { return { false, true }; }
+     quals operator()(Args..., int const&) const { return { true, true }; }
+     quals operator()(Args..., int&&) const { return { false, false }; }
+     quals operator()(Args..., int const&&) const { return { true, false }; }
+   };
+ 
+   F f;
+   auto g = bind_front(f, args...);
+   const auto& cg = g;
+   quals q;
+   int i = 10;
+   const int ci = i;
+ 
+   q = g(i);
+   VERIFY( ! q.as_const && q.as_lvalue );
+   q = g(std::move(i));
+   VERIFY( ! q.as_const && ! q.as_lvalue );
+   q = g(ci);
+   VERIFY( q.as_const && q.as_lvalue );
+   q = g(std::move(ci));
+   VERIFY( q.as_const && ! q.as_lvalue );
+ 
+   q = cg(i);
+   VERIFY( ! q.as_const && q.as_lvalue );
+   q = cg(std::move(i));
+   VERIFY( ! q.as_const && ! q.as_lvalue );
+   q = cg(ci);
+   VERIFY( q.as_const && q.as_lvalue );
+   q = cg(std::move(ci));
+   VERIFY( q.as_const && ! q.as_lvalue );
  }
  
  void
*************** test04()
*** 167,177 ****
    VERIFY( bind_front(g2, 3)() == 6 );
  }
  
  int
  main()
  {
    test01();
-   test02();
    test03();
    test04();
  }
--- 269,319 ----
    VERIFY( bind_front(g2, 3)() == 6 );
  }
  
+ struct CountedArg
+ {
+   CountedArg() = default;
+   CountedArg(CountedArg&& f) noexcept : counter(f.counter) { ++counter; }
+   CountedArg& operator=(CountedArg&&) = delete;
+ 
+   int counter = 0;
+ };
+ CountedArg const c;
+ 
+ void
+ testMaterialization()
+ {
+   struct F
+   {
+     int operator()(int, CountedArg arg) const
+     { return arg.counter; };
+   };
+ 
+   // CountedArg is bound to rvalue-reference thus moved
+   auto f0 = std::bind_front(F{});
+   VERIFY( f0(10, CountedArg()) == 1 );
+ 
+   auto f1 = std::bind_front(F{}, 10);
+   VERIFY( f1(CountedArg()) == 1 );
+ }
+ 
  int
  main()
  {
    test01();
    test03();
    test04();
+ 
+   testTarget();
+   testTarget(10);
+   testTarget(10, 20, 30);
+ 
+   testBoundArgs();
+   testBoundArgs(10);
+   testBoundArgs(10, 20, 30);
+ 
+   testCallArgs();
+   testCallArgs(10);
+   testCallArgs(10, 20, 30);
+ 
+   testMaterialization();
  }
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc gcc-16-20250831/libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc	Sun Aug 24 22:33:29 2025
--- gcc-16-20250831/libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc	Sun Aug 31 22:34:31 2025
*************** int main() {
*** 37,42 ****
--- 37,53 ----
    g1(); // { dg-error "deleted|no match" }
    std::move(g1)(); // { dg-error "deleted|no match" }
    std::move(std::as_const(g1))();
+ 
+   auto f2 = std::bind_front(F{}, 42, 10);
+   f2(); // { dg-error "deleted|no match" }
+   std::move(f2)();
+   std::as_const(f2)();
+   std::move(std::as_const(f2))();
+ 
+   auto g2 = std::bind_front(G{}, 42, 10);
+   g2(); // { dg-error "deleted|no match" }
+   std::move(g2)(); // { dg-error "deleted|no match" }
+   std::move(std::as_const(g2))();
  }
  
  // { dg-error "no type named 'type' in 'struct std::invoke_result" "" { target c++23 } 0 }
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/20_util/move_only_function/call.cc gcc-16-20250831/libstdc++-v3/testsuite/20_util/move_only_function/call.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/20_util/move_only_function/call.cc	Sun Aug 24 22:33:29 2025
--- gcc-16-20250831/libstdc++-v3/testsuite/20_util/move_only_function/call.cc	Sun Aug 31 22:34:32 2025
*************** test_params()
*** 214,219 ****
--- 214,241 ----
    std::move_only_function<void(CompleteEnum)> f4;
  }
  
+ struct EmptyIdFunc
+ {
+   EmptyIdFunc* operator()()
+   { return this; }
+ };
+ 
+ struct Composed : EmptyIdFunc
+ {
+   std::move_only_function<EmptyIdFunc*()> nested;
+ };
+ 
+ void
+ test_aliasing()
+ {
+   Composed c;
+   c.nested = EmptyIdFunc{};
+ 
+   EmptyIdFunc* baseAddr = c();
+   EmptyIdFunc* nestedAddr = c.nested();
+   VERIFY( baseAddr != nestedAddr );
+ };
+ 
  int main()
  {
    test01();
*************** int main()
*** 222,225 ****
--- 244,248 ----
    test04();
    test05();
    test_params();
+   test_aliasing();
  }
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/23_containers/bitset/lwg4294.cc gcc-16-20250831/libstdc++-v3/testsuite/23_containers/bitset/lwg4294.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/23_containers/bitset/lwg4294.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/libstdc++-v3/testsuite/23_containers/bitset/lwg4294.cc	Sun Aug 31 22:34:32 2025
***************
*** 0 ****
--- 1,11 ----
+ // { dg-do compile { target c++11 } }
+ 
+ // Bug 121046
+ // Asking is_constructible_v<std::bitset<1>, NonTrivial*> is ill-formed
+ 
+ // LWG 4294. bitset(const CharT*) constructor needs to be constrained
+ 
+ #include <bitset>
+ struct NonTrivial { ~NonTrivial() { } };
+ static_assert( ! std::is_constructible<std::bitset<1>, NonTrivial*>::value,
+ 	       "std::bitset cannot be constructed from this pointer" );
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc gcc-16-20250831/libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc	Sun Aug 24 22:33:31 2025
--- gcc-16-20250831/libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc	Sun Aug 31 22:34:34 2025
*************** test05()
*** 109,117 ****
    // when it doesn't reallocate the buffer.
    VERIFY(copycounter::copycount == 20 + 1);
    a.insert(a.end(), 50, c);
!   VERIFY(copycounter::copycount == 70 + 2);
    a.insert(a.begin() + 50, 100, c);
!   VERIFY(copycounter::copycount == 170 + 3);
  }
  
  
--- 109,119 ----
    // when it doesn't reallocate the buffer.
    VERIFY(copycounter::copycount == 20 + 1);
    a.insert(a.end(), 50, c);
!   // expect when inserting at the end (appending), where existing
!   // elements are not modified
!   VERIFY(copycounter::copycount == 70 + 1);
    a.insert(a.begin() + 50, 100, c);
!   VERIFY(copycounter::copycount == 170 + 2);
  }
  
  
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/23_containers/vector/modifiers/resize.cc gcc-16-20250831/libstdc++-v3/testsuite/23_containers/vector/modifiers/resize.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/23_containers/vector/modifiers/resize.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250831/libstdc++-v3/testsuite/23_containers/vector/modifiers/resize.cc	Sun Aug 31 22:34:34 2025
***************
*** 0 ****
--- 1,69 ----
+ // { dg-do run }
+ 
+ #include <vector>
+ #include <testsuite_hooks.h>
+ 
+ struct NoAssign
+ {
+   NoAssign(int p) : val(p) {}
+   const int val;
+ };
+ 
+ struct PrivateAssign
+ {
+   PrivateAssign(int p) : val(p) {}
+   PrivateAssign(const PrivateAssign& rhs) : val(rhs.val) {}
+ 
+   int val;
+ 
+ private:
+   PrivateAssign& operator=(const PrivateAssign&);
+ };
+ 
+ #if __cplusplus >= 201102L
+ struct DeletedAssign
+ {
+   DeletedAssign(int p) : val(p) {}
+   DeletedAssign(const DeletedAssign& rhs) : val(rhs.val) {}
+ 
+   DeletedAssign& operator=(const DeletedAssign&) = delete;
+ 
+   int val;
+ };
+ #endif
+ 
+ template<typename T>
+ void
+ testPR90129()
+ {
+   std::vector<T> v;
+   v.resize(5, T(5));
+   VERIFY( v.size() == 5 );
+   VERIFY( v.front().val == 5 );
+   VERIFY( v.back().val == 5 );
+ 
+   v.resize(10, T(10));
+   VERIFY( v.size() == 10 );
+   VERIFY( v.front().val == 5 );
+   VERIFY( v.back().val == 10 );
+ 
+   v.resize(7, T(7));
+   VERIFY( v.size() == 7 );
+   VERIFY( v.front().val == 5 );
+   VERIFY( v.back().val == 10 );
+ 
+   v.resize(3, T(3));
+   VERIFY( v.size() == 3 );
+   VERIFY( v.front().val == 5 );
+   VERIFY( v.back().val == 5 );
+ }
+ 
+ int main()
+ {
+   testPR90129<NoAssign>();
+   testPR90129<PrivateAssign>();
+ #if __cplusplus >= 201102L
+   testPR90129<DeletedAssign>();
+ #endif
+   return 0;
+ }
diff -Nrcpad gcc-16-20250824/libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc gcc-16-20250831/libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
*** gcc-16-20250824/libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc	Sun Aug 24 22:33:33 2025
--- gcc-16-20250831/libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc	Sun Aug 31 22:34:35 2025
*************** int main()
*** 39,88 ****
  
    int buckets;
  
-   // For C++11 and later add 1 to all counts, because the std::vector used
-   // internally by the hashtable creates and destroys a temporary object
-   // using its allocator.
-   const int extra = __cplusplus >= 201102L ? 1 : 0;
- 
    tracker_allocator_counter::reset();
    {
      Container c;
      buckets = c.bucket_count();
!     ok = check_construct_destroy("empty container", buckets+extra, extra) && ok;
    }
!   ok = check_construct_destroy("empty container", buckets+extra, buckets+extra) && ok;
  
  
    tracker_allocator_counter::reset();
    {
      Container c(arr10, arr10 + 10);
!     ok = check_construct_destroy("Construct from range", buckets+10+extra, extra) && ok;
    }
!   ok = check_construct_destroy("Construct from range", buckets+10+extra, buckets+10+extra) && ok;
  
    tracker_allocator_counter::reset();
    {
      Container c(arr10, arr10 + 10);
      c.insert(arr10a[0]);
!     ok = check_construct_destroy("Insert element", buckets+11+extra, extra) && ok;
    }
!   ok = check_construct_destroy("Insert element", buckets+11+extra, buckets+11+extra) && ok;
  
    tracker_allocator_counter::reset();
    {
      Container c(arr10, arr10 + 10);
      c.insert(arr10a, arr10a+3);
!     ok = check_construct_destroy("Insert short range", buckets+13+extra, extra) && ok;
    }
!   ok = check_construct_destroy("Insert short range", buckets+13+extra, buckets+13+extra) && ok;
  
    tracker_allocator_counter::reset();
    {
      Container c(arr10, arr10 + 10);
      c.insert(arr10a, arr10a+10);
!     ok = check_construct_destroy("Insert long range", buckets+20+extra, extra) && ok;
    }
!   ok = check_construct_destroy("Insert long range", buckets+20+extra, buckets+20+extra) && ok;
  
    return ok ? 0 : 1;
  }
--- 39,83 ----
  
    int buckets;
  
    tracker_allocator_counter::reset();
    {
      Container c;
      buckets = c.bucket_count();
!     ok = check_construct_destroy("empty container", buckets, 0) && ok;
    }
!   ok = check_construct_destroy("empty container", buckets, buckets) && ok;
  
  
    tracker_allocator_counter::reset();
    {
      Container c(arr10, arr10 + 10);
!     ok = check_construct_destroy("Construct from range", buckets+10, 0) && ok;
    }
!   ok = check_construct_destroy("Construct from range", buckets+10, buckets+10) && ok;
  
    tracker_allocator_counter::reset();
    {
      Container c(arr10, arr10 + 10);
      c.insert(arr10a[0]);
!     ok = check_construct_destroy("Insert element", buckets+11, 0) && ok;
    }
!   ok = check_construct_destroy("Insert element", buckets+11, buckets+11) && ok;
  
    tracker_allocator_counter::reset();
    {
      Container c(arr10, arr10 + 10);
      c.insert(arr10a, arr10a+3);
!     ok = check_construct_destroy("Insert short range", buckets+13, 0) && ok;
    }
!   ok = check_construct_destroy("Insert short range", buckets+13, buckets+13) && ok;
  
    tracker_allocator_counter::reset();
    {
      Container c(arr10, arr10 + 10);
      c.insert(arr10a, arr10a+10);
!     ok = check_construct_destroy("Insert long range", buckets+20, 0) && ok;
    }
!   ok = check_construct_destroy("Insert long range", buckets+20, buckets+20) && ok;
  
    return ok ? 0 : 1;
  }
